<?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>150539</bug_id>
          
          <creation_ts>2015-10-24 16:52:46 -0700</creation_ts>
          <short_desc>Builtins generator should put WebCore-only wrappers in the per-builtin header</short_desc>
          <delta_ts>2015-10-31 09:53: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>Tools / Tests</component>
          <version>WebKit 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>
          
          <blocked>150496</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>lforschler</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1136310</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-24 16:52:46 -0700</bug_when>
    <thetext>No point in making this a separate header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136311</commentid>
    <comment_count>1</comment_count>
      <attachid>263989</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-24 16:56:50 -0700</bug_when>
    <thetext>Created attachment 263989
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136312</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 16:58:51 -0700</bug_when>
    <thetext>Attachment 263989 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py:71:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
Total errors found: 1 in 10 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>1136314</commentid>
    <comment_count>3</comment_count>
      <attachid>263991</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-24 17:00:33 -0700</bug_when>
    <thetext>Created attachment 263991
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136315</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-24 17:01:57 -0700</bug_when>
    <thetext>Attachment 263991 did not pass style-queue:


ERROR: Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py:71:  [BuiltinsSeparateHeaderGenerator.generate_output] Instance of &apos;BuiltinsSeparateHeaderGenerator&apos; has no &apos;model&apos; member  [pylint/E1101] [5]
Total errors found: 1 in 10 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>1136374</commentid>
    <comment_count>5</comment_count>
      <attachid>263991</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-25 00:09:08 -0700</bug_when>
    <thetext>Comment on attachment 263991
Proposed Fix

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

Thanks for moving that forward. Obviously, I like it.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py:86
&gt; +                (&quot;WebCore&quot;, &quot;%sBuiltins.h&quot; % self.object.object_name),

We probably do not need that include.

&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:138
&gt;      &quot;&quot;&quot;class ${objectName}BuiltinsWrapper : private JSC::WeakHandleOwner {

${objectName}BuiltinsWrapper could be renamed ${objectName}Builtins later on.
Hopefully, only Source/WebCore/bindings/js/WebCoreJSBuiltins.h and WebCoreJSBuiltinInternals.h should need to be updated.

We might also want to clean a little bit  ${objectName}BuiltinFunctions in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1136402</commentid>
    <comment_count>6</comment_count>
      <attachid>263991</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-25 10:26:25 -0700</bug_when>
    <thetext>Comment on attachment 263991
Proposed Fix

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

&gt;&gt; Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_header.py:86
&gt;&gt; +                (&quot;WebCore&quot;, &quot;%sBuiltins.h&quot; % self.object.object_name),
&gt; 
&gt; We probably do not need that include.

OK.

&gt;&gt; Source/JavaScriptCore/Scripts/builtins/builtins_templates.py:138
&gt;&gt;      &quot;&quot;&quot;class ${objectName}BuiltinsWrapper : private JSC::WeakHandleOwner {
&gt; 
&gt; ${objectName}BuiltinsWrapper could be renamed ${objectName}Builtins later on.
&gt; Hopefully, only Source/WebCore/bindings/js/WebCoreJSBuiltins.h and WebCoreJSBuiltinInternals.h should need to be updated.
&gt; 
&gt; We might also want to clean a little bit  ${objectName}BuiltinFunctions in the future.

Sure, this can be a followup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1137892</commentid>
    <comment_count>7</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-30 10:45:04 -0700</bug_when>
    <thetext>Youenn, can you review this patch? I don&apos;t want it to get stale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138159</commentid>
    <comment_count>8</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-10-31 09:53:53 -0700</bug_when>
    <thetext>Committed r191842: &lt;http://trac.webkit.org/changeset/191842&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263989</attachid>
            <date>2015-10-24 16:56:50 -0700</date>
            <delta_ts>2015-10-24 17:00:29 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-150539-20151024165605.patch</filename>
            <type>text/plain</type>
            <size>73084</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NWVhNDdiNDU1NmExM2Q5ZTE0MjJiMjM1YjM2ZTM0MDhjMDg2NjhlLi45ODI1MjEzMDM5NTg3MDkx
N2FjNzVhZjExOGQ5YWUyYzMyYTM0YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzMSBAQAogMjAxNS0xMC0yNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBCdWlsdGlucyBnZW5lcmF0b3Igc2hvdWxkIHB1dCBXZWJDb3JlLW9ubHkgd3JhcHBl
cnMgaW4gdGhlIHBlci1idWlsdGluIGhlYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSWYgZ2VuZXJhdGluZyBmb3IgV2ViQ29yZSwgcHV0IHRoZSBY
WFhXcmFwcGVyIGFuZCByZWxhdGVkIGJvaWxlcnBsYXRlCisgICAgICAgIGluIHRoZSBwZXItYnVp
bHRpbiBoZWFkZXIgaW5zdGVhZCBvZiBtYWtpbmcgYSBzZXBhcmF0ZSBYWFhXcmFwcGVyLmguCisK
KyAgICAgICAgUmViYXNlbGluZSB0aGUgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNjcmlwdHMvYnVp
bHRpbnMvYnVpbHRpbnMucHk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19n
ZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVh
ZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChnZW5lcmF0ZV9oZWFkZXJf
aW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfd3JhcHBlci5weTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX3RlbXBsYXRlcy5weTogQmUgY29uc2lzdGVudCB3aXRoIHZhcmlhYmxlcy4KKyAg
ICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5OgorICAgICAgICAqIFNjcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0
ZS5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAg
ICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWls
dGluLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQ6CisKKzIw
MTUtMTAtMjQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKICAgICAgICAgVGVhY2gg
Y3JlYXRlX2hhc2hfdGFibGUgdG8gb21pdCBidWlsdGlucyBtYWNyb3Mgd2hlbiBnZW5lcmF0aW5n
IHRhYmxlcyBmb3IgbmF0aXZlLW9ubHkgb2JqZWN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDkxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZmQ4NjFlNWEy
YWYzZTA0M2UxY2I0ZWFiNWUzNDYzMGJiYzliM2VjLi43MWQ3YTY2ODY3MjFlZmQ4NDUxZDQyNDc2
MWRhM2RjNjFhMTNmZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMTAtMjQg
IEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQnVpbHRpbnMgZ2VuZXJh
dG9yIHNob3VsZCBwdXQgV2ViQ29yZS1vbmx5IHdyYXBwZXJzIGluIHRoZSBwZXItYnVpbHRpbiBo
ZWFkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBpbmNsdWRlcyBvZiByZW1vdmVkIFhYWFdyYXBwZXIuaCBoZWFkZXJzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dl
YkNvcmVKU0J1aWx0aW5zLmg6CisKIDIwMTUtMTAtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSYWRpb05vZGVMaXN0IHNob3VsZCBiZSBleHBvc2VkIG9uIFdp
bmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFjNzRjNzJmODVmNGFj
YTAwZjE3NGFjZjAxNDQ0NWQ3ZDgyOWU1NDkuLmJhNGQ5MWQxODEzZTc0ZjgzOThiYmRlZGJhOThk
NDk0YzgzYTQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMzYs
NyArMTEzNiw2IEBAIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwogICAgICR7SmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVu
dGF0aW9uLnB5CiAgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CiAgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
Un0vYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKLSAgICAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFw
cGVyLnB5CiAgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKICAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9sYXp5d3JpdGVyLnB5
CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDUzOWNi
NGM3YjY2MTMzYTAyYmI5NzM1ZjFjOTYyNmMzYzhlZTEwMGYuLjkwOWY3NTIyOWViOTk3MzA1MDFj
ODE2YzVjODY5MTBlZTRiMzU0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC03Myw3ICs3Myw2IEBAIEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0g
XAogICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIu
cHkgXAogICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5z
X2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IFwKLSAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFw
cGVyLnB5IFwKICAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRl
ci5weSBcCiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWls
dGlucy9idWlsdGlucy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zLnB5CmluZGV4IGM2N2NkYWQ4YTMwZDcwY2NjNDVhMTlkODNkMjI0YTY0ZjNiZWZm
NzIuLjkzNDllZWVmNjUzNDBhMjJhZGQwYWMyMjYwZjZjZjYwYjMyMjA2N2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5CkBAIC05
LDQgKzksMyBAQCBmcm9tIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlciBpbXBvcnQg
KgogZnJvbSBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbiBpbXBvcnQg
KgogZnJvbSBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIgaW1wb3J0ICoKIGZyb20g
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKLWZyb20g
YnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlciBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CmluZGV4IDViMWViN2Q2NzFj
YTExYzM1OGE1MTk3ZGFkYWRlNzk1MTkwZDAwMzAuLmMwOWRjNzk4NDczMmVhZWRhN2VhNzVhYjNl
NDcwM2MzNjc4MzZkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRz
L2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBh
cmF0ZV9oZWFkZXIucHkKQEAgLTMxLDYgKzMxLDcgQEAgaW1wb3J0IHN0cmluZwogZnJvbSBzdHJp
bmcgaW1wb3J0IFRlbXBsYXRlCiAKIGZyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWls
dGluc0dlbmVyYXRvcgorZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgRnJhbWV3b3JrcwogZnJv
bSBidWlsdGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFz
IFRlbXBsYXRlcwogCiBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKQEAgLTUyLDcg
KzUzLDggQEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dl
bmVyYXRvcik6CiAgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29y
ay5zZXR0aW5nKCduYW1lc3BhY2UnKSwKICAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6IHNlbGYu
b3V0cHV0X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCiAgICAgICAgICAgICAnbWFjcm9Q
cmVmaXgnOiBzZWxmLm1hY3JvX3ByZWZpeCgpLAotICAgICAgICAgICAgJ29iamVjdE5hbWUnOiBz
ZWxmLm9iamVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICAgICAgJ29iamVjdE5hbWUn
OiBzZWxmLm9iamVjdC5vYmplY3RfbmFtZSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNl
bGYub2JqZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCiAgICAgICAgIH0KIAogICAgICAgICBzZWN0
aW9ucyA9IFtdCkBAIC02Niw2ICs2OCw4IEBAIGNsYXNzIEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJH
ZW5lcmF0b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2Vs
Zi5nZW5lcmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCiAgICAgICAgIHNlY3Rp
b25zLmFwcGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQog
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSGVhZGVy
U3RhdGljTWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBpZiBzZWxmLm1vZGVsKCku
ZnJhbWV3b3JrIGlzIEZyYW1ld29ya3MuV2ViQ29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVIZWFkZXJXcmFwcGVyQm9pbGVycGxhdGUp
LnN1YnN0aXR1dGUoYXJncykpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1w
bGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBzZWN0aW9u
cy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vi
c3RpdHV0ZShhcmdzKSkKIApAQCAtNzksOCArODMsMjQgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOwogICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CiAgICAgICAgIGhl
YWRlcl9pbmNsdWRlcyA9IFsKICAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAg
ICAgICAoIldlYkNvcmUiLCAiJXNCdWlsdGlucy5oIiAlIHNlbGYub2JqZWN0Lm9iamVjdF9uYW1l
KSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAg
ICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmgiKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwK
ICAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5VdGls
cy5oIiksCiAgICAgICAgICAgICApLAorCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAg
ICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0lkZW50aWZpZXIuaCIpLAor
ICAgICAgICAgICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAg
ICAgICgiSmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0Z1bmN0aW9uLmgiKSwKKyAgICAgICAg
ICAgICksCiAgICAgICAgIF0KIAogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJh
dGVfaW5jbHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9z
ZXBhcmF0ZV93cmFwcGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRp
bnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weQppbmRleCBkYWE4OGNmNzYy
MGNkYTEzNzE4NmI5OTE2NDM3YmM2ZDBiNDgxZDllLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3
NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0
cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3Nl
cGFyYXRlX3dyYXBwZXIucHkKQEAgLTEsOTQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jCi0jIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0j
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLWZyb20gc3Ry
aW5nIGltcG9ydCBUZW1wbGF0ZQotCi1mcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVp
bHRpbnNHZW5lcmF0b3IKLWZyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dl
bmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKLQotbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
J2dsb2JhbCcpCi0KLQotY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IoQnVp
bHRpbnNHZW5lcmF0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToK
LSAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCi0gICAgICAg
IHNlbGYub2JqZWN0ID0gb2JqZWN0Ci0KLSAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgot
ICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnNXcmFwcGVyLmgiICUgQnVpbHRpbnNHZW5lcmF0b3Iu
bWFuZ2xlZE5hbWVGb3JPYmplY3Qoc2VsZi5vYmplY3QpCi0KLSAgICBkZWYgbWFjcm9fcHJlZml4
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdt
YWNyb19wcmVmaXgnKQotCi0gICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKLSAgICAgICAg
YXJncyA9IHsKLSAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3Jr
LnNldHRpbmcoJ25hbWVzcGFjZScpLAotICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5v
dXRwdXRfZmlsZW5hbWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKLSAgICAgICAgICAgICdtYWNyb1By
ZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCi0gICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNl
bGYub2JqZWN0Lm9iamVjdF9uYW1lLAotICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5v
YmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKLSAgICAgICAgfQotCi0gICAgICAgIHNlY3Rpb25z
ID0gW10KLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQot
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5p
bmcpLnN1YnN0aXR1dGUoYXJncykpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQotICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKLSAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0
aXR1dGUoYXJncykpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
U2VwYXJhdGVXcmFwcGVySGVhZGVyQm9pbGVycGxhdGUpLnN1YnN0aXR1dGUoYXJncykpCi0gICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5z
dWJzdGl0dXRlKGFyZ3MpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKLQotICAgICAg
ICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCi0KLSAgICBkZWYgZ2VuZXJhdGVfaGVhZGVy
X2luY2x1ZGVzKHNlbGYpOgotICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCi0gICAgICAgICAg
ICAoWyJXZWJDb3JlIl0sCi0gICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwgIiVzQnVpbHRpbnMu
aCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZSksCi0gICAgICAgICAgICApLAotCi0gICAgICAg
ICAgICAoWyJXZWJDb3JlIl0sCi0gICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJi
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIiksCi0gICAgICAgICAgICApLAot
Ci0gICAgICAgICAgICAoWyJXZWJDb3JlIl0sCi0gICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0
Q29yZSIsICJidWlsdGlucy9CdWlsdGluVXRpbHMuaCIpLAotICAgICAgICAgICAgKSwKLQotICAg
ICAgICAgICAgKFsiV2ViQ29yZSJdLAotICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUi
LCAicnVudGltZS9JZGVudGlmaWVyLmgiKSwKLSAgICAgICAgICAgICksCi0KLSAgICAgICAgICAg
IChbIldlYkNvcmUiXSwKLSAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRp
bWUvSlNGdW5jdGlvbi5oIiksCi0gICAgICAgICAgICApLAotICAgICAgICBdCi0KLSAgICAgICAg
cmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFk
ZXJfaW5jbHVkZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CmluZGV4IDI1ZWRmNjU2ZWEyY2Vh
NGQwZDRmMWY2OTI1ZDM0YThlMTBhZjNkODMuLjVjMzQwYjJkOTFhZmUzNzRlZjEzNGJkNWIwYWQ4
YmFjMjViMmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAgLTgzLDEwICs4MywxMCBA
QCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SKQogICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAogICAgIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAotJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF8ke29iamVjdE5hbWV9X0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SKQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUo
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SCiAKLSNkZWZpbmUgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8ke29iamVjdE5hbWV9X0VYSVNU
UyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8gIyMgb2JqZWN0
ICMjIF8gIyMgZnVuYyIiIikKKyNkZWZpbmUgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8ke29iamVj
dE1hY3JvfV9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkICR7bWFjcm9QcmVmaXh9X0JVSUxU
SU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMiIiIpCiAKICAgICBDb21iaW5lZEpTQ0ltcGxlbWVu
dGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICIiIgpAQCAtMTM0LDcgKzEzNCw3IEBAICR7bWFj
cm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKICIiIikKIAot
ICAgIFNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRlID0gKAorICAgIFNlcGFyYXRlSGVh
ZGVyV3JhcHBlckJvaWxlcnBsYXRlID0gKAogICAgICIiImNsYXNzICR7b2JqZWN0TmFtZX1CdWls
dGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlu
cy5weQppbmRleCAwNzA3MDliNDgwODM4OGU2NzhmM2RiMjM4MmY0NmEzZDYzMzM5MDZlLi41NTRh
NzJjY2MwNTIzMmNhMzY3ZTM4OTQ1YWI2MjAxZjQ1MjNlMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpAQCAtNzQs
OSArNzQsNiBAQCBkZWYgZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0
aW5zX2ZpbGVzPVtdLAogICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNTZXBh
cmF0ZUhlYWRlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKICAgICAgICAgICAgIGdlbmVyYXRv
cnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihtb2RlbCwg
b2JqZWN0KSkKIAotICAgICAgICAgICAgaWYgbW9kZWwuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3Mu
V2ViQ29yZToKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFy
YXRlV3JhcHBlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKLQogICAgIGxvZy5kZWJ1ZygiIikK
ICAgICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIGJ1aWx0aW5zLiIpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1H
dWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggNTVhMjFkNDY1Njg2NmZlOGY3
MzdmMTgzMDdiMTI2MjRhNzQ0ODJhYS4uM2RiZWY3NTc5NWZiNTU4N2ZmMzQxOTQyZTIzNjA4Nzk5
MTkxMTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTMxLDcg
KzMxLDExIEBACiAjaWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zX2gKIAorI2luY2x1ZGUgIkd1YXJkZWRCdWlsdGluQnVpbHRpbnMu
aCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNsdWRlIDxieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKQEAgLTc3LDYgKzgxLDg5IEBAIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKIAogI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fRVhJU1RTKG9i
amVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1
bmMKIAorY2xhc3MgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVkQnVpbHRpbkJ1
aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklU
SUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpT
Qzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVu
Z3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NP
REUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JV
SUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBj
b25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNu
YW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJ
Tl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisg
ICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisK
KyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1F
KERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNv
ZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9H
VUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5l
IERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
CitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25h
bWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2Vh
azxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVj
dXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgp
LCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJs
ZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JF
X0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lk
IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5l
IEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0
ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBP
UlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFz
cyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0
IEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7
IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNp
dChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAg
ICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5C
dWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0
aClcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1l
IyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hf
R1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBP
UlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rp
b25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9G
VU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBX
RUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lU
X0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gR3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCkBAIC0xODYsMTMz
ICsyNzMsMyBAQCBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERF
RklORV9CVUlMVElOX0dFTkVSQVRPUikKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogIyMjIEVu
ZCBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAotCi0jIyMgQmVnaW4gRmlsZTogR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNSBD
YW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKiAKLSAqLwotCi0vLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2
YVNjcmlwdCBmaWxlcyBmb3IKLS8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Ci0KLSNpZm5kZWYgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAotI2RlZmluZSBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zV3JhcHBlcl9oCi0KLSNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCi0jaW5j
bHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+Ci0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KLSNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlciA6IHByaXZhdGUgSlNDOjpXZWFr
SGFuZGxlT3duZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQotICAgICAgICA6IG1fdm0oKnZtKQotICAgICAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfQlVJTFRJTl9OQU1FUykKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjpt
YWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgp
KSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgSU5JVElBTElaRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTCi0gICAgewotICAgIH0KLQotI2RlZmluZSBFWFBPU0VfQlVJTFRJ
Tl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAotICAgIEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAotICAgIGNvbnN0
IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUj
I1NvdXJjZTsgfQotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NP
REUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCi0jdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhF
Q1VUQUJMRVMKLQotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2
b2lkIGV4cG9ydE5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotICAg
IFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVD
TEFSRV9CVUlMVElOX05BTUVTKQotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAotICAgIEpTQzo6U291cmNlQ29kZSBt
XyMjbmFtZSMjU291cmNlO1wKLSAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0j
dW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCi0KLX07Ci0KLSNkZWZpbmUgREVG
SU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKLWlu
bGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKLXtcCi0gICAgaWYgKCFtXyMjbmFtZSMj
RXhlY3V0YWJsZSlcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNf
IyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtc
Ci0gICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKLX0KLVdFQkNPUkVfRk9S
RUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJM
RVMpCi0jdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKLQotaW5saW5lIHZvaWQgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKLXsKLSNkZWZpbmUgRVhQ
T1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5h
bE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKLSAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9G
VU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCi19Ci0KLWNsYXNzIEd1
YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQot
Ci0gICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKLSAgICB2b2lkIHZpc2l0KEpT
Qzo6U2xvdFZpc2l0b3ImKTsKLQotcHVibGljOgotICAgIEpTQzo6Vk0mIG1fdm07Ci0KLSNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXAotICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rp
b247Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewot
I2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
LSAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwg
SlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dl
bmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOwotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQotI3VuZGVmIEVYUE9SVF9G
VU5DVElPTgotfQotCi1pbmxpbmUgdm9pZCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6
OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5lIFZJU0lUX0ZVTkNU
SU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOwotICAgIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVO
Q1RJT04pCi0jdW5kZWYgVklTSVRfRlVOQ1RJT04KLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCi0KLSMjIyBF
bmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggMzQ4YTFjZmM0NDg0YWVm
M2Y3NjBlODc5NDY2ZWZiYWI5NjZlNTBmNC4uODU2ZjMxMTExNjY4ODMwMzZjOTNlMDJiNGYyMjFj
YjVjMzA5MzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFy
YXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0CkBAIC0zMSw3ICszMSwxMSBAQAogI2lmbmRlZiBHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAog
CisjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCiAjaW5jbHVkZSA8
YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CkBAIC03Nyw2ICs4MSw4OSBAQCBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
RElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikK
IAogI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9FWElTVFMo
b2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMg
ZnVuYwogCitjbGFzcyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJp
dmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBt
X3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUg
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMK
KyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBu
YW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisK
KyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lk
IGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VD
b2RlIG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hf
R1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9Owor
CisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tc
CisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVj
dXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25O
YW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1f
IyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdl
dCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9F
WEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNX
cmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5h
bWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05h
bWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1F
KQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIEd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7
IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNp
dChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAg
ICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldCht
X3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9S
VF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgR3Vh
cmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBw
ZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5U
RVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRl
ZiBWSVNJVF9GVU5DVElPTgorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCkBAIC0xODYsMTMzICsyNzMsMyBA
QCBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjIyMgRW5k
IEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5jcHAKLQotIyMjIEJlZ2luIEZp
bGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAotLyoKLSAqIENvcHly
aWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKiAK
LSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKLS8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
Ci0KLSNpZm5kZWYgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCi0jZGVm
aW5lIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAotCi0jaW5jbHVkZSAi
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVp
bHRpblV0aWxzLmg+Ci0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaD4KLSNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0pTRnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHdWFyZGVkSW50
ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25l
ciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcihKU0M6OlZNKiB2bSkKLSAgICAgICAgOiBtX3ZtKCp2bSkKLSAgICAgICAgV0VCQ09S
RV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElO
SVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2Uo
SlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBs
ZW5ndGgpKSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5f
QlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLSAgICB7Ci0gICAgfQotCi0jZGVmaW5l
IEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
Ci0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgp
OyBcCi0gICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtXyMjbmFtZSMjU291cmNlOyB9Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQotI3Vu
ZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCi0KLSAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElO
X0lERU5USUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2b2lkIGV4cG9ydE5hbWVzKCk7Ci0KLXByaXZh
dGU6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5U
RVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMp
Ci0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAot
ICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMj
RXhlY3V0YWJsZTsKLSAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9C
VUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotCi19OwotCi0jZGVmaW5lIERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKLXtcCi0gICAgaWYgKCFtXyMjbmFtZSMjRXhl
Y3V0YWJsZSlcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUo
bV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNu
YW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCi0g
ICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKLX0KLVdFQkNPUkVfRk9SRUFD
SF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwotCi1pbmxpbmUgdm9p
ZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCi17
Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+
YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUo
KSk7Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElP
Tl9OQU1FCi19Ci0KLWNsYXNzIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25z
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1
bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KLQotICAgIHZvaWQgaW5pdChKU0M6
OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7Ci0K
LXB1YmxpYzoKLSAgICBKU0M6OlZNJiBtX3ZtOwotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKLSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6
OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOwotICAgIFdFQkNPUkVfRk9S
RUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1
bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0jZGVm
aW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAotICAg
IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJh
dG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKLSN1bmRlZiBFWFBP
UlRfRlVOQ1RJT04KLX0KLQotaW5saW5lIHZvaWQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0
aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5l
IFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24p
OwotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5CdWlsdGluc1dyYXBwZXJfaAotCi0jIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5CdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNl
cGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQKaW5kZXggNThlZTJkYWJiYWM5YzFhNmI2NTlhYjEzMmIwYTZjNDcxZTYzZTQ1OC4uMzhmMTBh
ZDcxYzNmMDU2ZmFhNDdjMTI2ZmQwNDFhNWZhM2NjNzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1
YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0zMSw3ICszMSwxMSBAQAogI2lmbmRlZiBVbmd1YXJk
ZWRCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAog
CisjaW5jbHVkZSAiVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCiAjaW5jbHVkZSA8YnVpbHRp
bnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0pTRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7CkBAIC03Nyw2ICs4MSw4OSBAQCBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKIAogI2RlZmluZSBX
RUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZp
bmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYwogCitjbGFzcyBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25l
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
cihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJ
TFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291
cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAg
ICAgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJ
QUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VY
RUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlND
OjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291
cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RF
KEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2
b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAg
IFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShE
RUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2Rl
IG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5H
VUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5l
IERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
CitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5ndWFyZGVkQnVpbHRp
bkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMj
bmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpX
ZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1l
KCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRh
YmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNP
UkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9F
WEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUg
dm9pZCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7Cisj
ZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBw
ZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7
CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9O
QU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9
CisKK2NsYXNzIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkg
OiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Cisg
ICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZN
JiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlv
bk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElO
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisj
dW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBV
bmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldCht
X3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAg
V0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5D
VElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgVW5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFt
ZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgor
fQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0
aW5CdWlsdGluc19oCkBAIC0xODYsMTMzICsyNzMsMyBAQCBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlu
cy5jcHAKLQotIyMjIEJlZ2luIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIu
aAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKiAKLSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKLS8vIGJ1aWx0
aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5Ci0KLSNpZm5kZWYgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
cl9oCi0jZGVmaW5lIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAotCi0jaW5jbHVk
ZSAiVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRp
blV0aWxzLmg+Ci0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aD4KLSNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
RnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVbmd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZN
KiB2bSkKLSAgICAgICAgOiBtX3ZtKCp2bSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1F
UykKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmlu
Z0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICAgICAgV0VC
Q09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMKLSAgICB7Ci0gICAgfQotCi0jZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCi0gICAgY29uc3QgSlNDOjpTb3VyY2VD
b2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9Ci0g
ICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKQotI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCi0K
LSAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2b2lkIGV4cG9y
dE5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotICAgIFdFQkNPUkVf
Rk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JV
SUxUSU5fTkFNRVMpCi0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1l
IyNTb3VyY2U7XAotICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotCi19OwotCi0jZGVmaW5lIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUg
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKLXtcCi0gICAgaWYgKCFtXyMjbmFtZSMjRXhl
Y3V0YWJsZSlcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUo
bV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNu
YW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCi0g
ICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKLX0KLVdFQkNPUkVfRk9SRUFD
SF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxF
UykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwotCi1pbmxpbmUgdm9pZCBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCi17Ci0jZGVmaW5lIEVY
UE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJu
YWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7Ci0gICAgV0VC
Q09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9S
VF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCi19Ci0KLWNsYXNz
IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKLXB1YmxpYzoKLSAgICBleHBsaWNp
dCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZt
KSB7IH0KLQotICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgdm9pZCB2
aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7Ci0KLXB1YmxpYzoKLSAgICBKU0M6OlZNJiBtX3ZtOwot
Ci0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwK
LSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUj
I0Z1bmN0aW9uOwotICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCBVbmd1YXJkZWRC
dWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBj
b2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAgV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKLSN1
bmRlZiBFWFBPUlRfRlVOQ1RJT04KLX0KLQotaW5saW5lIHZvaWQgVW5ndWFyZGVkQnVpbHRpbkJ1
aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVm
aW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rp
b24pOwotICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShWSVNJVF9GVU5DVElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlu
c1dyYXBwZXJfaAotCi0jIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBw
ZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggODY4ZmM2ZmM2ZmJm
ODVlZGQ3YjhkM2M4OGVjNmQyMjY2N2UxZTc3ZC4uODM1OWM5Yjk0MTg4MWVhNDJkNDc0N2I4ZmI0
MjBjODdlMjE1M2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpz
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0z
MSw3ICszMSwxMSBAQAogI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAogI2RlZmluZSB4
bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAogCisjaW5jbHVkZSAieG1sQ2FzaW5nVGVzdEJ1aWx0aW5z
LmgiCiAjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC03Nyw2ICs4MSw4OSBAQCBXRUJDT1JF
X0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKIAogI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9FWElTVFMob2Jq
ZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVu
YwogCitjbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6Oldl
YWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0
aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VC
Q09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjpt
YWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgp
KSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKElO
SVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3Qg
SlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMj
U291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RF
KEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lk
IGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdF
QkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNu
YW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5H
VEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUg
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3Jh
cHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0
YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92
bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1l
IyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAg
cmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9Y
TUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdU
ZXN0QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5D
VElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5h
bWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JF
QUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9O
QU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIHhtbENhc2luZ1Rl
c3RCdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCB4bWxDYXNpbmdUZXN0
QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQg
aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNp
dG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFy
cmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdF
QkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCit9OworCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6
aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9S
VF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0p
LCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJ
TFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKwor
aW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0
b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxD
QVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBW
SVNJVF9GVU5DVElPTgorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IHhtbENhc2luZ1Rlc3RCdWlsdGluc19oCkBAIC0xODYsMTMzICsyNzMsMyBAQCBXRUJDT1JFX0ZP
UkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RC
dWlsdGlucy5jcHAKLQotIyMjIEJlZ2luIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBw
ZXIuaAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKiAKLSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKLS8vIGJ1
aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5Ci0KLSNpZm5kZWYgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBl
cl9oCi0jZGVmaW5lIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAotCi0jaW5jbHVkZSAi
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxz
Lmg+Ci0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KLSNp
bmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rp
b24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRp
bnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKLSAgICAg
ICAgOiBtX3ZtKCp2bSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKLSNkZWZpbmUgSU5J
VElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3Ro
KSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZy
b21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hN
TENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UykKLSN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLSAgICB7Ci0gICAg
fQotCi0jZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFt
ZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMj
RXhlY3V0YWJsZSgpOyBcCi0gICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9Ci0gICAgV0VCQ09SRV9GT1JFQUNI
X1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQot
I3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCi0KLSAgICBXRUJDT1JFX0ZPUkVBQ0hf
WE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5U
SUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2b2lkIGV4cG9ydE5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgSlNDOjpWTSYgbV92bTsKLQotICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCi0KLSNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
Ci0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAotICAgIEpTQzo6V2VhazxK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAg
ICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UwotCi19OwotCi0jZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKLXtc
Ci0gICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVj
dXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25O
YW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1f
IyNuYW1lIyNFeGVjdXRhYmxlKTtcCi0gICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdl
dCgpO1wKLX0KLVdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxF
UwotCi1pbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1l
cygpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlO
YW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0
ZU5hbWUoKSk7Ci0gICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9O
QU1FCi19Ci0KLWNsYXNzIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25zIHsKLXB1YmxpYzoK
LSAgICBleHBsaWNpdCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkg
OiBtX3ZtKHZtKSB7IH0KLQotICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0g
ICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7Ci0KLXB1YmxpYzoKLSAgICBKU0M6OlZN
JiBtX3ZtOwotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlv
bk5hbWUpIFwKLSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uOwotICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5k
ZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCB4bWxD
YXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25O
YW1lLCBsZW5ndGgpXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAm
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3Zt
LCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAgV0VCQ09S
RV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKLSN1
bmRlZiBFWFBPUlRfRlVOQ1RJT04KLX0KLQotaW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0
aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5l
IFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24p
OwotICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShWSVNJVF9GVU5DVElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJf
aAotCi0jIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5OGYzZWE0NGRiZjlhNzUyMjBkYTg4NGQ4ODUxOGMyZDZlYzc4MjA0
Li5iNTU5MzEwYjVjNmQ1YWY2YWMwM2FjMTljNmFmYjBmODFlZTFlYWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMzYwNiw3ICszNjA2LDYgQEAgc2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJ
UFRTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKICAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKICAgICAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRh
dGlvbi5weQotICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX3dyYXBwZXIucHkKICAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQogICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2xhenl3cml0ZXIucHkKICkKQEAgLTM2MTYsMTQgKzM2MTUsMTIgQEAgZm9yZWFjaCAoX2J1
aWx0aW5Tb3VyY2UgJHtXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVN9KQogICAgIGFkZF9jdXN0b21f
Y29tbWFuZCgKICAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8k
e19vYmplY3ROYW1lfUJ1aWx0aW5zLmNwcAogICAgICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuaAotICAgICAgICAgICAgICAg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnNXcmFw
cGVyLmggCiAgICAgICAgIE1BSU5fREVQRU5ERU5DWSAke19idWlsdGluU291cmNlfQogICAgICAg
ICBERVBFTkRTICR7QlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFN9CiAgICAgICAgIENPTU1BTkQg
JHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkgLS1mcmFtZXdvcmsgV2ViQ29yZSAtLW91dHB1dC1kaXJlY3Rvcnkg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9ICR7X2J1aWx0aW5Tb3VyY2V9CiAgICAgICAg
IFZFUkJBVElNKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5oCi0gICAg
ICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5z
V3JhcHBlci5oCiAgICAgKQogICAgIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVO
Q0lFUygke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAgJHtf
b2JqZWN0TmFtZX1CdWlsdGlucy5jcHApCiBlbmRmb3JlYWNoICgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBiMWMzNTk5MDJkMmI0M2M4NzlhYmUyZDg2MjRhM2UwMDg1MTljYTlk
Li5kZmRhMmYyN2ZmYjk3NjA3YWIwYWMzMDZlNjc0NmI5ODQ5ZTgxOTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyNzcsNyArMTI3Nyw2IEBAIEJVSUxUSU5TX0dFTkVSQVRP
Ul9TQ1JJUFRTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5z
X2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IFwKICAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgXAog
ICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFy
YXRlX2ltcGxlbWVudGF0aW9uLnB5IFwKLSAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCiAgICAgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5weSBcCiAjCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODkzMmY5Nzkx
MTQwNGY0NjkxMGFmOGVlYWZkMWVhMmNhMTk5YjBhOS4uZjFlNjc4MjY0MTQ4OTAwNTAwYTUzMTUz
NWFmOTAyNjUzN2JkNDIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOCw5ICsxNTE4LDYgQEAKIAkJNDE2RTZGRTgxQkJE
MTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQw
MEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAw
MEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFk
YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFt
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTZGRUEx
QkJEMTY4NDAwMEE2MDM0IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDcxQkIzMTEw
RDAwQjc2NENBIC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkU2RkVBMUJCRDE2ODQw
MDBBNjA0NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDcxQkIzMTEw
RDAwQjc2NERBIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTZGRUEx
QkJEMTY4NDAwMEE2MDU0IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgw
NzFCQjMxMTBEMDBCNzY0RUEgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBw
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTcyNTNBQTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTgxMzU0QkJC
QzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJNDE3MjUzQUIx
MzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKIAkJNDE3REE2RDkxMzczNEU2RTAwN0M1
N0ZCIC8qIEludGVybmFscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTdEQTRDRjEzNzM0MzI2MDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCAqLzsg
fTsKQEAgLTExMzgwLDIyICsxMTM3NywxOCBAQAogCQk5OTA4QjBGMTFCQ0FDRjkxMDBFRDBGNzUg
LyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbUludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjIxQkNBQ0Y5MTAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFt
UmVhZGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFi
bGVTdHJlYW1SZWFkZXIuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYz
MUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIw
RjQxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dy
YXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneUJ1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1
aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3lCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4
QjBGNjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3VudFF1ZXVpbmdTdHJhdGVn
eUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjcxQkNB
RDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBGODFCQ0FEMDdEMDBFRDBGNjUgLyog
Q291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjY1IC8qIFJl
YWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFt
QnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQTFCQ0FE
MDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
QnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQjFCQ0FE
MDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRp
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRkMxQkNBRDA3RDAwRUQw
RjY1IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zV3JhcHBlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlu
c1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3
RDAwRUQwRjU1IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZEMUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJs
ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGRTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVT
dHJlYW1SZWFkZXJCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkwOEIwRkYxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVT
dHJlYW1SZWFkZXJCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4
QjEwMDFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGluc1dyYXBw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFk
ZXJCdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyMDM5
ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VySW5wdXRCcmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTIwMzk4MTE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklucHV0QnJp
ZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnB1dEJyaWRnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk0RTVEODFCRDg0M0EzMDBGMkQ4MzUg
LyogTWVkaWFEZXZpY2VzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gTWVkaWFEZXZpY2VzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0Mzgs
MTEgKzExNDMxLDYgQEAKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlu
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0
aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3
NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NENBIC8qIFN0
cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtQnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTlCMDNEODA3MUJCMzExMEQwMEI3NjREQSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk5QjAzRDgwNzFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGluc1dy
YXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1C
dWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOUIwM0Q4MDcx
QkIzMTEwRDAwQjc2NEVBIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlC
NjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIw
NzkxNjQ4QzY5RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTcxODUsMTIgKzE3MTczLDEwIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5
OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0
aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCi0JCQkJOTkwOEIwRjQxQkNBQ0ZGRTAwRUQwRjY1
IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCAqLywKIAkJCQk2
NTY1ODFBQzA5RDE0RUU2MDAwRTYxRDcgLyogQ2hhcnNldERhdGEuY3BwICovLAogCQkJCUU0MDZG
M0ZCMTE5ODMwN0QwMDlENTlENiAvKiBDb2xvckRhdGEuY3BwICovLAogCQkJCTk5MDhCMEY2MUJD
QUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKIAkJ
CQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlu
cy5oICovLAotCQkJCTk5MDhCMEY4MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zV3JhcHBlci5oICovLAogCQkJCTY1NjU4MTQ0MDlEMTMwNDMwMDBFNjFENyAv
KiBDU1NHcmFtbWFyLmNwcCAqLywKIAkJCQk2NTBGNTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NT
R3JhbW1hci5oICovLAogCQkJCUU0MUVBMDM4MTE5ODM2REIwMDcxMEJDNSAvKiBDU1NQcm9wZXJ0
eU5hbWVzLmNwcCAqLywKQEAgLTE3MjQzLDE2ICsxNzIyOSwxMiBAQAogCQkJCTcxRTIxODM5MTcz
NTlGQjgwMDZFNkU0RCAvKiBQbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgKi8sCiAJCQkJOTkwOEIw
RjkxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovLAogCQkJ
CTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8s
Ci0JCQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNX
cmFwcGVyLmggKi8sCiAJCQkJOTkwOEIwRkExQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlckJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGQjFCQ0FEMDdEMDBFRDBG
NjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuaCAqLywKLQkJCQk5OTA4QjBG
QzFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnNXcmFw
cGVyLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuY3BwICovLAogCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAv
KiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8sCi0JCQkJOUIwM0Q4MDcxQkIz
MTEwRDAwQjc2NERBIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgg
Ki8sCiAJCQkJOTkwOEIwRkUxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVy
QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEZGMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJs
ZVN0cmVhbVJlYWRlckJ1aWx0aW5zLmggKi8sCi0JCQkJOTkwOEIxMDAxQkNBRDA3RDAwRUQwRjY1
IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyQnVpbHRpbnNXcmFwcGVyLmggKi8sCiAJCQkJNDNCODVF
RDIxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5
RWxlbWVudE1hcC5jcHAgKi8sCiAJCQkJNDNCODVFRDMxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVj
dG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5ncGVyZiAqLywKIAkJCQky
NkFBMEY5RDE4RDJBMThCMDA0MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5j
cHAgKi8sCkBAIC0xNzI2MCw3ICsxNzI0Miw2IEBACiAJCQkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjU1
IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLywKIAkJCQk5QjAzRDgwNjFCQjMxMTBE
MDBCNzY0QzkgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKLQkJCQk5QjAzRDgwNzFC
QjMxMTBEMDBCNzY0Q0EgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi8sCiAJ
CQkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCiAJCQkJ
ODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlv
bnMuY3BwICovLAogCQkJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8sCkBAIC0xNzI3OSwxMCArMTcyNjAsOCBAQAogCQkJCTk5
Q0MwQjY5MThCRUExRkYwMDZDRUJDQyAvKiBXZWJSZXBsYXlJbnB1dHMuaCAqLywKIAkJCQk5OTA4
QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8sCiAJ
CQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAq
LywKLQkJCQk5QjAzRDgwNzFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlu
c1dyYXBwZXIuaCAqLywKIAkJCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8sCiAJCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKLQkJCQk5QjAzRDgw
NzFCQjMxMTBEMDBCNzY0RUEgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBw
ZXIuaCAqLywKIAkJCQk2NTY1ODFFQTA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1lcy5jcHAg
Ki8sCiAJCQkJNjU2NTgxRUIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCAqLywKIAkJ
CQlBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovLApAQCAtMjY5MDAs
NyArMjY4NzksNiBAQAogCQkJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9j
dW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0
MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZF
ODFCQkQxMkRGMDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRUExQkJEMTY4NDAwMEE2MDQ0IC8qIFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAz
QzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNEE0RjY1NzExQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRBNEY2NTcyMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzMzLDcgKzI3MzExLDYg
QEAKIAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEzNzYzNkMxQTJFNjhCQjAwOUE3RUUyIC8qIFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2
MDMzIC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZF
NkZFQTFCQkQxNjg0MDAwQTYwMzQgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNkMzNjEzMUM1N0QzMDAwOUE3RTAgLyogU3RyaW5nQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMzU0MEYzMEQwMDc4MkUwMDIzODJGQSAvKiBT
dHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4
NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDE0LDcg
KzI3OTkxLDYgQEAKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRz
SW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFOTFCQkQxMkU1
MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNkU2RkVBMUJCRDE2ODQwMDBBNjA1NCAvKiBXcml0
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU2NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQnVpbHRpbkludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQnVpbHRpbkludGVybmFscy5oCmluZGV4IGJhODI4OTg5OWJlZDAyNTg3YjAxZmU0MzEy
MGVkNWE1NmM4OTkyZjguLmViMjM3OTJmOGJiMDNiMjU2NDRmMTMzOTc5OTQ0N2ViNTZhNDI5MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWls
dGluSW50ZXJuYWxzLmgKQEAgLTI4LDkgKzI4LDkgQEAKICNkZWZpbmUgV2ViQ29yZUpTQnVpbHRp
bkludGVybmFsc19oCiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0jaW5jbHVkZSAiUmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCIKLSNpbmNsdWRlICJTdHJlYW1JbnRl
cm5hbHNCdWlsdGluc1dyYXBwZXIuaCIKLSNpbmNsdWRlICJXcml0YWJsZVN0cmVhbUludGVybmFs
c0J1aWx0aW5zV3JhcHBlci5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuaCIKKyNpbmNsdWRlICJTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIgorI2luY2x1ZGUg
IldyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCIKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
SlNCdWlsdGlucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRp
bnMuaAppbmRleCA2Mzc3NGUxZmMzYjdiZjViYWQwNDc2NTJhNjM5ZmMyZTI1NjYxOTNmLi5hYTc5
YTEzMmVhZmIxZTlmMjE2ZjM4NTc1OWI3NDc4OWRlNTk2YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmgKQEAgLTI4LDE5ICsyOCwxOSBAQAog
I2RlZmluZSBXZWJDb3JlSlNCdWlsdGluc19oCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
I2luY2x1ZGUgIk1lZGlhRGV2aWNlc0J1aWx0aW5zV3JhcHBlci5oIgorI2luY2x1ZGUgIk1lZGlh
RGV2aWNlc0J1aWx0aW5zLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLSNp
bmNsdWRlICJCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmgiCi0jaW5j
bHVkZSAiQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCIKLSNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckJ1aWx0aW5zV3JhcHBlci5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXJC
dWlsdGluc1dyYXBwZXIuaCIKLSNpbmNsdWRlICJTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBw
ZXIuaCIKLSNpbmNsdWRlICJXcml0YWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oIgotI2luY2x1
ZGUgIldyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgiCisjaW5jbHVkZSAi
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiQ291bnRRdWV1
aW5nU3RyYXRlZ3lCdWlsdGlucy5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtQnVpbHRpbnMu
aCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucy5oIgorI2luY2x1
ZGUgIlJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJSZWFkYWJs
ZVN0cmVhbVJlYWRlckJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCIKKyNpbmNsdWRlICJXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiV3Jp
dGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIgogI2VuZGlmCiAKICNpbmNsdWRlIDxydW50
aW1lL1ZNLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263991</attachid>
            <date>2015-10-24 17:00:33 -0700</date>
            <delta_ts>2015-10-30 10:59:14 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-150539-20151024165948.patch</filename>
            <type>text/plain</type>
            <size>77587</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxNTM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NWVhNDdiNDU1NmExM2Q5ZTE0MjJiMjM1YjM2ZTM0MDhjMDg2NjhlLi45ODI1MjEzMDM5NTg3MDkx
N2FjNzVhZjExOGQ5YWUyYzMyYTM0YjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzMSBAQAogMjAxNS0xMC0yNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBCdWlsdGlucyBnZW5lcmF0b3Igc2hvdWxkIHB1dCBXZWJDb3JlLW9ubHkgd3JhcHBl
cnMgaW4gdGhlIHBlci1idWlsdGluIGhlYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSWYgZ2VuZXJhdGluZyBmb3IgV2ViQ29yZSwgcHV0IHRoZSBY
WFhXcmFwcGVyIGFuZCByZWxhdGVkIGJvaWxlcnBsYXRlCisgICAgICAgIGluIHRoZSBwZXItYnVp
bHRpbiBoZWFkZXIgaW5zdGVhZCBvZiBtYWtpbmcgYSBzZXBhcmF0ZSBYWFhXcmFwcGVyLmguCisK
KyAgICAgICAgUmViYXNlbGluZSB0aGUgdGVzdHMuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFNjcmlwdHMvYnVp
bHRpbnMvYnVpbHRpbnMucHk6CisgICAgICAgICogU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19n
ZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHk6CisgICAgICAgIChCdWlsdGluc1NlcGFyYXRlSGVh
ZGVyR2VuZXJhdG9yLmdlbmVyYXRlX291dHB1dCk6CisgICAgICAgIChnZW5lcmF0ZV9oZWFkZXJf
aW5jbHVkZXMpOgorICAgICAgICAqIFNjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVf
c2VwYXJhdGVfd3JhcHBlci5weTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWx0aW5z
L2J1aWx0aW5zX3RlbXBsYXRlcy5weTogQmUgY29uc2lzdGVudCB3aXRoIHZhcmlhYmxlcy4KKyAg
ICAgICAgKiBTY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5OgorICAgICAgICAqIFNjcmlw
dHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0
ZS5qcy1yZXN1bHQ6CisgICAgICAgICogU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9X
ZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0OgorICAgICAg
ICAqIFNjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWls
dGluLVNlcGFyYXRlLmpzLXJlc3VsdDoKKyAgICAgICAgKiBTY3JpcHRzL3Rlc3RzL2J1aWx0aW5z
L2V4cGVjdGVkL1dlYkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQ6CisKKzIw
MTUtMTAtMjQgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKICAgICAgICAgVGVhY2gg
Y3JlYXRlX2hhc2hfdGFibGUgdG8gb21pdCBidWlsdGlucyBtYWNyb3Mgd2hlbiBnZW5lcmF0aW5n
IHRhYmxlcyBmb3IgbmF0aXZlLW9ubHkgb2JqZWN0cwogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwNDkxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiZmQ4NjFlNWEy
YWYzZTA0M2UxY2I0ZWFiNWUzNDYzMGJiYzliM2VjLi43MWQ3YTY2ODY3MjFlZmQ4NDUxZDQyNDc2
MWRhM2RjNjFhMTNmZjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUtMTAtMjQg
IEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQnVpbHRpbnMgZ2VuZXJh
dG9yIHNob3VsZCBwdXQgV2ViQ29yZS1vbmx5IHdyYXBwZXJzIGluIHRoZSBwZXItYnVpbHRpbiBo
ZWFkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDUzOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZp
eCBpbmNsdWRlcyBvZiByZW1vdmVkIFhYWFdyYXBwZXIuaCBoZWFkZXJzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dl
YkNvcmVKU0J1aWx0aW5zLmg6CisKIDIwMTUtMTAtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBSYWRpb05vZGVMaXN0IHNob3VsZCBiZSBleHBvc2VkIG9uIFdp
bmRvdwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFjNzRjNzJmODVmNGFj
YTAwZjE3NGFjZjAxNDQ0NWQ3ZDgyOWU1NDkuLmJhNGQ5MWQxODEzZTc0ZjgzOThiYmRlZGJhOThk
NDk0YzgzYTQyODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExMzYs
NyArMTEzNiw2IEBAIHNldChCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUUwogICAgICR7SmF2YVNj
cmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVu
dGF0aW9uLnB5CiAgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2Vu
ZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CiAgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJ
Un0vYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkKLSAgICAke0ph
dmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFw
cGVyLnB5CiAgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJhdGUtanMtYnVp
bHRpbnMucHkKICAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSfS9sYXp5d3JpdGVyLnB5
CiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCmluZGV4IDUzOWNi
NGM3YjY2MTMzYTAyYmI5NzM1ZjFjOTYyNmMzYzhlZTEwMGYuLjkwOWY3NTIyOWViOTk3MzA1MDFj
ODE2YzVjODY5MTBlZTRiMzU0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCkBAIC03Myw3ICs3Myw2IEBAIEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJUFRTID0g
XAogICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5zX2dl
bmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
X1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIu
cHkgXAogICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zL2J1aWx0aW5z
X2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IFwKLSAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFw
cGVyLnB5IFwKICAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1i
dWlsdGlucy5weSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRl
ci5weSBcCiAjCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhlZTZjOTlmMDlkMzFi
YTNhNmNmMjI1MzY1MWFkMTAwZmE0ZmZjNGQuLmU4OGYyNzljMTQzMWNiNTg5NmM2MTQ3ZGZmODM3
MzU0NmNiZGFhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMjQ2LDcgKzEy
NDYsNiBAQAogCQk5OURBMDBBODFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OURBMDA5RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2Vu
ZXJhdGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlEQTAwQTkxQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5REEwMEEwMUJENTk5MjcwMEY0NTc1QyAvKiBidWls
dGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlEQTAwQUExQkQ1OTkzMTAwRjQ1NzVDIC8qIGJ1
aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5IGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVD
IC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTk5REEwMEFCMUJENTk5
MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQTIxQkQ1OTky
NzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX3dyYXBwZXIucHkgKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlEQTAwQUYxQkQ1
OTk0RTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5IGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAwQUMxQkQ1OTkzRTAwRjQ1NzVDIC8q
IGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTk5REEwMEIwMUJENTk5NEUwMEY0NTc1QyAvKiBsYXp5d3JpdGVy
LnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTlEQTAw
QUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3cml0ZXIucHkgKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTlEQTAwQjExQkQ1OTk0RTAwRjQ1NzVDIC8q
IFVwZGF0ZUNvbnRlbnRzLnB5IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTlEQTAwQUUxQkQ1OTkzRTAwRjQ1NzVDIC8qIFVwZGF0ZUNvbnRlbnRzLnB5ICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zMTczLDcg
KzMxNzIsNiBAQAogCQk5OURBMDA5RjFCRDU5OTI3MDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJh
dGVfY29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRo
b247IHBhdGggPSBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlEQTAwQTAxQkQ1OTkyNzAwRjQ1NzVDIC8q
IGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9IGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8q
IGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2ltcGxlbWVudGF0aW9uLnB5ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1w
bGVtZW50YXRpb24ucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk5REEwMEEyMUJE
NTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gYnVpbHRpbnNfZ2VuZXJhdGVfc2Vw
YXJhdGVfd3JhcHBlci5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlEQTAwQUMx
QkQ1OTkzRTAwRjQ1NzVDIC8qIGdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gImdlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Ijsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTlEQTAwQUQxQkQ1OTkzRTAwRjQ1NzVDIC8qIGxhenl3
cml0ZXIucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBsYXp5d3JpdGVy
LnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OURBMDBBRTFCRDU5OTNFMDBGNDU3
NUMgLyogVXBkYXRlQ29udGVudHMucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBh
dGggPSBVcGRhdGVDb250ZW50cy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU4
MjEsNyArNTgxOSw2IEBACiAJCQkJOTlEQTAwOUYxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5z
X2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5ICovLAogCQkJCTk5REEwMEEwMUJE
NTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgKi8s
CiAJCQkJOTlEQTAwQTExQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX2dlbmVyYXRlX3NlcGFy
YXRlX2ltcGxlbWVudGF0aW9uLnB5ICovLAotCQkJCTk5REEwMEEyMUJENTk5MjcwMEY0NTc1QyAv
KiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5ICovLAogCQkJCTk5REEwMDlB
MUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0b3IucHkgKi8sCiAJCQkJOTlEQTAw
OUIxQkQ1OTkyNzAwRjQ1NzVDIC8qIGJ1aWx0aW5zX21vZGVsLnB5ICovLAogCQkJCTk5REEwMDlD
MUJENTk5MjcwMEY0NTc1QyAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgKi8sCkBAIC02MTI4LDcg
KzYxMjUsNiBAQAogCQkJCTk5REEwMEE4MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5l
cmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbi5weSBpbiBIZWFkZXJzICovLAogCQkJCTk5REEw
MEE5MUJENTk5MzEwMEY0NTc1QyAvKiBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIu
cHkgaW4gSGVhZGVycyAqLywKIAkJCQk5OURBMDBBQTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24ucHkgaW4gSGVhZGVycyAqLywKLQkJ
CQk5OURBMDBBQjFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVf
d3JhcHBlci5weSBpbiBIZWFkZXJzICovLAogCQkJCTk5REEwMEEzMUJENTk5MzEwMEY0NTc1QyAv
KiBidWlsdGluc19nZW5lcmF0b3IucHkgaW4gSGVhZGVycyAqLywKIAkJCQk5OURBMDBBNDFCRDU5
OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfbW9kZWwucHkgaW4gSGVhZGVycyAqLywKIAkJCQk5OURB
MDBBNTFCRDU5OTMxMDBGNDU3NUMgLyogYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGluIEhlYWRlcnMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9i
dWlsdGlucy5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0
aW5zLnB5CmluZGV4IGM2N2NkYWQ4YTMwZDcwY2NjNDVhMTlkODNkMjI0YTY0ZjNiZWZmNzIuLjkz
NDllZWVmNjUzNDBhMjJhZGQwYWMyMjYwZjZjZjYwYjMyMjA2N2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0aW5zL2J1aWx0aW5zLnB5CkBAIC05LDQgKzks
MyBAQCBmcm9tIGJ1aWx0aW5zX2dlbmVyYXRlX2NvbWJpbmVkX2hlYWRlciBpbXBvcnQgKgogZnJv
bSBidWlsdGluc19nZW5lcmF0ZV9jb21iaW5lZF9pbXBsZW1lbnRhdGlvbiBpbXBvcnQgKgogZnJv
bSBidWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIgaW1wb3J0ICoKIGZyb20gYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfaW1wbGVtZW50YXRpb24gaW1wb3J0ICoKLWZyb20gYnVpbHRp
bnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlciBpbXBvcnQgKgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfZ2VuZXJhdGVfc2VwYXJh
dGVfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfaGVhZGVyLnB5CmluZGV4IDViMWViN2Q2NzFjYTExYzM1
OGE1MTk3ZGFkYWRlNzk1MTkwZDAwMzAuLmMwOWRjNzk4NDczMmVhZWRhN2VhNzVhYjNlNDcwM2Mz
Njc4MzZkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1aWx0
aW5zL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFyYXRlX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9o
ZWFkZXIucHkKQEAgLTMxLDYgKzMxLDcgQEAgaW1wb3J0IHN0cmluZwogZnJvbSBzdHJpbmcgaW1w
b3J0IFRlbXBsYXRlCiAKIGZyb20gYnVpbHRpbnNfZ2VuZXJhdG9yIGltcG9ydCBCdWlsdGluc0dl
bmVyYXRvcgorZnJvbSBidWlsdGluc19tb2RlbCBpbXBvcnQgRnJhbWV3b3JrcwogZnJvbSBidWls
dGluc190ZW1wbGF0ZXMgaW1wb3J0IEJ1aWx0aW5zR2VuZXJhdG9yVGVtcGxhdGVzIGFzIFRlbXBs
YXRlcwogCiBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignZ2xvYmFsJykKQEAgLTUyLDcgKzUzLDgg
QEAgY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZUhlYWRlckdlbmVyYXRvcihCdWlsdGluc0dlbmVyYXRv
cik6CiAgICAgICAgICAgICAnbmFtZXNwYWNlJzogc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0
aW5nKCduYW1lc3BhY2UnKSwKICAgICAgICAgICAgICdoZWFkZXJHdWFyZCc6IHNlbGYub3V0cHV0
X2ZpbGVuYW1lKCkucmVwbGFjZSgnLicsICdfJyksCiAgICAgICAgICAgICAnbWFjcm9QcmVmaXgn
OiBzZWxmLm1hY3JvX3ByZWZpeCgpLAotICAgICAgICAgICAgJ29iamVjdE5hbWUnOiBzZWxmLm9i
amVjdC5vYmplY3RfbmFtZS51cHBlcigpLAorICAgICAgICAgICAgJ29iamVjdE5hbWUnOiBzZWxm
Lm9iamVjdC5vYmplY3RfbmFtZSwKKyAgICAgICAgICAgICdvYmplY3RNYWNybyc6IHNlbGYub2Jq
ZWN0Lm9iamVjdF9uYW1lLnVwcGVyKCksCiAgICAgICAgIH0KIAogICAgICAgICBzZWN0aW9ucyA9
IFtdCkBAIC02Niw2ICs2OCw4IEBAIGNsYXNzIEJ1aWx0aW5zU2VwYXJhdGVIZWFkZXJHZW5lcmF0
b3IoQnVpbHRpbnNHZW5lcmF0b3IpOgogICAgICAgICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5l
cmF0ZV9zZWN0aW9uX2Zvcl9jb2RlX3RhYmxlX21hY3JvKCkpCiAgICAgICAgIHNlY3Rpb25zLmFw
cGVuZChzZWxmLmdlbmVyYXRlX3NlY3Rpb25fZm9yX2NvZGVfbmFtZV9tYWNybygpKQogICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLlNlcGFyYXRlSGVhZGVyU3RhdGlj
TWFjcm9zKS5zdWJzdGl0dXRlKGFyZ3MpKQorICAgICAgICBpZiBzZWxmLm1vZGVsKCkuZnJhbWV3
b3JrIGlzIEZyYW1ld29ya3MuV2ViQ29yZToKKyAgICAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChU
ZW1wbGF0ZShUZW1wbGF0ZXMuU2VwYXJhdGVIZWFkZXJXcmFwcGVyQm9pbGVycGxhdGUpLnN1YnN0
aXR1dGUoYXJncykpCiAgICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
TmFtZXNwYWNlQm90dG9tKS5zdWJzdGl0dXRlKGFyZ3MpKQogICAgICAgICBzZWN0aW9ucy5hcHBl
bmQoVGVtcGxhdGUoVGVtcGxhdGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0
ZShhcmdzKSkKIApAQCAtNzksOCArODMsMjQgQEAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwog
ICAgIGRlZiBnZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoc2VsZik6CiAgICAgICAgIGhlYWRlcl9p
bmNsdWRlcyA9IFsKICAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAgICAo
IldlYkNvcmUiLCAiJXNCdWlsdGlucy5oIiAlIHNlbGYub2JqZWN0Lm9iamVjdF9uYW1lKSwKKyAg
ICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKKyAgICAgICAgICAgICAg
ICAoIkphdmFTY3JpcHRDb3JlIiwgImJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
LmgiKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgICAgIChbIldlYkNvcmUiXSwKICAgICAg
ICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgImJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oIiks
CiAgICAgICAgICAgICApLAorCisgICAgICAgICAgICAoWyJXZWJDb3JlIl0sCisgICAgICAgICAg
ICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJydW50aW1lL0lkZW50aWZpZXIuaCIpLAorICAgICAg
ICAgICAgKSwKKworICAgICAgICAgICAgKFsiV2ViQ29yZSJdLAorICAgICAgICAgICAgICAgICgi
SmF2YVNjcmlwdENvcmUiLCAicnVudGltZS9KU0Z1bmN0aW9uLmgiKSwKKyAgICAgICAgICAgICks
CiAgICAgICAgIF0KIAogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHNlbGYuZ2VuZXJhdGVfaW5j
bHVkZXNfZnJvbV9lbnRyaWVzKGhlYWRlcl9pbmNsdWRlcykpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0
ZV93cmFwcGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvYnVpbHRpbnMvYnVp
bHRpbnNfZ2VuZXJhdGVfc2VwYXJhdGVfd3JhcHBlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGFhODhjZjc2MjBjZGExMzcxODZiOTkxNjQzN2JjNmQwYjQ4MWQ5ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU2NyaXB0cy9idWlsdGlucy9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVy
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jCi0jIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jIENvcHlyaWdodCAoYykgMjAxNCBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0j
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0jIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0jIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0jIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0jIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzdHJpbmcKLWZyb20gc3Ry
aW5nIGltcG9ydCBUZW1wbGF0ZQotCi1mcm9tIGJ1aWx0aW5zX2dlbmVyYXRvciBpbXBvcnQgQnVp
bHRpbnNHZW5lcmF0b3IKLWZyb20gYnVpbHRpbnNfdGVtcGxhdGVzIGltcG9ydCBCdWlsdGluc0dl
bmVyYXRvclRlbXBsYXRlcyBhcyBUZW1wbGF0ZXMKLQotbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIo
J2dsb2JhbCcpCi0KLQotY2xhc3MgQnVpbHRpbnNTZXBhcmF0ZVdyYXBwZXJHZW5lcmF0b3IoQnVp
bHRpbnNHZW5lcmF0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2RlbCwgb2JqZWN0KToK
LSAgICAgICAgQnVpbHRpbnNHZW5lcmF0b3IuX19pbml0X18oc2VsZiwgbW9kZWwpCi0gICAgICAg
IHNlbGYub2JqZWN0ID0gb2JqZWN0Ci0KLSAgICBkZWYgb3V0cHV0X2ZpbGVuYW1lKHNlbGYpOgot
ICAgICAgICByZXR1cm4gIiVzQnVpbHRpbnNXcmFwcGVyLmgiICUgQnVpbHRpbnNHZW5lcmF0b3Iu
bWFuZ2xlZE5hbWVGb3JPYmplY3Qoc2VsZi5vYmplY3QpCi0KLSAgICBkZWYgbWFjcm9fcHJlZml4
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5tb2RlbCgpLmZyYW1ld29yay5zZXR0aW5nKCdt
YWNyb19wcmVmaXgnKQotCi0gICAgZGVmIGdlbmVyYXRlX291dHB1dChzZWxmKToKLSAgICAgICAg
YXJncyA9IHsKLSAgICAgICAgICAgICduYW1lc3BhY2UnOiBzZWxmLm1vZGVsKCkuZnJhbWV3b3Jr
LnNldHRpbmcoJ25hbWVzcGFjZScpLAotICAgICAgICAgICAgJ2hlYWRlckd1YXJkJzogc2VsZi5v
dXRwdXRfZmlsZW5hbWUoKS5yZXBsYWNlKCcuJywgJ18nKSwKLSAgICAgICAgICAgICdtYWNyb1By
ZWZpeCc6IHNlbGYubWFjcm9fcHJlZml4KCksCi0gICAgICAgICAgICAnb2JqZWN0TmFtZSc6IHNl
bGYub2JqZWN0Lm9iamVjdF9uYW1lLAotICAgICAgICAgICAgJ29iamVjdE1hY3JvJzogc2VsZi5v
YmplY3Qub2JqZWN0X25hbWUudXBwZXIoKSwKLSAgICAgICAgfQotCi0gICAgICAgIHNlY3Rpb25z
ID0gW10KLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKHNlbGYuZ2VuZXJhdGVfbGljZW5zZSgpKQot
ICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxhdGVzLkRvTm90RWRpdFdhcm5p
bmcpLnN1YnN0aXR1dGUoYXJncykpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShU
ZW1wbGF0ZXMuSGVhZGVySW5jbHVkZUd1YXJkVG9wKS5zdWJzdGl0dXRlKGFyZ3MpKQotICAgICAg
ICBzZWN0aW9ucy5hcHBlbmQoc2VsZi5nZW5lcmF0ZV9oZWFkZXJfaW5jbHVkZXMoKSkKLSAgICAg
ICAgc2VjdGlvbnMuYXBwZW5kKFRlbXBsYXRlKFRlbXBsYXRlcy5OYW1lc3BhY2VUb3ApLnN1YnN0
aXR1dGUoYXJncykpCi0gICAgICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMu
U2VwYXJhdGVXcmFwcGVySGVhZGVyQm9pbGVycGxhdGUpLnN1YnN0aXR1dGUoYXJncykpCi0gICAg
ICAgIHNlY3Rpb25zLmFwcGVuZChUZW1wbGF0ZShUZW1wbGF0ZXMuTmFtZXNwYWNlQm90dG9tKS5z
dWJzdGl0dXRlKGFyZ3MpKQotICAgICAgICBzZWN0aW9ucy5hcHBlbmQoVGVtcGxhdGUoVGVtcGxh
dGVzLkhlYWRlckluY2x1ZGVHdWFyZEJvdHRvbSkuc3Vic3RpdHV0ZShhcmdzKSkKLQotICAgICAg
ICByZXR1cm4gIlxuXG4iLmpvaW4oc2VjdGlvbnMpCi0KLSAgICBkZWYgZ2VuZXJhdGVfaGVhZGVy
X2luY2x1ZGVzKHNlbGYpOgotICAgICAgICBoZWFkZXJfaW5jbHVkZXMgPSBbCi0gICAgICAgICAg
ICAoWyJXZWJDb3JlIl0sCi0gICAgICAgICAgICAgICAgKCJXZWJDb3JlIiwgIiVzQnVpbHRpbnMu
aCIgJSBzZWxmLm9iamVjdC5vYmplY3RfbmFtZSksCi0gICAgICAgICAgICApLAotCi0gICAgICAg
ICAgICAoWyJXZWJDb3JlIl0sCi0gICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0Q29yZSIsICJi
eXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oIiksCi0gICAgICAgICAgICApLAot
Ci0gICAgICAgICAgICAoWyJXZWJDb3JlIl0sCi0gICAgICAgICAgICAgICAgKCJKYXZhU2NyaXB0
Q29yZSIsICJidWlsdGlucy9CdWlsdGluVXRpbHMuaCIpLAotICAgICAgICAgICAgKSwKLQotICAg
ICAgICAgICAgKFsiV2ViQ29yZSJdLAotICAgICAgICAgICAgICAgICgiSmF2YVNjcmlwdENvcmUi
LCAicnVudGltZS9JZGVudGlmaWVyLmgiKSwKLSAgICAgICAgICAgICksCi0KLSAgICAgICAgICAg
IChbIldlYkNvcmUiXSwKLSAgICAgICAgICAgICAgICAoIkphdmFTY3JpcHRDb3JlIiwgInJ1bnRp
bWUvSlNGdW5jdGlvbi5oIiksCi0gICAgICAgICAgICApLAotICAgICAgICBdCi0KLSAgICAgICAg
cmV0dXJuICdcbicuam9pbihzZWxmLmdlbmVyYXRlX2luY2x1ZGVzX2Zyb21fZW50cmllcyhoZWFk
ZXJfaW5jbHVkZXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
YnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvYnVpbHRpbnMvYnVpbHRpbnNfdGVtcGxhdGVzLnB5CmluZGV4IDI1ZWRmNjU2ZWEyY2Vh
NGQwZDRmMWY2OTI1ZDM0YThlMTBhZjNkODMuLjVjMzQwYjJkOTFhZmUzNzRlZjEzNGJkNWIwYWQ4
YmFjMjViMmUzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2J1
aWx0aW5zL2J1aWx0aW5zX3RlbXBsYXRlcy5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U2NyaXB0cy9idWlsdGlucy9idWlsdGluc190ZW1wbGF0ZXMucHkKQEAgLTgzLDEwICs4MywxMCBA
QCAke21hY3JvUHJlZml4fV9GT1JFQUNIX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VO
RVJBVE9SKQogICAgICIiIiNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUihjb2RlTmFt
ZSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVudENvdW50KSBcXAogICAgIEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlKiBjb2RlTmFtZSMjR2VuZXJhdG9yKEpTQzo6Vk0mKTsKIAotJHttYWNyb1ByZWZpeH1f
Rk9SRUFDSF8ke29iamVjdE5hbWV9X0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SKQorJHttYWNyb1ByZWZpeH1fRk9SRUFDSF8ke29iamVjdE1hY3JvfV9CVUlMVElOX0NPREUo
REVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKICN1bmRlZiBERUNMQVJFX0JVSUxUSU5fR0VORVJB
VE9SCiAKLSNkZWZpbmUgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8ke29iamVjdE5hbWV9X0VYSVNU
UyhvYmplY3QsIGZ1bmMpIGRlZmluZWQgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8gIyMgb2JqZWN0
ICMjIF8gIyMgZnVuYyIiIikKKyNkZWZpbmUgJHttYWNyb1ByZWZpeH1fQlVJTFRJTl8ke29iamVj
dE1hY3JvfV9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZpbmVkICR7bWFjcm9QcmVmaXh9X0JVSUxU
SU5fICMjIG9iamVjdCAjIyBfICMjIGZ1bmMiIiIpCiAKICAgICBDb21iaW5lZEpTQ0ltcGxlbWVu
dGF0aW9uU3RhdGljTWFjcm9zID0gKAogICAgICIiIgpAQCAtMTM0LDcgKzEzNCw3IEBAICR7bWFj
cm9QcmVmaXh9X0ZPUkVBQ0hfJHtvYmplY3RNYWNyb31fQlVJTFRJTl9DT0RFKERFRklORV9CVUlM
VElOX0dFTkVSQVRPUikKICN1bmRlZiBERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IKICIiIikKIAot
ICAgIFNlcGFyYXRlV3JhcHBlckhlYWRlckJvaWxlcnBsYXRlID0gKAorICAgIFNlcGFyYXRlSGVh
ZGVyV3JhcHBlckJvaWxlcnBsYXRlID0gKAogICAgICIiImNsYXNzICR7b2JqZWN0TmFtZX1CdWls
dGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCAke29iamVjdE5hbWV9QnVpbHRpbnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvZ2VuZXJhdGUtanMtYnVpbHRp
bnMucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlu
cy5weQppbmRleCAwNzA3MDliNDgwODM4OGU2NzhmM2RiMjM4MmY0NmEzZDYzMzM5MDZlLi41NTRh
NzJjY2MwNTIzMmNhMzY3ZTM4OTQ1YWI2MjAxZjQ1MjNlMDRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQpAQCAtNzQs
OSArNzQsNiBAQCBkZWYgZ2VuZXJhdGVfYmluZGluZ3NfZm9yX2J1aWx0aW5zX2ZpbGVzKGJ1aWx0
aW5zX2ZpbGVzPVtdLAogICAgICAgICAgICAgZ2VuZXJhdG9ycy5hcHBlbmQoQnVpbHRpbnNTZXBh
cmF0ZUhlYWRlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKICAgICAgICAgICAgIGdlbmVyYXRv
cnMuYXBwZW5kKEJ1aWx0aW5zU2VwYXJhdGVJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihtb2RlbCwg
b2JqZWN0KSkKIAotICAgICAgICAgICAgaWYgbW9kZWwuZnJhbWV3b3JrIGlzIEZyYW1ld29ya3Mu
V2ViQ29yZToKLSAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLmFwcGVuZChCdWlsdGluc1NlcGFy
YXRlV3JhcHBlckdlbmVyYXRvcihtb2RlbCwgb2JqZWN0KSkKLQogICAgIGxvZy5kZWJ1ZygiIikK
ICAgICBsb2cuZGVidWcoIkdlbmVyYXRpbmcgYmluZGluZ3MgZm9yIGJ1aWx0aW5zLiIpCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4
cGVjdGVkL1dlYkNvcmUtR3VhcmRlZEJ1aWx0aW4tU2VwYXJhdGUuanMtcmVzdWx0IGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1H
dWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggNTVhMjFkNDY1Njg2NmZlOGY3
MzdmMTgzMDdiMTI2MjRhNzQ0ODJhYS4uM2RiZWY3NTc5NWZiNTU4N2ZmMzQxOTQyZTIzNjA4Nzk5
MTkxMTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMv
YnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhw
ZWN0ZWQvV2ViQ29yZS1HdWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKQEAgLTMxLDcg
KzMxLDExIEBACiAjaWZuZGVmIEd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFy
ZGVkQnVpbHRpbkJ1aWx0aW5zX2gKIAorI2luY2x1ZGUgIkd1YXJkZWRCdWlsdGluQnVpbHRpbnMu
aCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluVXRpbHMuaD4KKyNpbmNsdWRlIDxieXRlY29k
ZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKQEAgLTc3LDYgKzgxLDg5IEBAIFdFQkNPUkVf
Rk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKIAogI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFREJVSUxUSU5fRVhJU1RTKG9i
amVjdCwgZnVuYykgZGVmaW5lZCBXRUJDT1JFX0JVSUxUSU5fICMjIG9iamVjdCAjIyBfICMjIGZ1
bmMKIAorY2xhc3MgR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIgOiBwcml2YXRlIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVkQnVpbHRpbkJ1
aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShJTklU
SUFMSVpFX0JVSUxUSU5fTkFNRVMpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0Vf
TUVNQkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgLCBtXyMjbmFtZSMjU291cmNlKEpT
Qzo6bWFrZVNvdXJjZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChzXyMjbmFtZSwgbGVu
Z3RoKSkpCisgICAgICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NP
REUoSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIElOSVRJQUxJWkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworICAgIHsKKyAgICB9CisKKyNkZWZpbmUgRVhQT1NFX0JV
SUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6
OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBuYW1lIyNFeGVjdXRhYmxlKCk7IFwKKyAgICBj
b25zdCBKU0M6OlNvdXJjZUNvZGUmIG5hbWUjI1NvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNu
YW1lIyNTb3VyY2U7IH0KKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJ
Tl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJ
Tl9GVU5DVElPTl9OQU1FKERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VTU09SKQorCisg
ICAgdm9pZCBleHBvcnROYW1lcygpOworCitwcml2YXRlOgorICAgIEpTQzo6Vk0mIG1fdm07CisK
KyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1F
KERFQ0xBUkVfQlVJTFRJTl9OQU1FUykKKworI2RlZmluZSBERUNMQVJFX0JVSUxUSU5fU09VUkNF
X01FTUJFUlMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKKyAgICBKU0M6OlNvdXJjZUNv
ZGUgbV8jI25hbWUjI1NvdXJjZTtcCisgICAgSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGU+IG1fIyNuYW1lIyNFeGVjdXRhYmxlOworICAgIFdFQkNPUkVfRk9SRUFDSF9H
VUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5l
IERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
CitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEJ1aWx0aW5C
dWlsdGluc1dyYXBwZXI6Om5hbWUjI0V4ZWN1dGFibGUoKSBcCit7XAorICAgIGlmICghbV8jI25h
bWUjI0V4ZWN1dGFibGUpXAorICAgICAgICBtXyMjbmFtZSMjRXhlY3V0YWJsZSA9IEpTQzo6V2Vh
azxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPihKU0M6OmNyZWF0ZUJ1aWx0aW5FeGVj
dXRhYmxlKG1fdm0sIG1fIyNuYW1lIyNTb3VyY2UsIGZ1bmN0aW9uTmFtZSMjUHVibGljTmFtZSgp
LCBzXyMjbmFtZSMjQ29uc3RydWN0QWJpbGl0eSksIHRoaXMsICZtXyMjbmFtZSMjRXhlY3V0YWJs
ZSk7XAorICAgIHJldHVybiBtXyMjbmFtZSMjRXhlY3V0YWJsZS5nZXQoKTtcCit9CitXRUJDT1JF
X0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERFRklORV9CVUlMVElOX0VYRUNV
VEFCTEVTKQorI3VuZGVmIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTCisKK2lubGluZSB2b2lk
IEd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5l
IEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0
ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShFWFBP
UlRfRlVOQ1RJT05fTkFNRSkKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT05fTkFNRQorfQorCitjbGFz
cyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnMgeworcHVibGljOgorICAgIGV4cGxpY2l0
IEd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7
IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNp
dChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAg
ICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworfTsKKworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5C
dWlsdGluRnVuY3Rpb25zOjppbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
K3sKKyNkZWZpbmUgRVhQT1JUX0ZVTkNUSU9OKGNvZGVOYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0
aClcCisgICAgbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rpb24uc2V0KG1fdm0sICZnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNGdW5jdGlvbjo6Y3JlYXRlQnVpbHRpbkZ1bmN0aW9uKG1fdm0sIGNvZGVOYW1l
IyNHZW5lcmF0b3IobV92bSksICZnbG9iYWxPYmplY3QpKTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hf
R1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBP
UlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgR3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rp
b25zOjp2aXNpdChKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworI2RlZmluZSBWSVNJVF9G
VU5DVElPTihuYW1lKSB2aXNpdG9yLmFwcGVuZCgmbV8jI25hbWUjI0Z1bmN0aW9uKTsKKyAgICBX
RUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKFZJU0lU
X0ZVTkNUSU9OKQorI3VuZGVmIFZJU0lUX0ZVTkNUSU9OCit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gR3VhcmRlZEJ1aWx0aW5CdWlsdGluc19oCkBAIC0xODYsMTMz
ICsyNzMsMyBAQCBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKERF
RklORV9CVUlMVElOX0dFTkVSQVRPUikKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogIyMjIEVu
ZCBGaWxlOiBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmNwcAotCi0jIyMgQmVnaW4gRmlsZTogR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNSBD
YW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKiAKLSAqLwotCi0vLyBETyBO
T1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2
YVNjcmlwdCBmaWxlcyBmb3IKLS8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5Ci0KLSNpZm5kZWYgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAotI2RlZmluZSBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zV3JhcHBlcl9oCi0KLSNpbmNsdWRlICJHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCi0jaW5j
bHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+Ci0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KLSNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4K
LSNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlciA6IHByaXZhdGUgSlNDOjpXZWFr
SGFuZGxlT3duZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IEd1YXJkZWRCdWlsdGluQnVpbHRp
bnNXcmFwcGVyKEpTQzo6Vk0qIHZtKQotICAgICAgICA6IG1fdm0oKnZtKQotICAgICAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfQlVJTFRJTl9OQU1FUykKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjpt
YWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgp
KSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgSU5JVElBTElaRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTCi0gICAgewotICAgIH0KLQotI2RlZmluZSBFWFBPU0VfQlVJTFRJ
Tl9FWEVDVVRBQkxFUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAotICAgIEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIG5hbWUjI0V4ZWN1dGFibGUoKTsgXAotICAgIGNvbnN0
IEpTQzo6U291cmNlQ29kZSYgbmFtZSMjU291cmNlKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWUj
I1NvdXJjZTsgfQotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NP
REUoRVhQT1NFX0JVSUxUSU5fRVhFQ1VUQUJMRVMpCi0jdW5kZWYgRVhQT1NFX0JVSUxUSU5fRVhF
Q1VUQUJMRVMKLQotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2
b2lkIGV4cG9ydE5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotICAg
IFdFQkNPUkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVD
TEFSRV9CVUlMVElOX05BTUVTKQotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVN
QkVSUyhuYW1lLCBmdW5jdGlvbk5hbWUsIGxlbmd0aCkgXAotICAgIEpTQzo6U291cmNlQ29kZSBt
XyMjbmFtZSMjU291cmNlO1wKLSAgICBKU0M6OldlYWs8SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZT4gbV8jI25hbWUjI0V4ZWN1dGFibGU7Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJE
RURCVUlMVElOX0JVSUxUSU5fQ09ERShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0j
dW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCi0KLX07Ci0KLSNkZWZpbmUgREVG
SU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMobmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpIFwKLWlu
bGluZSBKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKLXtcCi0gICAgaWYgKCFtXyMjbmFtZSMj
RXhlY3V0YWJsZSlcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFi
bGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNf
IyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtc
Ci0gICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKLX0KLVdFQkNPUkVfRk9S
RUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJM
RVMpCi0jdW5kZWYgREVGSU5FX0JVSUxUSU5fRVhFQ1VUQUJMRVMKLQotaW5saW5lIHZvaWQgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXI6OmV4cG9ydE5hbWVzKCkKLXsKLSNkZWZpbmUgRVhQ
T1JUX0ZVTkNUSU9OX05BTUUobmFtZSkgbV92bS5wcm9wZXJ0eU5hbWVzLT5hcHBlbmRFeHRlcm5h
bE5hbWUobmFtZSMjUHVibGljTmFtZSgpLCBuYW1lIyNQcml2YXRlTmFtZSgpKTsKLSAgICBXRUJD
T1JFX0ZPUkVBQ0hfR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9G
VU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCi19Ci0KLWNsYXNzIEd1
YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR3Vh
cmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zKEpTQzo6Vk0mIHZtKSA6IG1fdm0odm0pIHsgfQot
Ci0gICAgdm9pZCBpbml0KEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKLSAgICB2b2lkIHZpc2l0KEpT
Qzo6U2xvdFZpc2l0b3ImKTsKLQotcHVibGljOgotICAgIEpTQzo6Vk0mIG1fdm07Ci0KLSNkZWZp
bmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKGZ1bmN0aW9uTmFtZSkgXAotICAgIEpT
Qzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNGdW5jdGlvbj4gbV8jI2Z1bmN0aW9uTmFtZSMjRnVuY3Rp
b247Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05f
TkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCBHdWFyZGVkQnVpbHRpbkJ1aWx0
aW5GdW5jdGlvbnM6OmluaXQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotewot
I2RlZmluZSBFWFBPUlRfRlVOQ1RJT04oY29kZU5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKVwK
LSAgICBtXyMjZnVuY3Rpb25OYW1lIyNGdW5jdGlvbi5zZXQobV92bSwgJmdsb2JhbE9iamVjdCwg
SlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVuY3Rpb24obV92bSwgY29kZU5hbWUjI0dl
bmVyYXRvcihtX3ZtKSwgJmdsb2JhbE9iamVjdCkpOwotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUoRVhQT1JUX0ZVTkNUSU9OKQotI3VuZGVmIEVYUE9SVF9G
VU5DVElPTgotfQotCi1pbmxpbmUgdm9pZCBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6
OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5lIFZJU0lUX0ZVTkNU
SU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOwotICAgIFdFQkNP
UkVfRk9SRUFDSF9HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoVklTSVRfRlVO
Q1RJT04pCi0jdW5kZWYgVklTSVRfRlVOQ1RJT04KLX0KLQotCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCi0KLSNlbmRpZiAvLyBHdWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCi0KLSMjIyBF
bmQgRmlsZTogR3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29y
ZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtR3VhcmRl
ZEludGVybmFsQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggMzQ4YTFjZmM0NDg0YWVm
M2Y3NjBlODc5NDY2ZWZiYWI5NjZlNTBmNC4uODU2ZjMxMTExNjY4ODMwMzZjOTNlMDJiNGYyMjFj
YjVjMzA5MzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVz
dHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1HdWFyZGVkSW50ZXJuYWxCdWlsdGluLVNlcGFy
YXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9i
dWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLUd1YXJkZWRJbnRlcm5hbEJ1aWx0aW4tU2VwYXJhdGUu
anMtcmVzdWx0CkBAIC0zMSw3ICszMSwxMSBAQAogI2lmbmRlZiBHdWFyZGVkSW50ZXJuYWxCdWls
dGluQnVpbHRpbnNfaAogI2RlZmluZSBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNfaAog
CisjaW5jbHVkZSAiR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCiAjaW5jbHVkZSA8
YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CkBAIC03Nyw2ICs4MSw4OSBAQCBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRF
RElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikK
IAogI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9FWElTVFMo
b2JqZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMg
ZnVuYwogCitjbGFzcyBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJp
dmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBt
X3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5f
QlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUg
SU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVu
Z3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNI
X0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMK
KyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUs
IGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBu
YW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9CisgICAgV0VC
Q09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCisK
KyAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lk
IGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdF
QkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VD
b2RlIG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hf
R1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9Owor
CisjZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwg
bGVuZ3RoKSBcCitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRl
ZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tc
CisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVj
dXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25O
YW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1f
IyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdl
dCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5f
Q09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9F
WEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNX
cmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5h
bWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05h
bWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1F
KQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIEd1YXJkZWRJbnRlcm5h
bEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7
IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNp
dChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisj
ZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAg
ICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1
bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYg
REVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBHdWFyZGVk
SW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldCht
X3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAg
V0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9S
VF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgR3Vh
cmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBw
ZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5U
RVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRl
ZiBWSVNJVF9GVU5DVElPTgorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc19oCkBAIC0xODYsMTMzICsyNzMsMyBA
QCBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0NPREUoREVG
SU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjIyMgRW5k
IEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGlucy5jcHAKLQotIyMjIEJlZ2luIEZp
bGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIuaAotLyoKLSAqIENvcHly
aWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKiAK
LSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1dG9tYXRpY2FsbHkgZ2Vu
ZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKLS8vIGJ1aWx0aW5zIGJ5IHRoZSBzY3Jp
cHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRlLWpzLWJ1aWx0aW5zLnB5
Ci0KLSNpZm5kZWYgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcl9oCi0jZGVm
aW5lIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAotCi0jaW5jbHVkZSAi
R3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVp
bHRpblV0aWxzLmg+Ci0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaD4KLSNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1l
L0pTRnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHdWFyZGVkSW50
ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25l
ciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcihKU0M6OlZNKiB2bSkKLSAgICAgICAgOiBtX3ZtKCp2bSkKLSAgICAgICAgV0VCQ09S
RV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElO
SVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJD
RV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2Uo
SlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBs
ZW5ndGgpKSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5f
QlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBJ
TklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLSAgICB7Ci0gICAgfQotCi0jZGVmaW5l
IEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
Ci0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgp
OyBcCi0gICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJl
dHVybiBtXyMjbmFtZSMjU291cmNlOyB9Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRF
Uk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQotI3Vu
ZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCi0KLSAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VB
UkRFRElOVEVSTkFMQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElO
X0lERU5USUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2b2lkIGV4cG9ydE5hbWVzKCk7Ci0KLXByaXZh
dGU6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5U
RVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMp
Ci0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9u
TmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAot
ICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMj
RXhlY3V0YWJsZTsKLSAgICBXRUJDT1JFX0ZPUkVBQ0hfR1VBUkRFRElOVEVSTkFMQlVJTFRJTl9C
VUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIERFQ0xB
UkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotCi19OwotCi0jZGVmaW5lIERFRklORV9CVUlMVElO
X0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpV
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKLXtcCi0gICAgaWYgKCFtXyMjbmFtZSMjRXhl
Y3V0YWJsZSlcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUo
bV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNu
YW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCi0g
ICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKLX0KLVdFQkNPUkVfRk9SRUFD
SF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVD
VVRBQkxFUykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwotCi1pbmxpbmUgdm9p
ZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCi17
Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+
YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUo
KSk7Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJTlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9G
VU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElP
Tl9OQU1FCi19Ci0KLWNsYXNzIEd1YXJkZWRJbnRlcm5hbEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25z
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1
bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KLQotICAgIHZvaWQgaW5pdChKU0M6
OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7Ci0K
LXB1YmxpYzoKLSAgICBKU0M6OlZNJiBtX3ZtOwotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9T
T1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKLSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6
OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOwotICAgIFdFQkNPUkVfRk9S
RUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCBHdWFyZGVkSW50ZXJuYWxCdWlsdGluQnVpbHRpbkZ1
bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCi17Ci0jZGVm
aW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAotICAg
IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6
OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJh
dG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAgV0VCQ09SRV9GT1JFQUNIX0dVQVJERURJ
TlRFUk5BTEJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKLSN1bmRlZiBFWFBP
UlRfRlVOQ1RJT04KLX0KLQotaW5saW5lIHZvaWQgR3VhcmRlZEludGVybmFsQnVpbHRpbkJ1aWx0
aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5l
IFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24p
OwotICAgIFdFQkNPUkVfRk9SRUFDSF9HVUFSREVESU5URVJOQUxCVUlMVElOX0JVSUxUSU5fRlVO
Q1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5CdWlsdGluc1dyYXBwZXJfaAotCi0jIyMgRW5kIEZpbGU6IEd1YXJkZWRJbnRlcm5hbEJ1aWx0
aW5CdWlsdGluc1dyYXBwZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Nj
cmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1YXJkZWRCdWlsdGluLVNl
cGFyYXRlLmpzLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1
aWx0aW5zL2V4cGVjdGVkL1dlYkNvcmUtVW5ndWFyZGVkQnVpbHRpbi1TZXBhcmF0ZS5qcy1yZXN1
bHQKaW5kZXggNThlZTJkYWJiYWM5YzFhNmI2NTlhYjEzMmIwYTZjNDcxZTYzZTQ1OC4uMzhmMTBh
ZDcxYzNmMDU2ZmFhNDdjMTI2ZmQwNDFhNWZhM2NjNzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS1Vbmd1
YXJkZWRCdWlsdGluLVNlcGFyYXRlLmpzLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU2NyaXB0cy90ZXN0cy9idWlsdGlucy9leHBlY3RlZC9XZWJDb3JlLVVuZ3VhcmRlZEJ1aWx0
aW4tU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0zMSw3ICszMSwxMSBAQAogI2lmbmRlZiBVbmd1YXJk
ZWRCdWlsdGluQnVpbHRpbnNfaAogI2RlZmluZSBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNfaAog
CisjaW5jbHVkZSAiVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCiAjaW5jbHVkZSA8YnVpbHRp
bnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxy
dW50aW1lL0pTRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7CkBAIC03Nyw2ICs4MSw4OSBAQCBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVSQVRPUikKIAogI2RlZmluZSBX
RUJDT1JFX0JVSUxUSU5fVU5HVUFSREVEQlVJTFRJTl9FWElTVFMob2JqZWN0LCBmdW5jKSBkZWZp
bmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVuYwogCitjbGFzcyBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25l
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
cihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VCQ09SRV9GT1JF
QUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJ
TFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291
cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKKyAg
ICAgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJ
QUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5f
U09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VY
RUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3QgSlND
OjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291
cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RF
KEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZV
TkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2
b2lkIGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAg
IFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShE
RUNMQVJFX0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2Rl
IG1fIyNuYW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5H
VUFSREVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KQorI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5l
IERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
CitpbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5ndWFyZGVkQnVpbHRp
bkJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMj
bmFtZSMjRXhlY3V0YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpX
ZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4
ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1l
KCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRh
YmxlKTtcCisgICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNP
UkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9F
WEVDVVRBQkxFUykKKyN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUg
dm9pZCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7Cisj
ZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBw
ZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7
CisgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9O
QU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9
CisKK2NsYXNzIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkg
OiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Cisg
ICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZN
JiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlv
bk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElO
X0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisj
dW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCit9OworCitpbmxpbmUgdm9pZCBV
bmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVu
Y3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldCht
X3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlv
bihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7CisgICAg
V0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5D
VElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKworaW5saW5lIHZvaWQgVW5ndWFyZGVk
QnVpbHRpbkJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3Ip
Cit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFt
ZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxU
SU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBWSVNJVF9GVU5DVElPTgor
fQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0
aW5CdWlsdGluc19oCkBAIC0xODYsMTMzICsyNzMsMyBAQCBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFS
REVEQlVJTFRJTl9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAjIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlu
cy5jcHAKLQotIyMjIEJlZ2luIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXIu
aAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKiAKLSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlzIGF1
dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKLS8vIGJ1aWx0
aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVyYXRl
LWpzLWJ1aWx0aW5zLnB5Ci0KLSNpZm5kZWYgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBl
cl9oCi0jZGVmaW5lIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBwZXJfaAotCi0jaW5jbHVk
ZSAiVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRp
blV0aWxzLmg+Ci0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUu
aD4KLSNpbmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pT
RnVuY3Rpb24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBVbmd1YXJkZWRCdWls
dGluQnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJs
aWM6Ci0gICAgZXhwbGljaXQgVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5zV3JhcHBlcihKU0M6OlZN
KiB2bSkKLSAgICAgICAgOiBtX3ZtKCp2bSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VB
UkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1F
UykKLSNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmlu
Z0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICAgICAgV0VC
Q09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJ
TFRJTl9TT1VSQ0VfTUVNQkVSUykKLSN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01F
TUJFUlMKLSAgICB7Ci0gICAgfQotCi0jZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCi0gICAgY29uc3QgSlNDOjpTb3VyY2VD
b2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9Ci0g
ICAgV0VCQ09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9TRV9C
VUlMVElOX0VYRUNVVEFCTEVTKQotI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCi0K
LSAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJTFRJTl9CVUlMVElOX0ZVTkNUSU9OX05B
TUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2b2lkIGV4cG9y
dE5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0gICAgSlNDOjpWTSYgbV92bTsKLQotICAgIFdFQkNPUkVf
Rk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JV
SUxUSU5fTkFNRVMpCi0KLSNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5h
bWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1l
IyNTb3VyY2U7XAotICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxl
PiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAgICBXRUJDT1JFX0ZPUkVBQ0hfVU5HVUFSREVEQlVJ
TFRJTl9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUwotCi19OwotCi0jZGVmaW5lIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUg
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5ndWFyZGVkQnVpbHRpbkJ1aWx0aW5z
V3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKLXtcCi0gICAgaWYgKCFtXyMjbmFtZSMjRXhl
Y3V0YWJsZSlcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUo
bV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNu
YW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCi0g
ICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKLX0KLVdFQkNPUkVfRk9SRUFD
SF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxF
UykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUwotCi1pbmxpbmUgdm9pZCBVbmd1
YXJkZWRCdWlsdGluQnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCi17Ci0jZGVmaW5lIEVY
UE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJu
YWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7Ci0gICAgV0VC
Q09SRV9GT1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9S
VF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCi19Ci0KLWNsYXNz
IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluRnVuY3Rpb25zIHsKLXB1YmxpYzoKLSAgICBleHBsaWNp
dCBVbmd1YXJkZWRCdWlsdGluQnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZt
KSB7IH0KLQotICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0gICAgdm9pZCB2
aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7Ci0KLXB1YmxpYzoKLSAgICBKU0M6OlZNJiBtX3ZtOwot
Ci0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwK
LSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUj
I0Z1bmN0aW9uOwotICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5f
RlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5kZWYgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCBVbmd1YXJkZWRC
dWlsdGluQnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1l
LCBsZW5ndGgpXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBj
b2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAgV0VCQ09SRV9G
T1JFQUNIX1VOR1VBUkRFREJVSUxUSU5fQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKLSN1
bmRlZiBFWFBPUlRfRlVOQ1RJT04KLX0KLQotaW5saW5lIHZvaWQgVW5ndWFyZGVkQnVpbHRpbkJ1
aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVm
aW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rp
b24pOwotICAgIFdFQkNPUkVfRk9SRUFDSF9VTkdVQVJERURCVUlMVElOX0JVSUxUSU5fRlVOQ1RJ
T05fTkFNRShWSVNJVF9GVU5DVElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGlu
c1dyYXBwZXJfaAotCi0jIyMgRW5kIEZpbGU6IFVuZ3VhcmRlZEJ1aWx0aW5CdWlsdGluc1dyYXBw
ZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMvdGVzdHMvYnVp
bHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpzLXJlc3VsdCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL3Rlc3RzL2J1aWx0aW5zL2V4cGVjdGVkL1dl
YkNvcmUteG1sQ2FzaW5nVGVzdC1TZXBhcmF0ZS5qcy1yZXN1bHQKaW5kZXggODY4ZmM2ZmM2ZmJm
ODVlZGQ3YjhkM2M4OGVjNmQyMjY2N2UxZTc3ZC4uODM1OWM5Yjk0MTg4MWVhNDJkNDc0N2I4ZmI0
MjBjODdlMjE1M2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NjcmlwdHMv
dGVzdHMvYnVpbHRpbnMvZXhwZWN0ZWQvV2ViQ29yZS14bWxDYXNpbmdUZXN0LVNlcGFyYXRlLmpz
LXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy90ZXN0cy9idWlsdGlu
cy9leHBlY3RlZC9XZWJDb3JlLXhtbENhc2luZ1Rlc3QtU2VwYXJhdGUuanMtcmVzdWx0CkBAIC0z
MSw3ICszMSwxMSBAQAogI2lmbmRlZiB4bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAogI2RlZmluZSB4
bWxDYXNpbmdUZXN0QnVpbHRpbnNfaAogCisjaW5jbHVkZSAieG1sQ2FzaW5nVGVzdEJ1aWx0aW5z
LmgiCiAjaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxzLmg+CisjaW5jbHVkZSA8Ynl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KKyNpbmNsdWRlIDxydW50aW1lL0lkZW50
aWZpZXIuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CkBAIC03Nyw2ICs4MSw4OSBAQCBXRUJDT1JF
X0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX0dFTkVS
QVRPUikKIAogI2RlZmluZSBXRUJDT1JFX0JVSUxUSU5fWE1MQ0FTSU5HVEVTVF9FWElTVFMob2Jq
ZWN0LCBmdW5jKSBkZWZpbmVkIFdFQkNPUkVfQlVJTFRJTl8gIyMgb2JqZWN0ICMjIF8gIyMgZnVu
YwogCitjbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6Oldl
YWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0
aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKKyAgICAgICAgOiBtX3ZtKCp2bSkKKyAgICAgICAgV0VC
Q09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJ
WkVfQlVJTFRJTl9OQU1FUykKKyNkZWZpbmUgSU5JVElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1C
RVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjpt
YWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgp
KSkKKyAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKElO
SVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUykKKyN1bmRlZiBJTklUSUFMSVpFX0JVSUxU
SU5fU09VUkNFX01FTUJFUlMKKyAgICB7CisgICAgfQorCisjZGVmaW5lIEVYUE9TRV9CVUlMVElO
X0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMjRXhlY3V0YWJsZSgpOyBcCisgICAgY29uc3Qg
SlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2UoKSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMj
U291cmNlOyB9CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RF
KEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQorI3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNV
VEFCTEVTCisKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNU
SU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNTT1IpCisKKyAgICB2b2lk
IGV4cG9ydE5hbWVzKCk7CisKK3ByaXZhdGU6CisgICAgSlNDOjpWTSYgbV92bTsKKworICAgIFdF
QkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0JVSUxUSU5fTkFNRVMpCisKKyNkZWZpbmUgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJT
KG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCisgICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNu
YW1lIyNTb3VyY2U7XAorICAgIEpTQzo6V2VhazxKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKKyAgICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5H
VEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKQorI3VuZGVm
IERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUworCit9OworCisjZGVmaW5lIERFRklORV9C
VUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBcCitpbmxpbmUg
SlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3Jh
cHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKK3tcCisgICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0
YWJsZSlcCisgICAgICAgIG1fIyNuYW1lIyNFeGVjdXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92
bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25OYW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1l
IyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1fIyNuYW1lIyNFeGVjdXRhYmxlKTtcCisgICAg
cmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdldCgpO1wKK30KK1dFQkNPUkVfRk9SRUFDSF9Y
TUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKKyN1
bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxFUworCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdU
ZXN0QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1lcygpCit7CisjZGVmaW5lIEVYUE9SVF9GVU5D
VElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlOYW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5h
bWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0ZU5hbWUoKSk7CisgICAgV0VCQ09SRV9GT1JF
QUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5DVElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9O
QU1FKQorI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9OQU1FCit9CisKK2NsYXNzIHhtbENhc2luZ1Rl
c3RCdWlsdGluRnVuY3Rpb25zIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCB4bWxDYXNpbmdUZXN0
QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkgOiBtX3ZtKHZtKSB7IH0KKworICAgIHZvaWQg
aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNp
dG9yJik7CisKK3B1YmxpYzoKKyAgICBKU0M6OlZNJiBtX3ZtOworCisjZGVmaW5lIERFQ0xBUkVf
QlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlvbk5hbWUpIFwKKyAgICBKU0M6OldyaXRlQmFy
cmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uOworICAgIFdF
QkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJF
X0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCisjdW5kZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9N
RU1CRVJTCit9OworCitpbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6
aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisjZGVmaW5lIEVYUE9S
VF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25OYW1lLCBsZW5ndGgpXAorICAgIG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAmZ2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rp
b246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3ZtLCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0p
LCAmZ2xvYmFsT2JqZWN0KSk7CisgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJ
TFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKKyN1bmRlZiBFWFBPUlRfRlVOQ1RJT04KK30KKwor
aW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisjZGVmaW5lIFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0
b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24pOworICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxD
QVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFNRShWSVNJVF9GVU5DVElPTikKKyN1bmRlZiBW
SVNJVF9GVU5DVElPTgorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IHhtbENhc2luZ1Rlc3RCdWlsdGluc19oCkBAIC0xODYsMTMzICsyNzMsMyBAQCBXRUJDT1JFX0ZP
UkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVGSU5FX0JVSUxUSU5fR0VORVJBVE9S
KQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RC
dWlsdGlucy5jcHAKLQotIyMjIEJlZ2luIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBw
ZXIuaAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKiAKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKiAKLSAqLwotCi0vLyBETyBOT1QgRURJVCBUSElTIEZJTEUuIEl0IGlz
IGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gSmF2YVNjcmlwdCBmaWxlcyBmb3IKLS8vIGJ1
aWx0aW5zIGJ5IHRoZSBzY3JpcHQ6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2dlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5Ci0KLSNpZm5kZWYgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBl
cl9oCi0jZGVmaW5lIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJfaAotCi0jaW5jbHVkZSAi
eG1sQ2FzaW5nVGVzdEJ1aWx0aW5zLmgiCi0jaW5jbHVkZSA8YnVpbHRpbnMvQnVpbHRpblV0aWxz
Lmg+Ci0jaW5jbHVkZSA8Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaD4KLSNp
bmNsdWRlIDxydW50aW1lL0lkZW50aWZpZXIuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rp
b24uaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyB4bWxDYXNpbmdUZXN0QnVpbHRp
bnNXcmFwcGVyIDogcHJpdmF0ZSBKU0M6OldlYWtIYW5kbGVPd25lciB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcihKU0M6OlZNKiB2bSkKLSAgICAg
ICAgOiBtX3ZtKCp2bSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJ
TFRJTl9GVU5DVElPTl9OQU1FKElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUykKLSNkZWZpbmUgSU5J
VElBTElaRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3Ro
KSAsIG1fIyNuYW1lIyNTb3VyY2UoSlNDOjptYWtlU291cmNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZy
b21MaXRlcmFsKHNfIyNuYW1lLCBsZW5ndGgpKSkKLSAgICAgICAgV0VCQ09SRV9GT1JFQUNIX1hN
TENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKElOSVRJQUxJWkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UykKLSN1bmRlZiBJTklUSUFMSVpFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMKLSAgICB7Ci0gICAg
fQotCi0jZGVmaW5lIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0aW9uTmFt
ZSwgbGVuZ3RoKSBcCi0gICAgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogbmFtZSMj
RXhlY3V0YWJsZSgpOyBcCi0gICAgY29uc3QgSlNDOjpTb3VyY2VDb2RlJiBuYW1lIyNTb3VyY2Uo
KSBjb25zdCB7IHJldHVybiBtXyMjbmFtZSMjU291cmNlOyB9Ci0gICAgV0VCQ09SRV9GT1JFQUNI
X1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTKQot
I3VuZGVmIEVYUE9TRV9CVUlMVElOX0VYRUNVVEFCTEVTCi0KLSAgICBXRUJDT1JFX0ZPUkVBQ0hf
WE1MQ0FTSU5HVEVTVF9CVUlMVElOX0ZVTkNUSU9OX05BTUUoREVDTEFSRV9CVUlMVElOX0lERU5U
SUZJRVJfQUNDRVNTT1IpCi0KLSAgICB2b2lkIGV4cG9ydE5hbWVzKCk7Ci0KLXByaXZhdGU6Ci0g
ICAgSlNDOjpWTSYgbV92bTsKLQotICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fTkFNRVMpCi0KLSNkZWZpbmUgREVD
TEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTKG5hbWUsIGZ1bmN0aW9uTmFtZSwgbGVuZ3RoKSBc
Ci0gICAgSlNDOjpTb3VyY2VDb2RlIG1fIyNuYW1lIyNTb3VyY2U7XAotICAgIEpTQzo6V2VhazxK
U0M6OlVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtXyMjbmFtZSMjRXhlY3V0YWJsZTsKLSAg
ICBXRUJDT1JFX0ZPUkVBQ0hfWE1MQ0FTSU5HVEVTVF9CVUlMVElOX0NPREUoREVDTEFSRV9CVUlM
VElOX1NPVVJDRV9NRU1CRVJTKQotI3VuZGVmIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVS
UwotCi19OwotCi0jZGVmaW5lIERFRklORV9CVUlMVElOX0VYRUNVVEFCTEVTKG5hbWUsIGZ1bmN0
aW9uTmFtZSwgbGVuZ3RoKSBcCi1pbmxpbmUgSlNDOjpVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogeG1sQ2FzaW5nVGVzdEJ1aWx0aW5zV3JhcHBlcjo6bmFtZSMjRXhlY3V0YWJsZSgpIFwKLXtc
Ci0gICAgaWYgKCFtXyMjbmFtZSMjRXhlY3V0YWJsZSlcCi0gICAgICAgIG1fIyNuYW1lIyNFeGVj
dXRhYmxlID0gSlNDOjpXZWFrPEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU+KEpTQzo6
Y3JlYXRlQnVpbHRpbkV4ZWN1dGFibGUobV92bSwgbV8jI25hbWUjI1NvdXJjZSwgZnVuY3Rpb25O
YW1lIyNQdWJsaWNOYW1lKCksIHNfIyNuYW1lIyNDb25zdHJ1Y3RBYmlsaXR5KSwgdGhpcywgJm1f
IyNuYW1lIyNFeGVjdXRhYmxlKTtcCi0gICAgcmV0dXJuIG1fIyNuYW1lIyNFeGVjdXRhYmxlLmdl
dCgpO1wKLX0KLVdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fQ09ERShERUZJ
TkVfQlVJTFRJTl9FWEVDVVRBQkxFUykKLSN1bmRlZiBERUZJTkVfQlVJTFRJTl9FWEVDVVRBQkxF
UwotCi1pbmxpbmUgdm9pZCB4bWxDYXNpbmdUZXN0QnVpbHRpbnNXcmFwcGVyOjpleHBvcnROYW1l
cygpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTl9OQU1FKG5hbWUpIG1fdm0ucHJvcGVydHlO
YW1lcy0+YXBwZW5kRXh0ZXJuYWxOYW1lKG5hbWUjI1B1YmxpY05hbWUoKSwgbmFtZSMjUHJpdmF0
ZU5hbWUoKSk7Ci0gICAgV0VCQ09SRV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9GVU5D
VElPTl9OQU1FKEVYUE9SVF9GVU5DVElPTl9OQU1FKQotI3VuZGVmIEVYUE9SVF9GVU5DVElPTl9O
QU1FCi19Ci0KLWNsYXNzIHhtbENhc2luZ1Rlc3RCdWlsdGluRnVuY3Rpb25zIHsKLXB1YmxpYzoK
LSAgICBleHBsaWNpdCB4bWxDYXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9ucyhKU0M6OlZNJiB2bSkg
OiBtX3ZtKHZtKSB7IH0KLQotICAgIHZvaWQgaW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0Jik7Ci0g
ICAgdm9pZCB2aXNpdChKU0M6OlNsb3RWaXNpdG9yJik7Ci0KLXB1YmxpYzoKLSAgICBKU0M6OlZN
JiBtX3ZtOwotCi0jZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9TT1VSQ0VfTUVNQkVSUyhmdW5jdGlv
bk5hbWUpIFwKLSAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1fIyNmdW5j
dGlvbk5hbWUjI0Z1bmN0aW9uOwotICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JV
SUxUSU5fRlVOQ1RJT05fTkFNRShERUNMQVJFX0JVSUxUSU5fU09VUkNFX01FTUJFUlMpCi0jdW5k
ZWYgREVDTEFSRV9CVUlMVElOX1NPVVJDRV9NRU1CRVJTCi19OwotCi1pbmxpbmUgdm9pZCB4bWxD
YXNpbmdUZXN0QnVpbHRpbkZ1bmN0aW9uczo6aW5pdChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCi17Ci0jZGVmaW5lIEVYUE9SVF9GVU5DVElPTihjb2RlTmFtZSwgZnVuY3Rpb25O
YW1lLCBsZW5ndGgpXAotICAgIG1fIyNmdW5jdGlvbk5hbWUjI0Z1bmN0aW9uLnNldChtX3ZtLCAm
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihtX3Zt
LCBjb2RlTmFtZSMjR2VuZXJhdG9yKG1fdm0pLCAmZ2xvYmFsT2JqZWN0KSk7Ci0gICAgV0VCQ09S
RV9GT1JFQUNIX1hNTENBU0lOR1RFU1RfQlVJTFRJTl9DT0RFKEVYUE9SVF9GVU5DVElPTikKLSN1
bmRlZiBFWFBPUlRfRlVOQ1RJT04KLX0KLQotaW5saW5lIHZvaWQgeG1sQ2FzaW5nVGVzdEJ1aWx0
aW5GdW5jdGlvbnM6OnZpc2l0KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0jZGVmaW5l
IFZJU0lUX0ZVTkNUSU9OKG5hbWUpIHZpc2l0b3IuYXBwZW5kKCZtXyMjbmFtZSMjRnVuY3Rpb24p
OwotICAgIFdFQkNPUkVfRk9SRUFDSF9YTUxDQVNJTkdURVNUX0JVSUxUSU5fRlVOQ1RJT05fTkFN
RShWSVNJVF9GVU5DVElPTikKLSN1bmRlZiBWSVNJVF9GVU5DVElPTgotfQotCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXJf
aAotCi0jIyMgRW5kIEZpbGU6IHhtbENhc2luZ1Rlc3RCdWlsdGluc1dyYXBwZXIuaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCA5OGYzZWE0NGRiZjlhNzUyMjBkYTg4NGQ4ODUxOGMyZDZlYzc4MjA0
Li5iNTU5MzEwYjVjNmQ1YWY2YWMwM2FjMTljNmFmYjBmODFlZTFlYWNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMzYwNiw3ICszNjA2LDYgQEAgc2V0KEJVSUxUSU5TX0dFTkVSQVRPUl9TQ1JJ
UFRTCiAgICAgJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vYnVpbHRpbnNfZ2VuZXJhdGVf
Y29tYmluZWRfaW1wbGVtZW50YXRpb24ucHkKICAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNf
RElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkKICAgICAke0phdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSfS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9pbXBsZW1lbnRh
dGlvbi5weQotICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2J1aWx0aW5zX2dlbmVy
YXRlX3NlcGFyYXRlX3dyYXBwZXIucHkKICAgICAke0phdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
fS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weQogICAgICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19E
SVJ9L2xhenl3cml0ZXIucHkKICkKQEAgLTM2MTYsMTQgKzM2MTUsMTIgQEAgZm9yZWFjaCAoX2J1
aWx0aW5Tb3VyY2UgJHtXZWJDb3JlX0JVSUxUSU5TX1NPVVJDRVN9KQogICAgIGFkZF9jdXN0b21f
Y29tbWFuZCgKICAgICAgICAgT1VUUFVUICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8k
e19vYmplY3ROYW1lfUJ1aWx0aW5zLmNwcAogICAgICAgICAgICAgICAgJHtERVJJVkVEX1NPVVJD
RVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnMuaAotICAgICAgICAgICAgICAg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9LyR7X29iamVjdE5hbWV9QnVpbHRpbnNXcmFw
cGVyLmggCiAgICAgICAgIE1BSU5fREVQRU5ERU5DWSAke19idWlsdGluU291cmNlfQogICAgICAg
ICBERVBFTkRTICR7QlVJTFRJTlNfR0VORVJBVE9SX1NDUklQVFN9CiAgICAgICAgIENPTU1BTkQg
JHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtKYXZhU2NyaXB0Q29yZV9TQ1JJUFRTX0RJUn0vZ2VuZXJh
dGUtanMtYnVpbHRpbnMucHkgLS1mcmFtZXdvcmsgV2ViQ29yZSAtLW91dHB1dC1kaXJlY3Rvcnkg
JHtERVJJVkVEX1NPVVJDRVNfV0VCQ09SRV9ESVJ9ICR7X2J1aWx0aW5Tb3VyY2V9CiAgICAgICAg
IFZFUkJBVElNKQogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICAke0RF
UklWRURfU09VUkNFU19XRUJDT1JFX0RJUn0vJHtfb2JqZWN0TmFtZX1CdWlsdGlucy5oCi0gICAg
ICAgICR7REVSSVZFRF9TT1VSQ0VTX1dFQkNPUkVfRElSfS8ke19vYmplY3ROYW1lfUJ1aWx0aW5z
V3JhcHBlci5oCiAgICAgKQogICAgIEFERF9TT1VSQ0VfV0VCQ09SRV9ERVJJVkVEX0RFUEVOREVO
Q0lFUygke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5jcHAgJHtf
b2JqZWN0TmFtZX1CdWlsdGlucy5jcHApCiBlbmRmb3JlYWNoICgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQppbmRleCBiMWMzNTk5MDJkMmI0M2M4NzlhYmUyZDg2MjRhM2UwMDg1MTljYTlk
Li5kZmRhMmYyN2ZmYjk3NjA3YWIwYWMzMDZlNjc0NmI5ODQ5ZTgxOTU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTEyNzcsNyArMTI3Nyw2IEBAIEJVSUxUSU5TX0dFTkVSQVRP
Ul9TQ1JJUFRTID0gXAogICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5z
X2dlbmVyYXRlX2NvbWJpbmVkX2ltcGxlbWVudGF0aW9uLnB5IFwKICAgICAkKEphdmFTY3JpcHRD
b3JlX1NDUklQVFNfRElSKS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV9oZWFkZXIucHkgXAog
ICAgICQoSmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVIpL2J1aWx0aW5zX2dlbmVyYXRlX3NlcGFy
YXRlX2ltcGxlbWVudGF0aW9uLnB5IFwKLSAgICAkKEphdmFTY3JpcHRDb3JlX1NDUklQVFNfRElS
KS9idWlsdGluc19nZW5lcmF0ZV9zZXBhcmF0ZV93cmFwcGVyLnB5IFwKICAgICAkKEphdmFTY3Jp
cHRDb3JlX1NDUklQVFNfRElSKS9nZW5lcmF0ZS1qcy1idWlsdGlucy5weSBcCiAgICAgJChKYXZh
U2NyaXB0Q29yZV9TQ1JJUFRTX0RJUikvbGF6eXdyaXRlci5weSBcCiAjCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODkzMmY5Nzkx
MTQwNGY0NjkxMGFmOGVlYWZkMWVhMmNhMTk5YjBhOS4uZjFlNjc4MjY0MTQ4OTAwNTAwYTUzMTUz
NWFmOTAyNjUzN2JkNDIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTUxOCw5ICsxNTE4LDYgQEAKIAkJNDE2RTZGRTgxQkJE
MTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQw
MEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAw
MEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFk
YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFt
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTZGRUEx
QkJEMTY4NDAwMEE2MDM0IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDcxQkIzMTEw
RDAwQjc2NENBIC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTQxNkU2RkVBMUJCRDE2ODQw
MDBBNjA0NCAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIwM0Q4MDcxQkIzMTEw
RDAwQjc2NERBIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNDE2RTZGRUEx
QkJEMTY4NDAwMEE2MDU0IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjAzRDgw
NzFCQjMxMTBEMDBCNzY0RUEgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBw
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
MTcyNTNBQTEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE3MjUzQTgxMzU0QkJC
QzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLzsgfTsKIAkJNDE3MjUzQUIx
MzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTcyNTNBOTEzNTRCQkJDMDAzNjBGMkEg
LyogTWVkaWFDb250cm9sRWxlbWVudHMuaCAqLzsgfTsKIAkJNDE3REE2RDkxMzczNEU2RTAwN0M1
N0ZCIC8qIEludGVybmFscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0MTdEQTRDRjEzNzM0MzI2MDA3QzU3RkIgLyogSW50ZXJuYWxzLmNwcCAqLzsg
fTsKQEAgLTExMzgwLDIyICsxMTM3NywxOCBAQAogCQk5OTA4QjBGMTFCQ0FDRjkxMDBFRDBGNzUg
LyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHMuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSBXcml0YWJsZVN0cmVhbUludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjIxQkNBQ0Y5MTAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFt
UmVhZGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFi
bGVTdHJlYW1SZWFkZXIuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYz
MUJDQUNGRkUwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVpbmdT
dHJhdGVneUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIw
RjQxQkNBQ0ZGRTAwRUQwRjY1IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dy
YXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZUxlbmd0aFF1ZXVp
bmdTdHJhdGVneUJ1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1
aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVMZW5ndGhRdWV1
aW5nU3RyYXRlZ3lCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4
QjBGNjFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3VudFF1ZXVpbmdTdHJhdGVn
eUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjcxQkNB
RDA3RDAwRUQwRjY1IC8qIENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4QjBGODFCQ0FEMDdEMDBFRDBGNjUgLyog
Q291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjkxQkNBRDA3RDAwRUQwRjY1IC8qIFJl
YWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVhZGFibGVTdHJlYW1CdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5MDhCMEY5MUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUJ1aWx0aW5z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFt
QnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQTFCQ0FE
MDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
QnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGQjFCQ0FE
MDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRp
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRkMxQkNBRDA3RDAwRUQw
RjY1IC8qIFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zV3JhcHBlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlu
c1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3
RDAwRUQwRjU1IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRh
YmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZEMUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0YWJs
ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGRTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVT
dHJlYW1SZWFkZXJCdWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSZWFkYWJsZVN0cmVhbVJlYWRlckJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkwOEIwRkYxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtUmVh
ZGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVT
dHJlYW1SZWFkZXJCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5OTA4
QjEwMDFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1SZWFkZXJCdWlsdGluc1dyYXBw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1SZWFk
ZXJCdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyMDM5
ODAxOEI5NUJDNjAwQjM5QUY5IC8qIFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVc2VySW5wdXRCcmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTIwMzk4MTE4Qjk1QkM2MDBCMzlBRjkgLyogVXNlcklucHV0QnJp
ZGdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnB1dEJyaWRnZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTk0RTVEODFCRDg0M0EzMDBGMkQ4MzUg
LyogTWVkaWFEZXZpY2VzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gTWVkaWFEZXZpY2VzLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0Mzgs
MTEgKzExNDMxLDYgQEAKIAkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEQ5IC8qIFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlu
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXcml0YWJsZVN0cmVhbUJ1aWx0
aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3
NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NENBIC8qIFN0
cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFt
QnVpbHRpbnNXcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRh
YmxlU3RyZWFtQnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTlCMDNEODA3MUJCMzExMEQwMEI3NjREQSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zV3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0
cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk5QjAzRDgwNzFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGluc1dy
YXBwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1C
dWlsdGluc1dyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOUIwM0Q4MDcx
QkIzMTEwRDAwQjc2NEVBIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtSW50ZXJu
YWxzQnVpbHRpbnNXcmFwcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMTlC
NjdFMUI5NjRFNTIwMDM0ODc0NSAvKiBTaGFkb3dSb290LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBTaGFkb3dSb290LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIxQUIw
NzkxNjQ4QzY5RDAwNTFGM0YyIC8qIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTlCMUFCMDdCMTY0OEM3QzQwMDUxRjNGMiAvKiBKU0hUTUxGb3JtQ29udHJvbHNDb2xs
ZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTcxODUsMTIgKzE3MTczLDEwIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk5
OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0
aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGNTFCQ0FEMDdEMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1
ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmggKi8sCi0JCQkJOTkwOEIwRjQxQkNBQ0ZGRTAwRUQwRjY1
IC8qIEJ5dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCAqLywKIAkJCQk2
NTY1ODFBQzA5RDE0RUU2MDAwRTYxRDcgLyogQ2hhcnNldERhdGEuY3BwICovLAogCQkJCUU0MDZG
M0ZCMTE5ODMwN0QwMDlENTlENiAvKiBDb2xvckRhdGEuY3BwICovLAogCQkJCTk5MDhCMEY2MUJD
QUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmNwcCAqLywKIAkJ
CQk5OTA4QjBGNzFCQ0FEMDdEMDBFRDBGNjUgLyogQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlu
cy5oICovLAotCQkJCTk5MDhCMEY4MUJDQUQwN0QwMEVEMEY2NSAvKiBDb3VudFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zV3JhcHBlci5oICovLAogCQkJCTY1NjU4MTQ0MDlEMTMwNDMwMDBFNjFENyAv
KiBDU1NHcmFtbWFyLmNwcCAqLywKIAkJCQk2NTBGNTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NT
R3JhbW1hci5oICovLAogCQkJCUU0MUVBMDM4MTE5ODM2REIwMDcxMEJDNSAvKiBDU1NQcm9wZXJ0
eU5hbWVzLmNwcCAqLywKQEAgLTE3MjQzLDE2ICsxNzIyOSwxMiBAQAogCQkJCTcxRTIxODM5MTcz
NTlGQjgwMDZFNkU0RCAvKiBQbHVnSW5zUmVzb3VyY2VzRGF0YS5jcHAgKi8sCiAJCQkJOTkwOEIw
RjkxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovLAogCQkJ
CTlCMDNEODA2MUJCMzExMEQwMEI3NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi8s
Ci0JCQkJOUIwM0Q4MDcxQkIzMTEwRDAwQjc2NEQ4IC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnNX
cmFwcGVyLmggKi8sCiAJCQkJOTkwOEIwRkExQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlckJ1aWx0aW5zLmNwcCAqLywKIAkJCQk5OTA4QjBGQjFCQ0FEMDdEMDBFRDBG
NjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuaCAqLywKLQkJCQk5OTA4QjBG
QzFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnNXcmFw
cGVyLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzQnVpbHRpbnMuY3BwICovLAogCQkJCTlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAv
KiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi8sCi0JCQkJOUIwM0Q4MDcxQkIz
MTEwRDAwQjc2NERBIC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgg
Ki8sCiAJCQkJOTkwOEIwRkUxQkNBRDA3RDAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVy
QnVpbHRpbnMuY3BwICovLAogCQkJCTk5MDhCMEZGMUJDQUQwN0QwMEVEMEY2NSAvKiBSZWFkYWJs
ZVN0cmVhbVJlYWRlckJ1aWx0aW5zLmggKi8sCi0JCQkJOTkwOEIxMDAxQkNBRDA3RDAwRUQwRjY1
IC8qIFJlYWRhYmxlU3RyZWFtUmVhZGVyQnVpbHRpbnNXcmFwcGVyLmggKi8sCiAJCQkJNDNCODVF
RDIxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVjdG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5
RWxlbWVudE1hcC5jcHAgKi8sCiAJCQkJNDNCODVFRDMxOENCRUM1MjAwRTMxQUY0IC8qIFNlbGVj
dG9yUHNldWRvQ2xhc3NBbmRDb21wYXRpYmlsaXR5RWxlbWVudE1hcC5ncGVyZiAqLywKIAkJCQky
NkFBMEY5RDE4RDJBMThCMDA0MTkzODEgLyogU2VsZWN0b3JQc2V1ZG9FbGVtZW50VHlwZU1hcC5j
cHAgKi8sCkBAIC0xNzI2MCw3ICsxNzI0Miw2IEBACiAJCQkJNTNFRjc2NkExNjUzMEE2MTAwNENC
RTQ5IC8qIFNldHRpbmdzTWFjcm9zLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjU1
IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLywKIAkJCQk5QjAzRDgwNjFCQjMxMTBE
MDBCNzY0QzkgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKLQkJCQk5QjAzRDgwNzFC
QjMxMTBEMDBCNzY0Q0EgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggKi8sCiAJ
CQkJODM4NkE5NkUxOUY2MUU0RjAwRTFFQzRBIC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCiAJCQkJ
ODNDMDVBNTgxQTY4NjIxMjAwN0U1REVBIC8qIFN0eWxlUHJvcGVydHlTaG9ydGhhbmRGdW5jdGlv
bnMuY3BwICovLAogCQkJCTgzQzA1QTU5MUE2ODYyMTIwMDdFNURFQSAvKiBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kRnVuY3Rpb25zLmggKi8sCkBAIC0xNzI3OSwxMCArMTcyNjAsOCBAQAogCQkJCTk5
Q0MwQjY5MThCRUExRkYwMDZDRUJDQyAvKiBXZWJSZXBsYXlJbnB1dHMuaCAqLywKIAkJCQk5OTA4
QjBGOTFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHAgKi8sCiAJ
CQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2NEU4IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuaCAq
LywKLQkJCQk5QjAzRDgwNzFCQjMxMTBEMDBCNzY0RTggLyogV3JpdGFibGVTdHJlYW1CdWlsdGlu
c1dyYXBwZXIuaCAqLywKIAkJCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNzUgLyogV3JpdGFibGVT
dHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHAgKi8sCiAJCQkJOUIwM0Q4MDYxQkIzMTEwRDAwQjc2
NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAqLywKLQkJCQk5QjAzRDgw
NzFCQjMxMTBEMDBCNzY0RUEgLyogV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBw
ZXIuaCAqLywKIAkJCQk2NTY1ODFFQTA5RDE1MDhEMDAwRTYxRDcgLyogWExpbmtOYW1lcy5jcHAg
Ki8sCiAJCQkJNjU2NTgxRUIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCAqLywKIAkJ
CQlBODMzQzgwQTBBMkNGMjU2MDBENTc2NjQgLyogWE1MTmFtZXMuY3BwICovLApAQCAtMjY5MDAs
NyArMjY4NzksNiBAQAogCQkJCUE4NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9j
dW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNkU2RkU5MUJCRDEyRTUwMDBBNjA0
MyAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZF
ODFCQkQxMkRGMDAwQTYwNDMgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRUExQkJEMTY4NDAwMEE2MDQ0IC8qIFJlYWRhYmxlU3Ry
ZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjAz
QzEyQjAyNjc2MDBDMUEzNTkgLyogUmVhbHRpbWVBbmFseXNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNEE0RjY1NzExQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTRBNEY2NTcyMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlh
U291cmNlQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKQEAgLTI3MzMzLDcgKzI3MzExLDYg
QEAKIAkJCQlDNTBEMEU4MzBGRjQyNzI5MDBBQzI2NDQgLyogU3RvcmFnZU5hbWVzcGFjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUEzNzYzNkMxQTJFNjhCQjAwOUE3RUUyIC8qIFN0b3JhZ2VOYW1l
c3BhY2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEE2
MDMzIC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKLQkJCQk0MTZF
NkZFQTFCQkQxNjg0MDAwQTYwMzQgLyogU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4MUFDNkMzNjEzMUM1N0QzMDAwOUE3RTAgLyogU3RyaW5nQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUIyMzU0MEYzMEQwMDc4MkUwMDIzODJGQSAvKiBT
dHJpbmdUcnVuY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4
NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MDE0LDcg
KzI3OTkxLDYgQEAKIAkJCQk5MzMwOUUyNDA5OUU2NDkyMDA1NkU1ODEgLyogV3JhcENvbnRlbnRz
SW5EdW1teVNwYW5Db21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTZFNkZFOTFCQkQxMkU1
MDAwQTYwNTMgLyogV3JpdGFibGVTdHJlYW1CdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxNkU2RkVBMUJCRDE2ODQwMDBBNjA1NCAvKiBXcml0
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zV3JhcHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OUJBRjNCMjQxMkMxQTM5ODAwMDE0QkYxIC8qIFdyaXRpbmdEaXJlY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0NDc2QUE4MTVEQzRCQjEwMDMwNURCMiAvKiBXcml0aW5nTW9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNjU2NTgyMDIwOUQxNTA4RDAwMEU2MUQ3IC8qIFhMaW5rTmFtZXMuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQnVpbHRpbkludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2Vi
Q29yZUpTQnVpbHRpbkludGVybmFscy5oCmluZGV4IGJhODI4OTg5OWJlZDAyNTg3YjAxZmU0MzEy
MGVkNWE1NmM4OTkyZjguLmViMjM3OTJmOGJiMDNiMjU2NDRmMTMzOTc5OTQ0N2ViNTZhNDI5MWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5J
bnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWls
dGluSW50ZXJuYWxzLmgKQEAgLTI4LDkgKzI4LDkgQEAKICNkZWZpbmUgV2ViQ29yZUpTQnVpbHRp
bkludGVybmFsc19oCiAKICNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0jaW5jbHVkZSAiUmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBwZXIuaCIKLSNpbmNsdWRlICJTdHJlYW1JbnRl
cm5hbHNCdWlsdGluc1dyYXBwZXIuaCIKLSNpbmNsdWRlICJXcml0YWJsZVN0cmVhbUludGVybmFs
c0J1aWx0aW5zV3JhcHBlci5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuaCIKKyNpbmNsdWRlICJTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIgorI2luY2x1ZGUg
IldyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCIKICNlbmRpZgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
SlNCdWlsdGlucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUpTQnVpbHRp
bnMuaAppbmRleCA2Mzc3NGUxZmMzYjdiZjViYWQwNDc2NTJhNjM5ZmMyZTI1NjYxOTNmLi5hYTc5
YTEzMmVhZmIxZTlmMjE2ZjM4NTc1OWI3NDc4OWRlNTk2YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVKU0J1aWx0aW5zLmgKQEAgLTI4LDE5ICsyOCwxOSBAQAog
I2RlZmluZSBXZWJDb3JlSlNCdWlsdGluc19oCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
I2luY2x1ZGUgIk1lZGlhRGV2aWNlc0J1aWx0aW5zV3JhcHBlci5oIgorI2luY2x1ZGUgIk1lZGlh
RGV2aWNlc0J1aWx0aW5zLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLSNp
bmNsdWRlICJCeXRlTGVuZ3RoUXVldWluZ1N0cmF0ZWd5QnVpbHRpbnNXcmFwcGVyLmgiCi0jaW5j
bHVkZSAiQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGluc1dyYXBwZXIuaCIKLSNpbmNsdWRlICJS
ZWFkYWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckJ1aWx0aW5zV3JhcHBlci5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1SZWFkZXJC
dWlsdGluc1dyYXBwZXIuaCIKLSNpbmNsdWRlICJTdHJlYW1JbnRlcm5hbHNCdWlsdGluc1dyYXBw
ZXIuaCIKLSNpbmNsdWRlICJXcml0YWJsZVN0cmVhbUJ1aWx0aW5zV3JhcHBlci5oIgotI2luY2x1
ZGUgIldyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnNXcmFwcGVyLmgiCisjaW5jbHVkZSAi
Qnl0ZUxlbmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiQ291bnRRdWV1
aW5nU3RyYXRlZ3lCdWlsdGlucy5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtQnVpbHRpbnMu
aCIKKyNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucy5oIgorI2luY2x1
ZGUgIlJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCIKKyNpbmNsdWRlICJSZWFkYWJs
ZVN0cmVhbVJlYWRlckJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCIKKyNpbmNsdWRlICJXcml0YWJsZVN0cmVhbUJ1aWx0aW5zLmgiCisjaW5jbHVkZSAiV3Jp
dGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oIgogI2VuZGlmCiAKICNpbmNsdWRlIDxydW50
aW1lL1ZNLmg+Cg==
</data>
<flag name="review"
          id="289116"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>