<?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>201089</bug_id>
          
          <creation_ts>2019-08-23 14:57:07 -0700</creation_ts>
          <short_desc>Remove NPAPI Examples</short_desc>
          <delta_ts>2019-08-26 09:49:17 -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>New Bugs</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1564618</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-23 14:57:07 -0700</bug_when>
    <thetext>Remove NPAPI Examples</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564619</commentid>
    <comment_count>1</comment_count>
      <attachid>377157</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-23 15:02:54 -0700</bug_when>
    <thetext>Created attachment 377157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564621</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-23 15:04:24 -0700</bug_when>
    <thetext>EWS doesn&apos;t like removing directories.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564972</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-26 09:48:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/r249098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1564974</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-26 09:49:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/54710339&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377157</attachid>
            <date>2019-08-23 15:02:54 -0700</date>
            <delta_ts>2019-08-23 15:51:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201089-20190823150252.patch</filename>
            <type>text/plain</type>
            <size>190203</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTA3
MCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4
LTIzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIE5QQVBJIEV4YW1wbGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMDEwODkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBhcmUgb25seSBzdXBwb3J0aW5nIE5QQVBJIGZvciBmbGFzaCB1
bnRpbCBpdHMgdXBjb21pbmcgZW5kIG9mIGxpZmUuCisgICAgICAgIFdlIGRvbid0IG5lZWQgdG8g
ZW5jb3VyYWdlIHRoZSBjcmVhdGlvbiBvZiBuZXcgTlBBUEkgcGx1Z2lucyBieSBoYXZpbmcgZXhh
bXBsZXMuCisKKyAgICAgICAgKiBFeGFtcGxlczogUmVtb3ZlZC4KKwogMjAxOS0wOC0yMSAgQWRy
aWFuIFBlcmV6IGRlIENhc3RybyAgPGFwZXJlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
W1dQRV0gR3RrLURvYyBmYWlscyB3aXRoIGJ1aWxkIG9wdGlvbnMgd2hpY2ggbmVlZCBjb29wZXJh
dGlvbiBiZXR3ZWVuIENGTEFHUyBhbmQgTERGTEFHUwpJbmRleDogRXhhbXBsZXMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEV4YW1wbGVzL0NoYW5nZUxvZwkocmV2aXNpb24gMjQ4OTY1KQorKysg
RXhhbXBsZXMvQ2hhbmdlTG9nCShub25leGlzdGVudCkKQEAgLTEsNDc2ICswLDAgQEAKLTIwMTkt
MDgtMDIgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgotCi0gICAgICAgIENvbnNp
c3RlbnRseSB1c2UgT2JqLUMgYm9vbGVhbiBsaXRlcmFscwotICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNDA1Ci0gICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81Mzg4MDA0Mz4KLQotICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIsIEpvc2VwaCBQ
ZWNvcmFyby4KLQotICAgICAgICBUaGVyZSBhcmUgcGxhY2VzIHdoZXJlIHdlIHVzZSBlcXVpdmFs
ZW50IGJ1dCBkaWZmZXJlbnQgZXhwcmVzc2lvbnMgZm9yCi0gICAgICAgIE9iai1DIGJvb2xlYW4g
b2JqZWN0cy4gRm9yIGV4YW1wbGUsIHdlIHVzZSBib3RoIFtOU051bWJlcgotICAgICAgICBudW1i
ZXJXaXRoQm9vbDpZRVNdIGFuZCBAWUVTLiBUaGVyZSBhcmUgcGxhY2VzIHdoZXJlIGJvdGggYXJl
IHVzZWQgaW4KLSAgICAgICAgdGhlIHNhbWUgZnVuY3Rpb24sIHN1Y2ggYXMgLVtXZWJQcmVmZXJl
bmNlcyBpbml0aWFsaXplXS4gVGhlIGJvb2xlYW4KLSAgICAgICAgbGl0ZXJhbCBpcyBpbiBncmVh
dGVyIHVzZSBhbmQgaXMgbW9yZSBzdWNjaW5jdCwgc28gc3RhbmRhcmRpemUgb24KLSAgICAgICAg
dGhhdC4gQWxzbywgY2hhbmdlIEAoWUVTL05PKSB0byBAWUVTL05PLgotCi0gICAgICAgICogTmV0
c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vbWFpbi5tOgotICAgICAgICAoTlBQX0dldFZh
bHVlKToKLQotMjAxNC0xMi0wMyAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KLQotICAg
ICAgICBBZGQgYSBzYW1wbGUgcGx1Z2luIHRvIGRlbW9uc3RyYXRlIHRoZSBtdXRlIHBsdWdpbiBB
UEkuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzky
MzEKLQotICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCi0KLSAgICAgICAgKiBO
ZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaDogQWRkZWQuCi0gICAgICAgICogTmV0
c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVyLm1tOiBBZGRlZC4KLSAgICAgICAgKC1bQXVk
aW9QbGF5ZXIgaW5pdFdpdGhVUkw6XSk6Ci0gICAgICAgICgtW0F1ZGlvUGxheWVyIGRlYWxsb2Nd
KToKLSAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaXNSZWFkeVRvUGxheV0pOgotICAgICAgICAoLVtB
dWRpb1BsYXllciBpc1BsYXlpbmddKToKLSAgICAgICAgKC1bQXVkaW9QbGF5ZXIgc2V0UGxheWlu
ZzpdKToKLSAgICAgICAgKC1bQXVkaW9QbGF5ZXIgaXNNdXRlZF0pOgotICAgICAgICAoLVtBdWRp
b1BsYXllciBzZXRNdXRlZDpdKToKLSAgICAgICAgKC1bQXVkaW9QbGF5ZXIgb2JzZXJ2ZVZhbHVl
Rm9yS2V5UGF0aDpvZk9iamVjdDpjaGFuZ2U6Y29udGV4dDpdKToKLSAgICAgICAgKiBOZXRzY2Fw
ZU11dGVBUElQbHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczogQWRkZWQuCi0g
ICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0luZm8ucGxpc3Q6IEFkZGVkLgotICAgICAg
ICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5oOiBBZGRlZC4KLSAgICAgICAg
KiBOZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIubTogQWRkZWQuCi0gICAgICAgICgt
W01lbnVIYW5kbGVyIF9wbGF5Ol0pOgotICAgICAgICAoLVtNZW51SGFuZGxlciBfcGF1c2U6XSk6
Ci0gICAgICAgICgtW01lbnVIYW5kbGVyIHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06XSk6Ci0g
ICAgICAgICgtW01lbnVIYW5kbGVyIGluaXRXaXRoQXVkaW9QbGF5ZXI6XSk6Ci0gICAgICAgICgt
W01lbnVIYW5kbGVyIGRlYWxsb2NdKToKLSAgICAgICAgKC1bTWVudUhhbmRsZXIgbWVudV0pOgot
ICAgICAgICAqIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbi9OZXRzY2FwZU11dGVBUElQbHVnaW4ueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVNdXRlQVBJ
UGx1Z2luL21haW4ubTogQWRkZWQuCi0gICAgICAgICgtW1BsdWdpbk9iamVjdCBpbml0V2l0aE5Q
UDphdWRpb1VSTDpdKToKLSAgICAgICAgKC1bUGx1Z2luT2JqZWN0IGRlYWxsb2NdKToKLSAgICAg
ICAgKC1bUGx1Z2luT2JqZWN0IG1lbnVIYW5kbGVyXSk6Ci0gICAgICAgICgtW1BsdWdpbk9iamVj
dCBpc1BsYXlpbmdBdWRpb10pOgotICAgICAgICAoLVtQbHVnaW5PYmplY3QgaXNNdXRlZF0pOgot
ICAgICAgICAoLVtQbHVnaW5PYmplY3Qgc2V0TXV0ZWQ6XSk6Ci0gICAgICAgICgtW1BsdWdpbk9i
amVjdCByZWFkeVN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6XSk6Ci0gICAgICAgICgtW1Bs
dWdpbk9iamVjdCBtdXRlZFN0YXRlRGlkQ2hhbmdlRm9yQXVkaW9QbGF5ZXI6XSk6Ci0gICAgICAg
ICgtW1BsdWdpbk9iamVjdCBwbGF5U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjpdKToKLSAg
ICAgICAgKC1bUGx1Z2luT2JqZWN0IF9pbnZhbGlkYXRlRGlzcGxheVN0cmluZ10pOgotICAgICAg
ICAoTlBfSW5pdGlhbGl6ZSk6Ci0gICAgICAgIChOUF9HZXRFbnRyeVBvaW50cyk6Ci0gICAgICAg
IChOUF9TaHV0ZG93bik6Ci0gICAgICAgIChOUFBfTmV3KToKLSAgICAgICAgKE5QUF9EZXN0cm95
KToKLSAgICAgICAgKE5QUF9TZXRXaW5kb3cpOgotICAgICAgICAoTlBQX05ld1N0cmVhbSk6Ci0g
ICAgICAgIChOUFBfRGVzdHJveVN0cmVhbSk6Ci0gICAgICAgIChOUFBfV3JpdGVSZWFkeSk6Ci0g
ICAgICAgIChOUFBfV3JpdGUpOgotICAgICAgICAoTlBQX1N0cmVhbUFzRmlsZSk6Ci0gICAgICAg
IChOUFBfUHJpbnQpOgotICAgICAgICAoaGFuZGxlRHJhdyk6Ci0gICAgICAgIChpbnZhbGlkYXRl
UGx1Z2luKToKLSAgICAgICAgKGhhbmRsZU1vdXNlRXZlbnQpOgotICAgICAgICAoTlBQX0hhbmRs
ZUV2ZW50KToKLSAgICAgICAgKE5QUF9VUkxOb3RpZnkpOgotICAgICAgICAoTlBQX0dldFZhbHVl
KToKLSAgICAgICAgKE5QUF9TZXRWYWx1ZSk6Ci0gICAgICAgICogTmV0c2NhcGVNdXRlQVBJUGx1
Z2luL3Rlc3QuaHRtbDogQWRkZWQuCi0KLTIwMTQtMDMtMTQgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXBsYWNlICJBcHBsZSBDb21wdXRlciwgSW5jLiIg
d2l0aCAiQXBwbGUgSW5jLiIgaW4gY29weXJpZ2h0IGhlYWRlcnMKLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDI3NgotICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTYyNjY5Mjc+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgotCi0g
ICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdpbi9NZW51SGFuZGxlci5oOgotICAgICAgICAqIE5l
dHNjYXBlQ29jb2FQbHVnaW4vTWVudUhhbmRsZXIubToKLSAgICAgICAgKiBOZXRzY2FwZUNvY29h
UGx1Z2luL21haW4ubToKLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vbWFp
bi5tOgotICAgICAgICAqIE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4vbWFpbi5tOgotCi0yMDEx
LTAzLTE3ICBKZWZmIE1pbGxlciAgPGplZmZtQGFwcGxlLmNvbT4KLQotICAgICAgICBVc2UgYSBj
b25zaXN0ZW50IHNldCBvZiBmaWxlIHBhdHRlcm5zIGluIHRoZSBzdm46aWdub3JlIHByb3BlcnR5
IGZvciBhbGwgLnhjb2RlcHJvaiBkaXJlY3Rvcmllcywgc3BlY2lmaWNhbGx5OgotICAgICAgICAK
LSAgICAgICAgKi5tb2RlKgotICAgICAgICAqLnBieHVzZXIKLSAgICAgICAgKi5wZXJzcGVjdGl2
ZSoKLSAgICAgICAgcHJvamVjdC54Y3dvcmtzcGFjZQotICAgICAgICB4Y3VzZXJkYXRhCi0KLSAg
ICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL05ldHNjYXBlQ29jb2FQbHVnaW4ueGNvZGVwcm9q
OiBNb2RpZmllZCBwcm9wZXJ0eSBzdm46aWdub3JlLgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFu
aW1hdGlvbk1vdmllUGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luLnhjb2Rl
cHJvajogTW9kaWZpZWQgcHJvcGVydHkgc3ZuOmlnbm9yZS4KLSAgICAgICAgKiBOZXRzY2FwZUNv
cmVBbmltYXRpb25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luLnhjb2RlcHJvajog
TW9kaWZpZWQgcHJvcGVydHkgc3ZuOmlnbm9yZS4KLSAgICAgICAgKiBOZXRzY2FwZUlucHV0TWV0
aG9kUGx1Z2luL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4ueGNvZGVwcm9qOiBNb2RpZmllZCBw
cm9wZXJ0eSBzdm46aWdub3JlLgotCi0yMDExLTAxLTE3ICBEYW4gQmVybnN0ZWluICA8bWl0ekBh
cHBsZS5jb20+Ci0KLSAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgTWFyayBSb3dlLgotCi0gICAg
ICAgIFVwZGF0ZSB4Y29kZXByb2ogc3ZuOmlnbm9yZSB0byBpbmNsdWRlIHhjdXNlcmRhdGEuCi0K
LSAgICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL05ldHNjYXBlQ29jb2FQbHVnaW4ueGNvZGVw
cm9qOiBNb2RpZmllZCBwcm9wZXJ0eSBzdm46aWdub3JlLgotICAgICAgICAqIE5ldHNjYXBlQ29y
ZUFuaW1hdGlvbk1vdmllUGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luLnhj
b2RlcHJvajogTW9kaWZpZWQgcHJvcGVydHkgc3ZuOmlnbm9yZS4KLSAgICAgICAgKiBOZXRzY2Fw
ZUNvcmVBbmltYXRpb25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luLnhjb2RlcHJv
ajogTW9kaWZpZWQgcHJvcGVydHkgc3ZuOmlnbm9yZS4KLSAgICAgICAgKiBOZXRzY2FwZUlucHV0
TWV0aG9kUGx1Z2luL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4ueGNvZGVwcm9qOiBNb2RpZmll
ZCBwcm9wZXJ0eSBzdm46aWdub3JlLgotCi0yMDEwLTExLTAzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KLQotICAgICAgICBVcGRhdGVkIFhjb2RlIHByb2plY3RzIGJ5IG9wZW5pbmcg
dGhlbSB3aXRoIFhjb2RlIDMuMi40LgotICAgICAgICBVcGRhdGVkIHN2bjppZ25vcmUgZm9yIFhj
b2RlIHByb2plY3RzLgotCi0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdpbi9OZXRzY2FwZUNv
Y29hUGx1Z2luLnhjb2RlcHJvajogQWRkZWQgcHJvcGVydHkgc3ZuOmlnbm9yZS4KLSAgICAgICAg
KiBOZXRzY2FwZUNvY29hUGx1Z2luL05ldHNjYXBlQ29jb2FQbHVnaW4ueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajogVXBkYXRlZCB3aXRoIFhjb2RlIDMuMi40LgotICAgICAgICAqIE5ldHNjYXBl
Q29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2lu
Lnhjb2RlcHJvajogQWRkZWQgcHJvcGVydHkgc3ZuOmlnbm9yZS4KLSAgICAgICAgKiBOZXRzY2Fw
ZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdp
bi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1h
dGlvblBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4ueGNvZGVwcm9qOiBBZGRlZCBw
cm9wZXJ0eSBzdm46aWdub3JlLgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdp
bi9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
LSAgICAgICAgKiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL05ldHNjYXBlSW5wdXRNZXRob2RQ
bHVnaW4ueGNvZGVwcm9qOiBBZGRlZCBwcm9wZXJ0eSBzdm46aWdub3JlLgotICAgICAgICAqIE5l
dHNjYXBlSW5wdXRNZXRob2RQbHVnaW4vTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOiBVcGRhdGVkIHdpdGggWGNvZGUgMy4yLjQuCi0KLTIwMTAtMDYt
MTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBGaXgg
YnVpbGQuCi0KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9tYWlu
Lm06Ci0gICAgICAgIChOUFBfTmV3KToKLSAgICAgICAgKE5QUF9Xcml0ZVJlYWR5KToKLSAgICAg
ICAgKE5QUF9Xcml0ZSk6Ci0gICAgICAgIChOUFBfSGFuZGxlRXZlbnQpOgotCi0yMDEwLTA2LTEw
ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+Ci0KLSAgICAgICAgRml4IGJ1
aWxkLgotCi0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdpbi9OZXRzY2FwZUNvY29hUGx1Z2lu
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdp
bi9tYWluLm06Ci0gICAgICAgIChOUFBfTmV3KToKLSAgICAgICAgKE5QUF9OZXdTdHJlYW0pOgot
ICAgICAgICAoTlBQX1dyaXRlUmVhZHkpOgotICAgICAgICAoTlBQX1dyaXRlKToKLSAgICAgICAg
KE5QUF9IYW5kbGVFdmVudCk6Ci0KLTIwMTAtMDMtMDIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBEZWNrZXIuCi0KLSAg
ICAgICAgTlBXaW5kb3cgaXMgbm93IG51bGwgaW4gdGhlIENvY29hIGV2ZW50IG1vZGVsLgotCi0g
ICAgICAgICogTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9tYWluLm06Ci0gICAgICAgIChoYW5k
bGVEcmF3KToKLSAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6Ci0KLTIwMDktMDctMTAgIEFkYW0g
Um9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFNvcnQgYWxsIG91ciBYY29kZSBw
cm9qZWN0cwotCi0gICAgICAgIEFjY29tcGxpc2hlZCB1c2luZyBzb3J0LVhjb2RlLXByb2plY3Qt
ZmlsZS4KLQotICAgICAgICBSZXF1ZXN0ZWQgYnkgRGF2ZSBLaWx6ZXIuCi0KLSAgICAgICAgKiBO
ZXRzY2FwZUNvY29hUGx1Z2luL05ldHNjYXBlQ29jb2FQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRz
Y2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgot
ICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRp
b25QbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLQotMjAwOS0wNi0xNSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtl
dmluIERlY2tlci4KLQotICAgICAgICBBZGQgQ29yZSBBbmltYXRpb24gbW92aWUgcGx1Zy1pbiBl
eGFtcGxlLgotICAgICAgICAKLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBs
dWdpbjogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4v
RW5nbGlzaC5scHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92
aWVQbHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczogQWRkZWQuCi0gICAgICAg
ICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vSW5mby5wbGlzdDogQWRkZWQuCi0g
ICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTW92aWVDb250cm9sbGVy
TGF5ZXIuaDogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVn
aW4vTW92aWVDb250cm9sbGVyTGF5ZXIubTogQWRkZWQuCi0gICAgICAgIChjcmVhdGVJbWFnZU5h
bWVkKToKLSAgICAgICAgKC1bTW92aWVDb250cm9sbGVyTGF5ZXIgaW5pdF0pOgotICAgICAgICAo
LVtNb3ZpZUNvbnRyb2xsZXJMYXllciBkZWFsbG9jXSk6Ci0gICAgICAgICgtW01vdmllQ29udHJv
bGxlckxheWVyIF9wbGF5UGF1c2VCdXR0b25SZWN0XSk6Ci0gICAgICAgICgtW01vdmllQ29udHJv
bGxlckxheWVyIF9zbGlkZXJSZWN0XSk6Ci0gICAgICAgICgtW01vdmllQ29udHJvbGxlckxheWVy
IF9zbGlkZXJUaHVtYlJlY3RdKToKLSAgICAgICAgKC1bTW92aWVDb250cm9sbGVyTGF5ZXIgX2lu
bmVyU2xpZGVyUmVjdF0pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfZHJhd1Bs
YXlQYXVzZUJ1dHRvbkluQ29udGV4dDpdKToKLSAgICAgICAgKC1bTW92aWVDb250cm9sbGVyTGF5
ZXIgX2RyYXdTbGlkZXJJbkNvbnRleHQ6XSk6Ci0gICAgICAgICgtW01vdmllQ29udHJvbGxlckxh
eWVyIGRyYXdJbkNvbnRleHQ6XSk6Ci0gICAgICAgICgtW01vdmllQ29udHJvbGxlckxheWVyIF9j
dXJyZW50VGltZV0pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfZHVyYXRpb25d
KToKLSAgICAgICAgKC1bTW92aWVDb250cm9sbGVyTGF5ZXIgX2lzUGxheWluZ10pOgotICAgICAg
ICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfdXBkYXRlVGltZTpdKToKLSAgICAgICAgKC1bTW92
aWVDb250cm9sbGVyTGF5ZXIgX3JhdGVEaWRDaGFuZ2U6XSk6Ci0gICAgICAgICgtW01vdmllQ29u
dHJvbGxlckxheWVyIF90aW1lRGlkQ2hhbmdlOl0pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xs
ZXJMYXllciBhY3Rpb25Gb3JLZXk6XSk6Ci0gICAgICAgICgtW01vdmllQ29udHJvbGxlckxheWVy
IHNldE1vdmllOl0pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBfc2V0TmV3VGlt
ZUZvclRodW1iQ2VudGVyWDpdKToKLSAgICAgICAgKC1bTW92aWVDb250cm9sbGVyTGF5ZXIgaGFu
ZGxlTW91c2VEb3duOl0pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBoYW5kbGVN
b3VzZVVwOl0pOgotICAgICAgICAoLVtNb3ZpZUNvbnRyb2xsZXJMYXllciBoYW5kbGVNb3VzZURy
YWdnZWQ6XSk6Ci0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTmV0
c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4ueGNvZGVwcm9qOiBBZGRlZC4KLSAgICAgICAg
KiBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25N
b3ZpZVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KLSAgICAgICAgKiBO
ZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9QYXVzZS50aWZmOiBBZGRlZC4KLSAgICAg
ICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9QbGF5LnRpZmY6IEFkZGVkLgot
ICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1NsaWRlclRyYWNrQ2Vu
dGVyLnRpZmY6IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1
Z2luL1NsaWRlclRyYWNrTGVmdC50aWZmOiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVB
bmltYXRpb25Nb3ZpZVBsdWdpbi9TbGlkZXJUcmFja1JpZ2h0LnRpZmY6IEFkZGVkLgotICAgICAg
ICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1RodW1iLnRpZmY6IEFkZGVkLgot
ICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL21haW4ubTogQWRkZWQu
Ci0gICAgICAgIChOUF9Jbml0aWFsaXplKToKLSAgICAgICAgKE5QX0dldEVudHJ5UG9pbnRzKToK
LSAgICAgICAgKE5QX1NodXRkb3duKToKLSAgICAgICAgKE5QUF9OZXcpOgotICAgICAgICAoTlBQ
X0Rlc3Ryb3kpOgotICAgICAgICAoTlBQX1NldFdpbmRvdyk6Ci0gICAgICAgIChOUFBfTmV3U3Ry
ZWFtKToKLSAgICAgICAgKE5QUF9EZXN0cm95U3RyZWFtKToKLSAgICAgICAgKE5QUF9Xcml0ZVJl
YWR5KToKLSAgICAgICAgKE5QUF9Xcml0ZSk6Ci0gICAgICAgIChOUFBfU3RyZWFtQXNGaWxlKToK
LSAgICAgICAgKE5QUF9QcmludCk6Ci0gICAgICAgIChoYW5kbGVNb3VzZURvd24pOgotICAgICAg
ICAodG9nZ2xlUGxheVBhdXNlKToKLSAgICAgICAgKGhhbmRsZU1vdXNlVXApOgotICAgICAgICAo
aGFuZGxlTW91c2VEcmFnZ2VkKToKLSAgICAgICAgKGhhbmRsZU1vdXNlRW50ZXJlZCk6Ci0gICAg
ICAgIChoYW5kbGVNb3VzZUV4aXRlZCk6Ci0gICAgICAgIChoYW5kbGVLZXlEb3duKToKLSAgICAg
ICAgKGhhbmRsZVNjcm9sbEV2ZW50KToKLSAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6Ci0gICAg
ICAgIChOUFBfVVJMTm90aWZ5KToKLSAgICAgICAgKE5QUF9HZXRWYWx1ZSk6Ci0gICAgICAgIChO
UFBfU2V0VmFsdWUpOgotICAgICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2lu
L3Rlc3QuaHRtbDogQWRkZWQuCi0KLTIwMDktMDQtMjcgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgotCi0gICAg
ICAgIFVwZGF0ZSB0aGUgZXhhbXBsZSBwbHVnLWluIGZvciBuZXcgY2hhbmdlcyB0byB0aGUgQ29j
b2EgZXZlbnQgbW9kZWwuCi0gICAgICAgIAotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4v
bWFpbi5tOgotICAgICAgICAoaGFuZGxlRHJhdyk6Ci0gICAgICAgIChoYW5kbGVNb3VzZUV2ZW50
KToKLSAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6Ci0KLTIwMDktMDMtMTMgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBE
ZWNrZXIuCi0KLSAgICAgICAgVXBkYXRlIHRvIG1hdGNoIG5ldyBBUEkuCi0gICAgICAgIAotICAg
ICAgICAqIE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4vbWFpbi5tOgotICAgICAgICAoTlBQX05l
dyk6Ci0gICAgICAgIChOUFBfRGVzdHJveSk6Ci0gICAgICAgIChOUFBfU2V0V2luZG93KToKLSAg
ICAgICAgKGhhbmRsZURyYXcpOgotICAgICAgICAoaW52YWxpZGF0ZVBsdWdpbik6Ci0gICAgICAg
IChoYW5kbGVGb2N1c0NoYW5nZWQpOgotICAgICAgICAoaGFuZGxlTW91c2VNb3ZlZCk6Ci0gICAg
ICAgIChoYW5kbGVNb3VzZURvd24pOgotICAgICAgICAoaGFuZGxlVGV4dEZpZWxkS2V5RG93bik6
Ci0gICAgICAgIChoYW5kbGVUZXh0SW5wdXQpOgotICAgICAgICAoTlBQX0hhbmRsZUV2ZW50KToK
LSAgICAgICAgKE5QUF9VUkxOb3RpZnkpOgotICAgICAgICAoTlBQX0dldFZhbHVlKToKLSAgICAg
ICAgKE5QUF9TZXRWYWx1ZSk6Ci0KLTIwMDgtMTItMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVy
c2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KLQotICAg
ICAgICBUaGVyZSdzIG5vIG5lZWQgdG8gaG9sZCBvbiB0byB0aGUgUUNDb21wb3NpdGlvbi4gQWxz
bywgdG9nZ2xlIGJldHdlZW4gYSBnb2xkIGFuZCBzaWx2ZXIgY29tcGFzcyAKLSAgICAgICAgd2hl
biBhIG1vdXNlIGJ1dHRvbiBpcyBwcmVzc2VkLgotICAgICAgICAKLSAgICAgICAgKiBOZXRzY2Fw
ZUNvcmVBbmltYXRpb25QbHVnaW4vQ29tcG9zaXRpb24ucXR6OgotICAgICAgICAqIE5ldHNjYXBl
Q29yZUFuaW1hdGlvblBsdWdpbi9tYWluLm06Ci0gICAgICAgIChOUFBfRGVzdHJveSk6Ci0gICAg
ICAgIChoYW5kbGVNb3VzZUNsaWNrKToKLSAgICAgICAgKE5QUF9HZXRWYWx1ZSk6Ci0KLTIwMDgt
MTItMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBS
ZXZlcnQgc29tZSBhY2NpZGVudGFsbHkgY29tbWl0dGVkIGNoYW5nZXMuCi0gICAgICAgIAotICAg
ICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vbWFpbi5tOgot
ICAgICAgICAoaGFuZGxlRHJhdyk6Ci0gICAgICAgIChoYW5kbGVNb3VzZUV2ZW50KToKLSAgICAg
ICAgKE5QUF9IYW5kbGVFdmVudCk6Ci0KLTIwMDgtMTItMTIgIEFuZGVycyBDYXJsc3NvbiAgPGFu
ZGVyc2NhQGFwcGxlLmNvbT4KLQotICAgICAgICBSZXZpZXdlZCBieSBLZXZpbiBEZWNrZXIuCi0K
LSAgICAgICAgQWRkIGEgc2FtcGxlIENvcmUgQW5pbWF0aW9uIE5QQVBJIHBsdWctaW4uCi0gICAg
ICAgIAotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4v
bWFpbi5tOgotICAgICAgICAoaGFuZGxlRHJhdyk6Ci0gICAgICAgIChoYW5kbGVNb3VzZUV2ZW50
KToKLSAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6Ci0gICAgICAgICogTmV0c2NhcGVDb3JlQW5p
bWF0aW9uUGx1Z2luOiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVn
aW4vQ29tcG9zaXRpb24ucXR6OiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRp
b25QbHVnaW4vRW5nbGlzaC5scHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5p
bWF0aW9uUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M6IEFkZGVkLgotICAg
ICAgICAqIE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9JbmZvLnBsaXN0OiBBZGRlZC4KLSAg
ICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9u
UGx1Z2luLnhjb2RlcHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb3JlQW5pbWF0aW9u
UGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vbWFpbi5t
OiBBZGRlZC4KLSAgICAgICAgKE5QX0luaXRpYWxpemUpOgotICAgICAgICAoTlBfR2V0RW50cnlQ
b2ludHMpOgotICAgICAgICAoTlBfU2h1dGRvd24pOgotICAgICAgICAoTlBQX05ldyk6Ci0gICAg
ICAgIChOUFBfRGVzdHJveSk6Ci0gICAgICAgIChOUFBfU2V0V2luZG93KToKLSAgICAgICAgKE5Q
UF9OZXdTdHJlYW0pOgotICAgICAgICAoTlBQX0Rlc3Ryb3lTdHJlYW0pOgotICAgICAgICAoTlBQ
X1dyaXRlUmVhZHkpOgotICAgICAgICAoTlBQX1dyaXRlKToKLSAgICAgICAgKE5QUF9TdHJlYW1B
c0ZpbGUpOgotICAgICAgICAoTlBQX1ByaW50KToKLSAgICAgICAgKGhhbmRsZU1vdXNlQ2xpY2sp
OgotICAgICAgICAoTlBQX0hhbmRsZUV2ZW50KToKLSAgICAgICAgKE5QUF9VUkxOb3RpZnkpOgot
ICAgICAgICAoTlBQX0dldFZhbHVlKToKLSAgICAgICAgKE5QUF9TZXRWYWx1ZSk6Ci0gICAgICAg
ICogTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL3Rlc3QuaHRtbDogQWRkZWQuCi0KLTIwMDgt
MTItMDggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KLQotICAgICAgICBCdWcg
MjI1NTU6IFNvcnQgImNoaWxkcmVuIiBzZWN0aW9ucyBpbiBYY29kZSBwcm9qZWN0IGZpbGVzCi0K
LSAgICAgICAgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjU1NT4K
LQotICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KLQotICAgICAgICAqIE5ldHNjYXBl
Q29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OiBTb3J0ZWQuCi0KLTIwMDgtMDgtMjAgIEpvc2ggQWFzICA8am9zaG1vekBnbWFpbC5jb20+Ci0K
LSAgICAgICAgUmV2aWV3ZWQgYW5kIGxhbmRlZCBieSBBbmRlcnMuCi0KLSAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzYxNjM2MzY+IAotICAgICAgICByZW5hbWUgTlBDb2NvYUV2ZW50J3MgImV2ZW50
IiBzdHJ1Y3QgdG8gImRhdGEiICgyMDQ0NikKLQotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVn
aW4vbWFpbi5tOgotICAgICAgICAoaGFuZGxlTW91c2VFdmVudCk6Ci0gICAgICAgIChoYW5kbGVL
ZXlib2FyZEV2ZW50KToKLSAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6Ci0KLTIwMDgtMDUtMjIg
IEpvc2ggQWFzICA8am9zaG1vekBnbWFpbC5jb20+Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQW5k
ZXJzLgotCi0gICAgICAgIFVzZSBjb3JyZWN0IGVudW0uCi0gICAgICAgIAotICAgICAgICAqIE5l
dHNjYXBlQ29jb2FQbHVnaW4vbWFpbi5tOgotICAgICAgICAoTlBQX05ldyk6Ci0gICAgICAgICog
TmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9tYWluLm06Ci0gICAgICAgIChOUFBfTmV3KToKLQot
MjAwOC0wNS0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhleS4KLQotICAgICAgICBBZGQgaW5wdXQgbWV0aG9kIHRlc3Qg
cGx1Zy1pbi4KLSAgICAgICAgCi0gICAgICAgICogTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbjog
QWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9FbmdsaXNoLmxwcm9q
OiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL0VuZ2xpc2gubHBy
b2ovSW5mb1BsaXN0LnN0cmluZ3M6IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlSW5wdXRNZXRo
b2RQbHVnaW4vSW5mby5wbGlzdDogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVJbnB1dE1ldGhv
ZFBsdWdpbi9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luLnhjb2RlcHJvajogQWRkZWQuCi0gICAg
ICAgICogTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2lu
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlSW5w
dXRNZXRob2RQbHVnaW4vbWFpbi5tOiBBZGRlZC4KLSAgICAgICAgKE5QX0luaXRpYWxpemUpOgot
ICAgICAgICAoTlBfR2V0RW50cnlQb2ludHMpOgotICAgICAgICAoTlBfU2h1dGRvd24pOgotICAg
ICAgICAoTlBQX05ldyk6Ci0gICAgICAgIChOUFBfRGVzdHJveSk6Ci0gICAgICAgIChOUFBfU2V0
V2luZG93KToKLSAgICAgICAgKE5QUF9OZXdTdHJlYW0pOgotICAgICAgICAoTlBQX0Rlc3Ryb3lT
dHJlYW0pOgotICAgICAgICAoTlBQX1dyaXRlUmVhZHkpOgotICAgICAgICAoTlBQX1dyaXRlKToK
LSAgICAgICAgKE5QUF9TdHJlYW1Bc0ZpbGUpOgotICAgICAgICAoTlBQX1ByaW50KToKLSAgICAg
ICAgKGhhbmRsZURyYXcpOgotICAgICAgICAoaW52YWxpZGF0ZVBsdWdpbik6Ci0gICAgICAgICho
YW5kbGVGb2N1c0NoYW5nZWQpOgotICAgICAgICAoaGFuZGxlTW91c2VNb3ZlZCk6Ci0gICAgICAg
IChoYW5kbGVNb3VzZURvd24pOgotICAgICAgICAoTlBQX0hhbmRsZUV2ZW50KToKLSAgICAgICAg
KE5QUF9VUkxOb3RpZnkpOgotICAgICAgICAoc2VsZWN0aW9uUmFuZ2UpOgotICAgICAgICAoTlBQ
X0luc2VydFRleHQpOgotICAgICAgICAoTlBQX0RvQ29tbWFuZEJ5U2VsZWN0b3IpOgotICAgICAg
ICAobWFya2VkVGV4dEF0dHJpYnV0ZXMpOgotICAgICAgICAoTlBQX1NldE1hcmtlZFRleHQpOgot
ICAgICAgICAoTlBQX1VubWFya1RleHQpOgotICAgICAgICAoTlBQX0hhc01hcmtlZFRleHQpOgot
ICAgICAgICAoTlBQX0F0dHJpYnV0ZWRTdWJzdHJpbmdGcm9tUmFuZ2UpOgotICAgICAgICAoTlBQ
X01hcmtlZFJhbmdlKToKLSAgICAgICAgKE5QUF9TZWxlY3RlZFJhbmdlKToKLSAgICAgICAgKE5Q
UF9GaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZSk6Ci0gICAgICAgIChwbHVnaW5UZXh0SW5wdXRG
dW5jcyk6Ci0gICAgICAgIChOUFBfR2V0VmFsdWUpOgotICAgICAgICAoTlBQX1NldFZhbHVlKToK
LSAgICAgICAgKiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL3Rlc3QuaHRtbDogQWRkZWQuCi0K
LTIwMDgtMDUtMDYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KLQotICAg
ICAgICBSZXZpZXdlZCBieSBNaXR6LgotCi0gICAgICAgIEFkZCBOUE5fUG9wVXBDb250ZXh0TWVu
dSBleGFtcGxlLgotICAgICAgICAKLSAgICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL01lbnVI
YW5kbGVyLmg6IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vTWVudUhhbmRs
ZXIubTogQWRkZWQuCi0gICAgICAgICgtW01lbnVIYW5kbGVyIF9vcGVuVVJMOl0pOgotICAgICAg
ICAoLVtNZW51SGFuZGxlciBfZGlzYWJsZWRJdGVtOl0pOgotICAgICAgICAoLVtNZW51SGFuZGxl
ciB2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOl0pOgotICAgICAgICAoLVtNZW51SGFuZGxlciBp
bml0V2l0aEJyb3dzZXJGdW5jczppbnN0YW5jZTpdKToKLSAgICAgICAgKC1bTWVudUhhbmRsZXIg
ZGVhbGxvY10pOgotICAgICAgICAoLVtNZW51SGFuZGxlciBtZW51XSk6Ci0gICAgICAgICogTmV0
c2NhcGVDb2NvYVBsdWdpbi9OZXRzY2FwZUNvY29hUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6Ci0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdpbi9tYWluLm06Ci0gICAgICAgIChO
UFBfRGVzdHJveSk6Ci0gICAgICAgIChoYW5kbGVNb3VzZUV2ZW50KToKLQotMjAwOC0wNS0wNiAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEpvbiwgVGltIGFuZCBNYXJrLgotCi0gICAgICAgIEFkZCBhIHNhbXBsZSBOUEFQSSBwbHVn
aW4gdGhhdCB1c2VzIHRoZSBDb2NvYSBldmVudCBtb2RlbC4KLQotICAgICAgICAqIC46IEFkZGVk
LgotICAgICAgICAqIENoYW5nZUxvZzogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb2NvYVBs
dWdpbjogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdpbi9FbmdsaXNoLmxwcm9q
OiBBZGRlZC4KLSAgICAgICAgKiBOZXRzY2FwZUNvY29hUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5m
b1BsaXN0LnN0cmluZ3M6IEFkZGVkLgotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vSW5m
by5wbGlzdDogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdpbi9OZXRzY2FwZUNv
Y29hUGx1Z2luLnhjb2RlcHJvajogQWRkZWQuCi0gICAgICAgICogTmV0c2NhcGVDb2NvYVBsdWdp
bi9OZXRzY2FwZUNvY29hUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgot
ICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vbWFpbi5tOiBBZGRlZC4KLSAgICAgICAgKE5Q
X0luaXRpYWxpemUpOgotICAgICAgICAoTlBfR2V0RW50cnlQb2ludHMpOgotICAgICAgICAoTlBf
U2h1dGRvd24pOgotICAgICAgICAoTlBQX05ldyk6Ci0gICAgICAgIChOUFBfRGVzdHJveSk6Ci0g
ICAgICAgIChOUFBfU2V0V2luZG93KToKLSAgICAgICAgKE5QUF9OZXdTdHJlYW0pOgotICAgICAg
ICAoTlBQX0Rlc3Ryb3lTdHJlYW0pOgotICAgICAgICAoTlBQX1dyaXRlUmVhZHkpOgotICAgICAg
ICAoTlBQX1dyaXRlKToKLSAgICAgICAgKE5QUF9TdHJlYW1Bc0ZpbGUpOgotICAgICAgICAoTlBQ
X1ByaW50KToKLSAgICAgICAgKGhhbmRsZURyYXcpOgotICAgICAgICAoZXZlbnRUeXBlKToKLSAg
ICAgICAgKGludmFsaWRhdGVQbHVnaW4pOgotICAgICAgICAoaGFuZGxlTW91c2VFdmVudCk6Ci0g
ICAgICAgIChoYW5kbGVLZXlib2FyZEV2ZW50KToKLSAgICAgICAgKE5QUF9IYW5kbGVFdmVudCk6
Ci0gICAgICAgIChOUFBfVVJMTm90aWZ5KToKLSAgICAgICAgKE5QUF9HZXRWYWx1ZSk6Ci0gICAg
ICAgIChOUFBfU2V0VmFsdWUpOgotICAgICAgICAqIE5ldHNjYXBlQ29jb2FQbHVnaW4vdGVzdC5o
dG1sOiBBZGRlZC4KSW5kZXg6IEV4YW1wbGVzL05ldHNjYXBlQ29jb2FQbHVnaW4vRW5nbGlzaC5s
cHJvai9JbmZvUGxpc3Quc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1h
cmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBFeGFtcGxlcy9OZXRzY2FwZUNvY29hUGx1Z2lu
L0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZUNvY29hUGx1
Z2luL0luZm8ucGxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0c2NhcGVDb2NvYVBsdWdp
bi9JbmZvLnBsaXN0CShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9OZXRzY2FwZUNvY29h
UGx1Z2luL0luZm8ucGxpc3QJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNiArMCwwIEBACi08P3htbCB2
ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgotPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAi
LS8vQXBwbGUvL0RURCBQTElTVCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Q
cm9wZXJ0eUxpc3QtMS4wLmR0ZCI+Ci08cGxpc3QgdmVyc2lvbj0iMS4wIj4KLTxkaWN0PgotCTxr
ZXk+Q0ZCdW5kbGVEZXZlbG9wbWVudFJlZ2lvbjwva2V5PgotCTxzdHJpbmc+RW5nbGlzaDwvc3Ry
aW5nPgotCTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+Ci0JPHN0cmluZz5OZXRzY2FwZUNv
Y29hUGx1Z2luPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUljb25GaWxlPC9rZXk+Ci0JPHN0cmlu
Zz48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxzdHJpbmc+Y29t
LmFwcGxlLm5ldHNjYXBlY29jb2FwbHVnaW48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSW5mb0Rp
Y3Rpb25hcnlWZXJzaW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmluZz4KLQk8a2V5PkNGQnVu
ZGxlUGFja2FnZVR5cGU8L2tleT4KLQk8c3RyaW5nPkJSUEw8L3N0cmluZz4KLQk8a2V5PkNGQnVu
ZGxlU2hvcnRWZXJzaW9uU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4xLjA8L3N0cmluZz4KLQk8a2V5
PkNGQnVuZGxlU2lnbmF0dXJlPC9rZXk+Ci0JPHN0cmluZz4/Pz8/PC9zdHJpbmc+Ci0JPGtleT5D
RkJ1bmRsZVZlcnNpb248L2tleT4KLQk8c3RyaW5nPjEuMDwvc3RyaW5nPgotCTxrZXk+V2ViUGx1
Z2luRGVzY3JpcHRpb248L2tleT4KLQk8c3RyaW5nPlNpbXBsZSBOZXRzY2FwZSBwbHVnLWluIHRo
YXQgZHJhd3MgdXNpbmcgQ29yZUdyYXBoaWNzIGFuZCBoYW5kbGVzIGV2ZW50cyB1c2luZyB0aGUg
Q29jb2EgZXZlbnQgbW9kZWw8L3N0cmluZz4KLQk8a2V5PldlYlBsdWdpbk1JTUVUeXBlczwva2V5
PgotCTxkaWN0PgotCQk8a2V5PnRlc3QveC1uZXRzY2FwZS1jb2NvYS1wbHVnaW48L2tleT4KLQkJ
PGRpY3Q+Ci0JCQk8a2V5PldlYlBsdWdpblR5cGVEZXNjcmlwdGlvbjwva2V5PgotCQkJPHN0cmlu
Zz5OZXRzY2FwZSBDb2NvYSBQbHVnLWluPC9zdHJpbmc+Ci0JCTwvZGljdD4KLQk8L2RpY3Q+Ci0J
PGtleT5XZWJQbHVnaW5OYW1lPC9rZXk+Ci0JPHN0cmluZz5OZXRzY2FwZSBDb2NvYSBQbHVnLWlu
PC9zdHJpbmc+Ci08L2RpY3Q+Ci08L3BsaXN0PgpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVDb2Nv
YVBsdWdpbi9NZW51SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEV4YW1wbGVzL05ldHNjYXBlQ29j
b2FQbHVnaW4vTWVudUhhbmRsZXIuaAkocmV2aXNpb24gMjQ4OTY1KQorKysgRXhhbXBsZXMvTmV0
c2NhcGVDb2NvYVBsdWdpbi9NZW51SGFuZGxlci5oCShub25leGlzdGVudCkKQEAgLTEsNDcgKzAs
MCBAQAotLyoKLSBJTVBPUlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRv
IHlvdSBieSBBcHBsZSBJbmMuICgiQXBwbGUiKSBpbgotIGNvbnNpZGVyYXRpb24gb2YgeW91ciBh
Z3JlZW1lbnQgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRp
b24sIAotIG1vZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxlIHNvZnR3
YXJlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UgCi0gdGVybXMuICBJZiB5b3UgZG8g
bm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBt
b2RpZnkgb3IgCi0gcmVkaXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCi0gCi0gSW4gY29u
c2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRl
cm1zLCBhbmQgc3ViamVjdCB0byB0aGVzZSAKLSB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBl
cnNvbmFsLCBub24tZXhjbHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5cmlnaHRz
IGluIAotIHRoaXMgb3JpZ2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUi
KSwgdG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSBhbmQgCi0gcmVkaXN0cmlidXRlIHRoZSBBcHBs
ZSBTb2Z0d2FyZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJjZSBhbmQv
b3IgYmluYXJ5IAotIGZvcm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhl
IEFwcGxlIFNvZnR3YXJlIGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dCAKLSBtb2RpZmljYXRp
b25zLCB5b3UgbXVzdCByZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBh
bmQgZGlzY2xhaW1lcnMgaW4gYWxsIAotIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBBcHBs
ZSBTb2Z0d2FyZS4gIE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3Mg
Ci0gb3IgbG9nb3Mgb2YgQXBwbGUgSW5jLiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIAotIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhw
cmVzc2x5Ci0gc3RhdGVkIGluIHRoaXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5z
ZXMsIGV4cHJlc3Mgb3IgaW1wbGllZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKLSBoZXJlaW4sIGlu
Y2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUg
aW5mcmluZ2VkIGJ5IHlvdXIgCi0gZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBp
biB3aGljaCB0aGUgQXBwbGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KLSAKLSBUaGUg
QXBwbGUgU29mdHdhcmUgaXMgcHJvdmlkZWQgYnkgQXBwbGUgb24gYW4gIkFTIElTIiBiYXNpcy4g
IEFQUExFIE1BS0VTIE5PIFdBUlJBTlRJRVMsIAotIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVE
SU5HIFdJVEhPVVQgTElNSVRBVElPTiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZS
SU5HRU1FTlQsIAotIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UsIFJFR0FSRElORyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTIAotIFVTRSBBTkQg
T1BFUkFUSU9OIEFMT05FIE9SIElOIENPTUJJTkFUSU9OIFdJVEggWU9VUiBQUk9EVUNUUy4KLSAK
LSBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIAotIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIAotIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UsIAotIFJFUFJPRFVD
VElPTiwgTU9ESUZJQ0FUSU9OIEFORC9PUiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRX
QVJFLCBIT1dFVkVSIENBVVNFRCBBTkQgCi0gV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJB
Q1QsIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUiAKLSBP
VEhFUldJU0UsIEVWRU4gSUYgQVBQTEUgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KLSNpbXBv
cnQgPFdlYktpdC9ucGZ1bmN0aW9ucy5oPgotCi1AaW50ZXJmYWNlIE1lbnVIYW5kbGVyIDogTlNP
YmplY3QgewotICAgIE5TTWVudSAqbWVudTsKLSAgICBOUE5ldHNjYXBlRnVuY3MgKmJyb3dzZXJG
dW5jczsKLSAgICBOUFAgaW5zdGFuY2U7Ci19Ci0KLS0gKGlkKWluaXRXaXRoQnJvd3NlckZ1bmNz
OihOUE5ldHNjYXBlRnVuY3MgKil0aGVCcm93c2VyRnVuY3MgaW5zdGFuY2U6KE5QUCl0aGVJbnN0
YW5jZTsKLQotLSAoTlNNZW51ICopbWVudTsKLQotQGVuZApJbmRleDogRXhhbXBsZXMvTmV0c2Nh
cGVDb2NvYVBsdWdpbi9NZW51SGFuZGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEV4YW1wbGVzL05ldHNj
YXBlQ29jb2FQbHVnaW4vTWVudUhhbmRsZXIubQkocmV2aXNpb24gMjQ4OTY1KQorKysgRXhhbXBs
ZXMvTmV0c2NhcGVDb2NvYVBsdWdpbi9NZW51SGFuZGxlci5tCShub25leGlzdGVudCkKQEAgLTEs
OTkgKzAsMCBAQAotLyoKLSBJTVBPUlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBs
aWVkIHRvIHlvdSBieSBBcHBsZSBJbmMuICgiQXBwbGUiKSBpbgotIGNvbnNpZGVyYXRpb24gb2Yg
eW91ciBhZ3JlZW1lbnQgdG8gdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0
YWxsYXRpb24sIAotIG1vZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlzIEFwcGxl
IHNvZnR3YXJlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UgCi0gdGVybXMuICBJZiB5
b3UgZG8gbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMsIHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0
YWxsLCBtb2RpZnkgb3IgCi0gcmVkaXN0cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCi0gCi0g
SW4gY29uc2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9sbG93
aW5nIHRlcm1zLCBhbmQgc3ViamVjdCB0byB0aGVzZSAKLSB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlv
dSBhIHBlcnNvbmFsLCBub24tZXhjbHVzaXZlIGxpY2Vuc2UsIHVuZGVyIEFwcGxl4oCZcyBjb3B5
cmlnaHRzIGluIAotIHRoaXMgb3JpZ2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29m
dHdhcmUiKSwgdG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSBhbmQgCi0gcmVkaXN0cmlidXRlIHRo
ZSBBcHBsZSBTb2Z0d2FyZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJj
ZSBhbmQvb3IgYmluYXJ5IAotIGZvcm1zOyBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1
dGUgdGhlIEFwcGxlIFNvZnR3YXJlIGluIGl0cyBlbnRpcmV0eSBhbmQgd2l0aG91dCAKLSBtb2Rp
ZmljYXRpb25zLCB5b3UgbXVzdCByZXRhaW4gdGhpcyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcg
dGV4dCBhbmQgZGlzY2xhaW1lcnMgaW4gYWxsIAotIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRo
ZSBBcHBsZSBTb2Z0d2FyZS4gIE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2Ug
bWFya3MgCi0gb3IgbG9nb3Mgb2YgQXBwbGUgSW5jLiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIAotIHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQg
YXMgZXhwcmVzc2x5Ci0gc3RhdGVkIGluIHRoaXMgbm90aWNlLCBubyBvdGhlciByaWdodHMgb3Ig
bGljZW5zZXMsIGV4cHJlc3Mgb3IgaW1wbGllZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUKLSBoZXJl
aW4sIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYW55IHBhdGVudCByaWdodHMgdGhhdCBt
YXkgYmUgaW5mcmluZ2VkIGJ5IHlvdXIgCi0gZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3
b3JrcyBpbiB3aGljaCB0aGUgQXBwbGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KLSAK
LSBUaGUgQXBwbGUgU29mdHdhcmUgaXMgcHJvdmlkZWQgYnkgQXBwbGUgb24gYW4gIkFTIElTIiBi
YXNpcy4gIEFQUExFIE1BS0VTIE5PIFdBUlJBTlRJRVMsIAotIEVYUFJFU1MgT1IgSU1QTElFRCwg
SU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5P
Ti1JTkZSSU5HRU1FTlQsIAotIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UsIFJFR0FSRElORyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTIAotIFVT
RSBBTkQgT1BFUkFUSU9OIEFMT05FIE9SIElOIENPTUJJTkFUSU9OIFdJVEggWU9VUiBQUk9EVUNU
Uy4KLSAKLSBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFM
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIAotIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIAotIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UsIAotIFJF
UFJPRFVDVElPTiwgTU9ESUZJQ0FUSU9OIEFORC9PUiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExF
IFNPRlRXQVJFLCBIT1dFVkVSIENBVVNFRCBBTkQgCi0gV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0Yg
Q09OVFJBQ1QsIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBP
UiAKLSBPVEhFUldJU0UsIEVWRU4gSUYgQVBQTEUgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiTWVudUhhbmRsZXIuaCIK
LQotQGltcGxlbWVudGF0aW9uIE1lbnVIYW5kbGVyCi0KLS0gKHZvaWQpX29wZW5VUkw6KGlkKXNl
bmRlcgotewotICAgIGJyb3dzZXJGdW5jcy0+Z2V0dXJsKGluc3RhbmNlLCAiaHR0cDovL3d3dy5h
cHBsZS5jb20vIiwgIl9ibGFuayIpOwotfQotCi0tICh2b2lkKV9kaXNhYmxlZEl0ZW06KGlkKXNl
bmRlcgotewotICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZAotfQotCi0tIChCT09M
KXZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW06KGlkIDxOU1ZhbGlkYXRlZFVzZXJJbnRlcmZhY2VJ
dGVtPilhbkl0ZW0KLXsKLSAgICBTRUwgc2VsID0gW2FuSXRlbSBhY3Rpb25dOwotICAgIAotICAg
IGlmIChzZWwgPT0gQHNlbGVjdG9yKF9vcGVuVVJMOikpCi0gICAgICAgIHJldHVybiBZRVM7Ci0g
ICAgCi0gICAgaWYgKHNlbCA9PSBAc2VsZWN0b3IoX2Rpc2FibGVkSXRlbTopKQotICAgICAgICBy
ZXR1cm4gTk87Ci0gICAgCi0gICAgcmV0dXJuIE5POwotfQotCi0tIChpZClpbml0V2l0aEJyb3dz
ZXJGdW5jczooTlBOZXRzY2FwZUZ1bmNzICopdGhlQnJvd3NlckZ1bmNzIGluc3RhbmNlOihOUFAp
dGhlSW5zdGFuY2U7Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYp
Ci0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBicm93c2VyRnVuY3MgPSB0aGVCcm93c2VyRnVu
Y3M7Ci0gICAgaW5zdGFuY2UgPSB0aGVJbnN0YW5jZTsKLSAgICAKLSAgICAvLyBDcmVhdGUgdGhl
IG1lbnUKLSAgICBtZW51ID0gW1tOU01lbnUgYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJNZW51Il07
Ci0gICAgCi0gICAgTlNNZW51SXRlbSAqaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdp
dGhUaXRsZTpAIk9wZW4gVVJMIiBhY3Rpb246QHNlbGVjdG9yKF9vcGVuVVJMOikga2V5RXF1aXZh
bGVudDpAIiJdOwotICAgIFtpdGVtIHNldFRhcmdldDpzZWxmXTsgICAKLSAgICBbbWVudSBhZGRJ
dGVtOml0ZW1dOyAgICAKLSAgICBbaXRlbSByZWxlYXNlXTsKLSAgICAKLSAgICBpdGVtID0gW1tO
U01lbnVJdGVtIGFsbG9jXSBpbml0V2l0aFRpdGxlOkAiRGlzYWJsZWQgSXRlbSIgYWN0aW9uOkBz
ZWxlY3RvcihfZGlzYWJsZWRJdGVtOikga2V5RXF1aXZhbGVudDpAIiJdOwotICAgIFtpdGVtIHNl
dFRhcmdldDpzZWxmXTsgICAKLSAgICBbbWVudSBhZGRJdGVtOml0ZW1dOyAgICAKLSAgICBbaXRl
bSByZWxlYXNlXTsKLSAgICAKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9j
Ci17Ci0gICAgW21lbnUgcmVsZWFzZV07Ci0gICAgCi0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQot
Ci0KLS0gKE5TTWVudSAqKW1lbnUKLXsKLSAgICByZXR1cm4gbWVudTsKLX0KLQotQGVuZApJbmRl
eDogRXhhbXBsZXMvTmV0c2NhcGVDb2NvYVBsdWdpbi9OZXRzY2FwZUNvY29hUGx1Z2luLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0c2NhcGVDb2Nv
YVBsdWdpbi9OZXRzY2FwZUNvY29hUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDI0ODk2NSkKKysrIEV4YW1wbGVzL05ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVD
b2NvYVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShub25leGlzdGVudCkKQEAgLTEs
MjQ3ICswLDAgQEAKLS8vICEkKlVURjgqJCEKLXsKLQlhcmNoaXZlVmVyc2lvbiA9IDE7Ci0JY2xh
c3NlcyA9IHsKLQl9OwotCW9iamVjdFZlcnNpb24gPSA0MjsKLQlvYmplY3RzID0gewotCi0vKiBC
ZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTYyNEU1OTBEQ0JDN0Y2MDA2ODk4Qzgg
LyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAqLzsgfTsKLQkJMUE2MjUwNDIwRENC
QzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjI1MDQxMERDQkM4MUIwMDY4OThDOCAvKiBDb2Nv
YS5mcmFtZXdvcmsgKi87IH07Ci0JCTFBQUQ2QTA5MEREMERDNTIwMDM5ODVEQSAvKiBNZW51SGFu
ZGxlci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFB
RDZBMDgwREQwREM1MjAwMzk4NURBIC8qIE1lbnVIYW5kbGVyLm0gKi87IH07Ci0JCThENUI0OUE4
MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEQ1QjQ5QTcwNDg2N0ZEMzAwMEU0OERBIC8q
IEluZm9QbGlzdC5zdHJpbmdzICovOyB9OwotLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
Ci0KLS8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkwODlDMTY3RUZFODQx
MjQxQzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAxMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7IG5h
bWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1h
aW4ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2Eu
ZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAvU3lz
dGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFi
c29sdXRlPiI7IH07Ci0JCTFBQUQ2QTA3MEREMERDNTIwMDM5ODVEQSAvKiBNZW51SGFuZGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW51SGFuZGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQUFENkEwODBERDBEQzUyMDAzOTg1REEgLyogTWVudUhh
bmRsZXIubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gTWVudUhhbmRsZXIu
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOEQ1NzYzMTYwNDg2NzdFQTAwRUE3N0NE
IC8qIE5ldHNjYXBlQ29jb2FQbHVnaW4ucGx1Z2luICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmNmYnVuZGxlOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSBOZXRzY2FwZUNvY29hUGx1Z2luLnBsdWdpbjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKLQkJOEQ1NzYzMTcwNDg2NzdFQTAwRUE3N0NEIC8qIEluZm8ucGxp
c3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0OyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLS8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQotLyog
QmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQk4RDU3NjMxMzA0ODY3
N0VBMDBFQTc3Q0QgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0g
KAotCQkJCTFBNjI1MDQyMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFtZXdvcmsgaW4gRnJh
bWV3b3JrcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0K
LS8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KLQkJMDg5QzE2NkFGRTg0MTIwOUMwMkFBQzA3
IC8qIE5ldHNjYXBlQ29jb2FQbHVnaW4gKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNo
aWxkcmVuID0gKAotCQkJCTA4RkI3N0FGRkU4NDE3M0RDMDJBQUMwNyAvKiBTb3VyY2UgKi8sCi0J
CQkJMDg5QzE2N0NGRTg0MTI0MUMwMkFBQzA3IC8qIFJlc291cmNlcyAqLywKLQkJCQkwODlDMTY3
MUZFODQxMjA5QzAyQUFDMDcgLyogRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICov
LAotCQkJCTE5QzI4RkI2RkU5RDUyQjIxMUNBMkNCQiAvKiBQcm9kdWN0cyAqLywKLQkJCSk7Ci0J
CQluYW1lID0gTmV0c2NhcGVDb2NvYVBsdWdpbjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
Ci0JCX07Ci0JCTA4OUMxNjcxRkU4NDEyMDlDMDJBQUMwNyAvKiBFeHRlcm5hbCBGcmFtZXdvcmtz
IGFuZCBMaWJyYXJpZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0g
KAotCQkJCTFBNjI1MDQxMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCi0J
CQkpOwotCQkJbmFtZSA9ICJFeHRlcm5hbCBGcmFtZXdvcmtzIGFuZCBMaWJyYXJpZXMiOwotCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDg5QzE2N0NGRTg0MTI0MUMwMkFBQzA3
IC8qIFJlc291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAo
Ci0JCQkJOEQ1NzYzMTcwNDg2NzdFQTAwRUE3N0NEIC8qIEluZm8ucGxpc3QgKi8sCi0JCQkJOEQ1
QjQ5QTcwNDg2N0ZEMzAwMEU0OERBIC8qIEluZm9QbGlzdC5zdHJpbmdzICovLAotCQkJKTsKLQkJ
CW5hbWUgPSBSZXNvdXJjZXM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkw
OEZCNzdBRkZFODQxNzNEQzAyQUFDMDcgLyogU291cmNlICovID0gewotCQkJaXNhID0gUEJYR3Jv
dXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkxQTYyNEU1ODBEQ0JDN0Y2MDA2ODk4QzggLyogbWFp
bi5tICovLAotCQkJCTFBQUQ2QTA3MEREMERDNTIwMDM5ODVEQSAvKiBNZW51SGFuZGxlci5oICov
LAotCQkJCTFBQUQ2QTA4MEREMERDNTIwMDM5ODVEQSAvKiBNZW51SGFuZGxlci5tICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBTb3VyY2U7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owot
CQkxOUMyOEZCNkZFOUQ1MkIyMTFDQTJDQkIgLyogUHJvZHVjdHMgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCThENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAv
KiBOZXRzY2FwZUNvY29hUGx1Z2luLnBsdWdpbiAqLywKLQkJCSk7Ci0JCQluYW1lID0gUHJvZHVj
dHM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotLyogRW5kIFBCWEdyb3VwIHNl
Y3Rpb24gKi8KLQotLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KLQkJOEQ1NzYz
MEQwNDg2NzdFQTAwRUE3N0NEIC8qIE5ldHNjYXBlQ29jb2FQbHVnaW4gKi8gPSB7Ci0JCQlpc2Eg
PSBQQlhOYXRpdmVUYXJnZXQ7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5ODMw
ODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJOZXRzY2FwZUNvY29hUGx1Z2luIiAqLzsKLQkJCWJ1aWxkUGhhc2VzID0gKAotCQkJ
CThENTc2MzExMDQ4Njc3RUEwMEVBNzdDRCAvKiBTb3VyY2VzICovLAotCQkJCThENTc2MzBGMDQ4
Njc3RUEwMEVBNzdDRCAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJOEQ1NzYzMTMwNDg2NzdFQTAwRUE3
N0NEIC8qIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJYnVpbGRSdWxlcyA9ICgKLQkJCSk7Ci0J
CQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJbmFtZSA9IE5ldHNjYXBlQ29jb2FQbHVnaW47
Ci0JCQlwcm9kdWN0SW5zdGFsbFBhdGggPSAiJChIT01FKS9MaWJyYXJ5L0J1bmRsZXMiOwotCQkJ
cHJvZHVjdE5hbWUgPSBOZXRzY2FwZUNvY29hUGx1Z2luOwotCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDhENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZUNvY29hUGx1Z2luLnBsdWdpbiAq
LzsKLQkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsKLQkJ
fTsKLS8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhQcm9q
ZWN0IHNlY3Rpb24gKi8KLQkJMDg5QzE2NjlGRTg0MTIwOUMwMkFBQzA3IC8qIFByb2plY3Qgb2Jq
ZWN0ICovID0gewotCQkJaXNhID0gUEJYUHJvamVjdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSAxNDlDMjk4NzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhQcm9qZWN0ICJOZXRzY2FwZUNvY29hUGx1Z2luIiAqLzsKLQkJCWNvbXBhdGliaWxp
dHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7Ci0JCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7
Ci0JCQloYXNTY2FubmVkRm9yRW5jb2RpbmdzID0gMTsKLQkJCWtub3duUmVnaW9ucyA9ICgKLQkJ
CQlFbmdsaXNoLAotCQkJCUphcGFuZXNlLAotCQkJCUZyZW5jaCwKLQkJCQlHZXJtYW4sCi0JCQkp
OwotCQkJbWFpbkdyb3VwID0gMDg5QzE2NkFGRTg0MTIwOUMwMkFBQzA3IC8qIE5ldHNjYXBlQ29j
b2FQbHVnaW4gKi87Ci0JCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAi
IjsKLQkJCXRhcmdldHMgPSAoCi0JCQkJOEQ1NzYzMEQwNDg2NzdFQTAwRUE3N0NEIC8qIE5ldHNj
YXBlQ29jb2FQbHVnaW4gKi8sCi0JCQkpOwotCQl9OwotLyogRW5kIFBCWFByb2plY3Qgc2VjdGlv
biAqLwotCi0vKiBCZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJOEQ1
NzYzMEYwNDg2NzdFQTAwRUE3N0NEIC8qIFJlc291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFJl
c291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJ
ZmlsZXMgPSAoCi0JCQkJOEQ1QjQ5QTgwNDg2N0ZEMzAwMEU0OERBIC8qIEluZm9QbGlzdC5zdHJp
bmdzIGluIFJlc291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQk4RDU3
NjMxMTA0ODY3N0VBMDBFQTc3Q0QgLyogU291cmNlcyAqLyA9IHsKLQkJCWlzYSA9IFBCWFNvdXJj
ZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVz
ID0gKAotCQkJCTFBNjI0RTU5MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0gaW4gU291cmNlcyAq
LywKLQkJCQkxQUFENkEwOTBERDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIubSBpbiBTb3Vy
Y2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwotCQl9OwotLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVn
aW4gUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KLQkJOEQ1QjQ5QTcwNDg2N0ZEMzAwMEU0OERB
IC8qIEluZm9QbGlzdC5zdHJpbmdzICovID0gewotCQkJaXNhID0gUEJYVmFyaWFudEdyb3VwOwot
CQkJY2hpbGRyZW4gPSAoCi0JCQkJMDg5QzE2N0VGRTg0MTI0MUMwMkFBQzA3IC8qIEVuZ2xpc2gg
Ki8sCi0JCQkpOwotCQkJbmFtZSA9IEluZm9QbGlzdC5zdHJpbmdzOwotCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKLQkJfTsKLS8qIEVuZCBQQlhWYXJpYW50R3JvdXAgc2VjdGlvbiAqLwotCi0v
KiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCi0JCTE0OUMyOTg0MDg5MDJD
NTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87Ci0JCQkJ
R0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZnVsbDsKLQkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBO
TzsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBZRVM7Ci0JCQkJR0NDX01PREVM
X1RVTklORyA9IEc1OwotCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwotCQkJCUlORk9Q
TElTVF9GSUxFID0gSW5mby5wbGlzdDsKLQkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9MaWJy
YXJ5L0J1bmRsZXMiOwotCQkJCVBST0RVQ1RfTkFNRSA9IE5ldHNjYXBlQ29jb2FQbHVnaW47Ci0J
CQkJV1JBUFBFUl9FWFRFTlNJT04gPSBwbHVnaW47Ci0JCQkJWkVST19MSU5LID0gWUVTOwotCQkJ
fTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJMTQ5QzI5ODUwODkwMkM1MzAwOEE5RUZDIC8q
IFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxk
U2V0dGluZ3MgPSB7Ci0JCQkJQVJDSFMgPSAoCi0JCQkJCXBwYywKLQkJCQkJaTM4NiwKLQkJCQkp
OwotCQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1bGw7Ci0JCQkJR0NDX0dFTkVSQVRFX0RF
QlVHR0lOR19TWU1CT0xTID0gTk87Ci0JCQkJR0NDX01PREVMX1RVTklORyA9IEc1OwotCQkJCUdD
Q19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwotCQkJCUlORk9QTElTVF9GSUxFID0gSW5mby5wbGlz
dDsKLQkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9MaWJyYXJ5L0J1bmRsZXMiOwotCQkJCVBS
T0RVQ1RfTkFNRSA9IE5ldHNjYXBlQ29jb2FQbHVnaW47Ci0JCQkJV1JBUFBFUl9FWFRFTlNJT04g
PSBwbHVnaW47Ci0JCQl9OwotCQkJbmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTE0OUMyOTg4MDg5
MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVF9QUkVfWENPREVfM18xKSI7Ci0JCQkJQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUX1BS
RV9YQ09ERV8zXzEgPSAicHBjIGkzODYgcHBjNjQgeDg2XzY0IjsKLQkJCQlBUkNIU19TVEFOREFS
RF82NF9CSVRfUFJFX1hDT0RFXzNfMSA9IHg4Nl82NDsKLQkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRV
Uk5fVFlQRSA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0JCQkJ
UFJFQklORElORyA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJMTQ5QzI5
ODkwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQVJDSFMgPSAiJChBUkNIU19T
VEFOREFSRF82NF9CSVRfUFJFX1hDT0RFXzNfMSkiOwotCQkJCUFSQ0hTX1NUQU5EQVJEXzMyXzY0
X0JJVF9QUkVfWENPREVfM18xID0gInBwYyBpMzg2IHBwYzY0IHg4Nl82NCI7Ci0JCQkJQVJDSFNf
U1RBTkRBUkRfNjRfQklUX1BSRV9YQ09ERV8zXzEgPSB4ODZfNjQ7Ci0JCQkJR0NDX1dBUk5fQUJP
VVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVT
OwotCQkJCVBSRUJJTkRJTkcgPSBOTzsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsK
LS8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQ29u
ZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCQkxNDlDMjk4MzA4OTAyQzUzMDA4QTlFRkMgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIk5ldHNjYXBlQ29j
b2FQbHVnaW4iICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCi0JCQkJMTQ5QzI5ODQwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVn
ICovLAotCQkJCTE0OUMyOTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovLAotCQkJKTsK
LQkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0JCTE0OUMyOTg3MDg5MDJDNTMwMDhBOUVGQyAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIk5ldHNjYXBlQ29jb2FQ
bHVnaW4iICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCi0JCQkJMTQ5QzI5ODgwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICov
LAotCQkJCTE0OUMyOTg5MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0
aW9uTmFtZSA9IFJlbGVhc2U7Ci0JCX07Ci0vKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0
aW9uICovCi0JfTsKLQlyb290T2JqZWN0ID0gMDg5QzE2NjlGRTg0MTIwOUMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOwotfQpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVDb2NvYVBsdWdpbi9O
ZXRzY2FwZUNvY29hUGx1Z2luLnhjb2RlcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBFeGFtcGxlcy9OZXRz
Y2FwZUNvY29hUGx1Z2luL05ldHNjYXBlQ29jb2FQbHVnaW4ueGNvZGVwcm9qCShyZXZpc2lvbiAy
NDg5NjUpCisrKyBFeGFtcGxlcy9OZXRzY2FwZUNvY29hUGx1Z2luL05ldHNjYXBlQ29jb2FQbHVn
aW4ueGNvZGVwcm9qCShub25leGlzdGVudCkKClByb3BlcnR5IGNoYW5nZXMgb246IEV4YW1wbGVz
L05ldHNjYXBlQ29jb2FQbHVnaW4vTmV0c2NhcGVDb2NvYVBsdWdpbi54Y29kZXByb2oKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46aWdub3JlCiMjIC0xLDUgKzAsMCAjIwotKi5tb2RlKgotKi5wYnh1
c2VyCi0qLnBlcnNwZWN0aXZlKgotcHJvamVjdC54Y3dvcmtzcGFjZQoteGN1c2VyZGF0YQpJbmRl
eDogRXhhbXBsZXMvTmV0c2NhcGVDb2NvYVBsdWdpbi9tYWluLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhh
bXBsZXMvTmV0c2NhcGVDb2NvYVBsdWdpbi9tYWluLm0JKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4
YW1wbGVzL05ldHNjYXBlQ29jb2FQbHVnaW4vbWFpbi5tCShub25leGlzdGVudCkKQEAgLTEsMzY4
ICswLDAgQEAKLS8qCi0gSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBzb2Z0d2FyZSBpcyBzdXBwbGll
ZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikgaW4KLSBjb25zaWRlcmF0aW9uIG9mIHlv
dXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFs
bGF0aW9uLCAKLSBtb2RpZmljYXRpb24gb3IgcmVkaXN0cmlidXRpb24gb2YgdGhpcyBBcHBsZSBz
b2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHRoZXNlIAotIHRlcm1zLiAgSWYgeW91
IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zLCBwbGVhc2UgZG8gbm90IHVzZSwgaW5zdGFs
bCwgbW9kaWZ5IG9yIAotIHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgotIAotIElu
IGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxvd2lu
ZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhlc2UgCi0gdGVybXMsIEFwcGxlIGdyYW50cyB5b3Ug
YSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlLCB1bmRlciBBcHBsZeKAmXMgY29weXJp
Z2h0cyBpbiAKLSB0aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3YXJlICh0aGUgIkFwcGxlIFNvZnR3
YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5kIAotIHJlZGlzdHJpYnV0ZSB0aGUg
QXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBpbiBzb3VyY2Ug
YW5kL29yIGJpbmFyeSAKLSBmb3JtczsgcHJvdmlkZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmlidXRl
IHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50aXJldHkgYW5kIHdpdGhvdXQgCi0gbW9kaWZp
Y2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRl
eHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAKLSBzdWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUg
QXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRoZSBuYW1lLCB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1h
cmtzIAotIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4gbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAKLSB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFz
IGV4cHJlc3NseQotIHN0YXRlZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxp
Y2Vuc2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFwcGxlCi0gaGVyZWlu
LCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5
IGJlIGluZnJpbmdlZCBieSB5b3VyIAotIGRlcml2YXRpdmUgd29ya3Mgb3IgYnkgb3RoZXIgd29y
a3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBiZSBpbmNvcnBvcmF0ZWQuCi0gCi0g
VGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFz
aXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVTLCAKLSBFWFBSRVNTIE9SIElNUExJRUQsIElO
Q0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04t
SU5GUklOR0VNRU5ULCAKLSBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNPRlRXQVJFIE9SIElUUyAKLSBVU0Ug
QU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMu
Ci0gCi0gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCAKLSBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyAKLSBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFLCAKLSBSRVBS
T0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBT
T0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5EIAotIFdIRVRIRVIgVU5ERVIgVEhFT1JZIE9GIENP
TlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSksIFNUUklDVCBMSUFCSUxJVFkgT1Ig
Ci0gT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFdlYktpdC9ucGFwaS5oPgot
I2ltcG9ydCA8V2ViS2l0L25wZnVuY3Rpb25zLmg+Ci0jaW1wb3J0IDxXZWJLaXQvbnBydW50aW1l
Lmg+Ci0KLSNpbXBvcnQgPENvY29hL0NvY29hLmg+Ci0KLSNpbXBvcnQgIk1lbnVIYW5kbGVyLmgi
Ci0KLS8vIEJyb3dzZXIgZnVuY3Rpb24gdGFibGUKLXN0YXRpYyBOUE5ldHNjYXBlRnVuY3MqIGJy
b3dzZXI7Ci0KLS8vIFN0cnVjdHVyZSBmb3IgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLXR5cGVkZWYg
c3RydWN0IFBsdWdpbk9iamVjdAotewotICAgIE5QUCBucHA7Ci0gICAgCi0gICAgTlBXaW5kb3cg
d2luZG93OwotICAgIAotICAgIE5TU3RyaW5nICpzdHJpbmc7Ci0gICAgYm9vbCBoYXNGb2N1czsK
LSAgICBib29sIG1vdXNlSXNJbnNpZGVQbHVnaW47Ci0gICAgCi0gICAgTWVudUhhbmRsZXIgKm1l
bnVIYW5kbGVyOwotfSBQbHVnaW5PYmplY3Q7Ci0KLU5QRXJyb3IgTlBQX05ldyhOUE1JTUVUeXBl
IHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBj
aGFyKiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsKLU5QRXJyb3Ig
TlBQX0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpOwotTlBFcnJvciBO
UFBfU2V0V2luZG93KE5QUCBpbnN0YW5jZSwgTlBXaW5kb3cqIHdpbmRvdyk7Ci1OUEVycm9yIE5Q
UF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsIE5QU3RyZWFtKiBzdHJl
YW0sIE5QQm9vbCBzZWVrYWJsZSwgdWludDE2X3QqIHN0eXBlKTsKLU5QRXJyb3IgTlBQX0Rlc3Ry
b3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFzb24p
OwotaW50MzJfdCBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0p
OwotaW50MzJfdCBOUFBfV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQz
Ml90IG9mZnNldCwgaW50MzJfdCBsZW4sIHZvaWQqIGJ1ZmZlcik7Ci12b2lkIE5QUF9TdHJlYW1B
c0ZpbGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBmbmFtZSk7
Ci12b2lkIE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOwot
aW50MTZfdCBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBldmVudCk7Ci12b2lk
IE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiBVUkwsIE5QUmVhc29uIHJl
YXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7Ci1OUEVycm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFu
Y2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yIE5QUF9TZXRW
YWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci0K
LSNwcmFnbWEgZXhwb3J0IG9uCi0vLyBNYWNoLW8gZW50cnkgcG9pbnRzCi1OUEVycm9yIE5QX0lu
aXRpYWxpemUoTlBOZXRzY2FwZUZ1bmNzICpicm93c2VyRnVuY3MpOwotTlBFcnJvciBOUF9HZXRF
bnRyeVBvaW50cyhOUFBsdWdpbkZ1bmNzICpwbHVnaW5GdW5jcyk7Ci12b2lkIE5QX1NodXRkb3du
KHZvaWQpOwotI3ByYWdtYSBleHBvcnQgb2ZmCi0KLU5QRXJyb3IgTlBfSW5pdGlhbGl6ZShOUE5l
dHNjYXBlRnVuY3MqIGJyb3dzZXJGdW5jcykKLXsKLSAgICBicm93c2VyID0gYnJvd3NlckZ1bmNz
OwotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBFcnJvciBOUF9HZXRFbnRyeVBv
aW50cyhOUFBsdWdpbkZ1bmNzKiBwbHVnaW5GdW5jcykKLXsKLSAgICBwbHVnaW5GdW5jcy0+dmVy
c2lvbiA9IDExOwotICAgIHBsdWdpbkZ1bmNzLT5zaXplID0gc2l6ZW9mKHBsdWdpbkZ1bmNzKTsK
LSAgICBwbHVnaW5GdW5jcy0+bmV3cCA9IE5QUF9OZXc7Ci0gICAgcGx1Z2luRnVuY3MtPmRlc3Ry
b3kgPSBOUFBfRGVzdHJveTsKLSAgICBwbHVnaW5GdW5jcy0+c2V0d2luZG93ID0gTlBQX1NldFdp
bmRvdzsKLSAgICBwbHVnaW5GdW5jcy0+bmV3c3RyZWFtID0gTlBQX05ld1N0cmVhbTsKLSAgICBw
bHVnaW5GdW5jcy0+ZGVzdHJveXN0cmVhbSA9IE5QUF9EZXN0cm95U3RyZWFtOwotICAgIHBsdWdp
bkZ1bmNzLT5hc2ZpbGUgPSBOUFBfU3RyZWFtQXNGaWxlOwotICAgIHBsdWdpbkZ1bmNzLT53cml0
ZXJlYWR5ID0gTlBQX1dyaXRlUmVhZHk7Ci0gICAgcGx1Z2luRnVuY3MtPndyaXRlID0gKE5QUF9X
cml0ZVByb2NQdHIpTlBQX1dyaXRlOwotICAgIHBsdWdpbkZ1bmNzLT5wcmludCA9IE5QUF9Qcmlu
dDsKLSAgICBwbHVnaW5GdW5jcy0+ZXZlbnQgPSBOUFBfSGFuZGxlRXZlbnQ7Ci0gICAgcGx1Z2lu
RnVuY3MtPnVybG5vdGlmeSA9IE5QUF9VUkxOb3RpZnk7Ci0gICAgcGx1Z2luRnVuY3MtPmdldHZh
bHVlID0gTlBQX0dldFZhbHVlOwotICAgIHBsdWdpbkZ1bmNzLT5zZXR2YWx1ZSA9IE5QUF9TZXRW
YWx1ZTsKLSAgICAKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLXZvaWQgTlBfU2h1
dGRvd24odm9pZCkKLXsKLQotfQotCi1OUEVycm9yIE5QUF9OZXcoTlBNSU1FVHlwZSBwbHVnaW5U
eXBlLCBOUFAgaW5zdGFuY2UsIHVpbnQxNl90IG1vZGUsIGludDE2X3QgYXJnYywgY2hhciogYXJn
bltdLCBjaGFyKiBhcmd2W10sIE5QU2F2ZWREYXRhKiBzYXZlZCkKLXsKLSAgICAvLyBDcmVhdGUg
cGVyLWluc3RhbmNlIHN0b3JhZ2UKLSAgICBQbHVnaW5PYmplY3QgKm9iaiA9IChQbHVnaW5PYmpl
Y3QgKiltYWxsb2Moc2l6ZW9mKFBsdWdpbk9iamVjdCkpOwotICAgIGJ6ZXJvKG9iaiwgc2l6ZW9m
KFBsdWdpbk9iamVjdCkpOwotICAgIAotICAgIG9iai0+bnBwID0gaW5zdGFuY2U7Ci0gICAgaW5z
dGFuY2UtPnBkYXRhID0gb2JqOwotICAgIAotICAgIC8vIEFzayB0aGUgYnJvd3NlciBpZiBpdCBz
dXBwb3J0cyB0aGUgQ29yZUdyYXBoaWNzIGRyYXdpbmcgbW9kZWwKLSAgICBOUEJvb2wgc3VwcG9y
dHNDb3JlR3JhcGhpY3M7Ci0gICAgaWYgKGJyb3dzZXItPmdldHZhbHVlKGluc3RhbmNlLCBOUE5W
c3VwcG9ydHNDb3JlR3JhcGhpY3NCb29sLCAmc3VwcG9ydHNDb3JlR3JhcGhpY3MpICE9IE5QRVJS
X05PX0VSUk9SKQotICAgICAgICBzdXBwb3J0c0NvcmVHcmFwaGljcyA9IEZBTFNFOwotICAgIAot
ICAgIGlmICghc3VwcG9ydHNDb3JlR3JhcGhpY3MpCi0gICAgICAgIHJldHVybiBOUEVSUl9JTkNP
TVBBVElCTEVfVkVSU0lPTl9FUlJPUjsKLSAgICAKLSAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBw
b3J0cyB0aGUgQ29yZUdyYXBoaWNzIGRyYXdpbmcgbW9kZWwsIGVuYWJsZSBpdC4KLSAgICBicm93
c2VyLT5zZXR2YWx1ZShpbnN0YW5jZSwgTlBQVnBsdWdpbkRyYXdpbmdNb2RlbCwgKHZvaWQgKilO
UERyYXdpbmdNb2RlbENvcmVHcmFwaGljcyk7Ci0KLSAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBw
b3J0cyB0aGUgQ29jb2EgZXZlbnQgbW9kZWwsIGVuYWJsZSBpdC4KLSAgICBOUEJvb2wgc3VwcG9y
dHNDb2NvYTsKLSAgICBpZiAoYnJvd3Nlci0+Z2V0dmFsdWUoaW5zdGFuY2UsIE5QTlZzdXBwb3J0
c0NvY29hQm9vbCwgJnN1cHBvcnRzQ29jb2EpICE9IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBz
dXBwb3J0c0NvY29hID0gRkFMU0U7Ci0gICAgCi0gICAgaWYgKCFzdXBwb3J0c0NvY29hKQotICAg
ICAgICByZXR1cm4gTlBFUlJfSU5DT01QQVRJQkxFX1ZFUlNJT05fRVJST1I7Ci0gICAgCi0gICAg
YnJvd3Nlci0+c2V0dmFsdWUoaW5zdGFuY2UsIE5QUFZwbHVnaW5FdmVudE1vZGVsLCAodm9pZCAq
KU5QRXZlbnRNb2RlbENvY29hKTsKLSAgICAKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19
Ci0KLU5QRXJyb3IgTlBQX0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUp
Ci17Ci0gICAgLy8gRnJlZSBwZXItaW5zdGFuY2Ugc3RvcmFnZQotICAgIFBsdWdpbk9iamVjdCAq
b2JqID0gaW5zdGFuY2UtPnBkYXRhOwotICAgIAotICAgIFtvYmotPnN0cmluZyByZWxlYXNlXTsK
LSAgICBbb2JqLT5tZW51SGFuZGxlciByZWxlYXNlXTsKLSAgICAKLSAgICBmcmVlKG9iaik7Ci0g
ICAgCi0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9TZXRXaW5k
b3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KQotewotICAgIFBsdWdpbk9iamVjdCAq
b2JqID0gaW5zdGFuY2UtPnBkYXRhOwotICAgIG9iai0+d2luZG93ID0gKndpbmRvdzsKLQotICAg
IHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLSAKLQotTlBFcnJvciBOUFBfTmV3U3RyZWFtKE5Q
UCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0eXBlLCBOUFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vl
a2FibGUsIHVpbnQxNl90KiBzdHlwZSkKLXsKLSAgICAqc3R5cGUgPSBOUF9BU0ZJTEVPTkxZOwot
ICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBFcnJvciBOUFBfRGVzdHJveVN0cmVh
bShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIE5QUmVhc29uIHJlYXNvbikKLXsKLSAg
ICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLWludDMyX3QgTlBQX1dyaXRlUmVhZHkoTlBQ
IGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtKQotewotICAgIHJldHVybiAwOwotfQotCi1pbnQz
Ml90IE5QUF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyX3Qgb2Zm
c2V0LCBpbnQzMl90IGxlbiwgdm9pZCogYnVmZmVyKQotewotICAgIHJldHVybiAwOwotfQotCi12
b2lkIE5QUF9TdHJlYW1Bc0ZpbGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBjb25z
dCBjaGFyKiBmbmFtZSkKLXsKLX0KLQotdm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFBy
aW50KiBwbGF0Zm9ybVByaW50KQotewotCi19Ci0KLXN0YXRpYyB2b2lkIGhhbmRsZURyYXcoUGx1
Z2luT2JqZWN0ICpvYmosIE5QQ29jb2FFdmVudCAqZXZlbnQpCi17Ci0gICAgTlNHcmFwaGljc0Nv
bnRleHQgKm9sZENvbnRleHQgPSBbW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XSBy
ZXRhaW5dOwotICAgIAotICAgIE5TR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0ID0gW05TR3JhcGhp
Y3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6ZXZlbnQtPmRhdGEuZHJh
dy5jb250ZXh0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxpcHBlZDpZRVNdOwotCi0gICAgW05TR3Jh
cGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OmNvbnRleHRdOwotICAgIAotICAgIE5TUmVj
dCByZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBvYmotPndpbmRvdy53aWR0aCwgb2JqLT53aW5kb3cu
aGVpZ2h0KTsKLSAgICAKLSAgICBbW05TQ29sb3IgbGlnaHRHcmF5Q29sb3JdIHNldF07Ci0gICAg
W05TQmV6aWVyUGF0aCBmaWxsUmVjdDpyZWN0XTsKLQotICAgIC8vIElmIHRoZSBwbHVnaW4gaGFz
IGZvY3VzLCBkcmF3IGEgZm9jdXMgaW5kaWNhdG9yCi0gICAgaWYgKG9iai0+aGFzRm9jdXMpIHsK
LSAgICAgICAgW1tOU0NvbG9yIGJsYWNrQ29sb3JdIHNldF07Ci0gICAgICAgIE5TQmV6aWVyUGF0
aCAqcGF0aCA9IFtOU0JlemllclBhdGggYmV6aWVyUGF0aFdpdGhSZWN0OnJlY3RdOwotICAgICAg
ICBbcGF0aCBzZXRMaW5lV2lkdGg6NV07Ci0gICAgICAgIFtwYXRoIHN0cm9rZV07Ci0gICAgfQot
ICAgIAotICAgIFtvYmotPnN0cmluZyBkcmF3QXRQb2ludDpOU01ha2VQb2ludCgxMCwgMTApIHdp
dGhBdHRyaWJ1dGVzOm5pbF07Ci0gICAgCi0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJl
bnRDb250ZXh0Om9sZENvbnRleHRdOwotfQotCi1zdGF0aWMgTlNTdHJpbmcgKmV2ZW50VHlwZShO
UENvY29hRXZlbnRUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNh
c2UgTlBDb2NvYUV2ZW50U2Nyb2xsV2hlZWw6Ci0gICAgICAgICAgICByZXR1cm4gQCJOUENvY29h
RXZlbnRTY3JvbGxXaGVlbCI7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEb3duOgot
ICAgICAgICAgICAgcmV0dXJuIEAiTlBDb2NvYUV2ZW50TW91c2VEb3duIjsKLSAgICAgICAgY2Fz
ZSBOUENvY29hRXZlbnRNb3VzZVVwOgotICAgICAgICAgICAgcmV0dXJuIEAiTlBDb2NvYUV2ZW50
TW91c2VVcCI7ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VNb3Zl
ZDoKLSAgICAgICAgICAgIHJldHVybiBAIk5QQ29jb2FFdmVudE1vdXNlTW92ZWQiOyAgICAgICAg
ICAgIAotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRHJhZ2dlZDoKLSAgICAgICAgICAg
IHJldHVybiBAIk5QQ29jb2FFdmVudE1vdXNlRHJhZ2dlZCI7ICAgICAgICAgICAgCi0gICAgICAg
IGNhc2UgTlBDb2NvYUV2ZW50TW91c2VFbnRlcmVkOgotICAgICAgICAgICAgcmV0dXJuIEAiTlBD
b2NvYUV2ZW50TW91c2VFbnRlcmVkIjsgICAgICAgICAgICAKLSAgICAgICAgY2FzZSBOUENvY29h
RXZlbnRNb3VzZUV4aXRlZDoKLSAgICAgICAgICAgIHJldHVybiBAIk5QQ29jb2FFdmVudE1vdXNl
RXhpdGVkIjsKLSAgICAgICAgY2FzZSBOUENvY29hRXZlbnRLZXlEb3duOgotICAgICAgICAgICAg
cmV0dXJuIEAiTlBDb2NvYUV2ZW50S2V5RG93biI7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50
S2V5VXA6Ci0gICAgICAgICAgICByZXR1cm4gQCJOUENvY29hRXZlbnRLZXlVcCI7Ci0gICAgICAg
IGNhc2UgTlBDb2NvYUV2ZW50RmxhZ3NDaGFuZ2VkOgotICAgICAgICAgICAgcmV0dXJuIEAiTlBD
b2NvYUV2ZW50RmxhZ3NDaGFuZ2VkIjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJl
dHVybiBAInVua25vd24iOwotICAgIH0gICAgCi19Ci0KLXN0YXRpYyB2b2lkIGludmFsaWRhdGVQ
bHVnaW4oUGx1Z2luT2JqZWN0ICpvYmopCi17Ci0gICAgTlBSZWN0IHJlY3Q7Ci0gICAgcmVjdC5s
ZWZ0ID0gMDsKLSAgICByZWN0LnRvcCA9IDA7Ci0gICAgcmVjdC5yaWdodCA9IG9iai0+d2luZG93
LndpZHRoOwotICAgIHJlY3QuYm90dG9tID0gb2JqLT53aW5kb3cuaGVpZ2h0OwotICAgIAotICAg
IGJyb3dzZXItPmludmFsaWRhdGVyZWN0KG9iai0+bnBwLCAmcmVjdCk7ICAgIAotfQotCi0KLXN0
YXRpYyB2b2lkIGhhbmRsZU1vdXNlRXZlbnQoUGx1Z2luT2JqZWN0ICpvYmosIE5QQ29jb2FFdmVu
dCAqZXZlbnQpCi17Ci0gICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiVHlwZTogJUBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJNb2RpZmllciBmbGFnczogMHgleFxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvb3JkaW5hdGVzOiAoJWcsICVn
KVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IkJ1dHRvbiBudW1iZXI6ICVkXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ2xpY2sgY291bnQ6ICVkXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGVsdGE6ICglZywgJWcsICVnKSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFR5
cGUoZXZlbnQtPnR5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV2ZW50LT5kYXRhLm1vdXNlLm1vZGlmaWVyRmxhZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ZGF0YS5tb3Vz
ZS5wbHVnaW5YLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXZlbnQtPmRhdGEubW91c2UucGx1Z2luWSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5kYXRhLm1vdXNlLmJ1dHRvbk51bWJl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50LT5kYXRhLm1vdXNlLmNsaWNrQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ZGF0YS5tb3VzZS5kZWx0YVgsIGV2ZW50LT5k
YXRhLm1vdXNlLmRlbHRhWSwgZXZlbnQtPmRhdGEubW91c2UuZGVsdGFaXTsKLSAgICAKLSAgICAK
LSAgICBbb2JqLT5zdHJpbmcgcmVsZWFzZV07Ci0gICAgb2JqLT5zdHJpbmcgPSBbc3RyaW5nIHJl
dGFpbl07Ci0gCi0gICAgaW52YWxpZGF0ZVBsdWdpbihvYmopOwotICAgIAotICAgIGlmIChldmVu
dC0+ZGF0YS5tb3VzZS5idXR0b25OdW1iZXIgPT0gMSkgewotICAgICAgICBpZiAoIW9iai0+bWVu
dUhhbmRsZXIpCi0gICAgICAgICAgICBvYmotPm1lbnVIYW5kbGVyID0gW1tNZW51SGFuZGxlciBh
bGxvY10gaW5pdFdpdGhCcm93c2VyRnVuY3M6YnJvd3NlciBpbnN0YW5jZTpvYmotPm5wcF07Ci0g
ICAgICAgIAotICAgICAgICBicm93c2VyLT5wb3B1cGNvbnRleHRtZW51KG9iai0+bnBwLCAoTlBO
U01lbnUgKilbb2JqLT5tZW51SGFuZGxlciBtZW51XSk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9p
ZCBoYW5kbGVLZXlib2FyZEV2ZW50KFBsdWdpbk9iamVjdCAqb2JqLCBOUENvY29hRXZlbnQgKmV2
ZW50KQotewotICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIlR5cGU6ICVAXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiTW9kaWZpZXIgZmxhZ3M6
IDB4JXhcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJDaGFyYWN0ZXJzOiAlQFxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgIkNoYXJhY3RlcnMgaWdub3JpbmcgbW9kaWZpZXJzOiAlQFxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgIklzIGEgcmVwZWF0OiAlQFxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgIktleSBjb2RlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBl
dmVudFR5cGUoZXZlbnQtPnR5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LT5k
YXRhLmtleS5tb2RpZmllckZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQtPmRh
dGEua2V5LmNoYXJhY3RlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBldmVudC0+ZGF0YS5r
ZXkuY2hhcmFjdGVyc0lnbm9yaW5nTW9kaWZpZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ZXZlbnQtPmRhdGEua2V5LmlzQVJlcGVhdCA/IEAiWUVTIiA6IEAiTk8iLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZXZlbnQtPmRhdGEua2V5LmtleUNvZGVdOwotICAgIAotICAgIAotICAgIFtv
YmotPnN0cmluZyByZWxlYXNlXTsKLSAgICBvYmotPnN0cmluZyA9IFtzdHJpbmcgcmV0YWluXTsK
LSAgICAKLSAgICBpbnZhbGlkYXRlUGx1Z2luKG9iaik7Ci19Ci0KLWludDE2X3QgTlBQX0hhbmRs
ZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZlbnQpCi17Ci0gICAgUGx1Z2luT2JqZWN0ICpv
YmogPSBpbnN0YW5jZS0+cGRhdGE7Ci0KLSAgICBOUENvY29hRXZlbnQgKmNvY29hRXZlbnQgPSBl
dmVudDsKLSAgICAKLSAgICBzd2l0Y2goY29jb2FFdmVudC0+dHlwZSkgewotICAgICAgICBjYXNl
IE5QQ29jb2FFdmVudEZvY3VzQ2hhbmdlZDoKLSAgICAgICAgICAgIG9iai0+aGFzRm9jdXMgPSBj
b2NvYUV2ZW50LT5kYXRhLmZvY3VzLmhhc0ZvY3VzOwotICAgICAgICAgICAgaW52YWxpZGF0ZVBs
dWdpbihvYmopOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBOUENvY29hRXZlbnREcmF3UmVjdDoKLSAgICAgICAgICAgIGhhbmRsZURyYXcob2JqLCBj
b2NvYUV2ZW50KTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAKLSAgICAgICAgY2Fz
ZSBOUENvY29hRXZlbnRLZXlEb3duOgotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudEtleVVwOgot
ICAgICAgICBjYXNlIE5QQ29jb2FFdmVudEZsYWdzQ2hhbmdlZDoKLSAgICAgICAgICAgIGhhbmRs
ZUtleWJvYXJkRXZlbnQob2JqLCBjb2NvYUV2ZW50KTsKLSAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEb3duOgotICAgICAg
ICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlVXA6Ci0gICAgICAgICAgICAKLSAgICAgICAgLy8gRklY
TUU6IE5QQ29jb2FFdmVudE1vdXNlTW92ZWQgaXMgY3VycmVudGx5IGRpc2FibGVkIGluIG9yZGVy
IHRvIHNlZSBvdGhlciBldmVudHMgbW9yZSBjbGVhcmx5Ci0gICAgICAgIC8vIHdpdGhvdXQgImRy
b3duaW5nIiBpbiBtb3VzZSBtb3ZlZCBldmVudHMuCi0vLyAgICAgICAgY2FzZSBOUENvY29hRXZl
bnRNb3VzZU1vdmVkOgotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRW50ZXJlZDoKLSAg
ICAgICAgY2FzZSBOUENvY29hRXZlbnRNb3VzZUV4aXRlZDoKLSAgICAgICAgY2FzZSBOUENvY29h
RXZlbnRNb3VzZURyYWdnZWQ6Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50U2Nyb2xsV2hlZWw6
Ci0gICAgICAgICAgICBoYW5kbGVNb3VzZUV2ZW50KG9iaiwgY29jb2FFdmVudCk7Ci0gICAgICAg
ICAgICByZXR1cm4gMTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgTlBQ
X1VSTE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwgTlBSZWFzb24gcmVhc29u
LCB2b2lkKiBub3RpZnlEYXRhKQotewotCi19Ci0KLU5QRXJyb3IgTlBQX0dldFZhbHVlKE5QUCBp
bnN0YW5jZSwgTlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQotewotICAgIHJldHVy
biBOUEVSUl9HRU5FUklDX0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9TZXRWYWx1ZShOUFAgaW5z
dGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKLXsKLSAgICByZXR1cm4g
TlBFUlJfR0VORVJJQ19FUlJPUjsKLX0KSW5kZXg6IEV4YW1wbGVzL05ldHNjYXBlQ29jb2FQbHVn
aW4vdGVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEV4YW1wbGVzL05ldHNjYXBlQ29jb2FQbHVnaW4v
dGVzdC5odG1sCShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9OZXRzY2FwZUNvY29hUGx1
Z2luL3Rlc3QuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRw
Oi8vd3d3LnczLm9yZy9UUi8xOTk5L1JFQy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08
aHRtbD4KLTxoZWFkPgotPHRpdGxlPkNvY29hIE5ldHNjYXBlIFBsdWctSW48L3RpdGxlPgotPC9o
ZWFkPgotPGJvZHk+Ci08ZGl2PgotICAgIDxlbWJlZCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIg
dHlwZT0idGVzdC94LW5ldHNjYXBlLWNvY29hLXBsdWdpbiI+PC9lbWJlZD4KLTwvZGl2PgotPC9i
b2R5PgotPC9odG1sPgpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQ
bHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBFeGFtcGxlcy9OZXRz
Y2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJp
bmdzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1hcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogRXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vSW5mby5wbGlzdAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9J
bmZvLnBsaXN0CShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmlt
YXRpb25Nb3ZpZVBsdWdpbi9JbmZvLnBsaXN0CShub25leGlzdGVudCkKQEAgLTEsMzYgKzAsMCBA
QAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBwbGlz
dCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUu
Y29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBsaXN0IHZlcnNpb249IjEuMCI+Ci08
ZGljdD4KLQk8a2V5PkNGQnVuZGxlRGV2ZWxvcG1lbnRSZWdpb248L2tleT4KLQk8c3RyaW5nPkVu
Z2xpc2g8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgotCTxzdHJpbmc+
TmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxl
SWNvbkZpbGU8L2tleT4KLQk8c3RyaW5nPjwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJZGVudGlm
aWVyPC9rZXk+Ci0JPHN0cmluZz5jb20uYXBwbGUubmV0c2NhcGVjb3JlYW5pbWF0aW9ubW92aWVw
bHVnaW48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJzaW9uPC9rZXk+
Ci0JPHN0cmluZz42LjA8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlUGFja2FnZVR5cGU8L2tleT4K
LQk8c3RyaW5nPkJSUEw8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5n
PC9rZXk+Ci0JPHN0cmluZz4xLjA8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2lnbmF0dXJlPC9r
ZXk+Ci0JPHN0cmluZz4/Pz8/PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVZlcnNpb248L2tleT4K
LQk8c3RyaW5nPjEuMDwvc3RyaW5nPgotCTxrZXk+V2ViUGx1Z2luRGVzY3JpcHRpb248L2tleT4K
LQk8c3RyaW5nPlNpbXBsZSBOZXRzY2FwZSBwbHVnLWluIHRoYXQgZHJhd3MgdXNpbmcgQ29yZSBB
bmltYXRpb24gYW5kIGhhbmRsZXMgZXZlbnRzIHVzaW5nIHRoZSBDb2NvYSBldmVudCBtb2RlbDwv
c3RyaW5nPgotCTxrZXk+V2ViUGx1Z2luTUlNRVR5cGVzPC9rZXk+Ci0JPGRpY3Q+Ci0JCTxrZXk+
dGVzdC94LW5ldHNjYXBlLWNvcmUtYW5pbWF0aW9uLW1vdmllLXBsdWdpbjwva2V5PgotCQk8ZGlj
dD4KLQkJCTxrZXk+V2ViUGx1Z2luVHlwZURlc2NyaXB0aW9uPC9rZXk+Ci0JCQk8c3RyaW5nPk5l
dHNjYXBlIENvcmUgQW5pbWF0aW9uIE1vdmllIFBsdWctaW48L3N0cmluZz4KLQkJPC9kaWN0Pgot
CTwvZGljdD4KLQk8a2V5PldlYlBsdWdpbk5hbWU8L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlIENv
cmUgQW5pbWF0aW9uIE1vdmllIFBsdWctaW48L3N0cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+Cklu
ZGV4OiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9Nb3ZpZUNvbnRy
b2xsZXJMYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEV4YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1hdGlv
bk1vdmllUGx1Z2luL01vdmllQ29udHJvbGxlckxheWVyLmgJKHJldmlzaW9uIDI0ODk2NSkKKysr
IEV4YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL01vdmllQ29udHJvbGxl
ckxheWVyLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw3NSArMCwwIEBACi0vKgotICAgICBGaWxlOiBN
b3ZpZUNvbnRyb2xsZXJMYXllci5oCi0gCi0gRGlzY2xhaW1lcjogSU1QT1JUQU5UOiAgVGhpcyBB
cHBsZSBzb2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUKLSBJbmMuICgiQXBwbGUi
KSBpbiBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcKLSB0
ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sIG1vZGlmaWNhdGlvbiBvciByZWRpc3Ry
aWJ1dGlvbiBvZgotIHRoaXMgQXBwbGUgc29mdHdhcmUgY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBv
ZiB0aGVzZSB0ZXJtcy4gIElmIHlvdSBkbwotIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zLCBw
bGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yCi0gcmVkaXN0cmlidXRlIHRoaXMg
QXBwbGUgc29mdHdhcmUuCi0gCi0gSW4gY29uc2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0
byBhYmlkZSBieSB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQKLSBzdWJqZWN0IHRvIHRoZXNlIHRl
cm1zLCBBcHBsZSBncmFudHMgeW91IGEgcGVyc29uYWwsIG5vbi1leGNsdXNpdmUKLSBsaWNlbnNl
LCB1bmRlciBBcHBsZSdzIGNvcHlyaWdodHMgaW4gdGhpcyBvcmlnaW5hbCBBcHBsZSBzb2Z0d2Fy
ZSAodGhlCi0gIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5k
IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUKLSBTb2Z0d2FyZSwgd2l0aCBvciB3aXRob3V0IG1vZGlm
aWNhdGlvbnMsIGluIHNvdXJjZSBhbmQvb3IgYmluYXJ5IGZvcm1zOwotIHByb3ZpZGVkIHRoYXQg
aWYgeW91IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUgaW4gaXRzIGVudGlyZXR5IGFu
ZAotIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90aWNlIGFu
ZCB0aGUgZm9sbG93aW5nCi0gdGV4dCBhbmQgZGlzY2xhaW1lcnMgaW4gYWxsIHN1Y2ggcmVkaXN0
cmlidXRpb25zIG9mIHRoZSBBcHBsZSBTb2Z0d2FyZS4KLSBOZWl0aGVyIHRoZSBuYW1lLCB0cmFk
ZW1hcmtzLCBzZXJ2aWNlIG1hcmtzIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4gbWF5Ci0gYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoZSBBcHBsZSBT
b2Z0d2FyZQotIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGZyb20g
QXBwbGUuICBFeGNlcHQgYXMKLSBleHByZXNzbHkgc3RhdGVkIGluIHRoaXMgbm90aWNlLCBubyBv
dGhlciByaWdodHMgb3IgbGljZW5zZXMsIGV4cHJlc3Mgb3IKLSBpbXBsaWVkLCBhcmUgZ3JhbnRl
ZCBieSBBcHBsZSBoZXJlaW4sIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gYW55Ci0gcGF0
ZW50IHJpZ2h0cyB0aGF0IG1heSBiZSBpbmZyaW5nZWQgYnkgeW91ciBkZXJpdmF0aXZlIHdvcmtz
IG9yIGJ5IG90aGVyCi0gd29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBiZSBp
bmNvcnBvcmF0ZWQuCi0gCi0gVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFwcGxl
IG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRQotIE1BS0VTIE5PIFdBUlJBTlRJRVMsIEVYUFJF
U1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTgotIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTCi0gRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNPRlRX
QVJFIE9SIElUUyBVU0UgQU5ECi0gT1BFUkFUSU9OIEFMT05FIE9SIElOIENPTUJJTkFUSU9OIFdJ
VEggWU9VUiBQUk9EVUNUUy4KLSAKLSBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBCRSBMSUFCTEUg
Rk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCwgSU5DSURFTlRBTAotIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gSU5URVJSVVBUSU9OKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UsIFJFUFJPRFVDVElPTiwKLSBNT0RJRklDQVRJT04gQU5EL09SIERJU1RSSUJVVElP
TiBPRiBUSEUgQVBQTEUgU09GVFdBUkUsIEhPV0VWRVIgQ0FVU0VECi0gQU5EIFdIRVRIRVIgVU5E
RVIgVEhFT1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSksCi0gU1RS
SUNUIExJQUJJTElUWSBPUiBPVEhFUldJU0UsIEVWRU4gSUYgQVBQTEUgSEFTIEJFRU4gQURWSVNF
RCBPRiBUSEUKLSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAKLSBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotIAotICovCi0KLQotI2ltcG9y
dCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0KLUBjbGFzcyBRVE1vdmllOwotCi1AaW50ZXJm
YWNlIE1vdmllQ29udHJvbGxlckxheWVyIDogQ0FMYXllciB7Ci0gICAgQ0dJbWFnZVJlZiBfcGxh
eUltYWdlOwotICAgIENHSW1hZ2VSZWYgX3BhdXNlSW1hZ2U7Ci0gICAgCi0gICAgQ0dJbWFnZVJl
ZiBfc2xpZGVyVHJhY2tMZWZ0OwotICAgIENHSW1hZ2VSZWYgX3NsaWRlclRyYWNrUmlnaHQ7Ci0g
ICAgQ0dJbWFnZVJlZiBfc2xpZGVyVHJhY2tDZW50ZXI7Ci0gICAgCi0gICAgQ0dJbWFnZVJlZiBf
dGh1bWI7Ci0gICAgCi0gICAgUVRNb3ZpZSAqX21vdmllOwotICAgIE5TVGltZXIgKl91cGRhdGVU
aW1lVGltZXI7Ci0gICAgCi0gICAgQk9PTCBfd2FzUGxheWluZ0JlZm9yZU1vdXNlRG93bjsKLSAg
ICBCT09MIF9pc1NjcnViYmluZzsKLSAgICBDR0Zsb2F0IF9tb3VzZURvd25YRGVsdGE7Ci19Ci0K
LS0gKHZvaWQpc2V0TW92aWU6KFFUTW92aWUgKiltb3ZpZTsKLQotLSAodm9pZCloYW5kbGVNb3Vz
ZURvd246KENHUG9pbnQpcG9pbnQ7Ci0tICh2b2lkKWhhbmRsZU1vdXNlVXA6KENHUG9pbnQpcG9p
bnQ7Ci0tICh2b2lkKWhhbmRsZU1vdXNlRHJhZ2dlZDooQ0dQb2ludClwb2ludDsKLQotQGVuZApJ
bmRleDogRXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTW92aWVDb250
cm9sbGVyTGF5ZXIubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRp
b25Nb3ZpZVBsdWdpbi9Nb3ZpZUNvbnRyb2xsZXJMYXllci5tCShyZXZpc2lvbiAyNDg5NjUpCisr
KyBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9Nb3ZpZUNvbnRyb2xs
ZXJMYXllci5tCShub25leGlzdGVudCkKQEAgLTEsMzU1ICswLDAgQEAKLS8qCi0gICAgIEZpbGU6
IE1vdmllQ29udHJvbGxlckxheWVyLm0KLSAKLSBEaXNjbGFpbWVyOiBJTVBPUlRBTlQ6ICBUaGlz
IEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBBcHBsZQotIEluYy4gKCJBcHBs
ZSIpIGluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gdGhlIGZvbGxvd2luZwot
IHRlcm1zLCBhbmQgeW91ciB1c2UsIGluc3RhbGxhdGlvbiwgbW9kaWZpY2F0aW9uIG9yIHJlZGlz
dHJpYnV0aW9uIG9mCi0gdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNl
IG9mIHRoZXNlIHRlcm1zLiAgSWYgeW91IGRvCi0gbm90IGFncmVlIHdpdGggdGhlc2UgdGVybXMs
IHBsZWFzZSBkbyBub3QgdXNlLCBpbnN0YWxsLCBtb2RpZnkgb3IKLSByZWRpc3RyaWJ1dGUgdGhp
cyBBcHBsZSBzb2Z0d2FyZS4KLSAKLSBJbiBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50
IHRvIGFiaWRlIGJ5IHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZAotIHN1YmplY3QgdG8gdGhlc2Ug
dGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZQotIGxpY2Vu
c2UsIHVuZGVyIEFwcGxlJ3MgY29weXJpZ2h0cyBpbiB0aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3
YXJlICh0aGUKLSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSBh
bmQgcmVkaXN0cmlidXRlIHRoZSBBcHBsZQotIFNvZnR3YXJlLCB3aXRoIG9yIHdpdGhvdXQgbW9k
aWZpY2F0aW9ucywgaW4gc291cmNlIGFuZC9vciBiaW5hcnkgZm9ybXM7Ci0gcHJvdmlkZWQgdGhh
dCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50aXJldHkg
YW5kCi0gd2l0aG91dCBtb2RpZmljYXRpb25zLCB5b3UgbXVzdCByZXRhaW4gdGhpcyBub3RpY2Ug
YW5kIHRoZSBmb2xsb3dpbmcKLSB0ZXh0IGFuZCBkaXNjbGFpbWVycyBpbiBhbGwgc3VjaCByZWRp
c3RyaWJ1dGlvbnMgb2YgdGhlIEFwcGxlIFNvZnR3YXJlLgotIE5laXRoZXIgdGhlIG5hbWUsIHRy
YWRlbWFya3MsIHNlcnZpY2UgbWFya3Mgb3IgbG9nb3Mgb2YgQXBwbGUgSW5jLiBtYXkKLSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhlIEFwcGxl
IFNvZnR3YXJlCi0gd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJv
bSBBcHBsZS4gIEV4Y2VwdCBhcwotIGV4cHJlc3NseSBzdGF0ZWQgaW4gdGhpcyBub3RpY2UsIG5v
IG90aGVyIHJpZ2h0cyBvciBsaWNlbnNlcywgZXhwcmVzcyBvcgotIGltcGxpZWQsIGFyZSBncmFu
dGVkIGJ5IEFwcGxlIGhlcmVpbiwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBhbnkKLSBw
YXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIGRlcml2YXRpdmUgd29y
a3Mgb3IgYnkgb3RoZXIKLSB3b3JrcyBpbiB3aGljaCB0aGUgQXBwbGUgU29mdHdhcmUgbWF5IGJl
IGluY29ycG9yYXRlZC4KLSAKLSBUaGUgQXBwbGUgU29mdHdhcmUgaXMgcHJvdmlkZWQgYnkgQXBw
bGUgb24gYW4gIkFTIElTIiBiYXNpcy4gIEFQUExFCi0gTUFLRVMgTk8gV0FSUkFOVElFUywgRVhQ
UkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OCi0gVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MKLSBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UsIFJFR0FSRElORyBUSEUgQVBQTEUgU09G
VFdBUkUgT1IgSVRTIFVTRSBBTkQKLSBPUEVSQVRJT04gQUxPTkUgT1IgSU4gQ09NQklOQVRJT04g
V0lUSCBZT1VSIFBST0RVQ1RTLgotIAotIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIEJFIExJQUJM
RSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNULCBJTkNJREVOVEFMCi0gT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSBJTlRFUlJVUFRJT04pIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSwgUkVQUk9EVUNUSU9OLAotIE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVU
SU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQKLSBBTkQgV0hFVEhFUiBV
TkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1QsIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwKLSBT
VFJJQ1QgTElBQklMSVRZIE9SIE9USEVSV0lTRSwgRVZFTiBJRiBBUFBMRSBIQVMgQkVFTiBBRFZJ
U0VEIE9GIFRIRQotIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIAotIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gCi0gKi8KLQotI2ltcG9y
dCAiTW92aWVDb250cm9sbGVyTGF5ZXIuaCIKLQotI2ltcG9ydCA8UVRLaXQvUVRLaXQuaD4KLQot
QGludGVyZmFjZSBNb3ZpZUNvbnRyb2xsZXJMYXllciAoKQotLSAoQk9PTClfaXNQbGF5aW5nOwot
LSAoTlNUaW1lSW50ZXJ2YWwpX2N1cnJlbnRUaW1lOwotLSAoTlNUaW1lSW50ZXJ2YWwpX2R1cmF0
aW9uOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gTW92aWVDb250cm9sbGVyTGF5ZXIKLQotc3Rh
dGljIENHSW1hZ2VSZWYgY3JlYXRlSW1hZ2VOYW1lZChOU1N0cmluZyAqbmFtZSkKLXsKLSAgICBO
U1VSTCAqdXJsID0gW1tOU0J1bmRsZSBidW5kbGVGb3JDbGFzczpbTW92aWVDb250cm9sbGVyTGF5
ZXIgY2xhc3NdXSBVUkxGb3JSZXNvdXJjZTpuYW1lIHdpdGhFeHRlbnNpb246QCJ0aWZmIl07Ci0g
ICAgCi0gICAgaWYgKCF1cmwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIAotICAgIENHSW1h
Z2VTb3VyY2VSZWYgaW1hZ2VTb3VyY2UgPSBDR0ltYWdlU291cmNlQ3JlYXRlV2l0aFVSTCgoQ0ZV
UkxSZWYpdXJsLCBOVUxMKTsKLSAgICBpZiAoIWltYWdlU291cmNlKQotICAgICAgICByZXR1cm4g
TlVMTDsKLSAgICAKLSAgICBDR0ltYWdlUmVmIGltYWdlID0gQ0dJbWFnZVNvdXJjZUNyZWF0ZUlt
YWdlQXRJbmRleChpbWFnZVNvdXJjZSwgMCwgTlVMTCk7Ci0gICAgQ0ZSZWxlYXNlKGltYWdlU291
cmNlKTsKLSAgICAKLSAgICByZXR1cm4gaW1hZ2U7Ci19Ci0KLS0gKGlkKWluaXQKLXsKLSAgICBp
ZiAoc2VsZiA9IFtzdXBlciBpbml0XSkgewotICAgICAgICBzZWxmLm5lZWRzRGlzcGxheU9uQm91
bmRzQ2hhbmdlID0gWUVTOwotICAgICAgICBzZWxmLmZyYW1lID0gQ0dSZWN0TWFrZSgwLCAwLCAw
LCAyNSk7Ci0gICAgICAgIHNlbGYuYXV0b3Jlc2l6aW5nTWFzayA9IGtDQUxheWVyV2lkdGhTaXph
YmxlOwotICAgICAgICAKLSAgICAgICAgX3BsYXlJbWFnZSA9IGNyZWF0ZUltYWdlTmFtZWQoQCJQ
bGF5Iik7Ci0gICAgICAgIF9wYXVzZUltYWdlID0gY3JlYXRlSW1hZ2VOYW1lZChAIlBhdXNlIik7
Ci0gICAgICAgIF9zbGlkZXJUcmFja0xlZnQgPSBjcmVhdGVJbWFnZU5hbWVkKEAiU2xpZGVyVHJh
Y2tMZWZ0Iik7Ci0gICAgICAgIF9zbGlkZXJUcmFja1JpZ2h0ID0gY3JlYXRlSW1hZ2VOYW1lZChA
IlNsaWRlclRyYWNrUmlnaHQiKTsKLSAgICAgICAgX3NsaWRlclRyYWNrQ2VudGVyID0gY3JlYXRl
SW1hZ2VOYW1lZChAIlNsaWRlclRyYWNrQ2VudGVyIik7Ci0gICAgICAgIAotICAgICAgICBfdGh1
bWIgPSBjcmVhdGVJbWFnZU5hbWVkKEAiVGh1bWIiKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IHNlbGY7Ci19Ci0KLS0gKHZvaWQpZGVhbGxvYwotewotICAgIENHSW1hZ2VSZWxlYXNlKF9wbGF5
SW1hZ2UpOwotICAgIENHSW1hZ2VSZWxlYXNlKF9wYXVzZUltYWdlKTsKLSAgICAKLSAgICBDR0lt
YWdlUmVsZWFzZShfc2xpZGVyVHJhY2tMZWZ0KTsKLSAgICBDR0ltYWdlUmVsZWFzZShfc2xpZGVy
VHJhY2tSaWdodCk7Ci0gICAgQ0dJbWFnZVJlbGVhc2UoX3NsaWRlclRyYWNrQ2VudGVyKTsKLSAg
ICAKLSAgICBDR0ltYWdlUmVsZWFzZShfdGh1bWIpOwotICAgIAotICAgIFtzZWxmIHNldE1vdmll
Om5pbF07Ci0gICAgW191cGRhdGVUaW1lVGltZXIgaW52YWxpZGF0ZV07Ci0KLSAgICBbc3VwZXIg
ZGVhbGxvY107Ci19Ci0KLSNwcmFnbWEgbWFyayBEcmF3aW5nCi0KLS0gKENHUmVjdClfcGxheVBh
dXNlQnV0dG9uUmVjdAotewotICAgIHJldHVybiBDR1JlY3RNYWtlKDAsIDAsIDI1LCAyNSk7Ci19
Ci0KLS0gKENHUmVjdClfc2xpZGVyUmVjdAotewotICAgIENHRmxvYXQgc2xpZGVyWVBvc2l0aW9u
ID0gKHNlbGYuYm91bmRzLnNpemUuaGVpZ2h0IC0gQ0dJbWFnZUdldEhlaWdodChfc2xpZGVyVHJh
Y2tMZWZ0KSkgLyAyLjA7Ci0gICAgQ0dGbG9hdCBwbGF5UGF1c2VCdXR0b25XaWR0aCA9IFtzZWxm
IF9wbGF5UGF1c2VCdXR0b25SZWN0XS5zaXplLndpZHRoOwotICAgIAotICAgIHJldHVybiBDR1Jl
Y3RNYWtlKHBsYXlQYXVzZUJ1dHRvbldpZHRoLCBzbGlkZXJZUG9zaXRpb24sIAotICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuYm91bmRzLnNpemUud2lkdGggLSBwbGF5UGF1c2VCdXR0b25XaWR0
aCAtIDcsIENHSW1hZ2VHZXRIZWlnaHQoX3NsaWRlclRyYWNrTGVmdCkpOwotfQotCi0tIChDR1Jl
Y3QpX3NsaWRlclRodW1iUmVjdAotewotICAgIENHUmVjdCBzbGlkZXJSZWN0ID0gW3NlbGYgX3Ns
aWRlclJlY3RdOwotCi0gICAgQ0dGbG9hdCBmcmFjdGlvbiA9IDAuMDsKLSAgICBpZiAoX21vdmll
KQotICAgICAgICBmcmFjdGlvbiA9IFtzZWxmIF9jdXJyZW50VGltZV0gLyBbc2VsZiBfZHVyYXRp
b25dOwotICAKLSAgICBDR0Zsb2F0IHggPSBmcmFjdGlvbiAqIChDR1JlY3RHZXRXaWR0aChzbGlk
ZXJSZWN0KSAtIENHSW1hZ2VHZXRXaWR0aChfdGh1bWIpKTsKLSAgICAKLSAgICByZXR1cm4gQ0dS
ZWN0TWFrZShDR1JlY3RHZXRNaW5YKHNsaWRlclJlY3QpICsgeCwgQ0dSZWN0R2V0TWluWShzbGlk
ZXJSZWN0KSAtIDEsIAotICAgICAgICAgICAgICAgICAgICAgIENHSW1hZ2VHZXRXaWR0aChfdGh1
bWIpLCBDR0ltYWdlR2V0SGVpZ2h0KF90aHVtYikpOwotfQotCi0tIChDR1JlY3QpX2lubmVyU2xp
ZGVyUmVjdAotewotICAgIHJldHVybiBDR1JlY3RJbnNldChbc2VsZiBfc2xpZGVyUmVjdF0sIENH
UmVjdEdldFdpZHRoKFtzZWxmIF9zbGlkZXJUaHVtYlJlY3RdKSAvIDIsIDApOwotfQotCi0tICh2
b2lkKV9kcmF3UGxheVBhdXNlQnV0dG9uSW5Db250ZXh0OihDR0NvbnRleHRSZWYpY29udGV4dAot
ewotICAgIENHQ29udGV4dERyYXdJbWFnZShjb250ZXh0LCBbc2VsZiBfcGxheVBhdXNlQnV0dG9u
UmVjdF0sIFtzZWxmIF9pc1BsYXlpbmddID8gX3BhdXNlSW1hZ2UgOiBfcGxheUltYWdlKTsKLX0K
LQotLSAodm9pZClfZHJhd1NsaWRlckluQ29udGV4dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKLXsK
LSAgICAvLyBEcmF3IHRoZSB0aHVtYgotICAgIENHUmVjdCBzbGlkZXJUaHVtYlJlY3QgPSBbc2Vs
ZiBfc2xpZGVyVGh1bWJSZWN0XTsKLSAgICBDR0NvbnRleHREcmF3SW1hZ2UoY29udGV4dCwgc2xp
ZGVyVGh1bWJSZWN0LCBfdGh1bWIpOwotICAgIAotICAgIENHUmVjdCBzbGlkZXJSZWN0ID0gW3Nl
bGYgX3NsaWRlclJlY3RdOwotICAgIAotICAgIC8vIERyYXcgbGVmdCBwYXJ0Ci0gICAgQ0dSZWN0
IHNsaWRlckxlZnRUcmFja1JlY3QgPSBDR1JlY3RNYWtlKENHUmVjdEdldE1pblgoc2xpZGVyUmVj
dCksIENHUmVjdEdldE1pblkoc2xpZGVyUmVjdCksIAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDR0ltYWdlR2V0V2lkdGgoX3NsaWRlclRyYWNrTGVmdCksIENH
SW1hZ2VHZXRIZWlnaHQoX3NsaWRlclRyYWNrTGVmdCkpOwotICAgIENHQ29udGV4dERyYXdJbWFn
ZShjb250ZXh0LCBzbGlkZXJMZWZ0VHJhY2tSZWN0LCBfc2xpZGVyVHJhY2tMZWZ0KTsKLSAgICAK
LSAgICAvLyBEcmF3IGNlbnRlciBwYXJ0Ci0gICAgQ0dSZWN0IHNsaWRlckNlbnRlclRyYWNrUmVj
dCA9IENHUmVjdEluc2V0KHNsaWRlclJlY3QsIENHSW1hZ2VHZXRXaWR0aChfc2xpZGVyVHJhY2tM
ZWZ0KSwgMCk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIHNsaWRlckNlbnRlclRy
YWNrUmVjdCwgX3NsaWRlclRyYWNrQ2VudGVyKTsKLSAgICAKLSAgICAvLyBEcmF3IHJpZ2h0IHBh
cnQKLSAgICBDR1JlY3Qgc2xpZGVyUmlnaHRUcmFja1JlY3QgPSBDR1JlY3RNYWtlKENHUmVjdEdl
dE1heFgoc2xpZGVyQ2VudGVyVHJhY2tSZWN0KSwgQ0dSZWN0R2V0TWluWShzbGlkZXJSZWN0KSwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0ltYWdlR2V0
V2lkdGgoX3NsaWRlclRyYWNrUmlnaHQpLCBDR0ltYWdlR2V0SGVpZ2h0KF9zbGlkZXJUcmFja1Jp
Z2h0KSk7Ci0gICAgQ0dDb250ZXh0RHJhd0ltYWdlKGNvbnRleHQsIHNsaWRlclJpZ2h0VHJhY2tS
ZWN0LCBfc2xpZGVyVHJhY2tSaWdodCk7Ci0gICAgCi19Ci0KLS0gKHZvaWQpZHJhd0luQ29udGV4
dDooQ0dDb250ZXh0UmVmKWNvbnRleHQKLXsKLSAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRl
eHQpOwotICAgIENHQ29udGV4dFNldEZpbGxDb2xvcldpdGhDb2xvcihjb250ZXh0LCBDR0NvbG9y
R2V0Q29uc3RhbnRDb2xvcihrQ0dDb2xvckJsYWNrKSk7Ci0gICAgQ0dDb250ZXh0RmlsbFJlY3Qo
Y29udGV4dCwgc2VsZi5ib3VuZHMpOwotICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4
dCk7Ci0gICAgCi0gICAgW3NlbGYgX2RyYXdQbGF5UGF1c2VCdXR0b25JbkNvbnRleHQ6Y29udGV4
dF07Ci0gICAgW3NlbGYgX2RyYXdTbGlkZXJJbkNvbnRleHQ6Y29udGV4dF07Ci19Ci0KLSNwcmFn
bWEgbWFyayBNb3ZpZSBoYW5kbGluZwotCi0tIChOU1RpbWVJbnRlcnZhbClfY3VycmVudFRpbWUK
LXsKLSAgICBpZiAoIV9tb3ZpZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgUVRUaW1l
IHRpbWUgPSBbX21vdmllIGN1cnJlbnRUaW1lXTsKLSAgICBOU1RpbWVJbnRlcnZhbCB0aW1lSW50
ZXJ2YWw7Ci0gICAgaWYgKCFRVEdldFRpbWVJbnRlcnZhbCh0aW1lLCAmdGltZUludGVydmFsKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJuIHRpbWVJbnRlcnZhbDsKLX0KLQot
LSAoTlNUaW1lSW50ZXJ2YWwpX2R1cmF0aW9uCi17Ci0gICAgaWYgKCFfbW92aWUpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIFFUVGltZSB0aW1lID0gW19tb3ZpZSBkdXJhdGlvbl07Ci0g
ICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsOwotICAgIGlmICghUVRHZXRUaW1lSW50ZXJ2
YWwodGltZSwgJnRpbWVJbnRlcnZhbCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIHJl
dHVybiB0aW1lSW50ZXJ2YWw7Ci19Ci0KLS0gKEJPT0wpX2lzUGxheWluZwotewotICAgIHJldHVy
biBbX21vdmllIHJhdGVdICE9IDAuMDsKLX0KLQotLSAodm9pZClfdXBkYXRlVGltZTooTlNUaW1l
ciAqKXRpbWVyCi17Ci0gICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKLX0KLQotLSAodm9pZClf
cmF0ZURpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KLXsKLSAgICBmbG9h
dCByYXRlID0gW1tbbm90aWZpY2F0aW9uIHVzZXJJbmZvXSBvYmplY3RGb3JLZXk6UVRNb3ZpZVJh
dGVEaWRDaGFuZ2VOb3RpZmljYXRpb25QYXJhbWV0ZXJdIGZsb2F0VmFsdWVdOwotICAgIAotICAg
IGlmIChyYXRlID09IDAuMCkgewotICAgICAgICBbX3VwZGF0ZVRpbWVUaW1lciBpbnZhbGlkYXRl
XTsKLSAgICAgICAgX3VwZGF0ZVRpbWVUaW1lciA9IG5pbDsKLSAgICB9IGVsc2UKLSAgICAgICAg
X3VwZGF0ZVRpbWVUaW1lciA9IFtOU1RpbWVyIHNjaGVkdWxlZFRpbWVyV2l0aFRpbWVJbnRlcnZh
bDowLjAzNSB0YXJnZXQ6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3VwZGF0ZVRpbWU6KSB1c2Vy
SW5mbzpuaWwgcmVwZWF0czpZRVNdOwotICAgIAotICAgIFtzZWxmIHNldE5lZWRzRGlzcGxheV07
Ci19Ci0KLS0gKHZvaWQpX3RpbWVEaWRDaGFuZ2U6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0
aW9uCi17Ci0gICAgW3NlbGYgc2V0TmVlZHNEaXNwbGF5XTsKLX0KLQotLSAoaWQ8Q0FBY3Rpb24+
KWFjdGlvbkZvcktleTooTlNTdHJpbmcgKilrZXkKLXsKLSAgICAvLyBXZSBkb24ndCB3YW50IHRv
IGFuaW1hdGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBsYXllci4KLSAgICBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJjb250ZW50cyJdKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJl
dHVybiBbc3VwZXIgYWN0aW9uRm9yS2V5OmtleV07Ci19Ci0KLS0gKHZvaWQpc2V0TW92aWU6KFFU
TW92aWUgKiltb3ZpZQotewotICAgIGlmIChfbW92aWUgPT0gbW92aWUpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBpZiAoX21vdmllKSB7Ci0gICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpRVE1vdmllUmF0ZURp
ZENoYW5nZU5vdGlmaWNhdGlvbiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdDpfbW92aWVdOwotICAgICAgICBbW05TTm90aWZpY2F0
aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOnNlbGYgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6UVRNb3Zp
ZVRpbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6X21vdmllXTsKLSAgICAgICAgW19tb3Zp
ZSByZWxlYXNlXTsKLSAgICB9Ci0gICAgCi0gICAgX21vdmllID0gW21vdmllIHJldGFpbl07Ci0g
ICAgCi0gICAgaWYgKF9tb3ZpZSkgewotICAgICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvcjpAc2VsZWN0b3IoX3JhdGVEaWRDaGFuZ2U6
KSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmFtZTpRVE1vdmllUmF0ZURpZENoYW5nZU5vdGlmaWNhdGlvbiAKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDpfbW92aWVdOwotICAgICAg
ICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rv
cjpAc2VsZWN0b3IoX3RpbWVEaWRDaGFuZ2U6KSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTpRVE1vdmllVGltZURpZENoYW5nZU5vdGlm
aWNhdGlvbiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9iamVjdDpfbW92aWVdOwotICAgICAgICBbc2VsZiBzZXROZWVkc0Rpc3BsYXldOwotICAg
IH0KLSAgICAKLX0KLQotIyBwcmFnbWEgbWFyayBFdmVudCBoYW5kbGluZwotCi0tICh2b2lkKV9z
ZXROZXdUaW1lRm9yVGh1bWJDZW50ZXJYOihDR0Zsb2F0KWNlbnRlclgKLXsKLSAgICBDR1JlY3Qg
aW5uZXJSZWN0ID0gW3NlbGYgX2lubmVyU2xpZGVyUmVjdF07Ci0gICAgCi0gICAgQ0dGbG9hdCBm
cmFjdGlvbiA9IChjZW50ZXJYIC0gQ0dSZWN0R2V0TWluWChpbm5lclJlY3QpKSAvIENHUmVjdEdl
dFdpZHRoKGlubmVyUmVjdCk7Ci0gICAgaWYgKGZyYWN0aW9uID4gMS4wKQotICAgICAgICBmcmFj
dGlvbiA9IDEuMDsKLSAgICBlbHNlIGlmIChmcmFjdGlvbiA8IDAuMCkKLSAgICAgICAgZnJhY3Rp
b24gPSAwLjA7Ci0gICAgCi0gICAgTlNUaW1lSW50ZXJ2YWwgbmV3VGltZSA9IGZyYWN0aW9uICog
W3NlbGYgX2R1cmF0aW9uXTsKLSAgICAKLSAgICBbX21vdmllIHNldEN1cnJlbnRUaW1lOlFUTWFr
ZVRpbWVXaXRoVGltZUludGVydmFsKG5ld1RpbWUpXTsKLSAgICBbc2VsZiBzZXROZWVkc0Rpc3Bs
YXldOyAgICAKLX0KLQotLSAodm9pZCloYW5kbGVNb3VzZURvd246KENHUG9pbnQpcG9pbnQKLXsK
LSAgICBpZiAoIV9tb3ZpZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKENHUmVjdENvbnRh
aW5zUG9pbnQoW3NlbGYgX3NsaWRlclJlY3RdLCBwb2ludCkpIHsKLSAgICAgICAgX3dhc1BsYXlp
bmdCZWZvcmVNb3VzZURvd24gPSBbc2VsZiBfaXNQbGF5aW5nXTsKLSAgICAgICAgX2lzU2NydWJi
aW5nID0gWUVTOwotCi0gICAgICAgIFtfbW92aWUgc3RvcF07Ci0gICAgICAgIGlmIChDR1JlY3RD
b250YWluc1BvaW50KFtzZWxmIF9zbGlkZXJUaHVtYlJlY3RdLCBwb2ludCkpCi0gICAgICAgICAg
ICBfbW91c2VEb3duWERlbHRhID0gcG9pbnQueCAtIENHUmVjdEdldE1pZFgoW3NlbGYgX3NsaWRl
clRodW1iUmVjdF0pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFtzZWxmIF9zZXROZXdU
aW1lRm9yVGh1bWJDZW50ZXJYOnBvaW50LnhdOwotICAgICAgICAgICAgX21vdXNlRG93blhEZWx0
YSA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS0gKHZvaWQpaGFuZGxlTW91c2VVcDooQ0dQ
b2ludClwb2ludAotewotICAgIGlmICghX21vdmllKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgaWYgKF9pc1NjcnViYmluZykgewotICAgICAgICBfaXNTY3J1YmJpbmcgPSBOTzsKLSAgICAg
ICAgX21vdXNlRG93blhEZWx0YSA9IDA7Ci0gICAgICAgIAotICAgICAgICBpZiAoX3dhc1BsYXlp
bmdCZWZvcmVNb3VzZURvd24pCi0gICAgICAgICAgICBbX21vdmllIHBsYXldOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotICAgIAotICAgIGlmIChDR1JlY3RDb250YWluc1BvaW50KFtzZWxmIF9w
bGF5UGF1c2VCdXR0b25SZWN0XSwgcG9pbnQpKSB7Ci0gICAgICAgIGlmIChbc2VsZiBfaXNQbGF5
aW5nXSkKLSAgICAgICAgICAgIFtfbW92aWUgc3RvcF07Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIFtfbW92aWUgcGxheV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLS0gKHZvaWQp
aGFuZGxlTW91c2VEcmFnZ2VkOihDR1BvaW50KXBvaW50Ci17Ci0gICAgaWYgKCFfbW92aWUpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGlmICghX2lzU2NydWJiaW5nKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBwb2ludC54IC09IF9tb3VzZURvd25YRGVsdGE7Ci0KLSAgICBbc2VsZiBfc2V0TmV3
VGltZUZvclRodW1iQ2VudGVyWDpwb2ludC54XTsKLX0KLQotQGVuZApJbmRleDogRXhhbXBsZXMv
TmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92
aWVQbHVnaW4ueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBFeGFtcGxl
cy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25N
b3ZpZVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg5NjUpCisr
KyBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRzY2FwZUNvcmVB
bmltYXRpb25Nb3ZpZVBsdWdpbi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShub25leGlzdGVu
dCkKQEAgLTEsMjc5ICswLDAgQEAKLS8vICEkKlVURjgqJCEKLXsKLQlhcmNoaXZlVmVyc2lvbiA9
IDE7Ci0JY2xhc3NlcyA9IHsKLQl9OwotCW9iamVjdFZlcnNpb24gPSA0NjsKLQlvYmplY3RzID0g
ewotCi0vKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCQkxQTYyNEU1OTBEQ0JDN0Y2
MDA2ODk4QzggLyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAqLzsgfTsKLQkJMUE2
MjUwNDIwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNjI1MDQxMERDQkM4MUIwMDY4OThD
OCAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07Ci0JCTFBODAwMDFCMEZEQjJDODUwMDBGMzY0NiAv
KiBNb3ZpZUNvbnRyb2xsZXJMYXllci5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE4MDAwMUEwRkRCMkM4NTAwMEYzNjQ2IC8qIE1vdmllQ29udHJvbGxl
ckxheWVyLm0gKi87IH07Ci0JCTFBODAwMTFBMEZEQjJDQjIwMDBGMzY0NiAvKiBQYXVzZS50aWZm
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTgwMDEx
NDBGREIyQ0IyMDAwRjM2NDYgLyogUGF1c2UudGlmZiAqLzsgfTsKLQkJMUE4MDAxMUIwRkRCMkNC
MjAwMEYzNjQ2IC8qIFBsYXkudGlmZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUE4MDAxMTUwRkRCMkNCMjAwMEYzNjQ2IC8qIFBsYXkudGlmZiAqLzsg
fTsKLQkJMUE4MDAxMUMwRkRCMkNCMjAwMEYzNjQ2IC8qIFNsaWRlclRyYWNrQ2VudGVyLnRpZmYg
aW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODAwMTE2
MEZEQjJDQjIwMDBGMzY0NiAvKiBTbGlkZXJUcmFja0NlbnRlci50aWZmICovOyB9OwotCQkxQTgw
MDExRDBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tMZWZ0LnRpZmYgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBODAwMTE3MEZEQjJDQjIwMDBG
MzY0NiAvKiBTbGlkZXJUcmFja0xlZnQudGlmZiAqLzsgfTsKLQkJMUE4MDAxMUUwRkRCMkNCMjAw
MEYzNjQ2IC8qIFNsaWRlclRyYWNrUmlnaHQudGlmZiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MDAxMTgwRkRCMkNCMjAwMEYzNjQ2IC8qIFNsaWRl
clRyYWNrUmlnaHQudGlmZiAqLzsgfTsKLQkJMUE4MDAxMUYwRkRCMkNCMjAwMEYzNjQ2IC8qIFRo
dW1iLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBODAwMTE5MEZEQjJDQjIwMDBGMzY0NiAvKiBUaHVtYi50aWZmICovOyB9OwotCQkxQTgwMDE0
NzBGREIyRTY1MDAwRjM2NDYgLyogUVRLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4MDAxNDYwRkRCMkU2NTAwMEYzNjQ2IC8q
IFFUS2l0LmZyYW1ld29yayAqLzsgfTsKLQkJMUE4Qzg3QUEwRUYyRkJCMzAwM0Y2RTgxIC8qIFF1
YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE4Qzg3QTkwRUYyRkJCMzAwM0Y2RTgxIC8qIFF1YXJ0ekNvcmUuZnJhbWV3
b3JrICovOyB9OwotCQk4RDVCNDlBODA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmlu
Z3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhENUI0
OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLzsgfTsKLS8qIEVuZCBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KLQkJMDg5QzE2N0VGRTg0MTI0MUMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ov
SW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNjI0RTU4
MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsg
cGF0aCA9IG1haW4ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE2MjUwNDEwRENC
QzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2Eu
ZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3
b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwotCQkxQTgwMDAxOTBGREIyQzg1MDAw
RjM2NDYgLyogTW92aWVDb250cm9sbGVyTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW92aWVDb250cm9sbGVyTGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUE4MDAwMUEwRkRCMkM4NTAwMEYzNjQ2IC8qIE1vdmllQ29udHJvbGxlckxheWVyLm0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IE1vdmllQ29udHJvbGxlckxheWVy
Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBODAwMTE0MEZEQjJDQjIwMDBGMzY0
NiAvKiBQYXVzZS50aWZmICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gaW1hZ2UudGlmZjsgcGF0aCA9IFBhdXNlLnRpZmY7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFBODAwMTE1MEZEQjJDQjIwMDBGMzY0NiAvKiBQbGF5LnRpZmYgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBw
YXRoID0gUGxheS50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTgwMDExNjBG
REIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tDZW50ZXIudGlmZiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSBTbGlk
ZXJUcmFja0NlbnRlci50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTgwMDEx
NzBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tMZWZ0LnRpZmYgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0gU2xp
ZGVyVHJhY2tMZWZ0LnRpZmY7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBODAwMTE4
MEZEQjJDQjIwMDBGMzY0NiAvKiBTbGlkZXJUcmFja1JpZ2h0LnRpZmYgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS50aWZmOyBwYXRoID0gU2xp
ZGVyVHJhY2tSaWdodC50aWZmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTgwMDEx
OTBGREIyQ0IyMDAwRjM2NDYgLyogVGh1bWIudGlmZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdlLnRpZmY7IHBhdGggPSBUaHVtYi50aWZmOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTgwMDE0NjBGREIyRTY1MDAwRjM2NDYgLyog
UVRLaXQuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRVEtpdC5mcmFtZXdvcms7IHBhdGgg
PSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RVEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUg
PSAiPGFic29sdXRlPiI7IH07Ci0JCTFBOEM4N0E5MEVGMkZCQjMwMDNGNkU4MSAvKiBRdWFydHpD
b3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5mcmFtZXdvcms7IHBh
dGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yazsgc291
cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKLQkJOEQ1NzYzMTYwNDg2NzdFQTAwRUE3N0NEIC8q
IE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luLnBsdWdpbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4ucGx1
Z2luOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQk4RDU3NjMxNzA0ODY3
N0VBMDBFQTc3Q0QgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Q7IHBhdGggPSBJ
bmZvLnBsaXN0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCi0JCThENTc2MzEzMDQ4Njc3RUEwMEVBNzdDRCAvKiBGcmFtZXdvcmtzICovID0gewot
CQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMUE2MjUwNDIwRENCQzgxQjAwNjg5OEM4IC8q
IENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJCTFBODAwMTQ3MEZEQjJFNjUw
MDBGMzY0NiAvKiBRVEtpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQkxQThDODdB
QTBFRjJGQkIzMDAzRjZFODEgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJ
fTsKLS8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2lu
IFBCWEdyb3VwIHNlY3Rpb24gKi8KLQkJMDg5QzE2NkFGRTg0MTIwOUMwMkFBQzA3IC8qIE5ldHNj
YXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQkwOEZCNzdBRkZFODQxNzNEQzAyQUFDMDcgLyogU291cmNlICov
LAotCQkJCTA4OUMxNjdDRkU4NDEyNDFDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJMDg5
QzE2NzFGRTg0MTIwOUMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmll
cyAqLywKLQkJCQkxOUMyOEZCNkZFOUQ1MkIyMTFDQTJDQkIgLyogUHJvZHVjdHMgKi8sCi0JCQkJ
MUE4MDAxNDYwRkRCMkU2NTAwMEYzNjQ2IC8qIFFUS2l0LmZyYW1ld29yayAqLywKLQkJCSk7Ci0J
CQluYW1lID0gTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW47Ci0JCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwotCQl9OwotCQkwODlDMTY3MUZFODQxMjA5QzAyQUFDMDcgLyogRXh0ZXJu
YWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJh
bWV3b3JrICovLAotCQkJCTFBOEM4N0E5MEVGMkZCQjMwMDNGNkU4MSAvKiBRdWFydHpDb3JlLmZy
YW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExp
YnJhcmllcyI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwODlDMTY3Q0ZF
ODQxMjQxQzAyQUFDMDcgLyogUmVzb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQk4RDU3NjMxNzA0ODY3N0VBMDBFQTc3Q0QgLyogSW5mby5wbGlz
dCAqLywKLQkJCQk4RDVCNDlBNzA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3Mg
Ki8sCi0JCQkJMUE4MDAxMTQwRkRCMkNCMjAwMEYzNjQ2IC8qIFBhdXNlLnRpZmYgKi8sCi0JCQkJ
MUE4MDAxMTUwRkRCMkNCMjAwMEYzNjQ2IC8qIFBsYXkudGlmZiAqLywKLQkJCQkxQTgwMDExNjBG
REIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tDZW50ZXIudGlmZiAqLywKLQkJCQkxQTgwMDEx
NzBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tMZWZ0LnRpZmYgKi8sCi0JCQkJMUE4MDAx
MTgwRkRCMkNCMjAwMEYzNjQ2IC8qIFNsaWRlclRyYWNrUmlnaHQudGlmZiAqLywKLQkJCQkxQTgw
MDExOTBGREIyQ0IyMDAwRjM2NDYgLyogVGh1bWIudGlmZiAqLywKLQkJCSk7Ci0JCQluYW1lID0g
UmVzb3VyY2VzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDhGQjc3QUZG
RTg0MTczREMwMkFBQzA3IC8qIFNvdXJjZSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8qIG1haW4ubSAqLywK
LQkJCQkxQTgwMDAxOTBGREIyQzg1MDAwRjM2NDYgLyogTW92aWVDb250cm9sbGVyTGF5ZXIuaCAq
LywKLQkJCQkxQTgwMDAxQTBGREIyQzg1MDAwRjM2NDYgLyogTW92aWVDb250cm9sbGVyTGF5ZXIu
bSAqLywKLQkJCSk7Ci0JCQluYW1lID0gU291cmNlOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JCIC8qIFByb2R1Y3RzICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4RDU3NjMxNjA0ODY3N0VB
MDBFQTc3Q0QgLyogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4ucGx1Z2luICovLAot
CQkJKTsKLQkJCW5hbWUgPSBQcm9kdWN0czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0J
CX07Ci0vKiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhOYXRpdmVUYXJn
ZXQgc2VjdGlvbiAqLwotCQk4RDU3NjMwRDA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVDb3Jl
QW5pbWF0aW9uTW92aWVQbHVnaW4gKi8gPSB7Ci0JCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7Ci0J
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5ODMwODkwMkM1MzAwOEE5RUZDIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJOZXRzY2FwZUNvcmVB
bmltYXRpb25Nb3ZpZVBsdWdpbiIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQk4RDU3NjMx
MTA0ODY3N0VBMDBFQTc3Q0QgLyogU291cmNlcyAqLywKLQkJCQk4RDU3NjMwRjA0ODY3N0VBMDBF
QTc3Q0QgLyogUmVzb3VyY2VzICovLAotCQkJCThENTc2MzEzMDQ4Njc3RUEwMEVBNzdDRCAvKiBG
cmFtZXdvcmtzICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5k
ZW5jaWVzID0gKAotCQkJKTsKLQkJCW5hbWUgPSBOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBs
dWdpbjsKLQkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9ICIkKEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7
Ci0JCQlwcm9kdWN0TmFtZSA9IE5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luOwotCQkJ
cHJvZHVjdFJlZmVyZW5jZSA9IDhENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZUNv
cmVBbmltYXRpb25Nb3ZpZVBsdWdpbi5wbHVnaW4gKi87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLmJ1bmRsZSI7Ci0JCX07Ci0vKiBFbmQgUEJYTmF0aXZlVGFyZ2V0
IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCi0JCTA4OUMxNjY5
RkU4NDEyMDlDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKLQkJCWlzYSA9IFBCWFBy
b2plY3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI5ODcwODkwMkM1MzAwOEE5
RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiTmV0c2NhcGVD
b3JlQW5pbWF0aW9uTW92aWVQbHVnaW4iICovOwotCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAi
WGNvZGUgMy4yIjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKLQkJCWhhc1NjYW5u
ZWRGb3JFbmNvZGluZ3MgPSAxOwotCQkJa25vd25SZWdpb25zID0gKAotCQkJCUVuZ2xpc2gsCi0J
CQkJSmFwYW5lc2UsCi0JCQkJRnJlbmNoLAotCQkJCUdlcm1hbiwKLQkJCSk7Ci0JCQltYWluR3Jv
dXAgPSAwODlDMTY2QUZFODQxMjA5QzAyQUFDMDcgLyogTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92
aWVQbHVnaW4gKi87Ci0JCQlwcm9qZWN0RGlyUGF0aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAi
IjsKLQkJCXRhcmdldHMgPSAoCi0JCQkJOEQ1NzYzMEQwNDg2NzdFQTAwRUE3N0NEIC8qIE5ldHNj
YXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luICovLAotCQkJKTsKLQkJfTsKLS8qIEVuZCBQQlhQ
cm9qZWN0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCi0JCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBSZXNvdXJjZXMgKi8gPSB7Ci0J
CQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCThENUI0OUE4MDQ4NjdGRDMwMDBFNDhEQSAvKiBJ
bmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJMUE4MDAxMUEwRkRCMkNCMjAw
MEYzNjQ2IC8qIFBhdXNlLnRpZmYgaW4gUmVzb3VyY2VzICovLAotCQkJCTFBODAwMTFCMEZEQjJD
QjIwMDBGMzY0NiAvKiBQbGF5LnRpZmYgaW4gUmVzb3VyY2VzICovLAotCQkJCTFBODAwMTFDMEZE
QjJDQjIwMDBGMzY0NiAvKiBTbGlkZXJUcmFja0NlbnRlci50aWZmIGluIFJlc291cmNlcyAqLywK
LQkJCQkxQTgwMDExRDBGREIyQ0IyMDAwRjM2NDYgLyogU2xpZGVyVHJhY2tMZWZ0LnRpZmYgaW4g
UmVzb3VyY2VzICovLAotCQkJCTFBODAwMTFFMEZEQjJDQjIwMDBGMzY0NiAvKiBTbGlkZXJUcmFj
a1JpZ2h0LnRpZmYgaW4gUmVzb3VyY2VzICovLAotCQkJCTFBODAwMTFGMEZEQjJDQjIwMDBGMzY0
NiAvKiBUaHVtYi50aWZmIGluIFJlc291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhSZXNvdXJjZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwotCQk4RDU3NjMxMTA0ODY3N0VBMDBFQTc3Q0QgLyogU291cmNlcyAqLyA9IHsKLQkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKLQkJCWZpbGVzID0gKAotCQkJCTFBNjI0RTU5MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0g
aW4gU291cmNlcyAqLywKLQkJCQkxQTgwMDAxQjBGREIyQzg1MDAwRjM2NDYgLyogTW92aWVDb250
cm9sbGVyTGF5ZXIubSBpbiBTb3VyY2VzICovLAotCQkJKTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYVmFyaWFudEdyb3VwIHNlY3Rpb24gKi8KLQkJOEQ1
QjQ5QTcwNDg2N0ZEMzAwMEU0OERBIC8qIEluZm9QbGlzdC5zdHJpbmdzICovID0gewotCQkJaXNh
ID0gUEJYVmFyaWFudEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMDg5QzE2N0VGRTg0MTI0
MUMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8sCi0JCQkpOwotCQkJbmFtZSA9IEluZm9QbGlzdC5zdHJp
bmdzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLS8qIEVuZCBQQlhWYXJpYW50
R3JvdXAgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9u
ICovCi0JCTE0OUMyOTg0MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLyA9IHsKLQkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlDT1BZX1BI
QVNFX1NUUklQID0gTk87Ci0JCQkJR0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZnVsbDsKLQkJCQlH
Q0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKLQkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUg
PSBZRVM7Ci0JCQkJR0NDX01PREVMX1RVTklORyA9IEc1OwotCQkJCUdDQ19PUFRJTUlaQVRJT05f
TEVWRUwgPSAwOwotCQkJCUlORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKLQkJCQlJTlNUQUxM
X1BBVEggPSAiJChIT01FKS9MaWJyYXJ5L0J1bmRsZXMiOwotCQkJCVBST0RVQ1RfTkFNRSA9IE5l
dHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luOwotCQkJCVdSQVBQRVJfRVhURU5TSU9OID0g
cGx1Z2luOwotCQkJCVpFUk9fTElOSyA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0J
CX07Ci0JCTE0OUMyOTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovID0gewotCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFSQ0hT
ID0gKAotCQkJCQlwcGMsCi0JCQkJCWkzODYsCi0JCQkJKTsKLQkJCQlHQ0NfREVCVUdHSU5HX1NZ
TUJPTFMgPSBmdWxsOwotCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IE5POwot
CQkJCUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKLQkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0g
MDsKLQkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7Ci0JCQkJSU5TVEFMTF9QQVRIID0g
IiQoSE9NRSkvTGlicmFyeS9CdW5kbGVzIjsKLQkJCQlQUk9EVUNUX05BTUUgPSBOZXRzY2FwZUNv
cmVBbmltYXRpb25Nb3ZpZVBsdWdpbjsKLQkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IHBsdWdpbjsK
LQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJMTQ5QzI5ODgwODkwMkM1MzAwOEE5
RUZDIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQli
dWlsZFNldHRpbmdzID0gewotCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklU
KSI7Ci0JCQkJQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUX1BSRV9YQ09ERV8zXzEgPSAicHBjIGkz
ODYgcHBjNjQgeDg2XzY0IjsKLQkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGM5OTsKLQkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7Ci0JCQkJUFJFQklORElORyA9IE5POwotCQkJCVNES1JPT1QgPSBtYWNv
c3gxMC42OwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJMTQ5QzI5ODkwODkwMkM1
MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQVJDSFMgPSBpMzg2OwotCQkJCUFSQ0hTX1NU
QU5EQVJEXzMyXzY0X0JJVF9QUkVfWENPREVfM18xID0gInBwYyBpMzg2IHBwYzY0IHg4Nl82NCI7
Ci0JCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5V
U0VEX1ZBUklBQkxFID0gWUVTOwotCQkJCVBSRUJJTkRJTkcgPSBOTzsKLQkJCX07Ci0JCQluYW1l
ID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICov
Ci0KLS8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwotCQkxNDlDMjk4MzA4
OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIk5ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luIiAqLyA9IHsKLQkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAotCQkJCTE0
OUMyOTg0MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKLQkJCQkxNDlDMjk4NTA4OTAyQzUz
MDA4QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOwotCQl9
OwotCQkxNDlDMjk4NzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhQcm9qZWN0ICJOZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbiIgKi8gPSB7
Ci0JCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwotCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKLQkJCQkxNDlDMjk4ODA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8sCi0JCQkJMTQ5QzI5
ODkwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8sCi0JCQkpOwotCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOwotCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVs
ZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KLQl9Owot
CXJvb3RPYmplY3QgPSAwODlDMTY2OUZFODQxMjA5QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87Ci19CkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9O
ZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi54Y29kZXByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
RXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTmV0c2NhcGVDb3JlQW5p
bWF0aW9uTW92aWVQbHVnaW4ueGNvZGVwcm9qCShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxl
cy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25N
b3ZpZVBsdWdpbi54Y29kZXByb2oJKG5vbmV4aXN0ZW50KQoKUHJvcGVydHkgY2hhbmdlcyBvbjog
RXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vTmV0c2NhcGVDb3JlQW5p
bWF0aW9uTW92aWVQbHVnaW4ueGNvZGVwcm9qCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmlnbm9y
ZQojIyAtMSw1ICswLDAgIyMKLSoubW9kZSoKLSoucGJ4dXNlcgotKi5wZXJzcGVjdGl2ZSoKLXBy
b2plY3QueGN3b3Jrc3BhY2UKLXhjdXNlcmRhdGEKSW5kZXg6IEV4YW1wbGVzL05ldHNjYXBlQ29y
ZUFuaW1hdGlvbk1vdmllUGx1Z2luL1BhdXNlLnRpZmYKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxh
eTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogRXhhbXBsZXMvTmV0c2NhcGVD
b3JlQW5pbWF0aW9uTW92aWVQbHVnaW4vUGF1c2UudGlmZgpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IEV4YW1wbGVzL05ldHNjYXBlQ29yZUFu
aW1hdGlvbk1vdmllUGx1Z2luL1BsYXkudGlmZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBm
aWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24v
b2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVB
bmltYXRpb25Nb3ZpZVBsdWdpbi9QbGF5LnRpZmYKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRp
b25Nb3ZpZVBsdWdpbi9TbGlkZXJUcmFja0NlbnRlci50aWZmCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IEV4YW1wbGVzL05ldHNj
YXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1NsaWRlclRyYWNrQ2VudGVyLnRpZmYKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWFwcGxpY2F0aW9uL29j
dGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBFeGFtcGxl
cy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9TbGlkZXJUcmFja0xlZnQudGlmZgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpz
dm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9TbGlkZXJUcmFj
a0xlZnQudGlmZgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAj
IwotYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IEV4YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL1NsaWRl
clRyYWNrUmlnaHQudGlmZgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25Nb3Zp
ZVBsdWdpbi9TbGlkZXJUcmFja1JpZ2h0LnRpZmYKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRp
b25Nb3ZpZVBsdWdpbi9UaHVtYi50aWZmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IEV4YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1h
dGlvbk1vdmllUGx1Z2luL1RodW1iLnRpZmYKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25N
b3ZpZVBsdWdpbi9tYWluLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5p
bWF0aW9uTW92aWVQbHVnaW4vbWFpbi5tCShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9O
ZXRzY2FwZUNvcmVBbmltYXRpb25Nb3ZpZVBsdWdpbi9tYWluLm0JKG5vbmV4aXN0ZW50KQpAQCAt
MSwzOTMgKzAsMCBAQAotLyoKLSAgICAgRmlsZTogTW92aWVDb250cm9sbGVyTGF5ZXIubQotIAot
IERpc2NsYWltZXI6IElNUE9SVEFOVDogIFRoaXMgQXBwbGUgc29mdHdhcmUgaXMgc3VwcGxpZWQg
dG8geW91IGJ5IEFwcGxlCi0gSW5jLiAoIkFwcGxlIikgaW4gY29uc2lkZXJhdGlvbiBvZiB5b3Vy
IGFncmVlbWVudCB0byB0aGUgZm9sbG93aW5nCi0gdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5zdGFs
bGF0aW9uLCBtb2RpZmljYXRpb24gb3IgcmVkaXN0cmlidXRpb24gb2YKLSB0aGlzIEFwcGxlIHNv
ZnR3YXJlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UgdGVybXMuICBJZiB5b3UgZG8K
LSBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcywgcGxlYXNlIGRvIG5vdCB1c2UsIGluc3RhbGws
IG1vZGlmeSBvcgotIHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgotIAotIEluIGNv
bnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0
ZXJtcywgYW5kCi0gc3ViamVjdCB0byB0aGVzZSB0ZXJtcywgQXBwbGUgZ3JhbnRzIHlvdSBhIHBl
cnNvbmFsLCBub24tZXhjbHVzaXZlCi0gbGljZW5zZSwgdW5kZXIgQXBwbGUncyBjb3B5cmlnaHRz
IGluIHRoaXMgb3JpZ2luYWwgQXBwbGUgc29mdHdhcmUgKHRoZQotICJBcHBsZSBTb2Z0d2FyZSIp
LCB0byB1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5IGFuZCByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlCi0g
U29mdHdhcmUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29y
IGJpbmFyeSBmb3JtczsKLSBwcm92aWRlZCB0aGF0IGlmIHlvdSByZWRpc3RyaWJ1dGUgdGhlIEFw
cGxlIFNvZnR3YXJlIGluIGl0cyBlbnRpcmV0eSBhbmQKLSB3aXRob3V0IG1vZGlmaWNhdGlvbnMs
IHlvdSBtdXN0IHJldGFpbiB0aGlzIG5vdGljZSBhbmQgdGhlIGZvbGxvd2luZwotIHRleHQgYW5k
IGRpc2NsYWltZXJzIGluIGFsbCBzdWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29m
dHdhcmUuCi0gTmVpdGhlciB0aGUgbmFtZSwgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcyBvciBs
b2dvcyBvZiBBcHBsZSBJbmMuIG1heQotIGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGUgQXBwbGUgU29mdHdhcmUKLSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBmcm9tIEFwcGxlLiAgRXhjZXB0IGFzCi0gZXhwcmVz
c2x5IHN0YXRlZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBl
eHByZXNzIG9yCi0gaW1wbGllZCwgYXJlIGdyYW50ZWQgYnkgQXBwbGUgaGVyZWluLCBpbmNsdWRp
bmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueQotIHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5m
cmluZ2VkIGJ5IHlvdXIgZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlcgotIHdvcmtzIGluIHdo
aWNoIHRoZSBBcHBsZSBTb2Z0d2FyZSBtYXkgYmUgaW5jb3Jwb3JhdGVkLgotIAotIFRoZSBBcHBs
ZSBTb2Z0d2FyZSBpcyBwcm92aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQ
TEUKLSBNQUtFUyBOTyBXQVJSQU5USUVTLCBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBX
SVRIT1VUIExJTUlUQVRJT04KLSBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5H
RU1FTlQsIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUwotIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSwgUkVHQVJESU5HIFRIRSBBUFBMRSBTT0ZUV0FSRSBPUiBJVFMgVVNFIEFORAotIE9QRVJB
VElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElPTiBXSVRIIFlPVVIgUFJPRFVDVFMuCi0gCi0gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwKLSBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIElOVEVSUlVQ
VElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFLCBSRVBST0RVQ1RJT04sCi0g
TU9ESUZJQ0FUSU9OIEFORC9PUiBESVNUUklCVVRJT04gT0YgVEhFIEFQUExFIFNPRlRXQVJFLCBI
T1dFVkVSIENBVVNFRAotIEFORCBXSEVUSEVSIFVOREVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UpLAotIFNUUklDVCBMSUFCSUxJVFkgT1IgT1RIRVJXSVNF
LCBFVkVOIElGIEFQUExFIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFCi0gUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gCi0gQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KLSAKLSAqLwotCi0jaW1wb3J0IDxXZWJLaXQvbnBhcGkuaD4KLSNpbXBvcnQg
PFdlYktpdC9ucGZ1bmN0aW9ucy5oPgotI2ltcG9ydCA8V2ViS2l0L25wcnVudGltZS5oPgotCi0j
aW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgPFFUS2l0L1FUS2l0Lmg+
Ci0KLSNpbXBvcnQgIk1vdmllQ29udHJvbGxlckxheWVyLmgiCi0KLS8vIEJyb3dzZXIgZnVuY3Rp
b24gdGFibGUKLXN0YXRpYyBOUE5ldHNjYXBlRnVuY3MqIGJyb3dzZXI7Ci0KLS8vIFN0cnVjdHVy
ZSBmb3IgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLXR5cGVkZWYgc3RydWN0IFBsdWdpbk9iamVjdAot
ewotICAgIE5QUCBucHA7Ci0gICAgCi0gICAgTlBXaW5kb3cgd2luZG93OwotICAgIAotICAgIENB
TGF5ZXIgKnJvb3RMYXllcjsKLSAgICBNb3ZpZUNvbnRyb2xsZXJMYXllciAqY29udHJvbGxlckxh
eWVyOwotICAgIFFUTW92aWVMYXllciAqbW92aWVMYXllcjsKLSAgICAKLSAgICBDQUxheWVyICpt
b3VzZURvd25MYXllcjsKLSAgICAKLSAgICBOU1VSTCAqbW92aWVVUkw7Ci0gICAgUVRNb3ZpZSAq
bW92aWU7Ci19IFBsdWdpbk9iamVjdDsKLQotTlBFcnJvciBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1
Z2luVHlwZSwgTlBQIGluc3RhbmNlLCB1aW50MTZfdCBtb2RlLCBpbnQxNl90IGFyZ2MsIGNoYXIq
IGFyZ25bXSwgY2hhciogYXJndltdLCBOUFNhdmVkRGF0YSogc2F2ZWQpOwotTlBFcnJvciBOUFBf
RGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2ZSk7Ci1OUEVycm9yIE5QUF9T
ZXRXaW5kb3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKLU5QRXJyb3IgTlBQX05l
d1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwgTlBTdHJlYW0qIHN0cmVhbSwg
TlBCb29sIHNlZWthYmxlLCB1aW50MTYqIHN0eXBlKTsKLU5QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJl
YW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFzb24pOwotaW50
MzJfdCBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0pOwotaW50
MzJfdCBOUFBfV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMl90IG9m
ZnNldCwgaW50MzJfdCBsZW4sIHZvaWQqIGJ1ZmZlcik7Ci12b2lkIE5QUF9TdHJlYW1Bc0ZpbGUo
TlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBmbmFtZSk7Ci12b2lk
IE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQpOwotaW50MTZf
dCBOUFBfSGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBldmVudCk7Ci12b2lkIE5QUF9V
UkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiBVUkwsIE5QUmVhc29uIHJlYXNvbiwg
dm9pZCogbm90aWZ5RGF0YSk7Ci1OUEVycm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5Q
UFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yIE5QUF9TZXRWYWx1ZShO
UFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci0KLSNwcmFn
bWEgZXhwb3J0IG9uCi0vLyBNYWNoLW8gZW50cnkgcG9pbnRzCi1OUEVycm9yIE5QX0luaXRpYWxp
emUoTlBOZXRzY2FwZUZ1bmNzICpicm93c2VyRnVuY3MpOwotTlBFcnJvciBOUF9HZXRFbnRyeVBv
aW50cyhOUFBsdWdpbkZ1bmNzICpwbHVnaW5GdW5jcyk7Ci12b2lkIE5QX1NodXRkb3duKHZvaWQp
OwotI3ByYWdtYSBleHBvcnQgb2ZmCi0KLU5QRXJyb3IgTlBfSW5pdGlhbGl6ZShOUE5ldHNjYXBl
RnVuY3MqIGJyb3dzZXJGdW5jcykKLXsKLSAgICBicm93c2VyID0gYnJvd3NlckZ1bmNzOwotICAg
IHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBFcnJvciBOUF9HZXRFbnRyeVBvaW50cyhO
UFBsdWdpbkZ1bmNzKiBwbHVnaW5GdW5jcykKLXsKLSAgICBwbHVnaW5GdW5jcy0+dmVyc2lvbiA9
IDExOwotICAgIHBsdWdpbkZ1bmNzLT5zaXplID0gc2l6ZW9mKHBsdWdpbkZ1bmNzKTsKLSAgICBw
bHVnaW5GdW5jcy0+bmV3cCA9IE5QUF9OZXc7Ci0gICAgcGx1Z2luRnVuY3MtPmRlc3Ryb3kgPSBO
UFBfRGVzdHJveTsKLSAgICBwbHVnaW5GdW5jcy0+c2V0d2luZG93ID0gTlBQX1NldFdpbmRvdzsK
LSAgICBwbHVnaW5GdW5jcy0+bmV3c3RyZWFtID0gTlBQX05ld1N0cmVhbTsKLSAgICBwbHVnaW5G
dW5jcy0+ZGVzdHJveXN0cmVhbSA9IE5QUF9EZXN0cm95U3RyZWFtOwotICAgIHBsdWdpbkZ1bmNz
LT5hc2ZpbGUgPSBOUFBfU3RyZWFtQXNGaWxlOwotICAgIHBsdWdpbkZ1bmNzLT53cml0ZXJlYWR5
ID0gTlBQX1dyaXRlUmVhZHk7Ci0gICAgcGx1Z2luRnVuY3MtPndyaXRlID0gKE5QUF9Xcml0ZVBy
b2NQdHIpTlBQX1dyaXRlOwotICAgIHBsdWdpbkZ1bmNzLT5wcmludCA9IE5QUF9QcmludDsKLSAg
ICBwbHVnaW5GdW5jcy0+ZXZlbnQgPSBOUFBfSGFuZGxlRXZlbnQ7Ci0gICAgcGx1Z2luRnVuY3Mt
PnVybG5vdGlmeSA9IE5QUF9VUkxOb3RpZnk7Ci0gICAgcGx1Z2luRnVuY3MtPmdldHZhbHVlID0g
TlBQX0dldFZhbHVlOwotICAgIHBsdWdpbkZ1bmNzLT5zZXR2YWx1ZSA9IE5QUF9TZXRWYWx1ZTsK
LSAgICAKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLXZvaWQgTlBfU2h1dGRvd24o
dm9pZCkKLXsKLQotfQotCi1OUEVycm9yIE5QUF9OZXcoTlBNSU1FVHlwZSBwbHVnaW5UeXBlLCBO
UFAgaW5zdGFuY2UsIHVpbnQxNl90IG1vZGUsIGludDE2X3QgYXJnYywgY2hhciogYXJnbltdLCBj
aGFyKiBhcmd2W10sIE5QU2F2ZWREYXRhKiBzYXZlZCkKLXsKLSAgICAvLyBDcmVhdGUgcGVyLWlu
c3RhbmNlIHN0b3JhZ2UKLSAgICBQbHVnaW5PYmplY3QgKm9iaiA9IChQbHVnaW5PYmplY3QgKilt
YWxsb2Moc2l6ZW9mKFBsdWdpbk9iamVjdCkpOwotICAgIGJ6ZXJvKG9iaiwgc2l6ZW9mKFBsdWdp
bk9iamVjdCkpOwotICAgIAotICAgIG9iai0+bnBwID0gaW5zdGFuY2U7Ci0gICAgaW5zdGFuY2Ut
PnBkYXRhID0gb2JqOwotICAgIAotICAgIC8vIEFzayB0aGUgYnJvd3NlciBpZiBpdCBzdXBwb3J0
cyB0aGUgQ29yZSBBbmltYXRpb24gZHJhd2luZyBtb2RlbAotICAgIE5QQm9vbCBzdXBwb3J0c0Nv
cmVBbmltYXRpb247Ci0gICAgaWYgKGJyb3dzZXItPmdldHZhbHVlKGluc3RhbmNlLCBOUE5Wc3Vw
cG9ydHNDb3JlQW5pbWF0aW9uQm9vbCwgJnN1cHBvcnRzQ29yZUFuaW1hdGlvbikgIT0gTlBFUlJf
Tk9fRVJST1IpCi0gICAgICAgIHN1cHBvcnRzQ29yZUFuaW1hdGlvbiA9IEZBTFNFOwotICAgIAot
ICAgIGlmICghc3VwcG9ydHNDb3JlQW5pbWF0aW9uKQotICAgICAgICByZXR1cm4gTlBFUlJfSU5D
T01QQVRJQkxFX1ZFUlNJT05fRVJST1I7Ci0gICAgCi0gICAgLy8gSWYgdGhlIGJyb3dzZXIgc3Vw
cG9ydHMgdGhlIENvcmUgQW5pbWF0aW9uIGRyYXdpbmcgbW9kZWwsIGVuYWJsZSBpdC4KLSAgICBi
cm93c2VyLT5zZXR2YWx1ZShpbnN0YW5jZSwgTlBQVnBsdWdpbkRyYXdpbmdNb2RlbCwgKHZvaWQg
KilOUERyYXdpbmdNb2RlbENvcmVBbmltYXRpb24pOwotCi0gICAgLy8gSWYgdGhlIGJyb3dzZXIg
c3VwcG9ydHMgdGhlIENvY29hIGV2ZW50IG1vZGVsLCBlbmFibGUgaXQuCi0gICAgTlBCb29sIHN1
cHBvcnRzQ29jb2E7Ci0gICAgaWYgKGJyb3dzZXItPmdldHZhbHVlKGluc3RhbmNlLCBOUE5Wc3Vw
cG9ydHNDb2NvYUJvb2wsICZzdXBwb3J0c0NvY29hKSAhPSBOUEVSUl9OT19FUlJPUikKLSAgICAg
ICAgc3VwcG9ydHNDb2NvYSA9IEZBTFNFOwotICAgIAotICAgIGlmICghc3VwcG9ydHNDb2NvYSkK
LSAgICAgICAgcmV0dXJuIE5QRVJSX0lOQ09NUEFUSUJMRV9WRVJTSU9OX0VSUk9SOwotICAgIAot
ICAgIGJyb3dzZXItPnNldHZhbHVlKGluc3RhbmNlLCBOUFBWcGx1Z2luRXZlbnRNb2RlbCwgKHZv
aWQgKilOUEV2ZW50TW9kZWxDb2NvYSk7Ci0gICAgCi0gICAgZm9yIChpbnQxNl90IGkgPSAwOyBp
IDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmIChzdHJjYXNlY21wKGFyZ25baV0sICJtb3ZpZXVy
bCIpID09IDApIHsKLSAgICAgICAgICAgIE5TU3RyaW5nICp1cmxTdHJpbmcgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndltpXV07Ci0gICAgICAgICAgICBpZiAodXJsU3RyaW5n
KSAKLSAgICAgICAgICAgICAgICBvYmotPm1vdmllVVJMID0gW1tOU1VSTCBVUkxXaXRoU3RyaW5n
OnVybFN0cmluZ10gcmV0YWluXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAg
ICAgIAotICAgIH0KLSAgICAKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJy
b3IgTlBQX0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpCi17Ci0gICAg
Ly8gRnJlZSBwZXItaW5zdGFuY2Ugc3RvcmFnZQotICAgIFBsdWdpbk9iamVjdCAqb2JqID0gaW5z
dGFuY2UtPnBkYXRhOwotCi0gICAgW29iai0+bW92aWUgc3RvcF07Ci0gICAgW29iai0+cm9vdExh
eWVyIHJlbGVhc2VdOwotICAgIAotICAgIGZyZWUob2JqKTsKLSAgICAKLSAgICByZXR1cm4gTlBF
UlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJyb3IgTlBQX1NldFdpbmRvdyhOUFAgaW5zdGFuY2UsIE5Q
V2luZG93KiB3aW5kb3cpCi17Ci0gICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5jZS0+cGRh
dGE7Ci0gICAgb2JqLT53aW5kb3cgPSAqd2luZG93OwotCi0gICAgcmV0dXJuIE5QRVJSX05PX0VS
Uk9SOwotfQotIAotCi1OUEVycm9yIE5QUF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVU
eXBlIHR5cGUsIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJsZSwgdWludDE2KiBzdHlw
ZSkKLXsKLSAgICAqc3R5cGUgPSBOUF9BU0ZJTEVPTkxZOwotICAgIHJldHVybiBOUEVSUl9OT19F
UlJPUjsKLX0KLQotTlBFcnJvciBOUFBfRGVzdHJveVN0cmVhbShOUFAgaW5zdGFuY2UsIE5QU3Ry
ZWFtKiBzdHJlYW0sIE5QUmVhc29uIHJlYXNvbikKLXsKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7Ci19Ci0KLWludDMyX3QgTlBQX1dyaXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSog
c3RyZWFtKQotewotICAgIHJldHVybiAwOwotfQotCi1pbnQzMl90IE5QUF9Xcml0ZShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyX3Qgb2Zmc2V0LCBpbnQzMl90IGxlbiwgdm9p
ZCogYnVmZmVyKQotewotICAgIHJldHVybiAwOwotfQotCi12b2lkIE5QUF9TdHJlYW1Bc0ZpbGUo
TlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBjb25zdCBjaGFyKiBmbmFtZSkKLXsKLX0K
LQotdm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KQot
ewotCi19Ci0KLXN0YXRpYyB2b2lkIGhhbmRsZU1vdXNlRG93bihQbHVnaW5PYmplY3QgKm9iaiwg
TlBDb2NvYUV2ZW50ICpldmVudCkKLXsKLSAgICBDR1BvaW50IHBvaW50ID0gQ0dQb2ludE1ha2Uo
ZXZlbnQtPmRhdGEubW91c2UucGx1Z2luWCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEZsaXAgdGhlIHkgY29vcmRpbmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmotPndpbmRvdy5oZWlnaHQgLSBldmVudC0+ZGF0YS5tb3VzZS5wbHVnaW5ZKTsKLSAg
ICAKLSAgICBvYmotPm1vdXNlRG93bkxheWVyID0gW29iai0+cm9vdExheWVyIGhpdFRlc3Q6cG9p
bnRdOwotICAgIGlmIChvYmotPm1vdXNlRG93bkxheWVyID09IG9iai0+Y29udHJvbGxlckxheWVy
KSB7Ci0gICAgICAgIFtvYmotPmNvbnRyb2xsZXJMYXllciBoYW5kbGVNb3VzZURvd246W29iai0+
cm9vdExheWVyIGNvbnZlcnRQb2ludDpwb2ludCB0b0xheWVyOm9iai0+Y29udHJvbGxlckxheWVy
XV07Ci0gICAgICAgIHJldHVybjsKLSAgICB9ICAgIAotfQotCi1zdGF0aWMgdm9pZCB0b2dnbGVQ
bGF5UGF1c2UoUGx1Z2luT2JqZWN0ICpvYmopCi17Ci0gICAgaWYgKCFvYmotPm1vdmllKQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgaWYgKFtvYmotPm1vdmllIHJhdGVdID09IDApCi0gICAg
ICAgIFtvYmotPm1vdmllIHBsYXldOwotICAgIGVsc2UKLSAgICAgICAgW29iai0+bW92aWUgc3Rv
cF07Ci0KLX0KLQotc3RhdGljIHZvaWQgaGFuZGxlTW91c2VVcChQbHVnaW5PYmplY3QgKm9iaiwg
TlBDb2NvYUV2ZW50ICpldmVudCkKLXsKLSAgICBDR1BvaW50IHBvaW50ID0gQ0dQb2ludE1ha2Uo
ZXZlbnQtPmRhdGEubW91c2UucGx1Z2luWCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEZsaXAgdGhlIHkgY29vcmRpbmF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmotPndpbmRvdy5oZWlnaHQgLSBldmVudC0+ZGF0YS5tb3VzZS5wbHVnaW5ZKTsKLQot
ICAgIENBTGF5ZXIgKm1vdXNlRG93bkxheWVyID0gb2JqLT5tb3VzZURvd25MYXllcjsKLSAgICBv
YmotPm1vdXNlRG93bkxheWVyID0gbmlsOwotICAgIGlmIChtb3VzZURvd25MYXllciA9PSBvYmot
PmNvbnRyb2xsZXJMYXllcikgewotICAgICAgICBbb2JqLT5jb250cm9sbGVyTGF5ZXIgaGFuZGxl
TW91c2VVcDpbb2JqLT5yb290TGF5ZXIgY29udmVydFBvaW50OnBvaW50IHRvTGF5ZXI6b2JqLT5j
b250cm9sbGVyTGF5ZXJdXTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotc3RhdGljIHZv
aWQgaGFuZGxlTW91c2VEcmFnZ2VkKFBsdWdpbk9iamVjdCAqb2JqLCBOUENvY29hRXZlbnQgKmV2
ZW50KQotewotICAgIENHUG9pbnQgcG9pbnQgPSBDR1BvaW50TWFrZShldmVudC0+ZGF0YS5tb3Vz
ZS5wbHVnaW5YLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmxpcCB0aGUg
eSBjb29yZGluYXRlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai0+d2luZG93
LmhlaWdodCAtIGV2ZW50LT5kYXRhLm1vdXNlLnBsdWdpblkpOwotICAgIAotICAgIGlmIChvYmot
Pm1vdXNlRG93bkxheWVyID09IG9iai0+Y29udHJvbGxlckxheWVyKSB7Ci0gICAgICAgIFtvYmot
PmNvbnRyb2xsZXJMYXllciBoYW5kbGVNb3VzZURyYWdnZWQ6W29iai0+cm9vdExheWVyIGNvbnZl
cnRQb2ludDpwb2ludCB0b0xheWVyOm9iai0+Y29udHJvbGxlckxheWVyXV07Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9ICAgIAotfQotCi1zdGF0aWMgdm9pZCBoYW5kbGVNb3VzZUVudGVyZWQoUGx1
Z2luT2JqZWN0ICpvYmopCi17Ci0gICAgLy8gU2hvdyB0aGUgY29udHJvbGxlciBsYXllci4KLSAg
ICBvYmotPmNvbnRyb2xsZXJMYXllci5vcGFjaXR5ID0gMS4wOwotfQotCi1zdGF0aWMgdm9pZCBo
YW5kbGVNb3VzZUV4aXRlZChQbHVnaW5PYmplY3QgKm9iaikKLXsKLSAgICAvLyBIaWRlIHRoZSBj
b250cm9sbGVyIGxheWVyIGlmIHRoZSBtb3ZpZSBpcyBwbGF5aW5nLgotICAgIGlmIChbb2JqLT5t
b3ZpZSByYXRlXSkKLSAgICAgICAgb2JqLT5jb250cm9sbGVyTGF5ZXIub3BhY2l0eSA9IDAuMDsK
LX0KLQotc3RhdGljIGludCBoYW5kbGVLZXlEb3duKFBsdWdpbk9iamVjdCAqb2JqLCBOUENvY29h
RXZlbnQgKmV2ZW50KQotewotICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJzID0gKE5TU3RyaW5nICop
ZXZlbnQtPmRhdGEua2V5LmNoYXJhY3RlcnM7Ci0gICAgCi0gICAgaWYgKFtjaGFyYWN0ZXJzIGxl
bmd0aF0gPT0gMSAmJiBbY2hhcmFjdGVycyBjaGFyYWN0ZXJBdEluZGV4OjBdID09ICcgJykgewot
ICAgICAgICB0b2dnbGVQbGF5UGF1c2Uob2JqKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiAwOwotfQotCi0KLXN0YXRpYyBpbnQgaGFuZGxlU2Nyb2xsRXZlbnQo
UGx1Z2luT2JqZWN0ICpvYmosIE5QQ29jb2FFdmVudCAqZXZlbnQpCi17Ci0gICAgZG91YmxlIGRl
bHRhID0gZXZlbnQtPmRhdGEubW91c2UuZGVsdGFZOwotICAgIGlmIChkZWx0YSA8IDApCi0gICAg
ICAgIFtvYmotPm1vdmllIHN0ZXBGb3J3YXJkXTsKLSAgICBlbHNlCi0gICAgICAgIFtvYmotPm1v
dmllIHN0ZXBCYWNrd2FyZF07Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLQotCi1pbnQxNl90IE5QUF9I
YW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQqIGV2ZW50KQotewotICAgIFBsdWdpbk9iamVj
dCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOwotCi0gICAgTlBDb2NvYUV2ZW50ICpjb2NvYUV2ZW50
ID0gZXZlbnQ7Ci0gICAgCi0gICAgc3dpdGNoKGNvY29hRXZlbnQtPnR5cGUpIHsKLSAgICAgICAg
Y2FzZSBOUENvY29hRXZlbnRNb3VzZURvd246Ci0gICAgICAgICAgICBoYW5kbGVNb3VzZURvd24o
b2JqLCBjb2NvYUV2ZW50KTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIE5Q
Q29jb2FFdmVudE1vdXNlVXA6Ci0gICAgICAgICAgICBoYW5kbGVNb3VzZVVwKG9iaiwgY29jb2FF
dmVudCk7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBOUENvY29hRXZlbnRN
b3VzZURyYWdnZWQ6Ci0gICAgICAgICAgICBoYW5kbGVNb3VzZURyYWdnZWQob2JqLCBjb2NvYUV2
ZW50KTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudE1v
dXNlRW50ZXJlZDoKLSAgICAgICAgICAgIGhhbmRsZU1vdXNlRW50ZXJlZChvYmopOwotICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VFeGl0ZWQ6Ci0g
ICAgICAgICAgICBoYW5kbGVNb3VzZUV4aXRlZChvYmopOwotICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50S2V5RG93bjoKLSAgICAgICAgICAgIHJldHVybiBo
YW5kbGVLZXlEb3duKG9iaiwgY29jb2FFdmVudCk7Ci0gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50
U2Nyb2xsV2hlZWw6Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlU2Nyb2xsRXZlbnQob2JqLCBj
b2NvYUV2ZW50KTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgTlBQX1VS
TE5vdGlmeShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwgTlBSZWFzb24gcmVhc29uLCB2
b2lkKiBub3RpZnlEYXRhKQotewotCi19Ci0KLU5QRXJyb3IgTlBQX0dldFZhbHVlKE5QUCBpbnN0
YW5jZSwgTlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQotewotICAgIFBsdWdpbk9i
amVjdCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOwotCi0gICAgc3dpdGNoICh2YXJpYWJsZSkgewot
ICAgICAgICBjYXNlIE5QUFZwbHVnaW5Db3JlQW5pbWF0aW9uTGF5ZXI6Ci0gICAgICAgICAgICBp
ZiAoIW9iai0+cm9vdExheWVyKSB7Ci0gICAgICAgICAgICAgICAgLy8gU2V0dXAgbGF5ZXIgaGll
cmFyY2h5LgotICAgICAgICAgICAgICAgIG9iai0+cm9vdExheWVyID0gW1tDQUxheWVyIGxheWVy
XSByZXRhaW5dOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG9iai0+bW92aWVM
YXllciA9IFtRVE1vdmllTGF5ZXIgbGF5ZXJdOwotICAgICAgICAgICAgICAgIG9iai0+bW92aWVM
YXllci5hdXRvcmVzaXppbmdNYXNrID0ga0NBTGF5ZXJXaWR0aFNpemFibGUgfCBrQ0FMYXllckhl
aWdodFNpemFibGU7Ci0gICAgICAgICAgICAgICAgW29iai0+cm9vdExheWVyIGFkZFN1YmxheWVy
Om9iai0+bW92aWVMYXllcl07Ci0KLSAgICAgICAgICAgICAgICBvYmotPmNvbnRyb2xsZXJMYXll
ciA9IFtNb3ZpZUNvbnRyb2xsZXJMYXllciBsYXllcl07Ci0gICAgICAgICAgICAgICAgW29iai0+
cm9vdExheWVyIGFkZFN1YmxheWVyOm9iai0+Y29udHJvbGxlckxheWVyXTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBpZiAob2JqLT5tb3ZpZVVSTCkgewotICAgICAgICAgICAg
ICAgICAgICBOU0RpY3Rpb25hcnkgKmF0dHJpYnV0ZXMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25h
cnlXaXRoT2JqZWN0c0FuZEtleXM6b2JqLT5tb3ZpZVVSTCwgUVRNb3ZpZVVSTEF0dHJpYnV0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBZRVMsIFFU
TW92aWVPcGVuRm9yUGxheWJhY2tBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAWUVTLCBRVE1vdmllTG9vcHNBdHRyaWJ1dGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWxdOwotICAgICAg
ICAgICAgICAgICAgICBvYmotPm1vdmllID0gW1FUTW92aWUgbW92aWVXaXRoQXR0cmlidXRlczph
dHRyaWJ1dGVzIGVycm9yOm5pbF07Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG9iai0+bW92
aWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9iai0+bW92aWVMYXllci5tb3ZpZSA9IG9i
ai0+bW92aWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBbb2JqLT5jb250cm9sbGVyTGF5ZXIg
c2V0TW92aWU6b2JqLT5tb3ZpZV07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdG8gcmV0dXJuIGEgcmV0YWluZWQgbGF5ZXIKLSAg
ICAgICAgICAgICooKENBTGF5ZXIgKiopdmFsdWUpID0gW29iai0+cm9vdExheWVyIHJldGFpbl07
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLSAgICAg
ICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7Ci0gICAgfQotfQotCi1OUEVycm9yIE5QUF9TZXRWYWx1ZShOUFAgaW5zdGFuY2Us
IE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKLXsKLSAgICByZXR1cm4gTlBFUlJf
R0VORVJJQ19FUlJPUjsKLX0KSW5kZXg6IEV4YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1v
dmllUGx1Z2luL3Rlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBFeGFtcGxlcy9OZXRzY2FwZUNvcmVB
bmltYXRpb25Nb3ZpZVBsdWdpbi90ZXN0Lmh0bWwJKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4YW1w
bGVzL05ldHNjYXBlQ29yZUFuaW1hdGlvbk1vdmllUGx1Z2luL3Rlc3QuaHRtbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQg
SFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi8xOTk5L1JF
Qy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08aHRtbD4KLTxoZWFkPgotPHRpdGxlPk5l
dHNjYXBlIENvcmUgQW5pbWF0aW9uIE1vdmllIFBsdWctSW48L3RpdGxlPgotPC9oZWFkPgotPGJv
ZHk+Ci08ZGl2PgotPCEtLQotICAgIDxlbWJlZCB3aWR0aD0iODQ4IiBoZWlnaHQ9IjQ4MCIgbW92
aWV1cmw9Imh0dHA6Ly9tb3ZpZXMuYXBwbGUuY29tL21vdmllcy9kaXNuZXkvdXAvdXAtdGxyMl80
ODBwLm1vdiIKLSAgICAgICAgdHlwZT0idGVzdC94LW5ldHNjYXBlLWNvcmUtYW5pbWF0aW9uLW1v
dmllLXBsdWdpbiI+PC9lbWJlZD4KLS0tPgotICAgIDxlbWJlZCB3aWR0aD0iMTI4MCIgaGVpZ2h0
PSI3MjAiIG1vdmlldXJsPSJodHRwOi8vbW92aWVzLmFwcGxlLmNvbS9tb3ZpZXMvZGlzbmV5L3Vw
L3VwLXRscjJfNzIwcC5tb3YiCi0gICAgICAgIHR5cGU9InRlc3QveC1uZXRzY2FwZS1jb3JlLWFu
aW1hdGlvbi1tb3ZpZS1wbHVnaW4iPjwvZW1iZWQ+Ci0KLQotPC9kaXY+Ci08L2JvZHk+Ci08L2h0
bWw+CkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vQ29tcG9zaXRp
b24ucXR6Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5
IGNoYW5nZXMgb246IEV4YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9Db21wb3Np
dGlvbi5xdHoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMK
LWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vRW5nbGlzaC5scHJv
ai9JbmZvUGxpc3Quc3RyaW5ncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtl
ZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBFeGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25Q
bHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5ncwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IEV4YW1wbGVzL05ldHNjYXBlQ29y
ZUFuaW1hdGlvblBsdWdpbi9JbmZvLnBsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEV4YW1wbGVzL05ldHNj
YXBlQ29yZUFuaW1hdGlvblBsdWdpbi9JbmZvLnBsaXN0CShyZXZpc2lvbiAyNDg5NjUpCisrKyBF
eGFtcGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vSW5mby5wbGlzdAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04
Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4i
ICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KLTxwbGlz
dCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5DRkJ1bmRsZURldmVsb3BtZW50UmVnaW9u
PC9rZXk+Ci0JPHN0cmluZz5FbmdsaXNoPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUV4ZWN1dGFi
bGU8L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbjwvc3RyaW5nPgot
CTxrZXk+Q0ZCdW5kbGVJY29uRmlsZTwva2V5PgotCTxzdHJpbmc+PC9zdHJpbmc+Ci0JPGtleT5D
RkJ1bmRsZUlkZW50aWZpZXI8L2tleT4KLQk8c3RyaW5nPmNvbS5hcHBsZS5uZXRzY2FwZWNvcmVh
bmltYXRpb25wbHVnaW48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSW5mb0RpY3Rpb25hcnlWZXJz
aW9uPC9rZXk+Ci0JPHN0cmluZz42LjA8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlUGFja2FnZVR5
cGU8L2tleT4KLQk8c3RyaW5nPkJSUEw8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2hvcnRWZXJz
aW9uU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4xLjA8L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlU2ln
bmF0dXJlPC9rZXk+Ci0JPHN0cmluZz4/Pz8/PC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZVZlcnNp
b248L2tleT4KLQk8c3RyaW5nPjEuMDwvc3RyaW5nPgotCTxrZXk+V2ViUGx1Z2luRGVzY3JpcHRp
b248L2tleT4KLQk8c3RyaW5nPlNpbXBsZSBOZXRzY2FwZSBwbHVnLWluIHRoYXQgZHJhd3MgdXNp
bmcgQ29yZSBBbmltYXRpb24gYW5kIGhhbmRsZXMgZXZlbnRzIHVzaW5nIHRoZSBDb2NvYSBldmVu
dCBtb2RlbDwvc3RyaW5nPgotCTxrZXk+V2ViUGx1Z2luTUlNRVR5cGVzPC9rZXk+Ci0JPGRpY3Q+
Ci0JCTxrZXk+dGVzdC94LW5ldHNjYXBlLWNvcmUtYW5pbWF0aW9uLXBsdWdpbjwva2V5PgotCQk8
ZGljdD4KLQkJCTxrZXk+V2ViUGx1Z2luVHlwZURlc2NyaXB0aW9uPC9rZXk+Ci0JCQk8c3RyaW5n
Pk5ldHNjYXBlIENvcmUgQW5pbWF0aW9uIFBsdWctaW48L3N0cmluZz4KLQkJPC9kaWN0PgotCTwv
ZGljdD4KLQk8a2V5PldlYlBsdWdpbk5hbWU8L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlIENvcmUg
QW5pbWF0aW9uIFBsdWctaW48L3N0cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+CkluZGV4OiBFeGFt
cGxlcy9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1
Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0
c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9OZXRz
Y2FwZUNvcmVBbmltYXRpb25QbHVnaW4vTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNTEgKzAsMCBAQAotLy8g
ISQqVVRGOCokIQotewotCWFyY2hpdmVWZXJzaW9uID0gMTsKLQljbGFzc2VzID0gewotCX07Ci0J
b2JqZWN0VmVyc2lvbiA9IDQyOwotCW9iamVjdHMgPSB7Ci0KLS8qIEJlZ2luIFBCWEJ1aWxkRmls
ZSBzZWN0aW9uICovCi0JCTFBMUJBMTc2MEVGMkZCMzIwMDc1NDQ4NiAvKiBDb21wb3NpdGlvbi5x
dHogaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMUJB
MTc1MEVGMkZCMzIwMDc1NDQ4NiAvKiBDb21wb3NpdGlvbi5xdHogKi87IH07Ci0JCTFBNjI0RTU5
MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTYyNEU1ODBEQ0JDN0Y2MDA2ODk4QzggLyogbWFpbi5tICovOyB9
OwotCQkxQTYyNTA0MjBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2MjUwNDEwRENCQzgx
QjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLzsgfTsKLQkJMUE4Qzg2QUEwRUYyRkI4RjAw
M0Y2RTgxIC8qIFF1YXJ0ei5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQThDODZBOTBFRjJGQjhGMDAzRjZFODEgLyogUXVhcnR6LmZy
YW1ld29yayAqLzsgfTsKLQkJMUE4Qzg3QUEwRUYyRkJCMzAwM0Y2RTgxIC8qIFF1YXJ0ekNvcmUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE4Qzg3QTkwRUYyRkJCMzAwM0Y2RTgxIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9
OwotCQk4RDVCNDlBODA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhENUI0OUE3MDQ4NjdG
RDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLzsgfTsKLS8qIEVuZCBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJ
MDg5QzE2N0VGRTg0MTI0MUMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMTA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlz
dC5zdHJpbmdzOyBuYW1lID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovSW5mb1BsaXN0
LnN0cmluZ3M7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBMUJBMTc1MEVGMkZCMzIw
MDc1NDQ4NiAvKiBDb21wb3NpdGlvbi5xdHogKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmaWxlLmJwbGlzdDsgcGF0aCA9IENvbXBvc2l0aW9uLnF0ejsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8q
IG1haW4ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29j
b2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07Ci0JCTFBOEM4NkE5MEVGMkZCOEYwMDNGNkU4MSAvKiBRdWFydHouZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFydHouZnJhbWV3b3JrOyBwYXRoID0gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKLQkJMUE4Qzg3QTkwRUYyRkJCMzAwM0Y2RTgxIC8qIFF1YXJ0ekNvcmUuZnJh
bWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
d3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFydHpDb3JlLmZyYW1ld29yazsgcGF0aCA9IC9T
eXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OwotCQk4RDU3NjMxNjA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2Nh
cGVDb3JlQW5pbWF0aW9uUGx1Z2luLnBsdWdpbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luLnBsdWdpbjsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJOEQ1NzYzMTcwNDg2NzdFQTAwRUE3N0NEIC8qIElu
Zm8ucGxpc3QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0OyBwYXRoID0gSW5mby5wbGlzdDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLS8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8K
LQotLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQk4RDU3NjMx
MzA0ODY3N0VBMDBFQTc3Q0QgLyogRnJhbWV3b3JrcyAqLyA9IHsKLQkJCWlzYSA9IFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKLQkJCWZp
bGVzID0gKAotCQkJCTFBNjI1MDQyMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKLQkJCQkxQThDODZBQTBFRjJGQjhGMDAzRjZFODEgLyogUXVhcnR6
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJCTFBOEM4N0FBMEVGMkZCQjMwMDNGNkU4
MSAvKiBRdWFydHpDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAotCQkJKTsKLQkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyogRW5kIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlv
biAqLwotCQkwODlDMTY2QUZFODQxMjA5QzAyQUFDMDcgLyogTmV0c2NhcGVDb3JlQW5pbWF0aW9u
UGx1Z2luICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkw
OEZCNzdBRkZFODQxNzNEQzAyQUFDMDcgLyogU291cmNlICovLAotCQkJCTA4OUMxNjdDRkU4NDEy
NDFDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJMDg5QzE2NzFGRTg0MTIwOUMwMkFBQzA3
IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAqLywKLQkJCQkxOUMyOEZCNkZF
OUQ1MkIyMTFDQTJDQkIgLyogUHJvZHVjdHMgKi8sCi0JCQkpOwotCQkJbmFtZSA9IE5ldHNjYXBl
Q29yZUFuaW1hdGlvblBsdWdpbjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0J
CTA4OUMxNjcxRkU4NDEyMDlDMDJBQUMwNyAvKiBFeHRlcm5hbCBGcmFtZXdvcmtzIGFuZCBMaWJy
YXJpZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFB
NjI1MDQxMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFtZXdvcmsgKi8sCi0JCQkJMUE4Qzg2
QTkwRUYyRkI4RjAwM0Y2RTgxIC8qIFF1YXJ0ei5mcmFtZXdvcmsgKi8sCi0JCQkJMUE4Qzg3QTkw
RUYyRkJCMzAwM0Y2RTgxIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovLAotCQkJKTsKLQkJCW5h
bWUgPSAiRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzIjsKLQkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTA4OUMxNjdDRkU4NDEyNDFDMDJBQUMwNyAvKiBSZXNvdXJj
ZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFBMUJB
MTc1MEVGMkZCMzIwMDc1NDQ4NiAvKiBDb21wb3NpdGlvbi5xdHogKi8sCi0JCQkJOEQ1NzYzMTcw
NDg2NzdFQTAwRUE3N0NEIC8qIEluZm8ucGxpc3QgKi8sCi0JCQkJOEQ1QjQ5QTcwNDg2N0ZEMzAw
MEU0OERBIC8qIEluZm9QbGlzdC5zdHJpbmdzICovLAotCQkJKTsKLQkJCW5hbWUgPSBSZXNvdXJj
ZXM7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkwOEZCNzdBRkZFODQxNzNE
QzAyQUFDMDcgLyogU291cmNlICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJl
biA9ICgKLQkJCQkxQTYyNEU1ODBEQ0JDN0Y2MDA2ODk4QzggLyogbWFpbi5tICovLAotCQkJKTsK
LQkJCW5hbWUgPSBTb3VyY2U7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotCQkx
OUMyOEZCNkZFOUQ1MkIyMTFDQTJDQkIgLyogUHJvZHVjdHMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhH
cm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCThENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBO
ZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4ucGx1Z2luICovLAotCQkJKTsKLQkJCW5hbWUgPSBQ
cm9kdWN0czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0vKiBFbmQgUEJYR3Jv
dXAgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwotCQk4
RDU3NjMwRDA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luICov
ID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlz
dCA9IDE0OUMyOTgzMDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWE5hdGl2ZVRhcmdldCAiTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luIiAqLzsKLQkJ
CWJ1aWxkUGhhc2VzID0gKAotCQkJCThENTc2MzExMDQ4Njc3RUEwMEVBNzdDRCAvKiBTb3VyY2Vz
ICovLAotCQkJCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJ
OEQ1NzYzMTMwNDg2NzdFQTAwRUE3N0NEIC8qIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJYnVp
bGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJbmFtZSA9
IE5ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbjsKLQkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9ICIk
KEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7Ci0JCQlwcm9kdWN0TmFtZSA9IE5ldHNjYXBlQ29yZUFu
aW1hdGlvblBsdWdpbjsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSA4RDU3NjMxNjA0ODY3N0VBMDBF
QTc3Q0QgLyogTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luLnBsdWdpbiAqLzsKLQkJCXByb2R1
Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsKLQkJfTsKLS8qIEVuZCBQ
QlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24g
Ki8KLQkJMDg5QzE2NjlGRTg0MTIwOUMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewot
CQkJaXNhID0gUEJYUHJvamVjdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjk4
NzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9q
ZWN0ICJOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4iICovOwotCQkJY29tcGF0aWJpbGl0eVZl
cnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKLQkJ
CWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwotCQkJa25vd25SZWdpb25zID0gKAotCQkJCUVu
Z2xpc2gsCi0JCQkJSmFwYW5lc2UsCi0JCQkJRnJlbmNoLAotCQkJCUdlcm1hbiwKLQkJCSk7Ci0J
CQltYWluR3JvdXAgPSAwODlDMTY2QUZFODQxMjA5QzAyQUFDMDcgLyogTmV0c2NhcGVDb3JlQW5p
bWF0aW9uUGx1Z2luICovOwotCQkJcHJvamVjdERpclBhdGggPSAiIjsKLQkJCXByb2plY3RSb290
ID0gIiI7Ci0JCQl0YXJnZXRzID0gKAotCQkJCThENTc2MzBEMDQ4Njc3RUEwMEVBNzdDRCAvKiBO
ZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4gKi8sCi0JCQkpOwotCQl9OwotLyogRW5kIFBCWFBy
b2plY3Qgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KLQkJOEQ1NzYzMEYwNDg2NzdFQTAwRUE3N0NEIC8qIFJlc291cmNlcyAqLyA9IHsKLQkJ
CWlzYSA9IFBCWFJlc291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMUExQkExNzYwRUYyRkIzMjAwNzU0NDg2IC8qIENv
bXBvc2l0aW9uLnF0eiBpbiBSZXNvdXJjZXMgKi8sCi0JCQkJOEQ1QjQ5QTgwNDg2N0ZEMzAwMEU0
OERBIC8qIEluZm9QbGlzdC5zdHJpbmdzIGluIFJlc291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhSZXNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwotCQk4RDU3NjMxMTA0ODY3N0VBMDBFQTc3Q0QgLyogU291cmNlcyAqLyA9
IHsKLQkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCTFBNjI0RTU5MERDQkM3RjYwMDY4OThDOCAv
KiBtYWluLm0gaW4gU291cmNlcyAqLywKLQkJCSk7Ci0JCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKLQkJfTsKLS8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCi0KLS8qIEJlZ2luIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9uICovCi0JCThENUI0OUE3
MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLyA9IHsKLQkJCWlzYSA9IFBC
WFZhcmlhbnRHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTA4OUMxNjdFRkU4NDEyNDFDMDJB
QUMwNyAvKiBFbmdsaXNoICovLAotCQkJKTsKLQkJCW5hbWUgPSBJbmZvUGxpc3Quc3RyaW5nczsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0vKiBFbmQgUEJYVmFyaWFudEdyb3Vw
IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwot
CQkxNDlDMjk4NDA4OTAyQzUzMDA4QTlFRkMgLyogRGVidWcgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQ09QWV9QSEFTRV9T
VFJJUCA9IE5POwotCQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1bGw7Ci0JCQkJR0NDX0RZ
TkFNSUNfTk9fUElDID0gTk87Ci0JCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gWUVT
OwotCQkJCUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKLQkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVM
ID0gMDsKLQkJCQlJTkZPUExJU1RfRklMRSA9IEluZm8ucGxpc3Q7Ci0JCQkJSU5TVEFMTF9QQVRI
ID0gIiQoSE9NRSkvTGlicmFyeS9CdW5kbGVzIjsKLQkJCQlQUk9EVUNUX05BTUUgPSBOZXRzY2Fw
ZUNvcmVBbmltYXRpb25QbHVnaW47Ci0JCQkJV1JBUFBFUl9FWFRFTlNJT04gPSBwbHVnaW47Ci0J
CQkJWkVST19MSU5LID0gWUVTOwotCQkJfTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJMTQ5
QzI5ODUwODkwMkM1MzAwOEE5RUZDIC8qIFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKLQkJCWJ1aWxkU2V0dGluZ3MgPSB7Ci0JCQkJQVJDSFMgPSAoCi0JCQkJ
CXBwYywKLQkJCQkJaTM4NiwKLQkJCQkpOwotCQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1
bGw7Ci0JCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk87Ci0JCQkJR0NDX01P
REVMX1RVTklORyA9IEc1OwotCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwotCQkJCUlO
Rk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsKLQkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9M
aWJyYXJ5L0J1bmRsZXMiOwotCQkJCVBST0RVQ1RfTkFNRSA9IE5ldHNjYXBlQ29yZUFuaW1hdGlv
blBsdWdpbjsKLQkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IHBsdWdpbjsKLQkJCX07Ci0JCQluYW1l
ID0gUmVsZWFzZTsKLQkJfTsKLQkJMTQ5QzI5ODgwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICov
ID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0g
ewotCQkJCUFSQ0hTID0gaTM4NjsKLQkJCQlBUkNIU19TVEFOREFSRF8zMl82NF9CSVRfUFJFX1hD
T0RFXzNfMSA9ICJwcGMgaTM4NiBwcGM2NCB4ODZfNjQiOwotCQkJCUdDQ19XQVJOX0FCT1VUX1JF
VFVSTl9UWVBFID0gWUVTOwotCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKLQkJ
CQlQUkVCSU5ESU5HID0gTk87Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQkxNDlD
Mjk4OTA4OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlBUkNIUyA9IGkzODY7Ci0J
CQkJQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUX1BSRV9YQ09ERV8zXzEgPSAicHBjIGkzODYgcHBj
NjQgeDg2XzY0IjsKLQkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKLQkJCQlH
Q0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0JCQkJUFJFQklORElORyA9IE5POwotCQkJ
fTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCi0J
CTE0OUMyOTgzMDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luIiAqLyA9IHsKLQkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAot
CQkJCTE0OUMyOTg0MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKLQkJCQkxNDlDMjk4NTA4
OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0Q29uZmlndXJh
dGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNl
OwotCQl9OwotCQkxNDlDMjk4NzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhQcm9qZWN0ICJOZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4iICovID0g
ewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCi0JCQkJMTQ5QzI5ODgwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovLAotCQkJCTE0OUMy
OTg5MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7Ci0JCX07Ci0vKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCi0JfTsK
LQlyb290T2JqZWN0ID0gMDg5QzE2NjlGRTg0MTIwOUMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOwotfQpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL05ldHNj
YXBlQ29yZUFuaW1hdGlvblBsdWdpbi54Y29kZXByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMv
TmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi54
Y29kZXByb2oJKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1h
dGlvblBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4ueGNvZGVwcm9qCShub25leGlz
dGVudCkKClByb3BlcnR5IGNoYW5nZXMgb246IEV4YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1hdGlv
blBsdWdpbi9OZXRzY2FwZUNvcmVBbmltYXRpb25QbHVnaW4ueGNvZGVwcm9qCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmlnbm9yZQojIyAtMSw1ICswLDAgIyMKLSoubW9kZSoKLSoucGJ4dXNlcgot
Ki5wZXJzcGVjdGl2ZSoKLXByb2plY3QueGN3b3Jrc3BhY2UKLXhjdXNlcmRhdGEKSW5kZXg6IEV4
YW1wbGVzL05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi9tYWluLm0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
RXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL21haW4ubQkocmV2aXNpb24gMjQ4
OTY1KQorKysgRXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL21haW4ubQkobm9u
ZXhpc3RlbnQpCkBAIC0xLDI0NiArMCwwIEBACi0vKgotIElNUE9SVEFOVDogIFRoaXMgQXBwbGUg
c29mdHdhcmUgaXMgc3VwcGxpZWQgdG8geW91IGJ5IEFwcGxlIEluYy4gKCJBcHBsZSIpIGluCi0g
Y29uc2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byB0aGUgZm9sbG93aW5nIHRlcm1zLCBh
bmQgeW91ciB1c2UsIGluc3RhbGxhdGlvbiwgCi0gbW9kaWZpY2F0aW9uIG9yIHJlZGlzdHJpYnV0
aW9uIG9mIHRoaXMgQXBwbGUgc29mdHdhcmUgY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGVz
ZSAKLSB0ZXJtcy4gIElmIHlvdSBkbyBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcywgcGxlYXNl
IGRvIG5vdCB1c2UsIGluc3RhbGwsIG1vZGlmeSBvciAKLSByZWRpc3RyaWJ1dGUgdGhpcyBBcHBs
ZSBzb2Z0d2FyZS4KLSAKLSBJbiBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIGFi
aWRlIGJ5IHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCBzdWJqZWN0IHRvIHRoZXNlIAotIHRlcm1z
LCBBcHBsZSBncmFudHMgeW91IGEgcGVyc29uYWwsIG5vbi1leGNsdXNpdmUgbGljZW5zZSwgdW5k
ZXIgQXBwbGXigJlzIGNvcHlyaWdodHMgaW4gCi0gdGhpcyBvcmlnaW5hbCBBcHBsZSBzb2Z0d2Fy
ZSAodGhlICJBcHBsZSBTb2Z0d2FyZSIpLCB0byB1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5IGFuZCAK
LSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZp
Y2F0aW9ucywgaW4gc291cmNlIGFuZC9vciBiaW5hcnkgCi0gZm9ybXM7IHByb3ZpZGVkIHRoYXQg
aWYgeW91IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUgaW4gaXRzIGVudGlyZXR5IGFu
ZCB3aXRob3V0IAotIG1vZGlmaWNhdGlvbnMsIHlvdSBtdXN0IHJldGFpbiB0aGlzIG5vdGljZSBh
bmQgdGhlIGZvbGxvd2luZyB0ZXh0IGFuZCBkaXNjbGFpbWVycyBpbiBhbGwgCi0gc3VjaCByZWRp
c3RyaWJ1dGlvbnMgb2YgdGhlIEFwcGxlIFNvZnR3YXJlLiAgTmVpdGhlciB0aGUgbmFtZSwgdHJh
ZGVtYXJrcywgc2VydmljZSBtYXJrcyAKLSBvciBsb2dvcyBvZiBBcHBsZSBJbmMuIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gCi0gdGhlIEFw
cGxlIFNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGZy
b20gQXBwbGUuIEV4Y2VwdCBhcyBleHByZXNzbHkKLSBzdGF0ZWQgaW4gdGhpcyBub3RpY2UsIG5v
IG90aGVyIHJpZ2h0cyBvciBsaWNlbnNlcywgZXhwcmVzcyBvciBpbXBsaWVkLCBhcmUgZ3JhbnRl
ZCBieSBBcHBsZQotIGhlcmVpbiwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBhbnkgcGF0
ZW50IHJpZ2h0cyB0aGF0IG1heSBiZSBpbmZyaW5nZWQgYnkgeW91ciAKLSBkZXJpdmF0aXZlIHdv
cmtzIG9yIGJ5IG90aGVyIHdvcmtzIGluIHdoaWNoIHRoZSBBcHBsZSBTb2Z0d2FyZSBtYXkgYmUg
aW5jb3Jwb3JhdGVkLgotIAotIFRoZSBBcHBsZSBTb2Z0d2FyZSBpcyBwcm92aWRlZCBieSBBcHBs
ZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQTEUgTUFLRVMgTk8gV0FSUkFOVElFUywgCi0gRVhQ
UkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTk9OLUlORlJJTkdFTUVOVCwgCi0gTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUkVHQVJESU5HIFRIRSBBUFBMRSBTT0ZU
V0FSRSBPUiBJVFMgCi0gVVNFIEFORCBPUEVSQVRJT04gQUxPTkUgT1IgSU4gQ09NQklOQVRJT04g
V0lUSCBZT1VSIFBST0RVQ1RTLgotIAotIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIEJFIExJQUJM
RSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNULCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwg
Ci0gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgCi0gT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSwgCi0gUkVQUk9EVUNUSU9OLCBNT0RJRklDQVRJT04gQU5EL09SIERJU1RSSUJV
VElPTiBPRiBUSEUgQVBQTEUgU09GVFdBUkUsIEhPV0VWRVIgQ0FVU0VEIEFORCAKLSBXSEVUSEVS
IFVOREVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UpLCBT
VFJJQ1QgTElBQklMSVRZIE9SIAotIE9USEVSV0lTRSwgRVZFTiBJRiBBUFBMRSBIQVMgQkVFTiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
IDxXZWJLaXQvbnBhcGkuaD4KLSNpbXBvcnQgPFdlYktpdC9ucGZ1bmN0aW9ucy5oPgotI2ltcG9y
dCA8V2ViS2l0L25wcnVudGltZS5oPgotCi0jaW1wb3J0IDxDb2NvYS9Db2NvYS5oPgotI2ltcG9y
dCA8UXVhcnR6L1F1YXJ0ei5oPgotI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+Ci0K
LS8vIEJyb3dzZXIgZnVuY3Rpb24gdGFibGUKLXN0YXRpYyBOUE5ldHNjYXBlRnVuY3MqIGJyb3dz
ZXI7Ci0KLS8vIFN0cnVjdHVyZSBmb3IgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLXR5cGVkZWYgc3Ry
dWN0IFBsdWdpbk9iamVjdAotewotICAgIE5QUCBucHA7Ci0gICAgCi0gICAgTlBXaW5kb3cgd2lu
ZG93OwotICAgIAotICAgIFFDQ29tcG9zaXRpb25MYXllciAqbGF5ZXI7Ci0gICAgYm9vbCBnb2xk
OwotfSBQbHVnaW5PYmplY3Q7Ci0KLU5QRXJyb3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5
cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2IG1vZGUsIGludDE2IGFyZ2MsIGNoYXIqIGFyZ25bXSwg
Y2hhciogYXJndltdLCBOUFNhdmVkRGF0YSogc2F2ZWQpOwotTlBFcnJvciBOUFBfRGVzdHJveShO
UFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2ZSk7Ci1OUEVycm9yIE5QUF9TZXRXaW5kb3co
TlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KTsKLU5QRXJyb3IgTlBQX05ld1N0cmVhbShO
UFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBCb29sIHNl
ZWthYmxlLCB1aW50MTYqIHN0eXBlKTsKLU5QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGlu
c3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFzb24pOwotaW50MzIgTlBQX1dy
aXRlUmVhZHkoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtKTsKLWludDMyIE5QUF9Xcml0
ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwgaW50MzIgbGVu
LCB2b2lkKiBidWZmZXIpOwotdm9pZCBOUFBfU3RyZWFtQXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBT
dHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogZm5hbWUpOwotdm9pZCBOUFBfUHJpbnQoTlBQIGlu
c3RhbmNlLCBOUFByaW50KiBwbGF0Zm9ybVByaW50KTsKLWludDE2IE5QUF9IYW5kbGVFdmVudChO
UFAgaW5zdGFuY2UsIHZvaWQqIGV2ZW50KTsKLXZvaWQgTlBQX1VSTE5vdGlmeShOUFAgaW5zdGFu
Y2UsIGNvbnN0IGNoYXIqIFVSTCwgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBub3RpZnlEYXRhKTsK
LU5QRXJyb3IgTlBQX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBQVmFyaWFibGUgdmFyaWFibGUs
IHZvaWQgKnZhbHVlKTsKLU5QRXJyb3IgTlBQX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBOVmFy
aWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKTsKLQotI3ByYWdtYSBleHBvcnQgb24KLS8vIE1h
Y2gtbyBlbnRyeSBwb2ludHMKLU5QRXJyb3IgTlBfSW5pdGlhbGl6ZShOUE5ldHNjYXBlRnVuY3Mg
KmJyb3dzZXJGdW5jcyk7Ci1OUEVycm9yIE5QX0dldEVudHJ5UG9pbnRzKE5QUGx1Z2luRnVuY3Mg
KnBsdWdpbkZ1bmNzKTsKLXZvaWQgTlBfU2h1dGRvd24odm9pZCk7Ci0jcHJhZ21hIGV4cG9ydCBv
ZmYKLQotTlBFcnJvciBOUF9Jbml0aWFsaXplKE5QTmV0c2NhcGVGdW5jcyogYnJvd3NlckZ1bmNz
KQotewotICAgIGJyb3dzZXIgPSBicm93c2VyRnVuY3M7Ci0gICAgcmV0dXJuIE5QRVJSX05PX0VS
Uk9SOwotfQotCi1OUEVycm9yIE5QX0dldEVudHJ5UG9pbnRzKE5QUGx1Z2luRnVuY3MqIHBsdWdp
bkZ1bmNzKQotewotICAgIHBsdWdpbkZ1bmNzLT52ZXJzaW9uID0gMTE7Ci0gICAgcGx1Z2luRnVu
Y3MtPnNpemUgPSBzaXplb2YocGx1Z2luRnVuY3MpOwotICAgIHBsdWdpbkZ1bmNzLT5uZXdwID0g
TlBQX05ldzsKLSAgICBwbHVnaW5GdW5jcy0+ZGVzdHJveSA9IE5QUF9EZXN0cm95OwotICAgIHBs
dWdpbkZ1bmNzLT5zZXR3aW5kb3cgPSBOUFBfU2V0V2luZG93OwotICAgIHBsdWdpbkZ1bmNzLT5u
ZXdzdHJlYW0gPSBOUFBfTmV3U3RyZWFtOwotICAgIHBsdWdpbkZ1bmNzLT5kZXN0cm95c3RyZWFt
ID0gTlBQX0Rlc3Ryb3lTdHJlYW07Ci0gICAgcGx1Z2luRnVuY3MtPmFzZmlsZSA9IE5QUF9TdHJl
YW1Bc0ZpbGU7Ci0gICAgcGx1Z2luRnVuY3MtPndyaXRlcmVhZHkgPSBOUFBfV3JpdGVSZWFkeTsK
LSAgICBwbHVnaW5GdW5jcy0+d3JpdGUgPSAoTlBQX1dyaXRlUHJvY1B0cilOUFBfV3JpdGU7Ci0g
ICAgcGx1Z2luRnVuY3MtPnByaW50ID0gTlBQX1ByaW50OwotICAgIHBsdWdpbkZ1bmNzLT5ldmVu
dCA9IE5QUF9IYW5kbGVFdmVudDsKLSAgICBwbHVnaW5GdW5jcy0+dXJsbm90aWZ5ID0gTlBQX1VS
TE5vdGlmeTsKLSAgICBwbHVnaW5GdW5jcy0+Z2V0dmFsdWUgPSBOUFBfR2V0VmFsdWU7Ci0gICAg
cGx1Z2luRnVuY3MtPnNldHZhbHVlID0gTlBQX1NldFZhbHVlOwotICAgIAotICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKLX0KLQotdm9pZCBOUF9TaHV0ZG93bih2b2lkKQotewotCi19Ci0KLU5Q
RXJyb3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2
IG1vZGUsIGludDE2IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJndltdLCBOUFNhdmVkRGF0
YSogc2F2ZWQpCi17Ci0gICAgLy8gQ3JlYXRlIHBlci1pbnN0YW5jZSBzdG9yYWdlCi0gICAgUGx1
Z2luT2JqZWN0ICpvYmogPSAoUGx1Z2luT2JqZWN0ICopbWFsbG9jKHNpemVvZihQbHVnaW5PYmpl
Y3QpKTsKLSAgICBiemVybyhvYmosIHNpemVvZihQbHVnaW5PYmplY3QpKTsKLSAgICAKLSAgICBv
YmotPm5wcCA9IGluc3RhbmNlOwotICAgIGluc3RhbmNlLT5wZGF0YSA9IG9iajsKLSAgICAKLSAg
ICAvLyBBc2sgdGhlIGJyb3dzZXIgaWYgaXQgc3VwcG9ydHMgdGhlIENvcmUgQW5pbWF0aW9uIGRy
YXdpbmcgbW9kZWwKLSAgICBOUEJvb2wgc3VwcG9ydHNDb3JlQW5pbWF0aW9uOwotICAgIGlmIChi
cm93c2VyLT5nZXR2YWx1ZShpbnN0YW5jZSwgTlBOVnN1cHBvcnRzQ29yZUFuaW1hdGlvbkJvb2ws
ICZzdXBwb3J0c0NvcmVBbmltYXRpb24pICE9IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBzdXBw
b3J0c0NvcmVBbmltYXRpb24gPSBGQUxTRTsKLSAgICAKLSAgICBpZiAoIXN1cHBvcnRzQ29yZUFu
aW1hdGlvbikKLSAgICAgICAgcmV0dXJuIE5QRVJSX0lOQ09NUEFUSUJMRV9WRVJTSU9OX0VSUk9S
OwotICAgIAotICAgIC8vIElmIHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb3JlIEFuaW1hdGlv
biBkcmF3aW5nIG1vZGVsLCBlbmFibGUgaXQuCi0gICAgYnJvd3Nlci0+c2V0dmFsdWUoaW5zdGFu
Y2UsIE5QUFZwbHVnaW5EcmF3aW5nTW9kZWwsICh2b2lkICopTlBEcmF3aW5nTW9kZWxDb3JlQW5p
bWF0aW9uKTsKLQotICAgIC8vIElmIHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb2NvYSBldmVu
dCBtb2RlbCwgZW5hYmxlIGl0LgotICAgIE5QQm9vbCBzdXBwb3J0c0NvY29hOwotICAgIGlmIChi
cm93c2VyLT5nZXR2YWx1ZShpbnN0YW5jZSwgTlBOVnN1cHBvcnRzQ29jb2FCb29sLCAmc3VwcG9y
dHNDb2NvYSkgIT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHN1cHBvcnRzQ29jb2EgPSBGQUxT
RTsKLSAgICAKLSAgICBpZiAoIXN1cHBvcnRzQ29jb2EpCi0gICAgICAgIHJldHVybiBOUEVSUl9J
TkNPTVBBVElCTEVfVkVSU0lPTl9FUlJPUjsKLSAgICAKLSAgICBicm93c2VyLT5zZXR2YWx1ZShp
bnN0YW5jZSwgTlBQVnBsdWdpbkV2ZW50TW9kZWwsICh2b2lkICopTlBFdmVudE1vZGVsQ29jb2Ep
OwotICAgIAotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBFcnJvciBOUFBfRGVz
dHJveShOUFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2ZSkKLXsKLSAgICAvLyBGcmVlIHBl
ci1pbnN0YW5jZSBzdG9yYWdlCi0gICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5jZS0+cGRh
dGE7Ci0KLSAgICBbb2JqLT5sYXllciByZWxlYXNlXTsKLSAgICAKLSAgICBmcmVlKG9iaik7Ci0g
ICAgCi0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9TZXRXaW5k
b3coTlBQIGluc3RhbmNlLCBOUFdpbmRvdyogd2luZG93KQotewotICAgIFBsdWdpbk9iamVjdCAq
b2JqID0gaW5zdGFuY2UtPnBkYXRhOwotICAgIG9iai0+d2luZG93ID0gKndpbmRvdzsKLQotICAg
IHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLSAKLQotTlBFcnJvciBOUFBfTmV3U3RyZWFtKE5Q
UCBpbnN0YW5jZSwgTlBNSU1FVHlwZSB0eXBlLCBOUFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vl
a2FibGUsIHVpbnQxNiogc3R5cGUpCi17Ci0gICAgKnN0eXBlID0gTlBfQVNGSUxFT05MWTsKLSAg
ICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJlYW0o
TlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFzb24pCi17Ci0gICAg
cmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1pbnQzMiBOUFBfV3JpdGVSZWFkeShOUFAgaW5z
dGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0pCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludDMyIE5Q
UF9Xcml0ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwgaW50
MzIgbGVuLCB2b2lkKiBidWZmZXIpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgTlBQX1N0
cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGZu
YW1lKQotewotfQotCi12b2lkIE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRm
b3JtUHJpbnQpCi17Ci0KLX0KLQotc3RhdGljIHZvaWQgaGFuZGxlTW91c2VDbGljayhQbHVnaW5P
YmplY3QgKm9iaiwgTlBDb2NvYUV2ZW50ICpldmVudCkKLXsKLSAgICBvYmotPmdvbGQgPSAhb2Jq
LT5nb2xkOwotICAgIAotICAgIFtvYmotPmxheWVyIHNldFZhbHVlOltOU051bWJlciBudW1iZXJX
aXRoQm9vbDpvYmotPmdvbGRdIGZvcklucHV0S2V5OkAiZ29sZCJdOwotfQotCi1pbnQxNiBOUFBf
SGFuZGxlRXZlbnQoTlBQIGluc3RhbmNlLCB2b2lkKiBldmVudCkKLXsKLSAgICBQbHVnaW5PYmpl
Y3QgKm9iaiA9IGluc3RhbmNlLT5wZGF0YTsKLQotICAgIE5QQ29jb2FFdmVudCAqY29jb2FFdmVu
dCA9IGV2ZW50OwotICAgIAotICAgIHN3aXRjaChjb2NvYUV2ZW50LT50eXBlKSB7Ci0gICAgICAg
IGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEb3duOgotICAgICAgICAgICAgaGFuZGxlTW91c2VDbGlj
ayhvYmosIGNvY29hRXZlbnQpOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIAot
ICAgIHJldHVybiAwOwotfQotCi12b2lkIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBjb25z
dCBjaGFyKiB1cmwsIE5QUmVhc29uIHJlYXNvbiwgdm9pZCogbm90aWZ5RGF0YSkKLXsKLQotfQot
Ci1OUEVycm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxl
LCB2b2lkICp2YWx1ZSkKLXsKLSAgICBQbHVnaW5PYmplY3QgKm9iaiA9IGluc3RhbmNlLT5wZGF0
YTsKLQotICAgIHN3aXRjaCAodmFyaWFibGUpIHsKLSAgICAgICAgY2FzZSBOUFBWcGx1Z2luQ29y
ZUFuaW1hdGlvbkxheWVyOgotICAgICAgICAgICAgaWYgKCFvYmotPmxheWVyKSB7Ci0gICAgICAg
ICAgICAgICAgTlNTdHJpbmcgKnBhdGggPSBbW05TQnVuZGxlIGJ1bmRsZVdpdGhJZGVudGlmaWVy
OkAiY29tLmFwcGxlLm5ldHNjYXBlY29yZWFuaW1hdGlvbnBsdWdpbiJdIHBhdGhGb3JSZXNvdXJj
ZTpAIkNvbXBvc2l0aW9uIiBvZlR5cGU6QCJxdHoiXTsKLQotICAgICAgICAgICAgICAgIFFDQ29t
cG9zaXRpb24gKmNvbXBvc2l0aW9uID0gW1FDQ29tcG9zaXRpb24gY29tcG9zaXRpb25XaXRoRmls
ZTpwYXRoXTsKLSAgICAgICAgICAgICAgICBvYmotPmxheWVyID0gW1tRQ0NvbXBvc2l0aW9uTGF5
ZXIgY29tcG9zaXRpb25MYXllcldpdGhDb21wb3NpdGlvbjpjb21wb3NpdGlvbl0gcmV0YWluXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRv
IHJldHVybiBhIHJldGFpbmVkIGxheWVyCi0gICAgICAgICAgICAqKChDQUxheWVyICoqKXZhbHVl
KSA9IFtvYmotPmxheWVyIHJldGFpbl07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVy
biBOUEVSUl9OT19FUlJPUjsKLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7Ci0gICAgfQotfQotCi1OUEVycm9yIE5Q
UF9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1
ZSkKLXsKLSAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKLX0KSW5kZXg6IEV4YW1wbGVz
L05ldHNjYXBlQ29yZUFuaW1hdGlvblBsdWdpbi90ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhh
bXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL3Rlc3QuaHRtbAkocmV2aXNpb24gMjQ4
OTY1KQorKysgRXhhbXBsZXMvTmV0c2NhcGVDb3JlQW5pbWF0aW9uUGx1Z2luL3Rlc3QuaHRtbAko
bm9uZXhpc3RlbnQpCkBAIC0xLDExICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
VzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9U
Ui8xOTk5L1JFQy1odG1sNDAxLTE5OTkxMjI0L2xvb3NlLmR0ZCI+Ci08aHRtbD4KLTxoZWFkPgot
PHRpdGxlPkNvY29hIE5ldHNjYXBlIFBsdWctSW48L3RpdGxlPgotPC9oZWFkPgotPGJvZHk+Ci08
ZGl2PgotICAgIDxlbWJlZCB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdHlwZT0idGVzdC94LW5l
dHNjYXBlLWNvcmUtYW5pbWF0aW9uLXBsdWdpbiI+PC9lbWJlZD4KLTwvZGl2PgotPC9ib2R5Pgot
PC9odG1sPgpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9FbmdsaXNo
Lmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IEV4YW1wbGVzL05ldHNjYXBlSW5wdXRNZXRo
b2RQbHVnaW4vRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5ncwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IEV4YW1wbGVzL05ldHNjYXBl
SW5wdXRNZXRob2RQbHVnaW4vSW5mby5wbGlzdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBFeGFtcGxlcy9OZXRz
Y2FwZUlucHV0TWV0aG9kUGx1Z2luL0luZm8ucGxpc3QJKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4
YW1wbGVzL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4vSW5mby5wbGlzdAkobm9uZXhpc3RlbnQp
CkBAIC0xLDM2ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+
Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJo
dHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KLTxwbGlzdCB2
ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5DRkJ1bmRsZURldmVsb3BtZW50UmVnaW9uPC9r
ZXk+Ci0JPHN0cmluZz5FbmdsaXNoPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUV4ZWN1dGFibGU8
L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW48L3N0cmluZz4KLQk8a2V5
PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KLQk8c3RyaW5nPjwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5k
bGVJZGVudGlmaWVyPC9rZXk+Ci0JPHN0cmluZz5jb20uYXBwbGUubmV0c2NhcGVpbnB1dG1ldGhv
ZHBsdWdpbjwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tl
eT4KLQk8c3RyaW5nPjYuMDwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5
PgotCTxzdHJpbmc+QlJQTDwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJp
bmc8L2tleT4KLQk8c3RyaW5nPjEuMDwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVTaWduYXR1cmU8
L2tleT4KLQk8c3RyaW5nPj8/Pz88L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5
PgotCTxzdHJpbmc+MS4wPC9zdHJpbmc+Ci0JPGtleT5XZWJQbHVnaW5EZXNjcmlwdGlvbjwva2V5
PgotCTxzdHJpbmc+U2ltcGxlIE5ldHNjYXBlIHBsdWctaW4gdGhhdCBzaG93cyBob3cgdG8gdXNl
IGlucHV0IG1ldGhvZHM8L3N0cmluZz4KLQk8a2V5PldlYlBsdWdpbk1JTUVUeXBlczwva2V5Pgot
CTxkaWN0PgotCQk8a2V5PnRlc3QveC1uZXRzY2FwZS1pbnB1dC1tZXRob2QtcGx1Z2luPC9rZXk+
Ci0JCTxkaWN0PgotCQkJPGtleT5XZWJQbHVnaW5UeXBlRGVzY3JpcHRpb248L2tleT4KLQkJCTxz
dHJpbmc+TmV0c2NhcGUgSW5wdXQgTWV0aG9kIFBsdWctaW48L3N0cmluZz4KLQkJPC9kaWN0Pgot
CTwvZGljdD4KLQk8a2V5PldlYlBsdWdpbk5hbWU8L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlIElu
cHV0IE1ldGhvZCBQbHVnLWluPC9zdHJpbmc+Ci08L2RpY3Q+Ci08L3BsaXN0PgpJbmRleDogRXhh
bXBsZXMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2lu
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0c2Nh
cGVJbnB1dE1ldGhvZFBsdWdpbi9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4YW1wbGVzL05ldHNjYXBlSW5w
dXRNZXRob2RQbHVnaW4vTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShub25leGlzdGVudCkKQEAgLTEsMjQzICswLDAgQEAKLS8vICEkKlVURjgqJCEK
LXsKLQlhcmNoaXZlVmVyc2lvbiA9IDE7Ci0JY2xhc3NlcyA9IHsKLQl9OwotCW9iamVjdFZlcnNp
b24gPSA0MjsKLQlvYmplY3RzID0gewotCi0vKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwotCQkxQTYyNEU1OTBEQ0JDN0Y2MDA2ODk4QzggLyogbWFpbi5tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8q
IG1haW4ubSAqLzsgfTsKLQkJMUE2MjUwNDIwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
NjI1MDQxMERDQkM4MUIwMDY4OThDOCAvKiBDb2NvYS5mcmFtZXdvcmsgKi87IH07Ci0JCThENUI0
OUE4MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEQ1QjQ5QTcwNDg2N0ZEMzAwMEU0OERB
IC8qIEluZm9QbGlzdC5zdHJpbmdzICovOyB9OwotLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCi0KLS8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkwODlDMTY3RUZF
ODQxMjQxQzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAxMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnBsaXN0LnN0cmluZ3M7
IG5hbWUgPSBFbmdsaXNoOyBwYXRoID0gRW5nbGlzaC5scHJvai9JbmZvUGxpc3Quc3RyaW5nczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE2MjRFNTgwRENCQzdGNjAwNjg5OEM4IC8q
IG1haW4ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gbWFpbi5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29j
b2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07Ci0JCThENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZUlu
cHV0TWV0aG9kUGx1Z2luLnBsdWdpbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi5wbHVnaW47IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07Ci0JCThENTc2MzE3MDQ4Njc3RUEwMEVBNzdDRCAvKiBJbmZvLnBsaXN0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdDsgcGF0aCA9IEluZm8ucGxpc3Q7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0vKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCi0KLS8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KLQkJOEQ1NzYzMTMwNDg2NzdF
QTAwRUE3N0NEIC8qIEZyYW1ld29ya3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgK
LQkJCQkxQTYyNTA0MjBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7Ci0JCX07Ci0vKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0v
KiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCi0JCTA4OUMxNjZBRkU4NDEyMDlDMDJBQUMwNyAv
KiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0J
CQljaGlsZHJlbiA9ICgKLQkJCQkwOEZCNzdBRkZFODQxNzNEQzAyQUFDMDcgLyogU291cmNlICov
LAotCQkJCTA4OUMxNjdDRkU4NDEyNDFDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJMDg5
QzE2NzFGRTg0MTIwOUMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmll
cyAqLywKLQkJCQkxOUMyOEZCNkZFOUQ1MkIyMTFDQTJDQkIgLyogUHJvZHVjdHMgKi8sCi0JCQkp
OwotCQkJbmFtZSA9IE5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW47Ci0JCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwotCQl9OwotCQkwODlDMTY3MUZFODQxMjA5QzAyQUFDMDcgLyogRXh0ZXJuYWwg
RnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQlj
aGlsZHJlbiA9ICgKLQkJCQkxQTYyNTA0MTBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2EuZnJhbWV3
b3JrICovLAotCQkJKTsKLQkJCW5hbWUgPSAiRXh0ZXJuYWwgRnJhbWV3b3JrcyBhbmQgTGlicmFy
aWVzIjsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTA4OUMxNjdDRkU4NDEy
NDFDMDJBQUMwNyAvKiBSZXNvdXJjZXMgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNo
aWxkcmVuID0gKAotCQkJCThENTc2MzE3MDQ4Njc3RUEwMEVBNzdDRCAvKiBJbmZvLnBsaXN0ICov
LAotCQkJCThENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLywK
LQkJCSk7Ci0JCQluYW1lID0gUmVzb3VyY2VzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
LQkJfTsKLQkJMDhGQjc3QUZGRTg0MTczREMwMkFBQzA3IC8qIFNvdXJjZSAqLyA9IHsKLQkJCWlz
YSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUE2MjRFNTgwRENCQzdGNjAwNjg5
OEM4IC8qIG1haW4ubSAqLywKLQkJCSk7Ci0JCQluYW1lID0gU291cmNlOwotCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMTlDMjhGQjZGRTlENTJCMjExQ0EyQ0JCIC8qIFByb2R1
Y3RzICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4RDU3
NjMxNjA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi5wbHVnaW4g
Ki8sCi0JCQkpOwotCQkJbmFtZSA9IFByb2R1Y3RzOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKLS8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWE5hdGl2
ZVRhcmdldCBzZWN0aW9uICovCi0JCThENTc2MzBEMDQ4Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2Fw
ZUlucHV0TWV0aG9kUGx1Z2luICovID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyOTgzMDg5MDJDNTMwMDhBOUVGQyAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiTmV0c2NhcGVJbnB1dE1l
dGhvZFBsdWdpbiIgKi87Ci0JCQlidWlsZFBoYXNlcyA9ICgKLQkJCQk4RDU3NjMxMTA0ODY3N0VB
MDBFQTc3Q0QgLyogU291cmNlcyAqLywKLQkJCQk4RDU3NjMwRjA0ODY3N0VBMDBFQTc3Q0QgLyog
UmVzb3VyY2VzICovLAotCQkJCThENTc2MzEzMDQ4Njc3RUEwMEVBNzdDRCAvKiBGcmFtZXdvcmtz
ICovLAotCQkJKTsKLQkJCWJ1aWxkUnVsZXMgPSAoCi0JCQkpOwotCQkJZGVwZW5kZW5jaWVzID0g
KAotCQkJKTsKLQkJCW5hbWUgPSBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luOwotCQkJcHJvZHVj
dEluc3RhbGxQYXRoID0gIiQoSE9NRSkvTGlicmFyeS9CdW5kbGVzIjsKLQkJCXByb2R1Y3ROYW1l
ID0gTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbjsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSA4RDU3
NjMxNjA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi5wbHVnaW4g
Ki87Ci0JCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmJ1bmRsZSI7Ci0J
CX07Ci0vKiBFbmQgUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUHJv
amVjdCBzZWN0aW9uICovCi0JCTA4OUMxNjY5RkU4NDEyMDlDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLyA9IHsKLQkJCWlzYSA9IFBCWFByb2plY3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMTQ5QzI5ODcwODkwMkM1MzAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAiTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbiIgKi87Ci0JCQljb21w
YXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBF
bmdsaXNoOwotCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7Ci0JCQlrbm93blJlZ2lvbnMg
PSAoCi0JCQkJRW5nbGlzaCwKLQkJCQlKYXBhbmVzZSwKLQkJCQlGcmVuY2gsCi0JCQkJR2VybWFu
LAotCQkJKTsKLQkJCW1haW5Hcm91cCA9IDA4OUMxNjZBRkU4NDEyMDlDMDJBQUMwNyAvKiBOZXRz
Y2FwZUlucHV0TWV0aG9kUGx1Z2luICovOwotCQkJcHJvamVjdERpclBhdGggPSAiIjsKLQkJCXBy
b2plY3RSb290ID0gIiI7Ci0JCQl0YXJnZXRzID0gKAotCQkJCThENTc2MzBEMDQ4Njc3RUEwMEVB
NzdDRCAvKiBOZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luICovLAotCQkJKTsKLQkJfTsKLS8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KLQotLyogQmVnaW4gUEJYUmVzb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCi0JCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBSZXNvdXJjZXMgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhSZXNvdXJjZXNCdWlsZFBoYXNlOwotCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKLQkJCWZpbGVzID0gKAotCQkJCThENUI0OUE4MDQ4NjdGRDMwMDBFNDhE
QSAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYUmVzb3Vy
Y2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KLQkJOEQ1NzYzMTEwNDg2NzdFQTAwRUE3N0NEIC8qIFNvdXJjZXMgKi8gPSB7
Ci0JCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQkxQTYyNEU1OTBEQ0JDN0Y2MDA2ODk4QzggLyog
bWFpbi5tIGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwotCi0vKiBCZWdpbiBQQlhWYXJpYW50R3JvdXAgc2VjdGlvbiAqLwotCQk4RDVCNDlBNzA0
ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhW
YXJpYW50R3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQkwODlDMTY3RUZFODQxMjQxQzAyQUFD
MDcgLyogRW5nbGlzaCAqLywKLQkJCSk7Ci0JCQluYW1lID0gSW5mb1BsaXN0LnN0cmluZ3M7Ci0J
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwotLyogRW5kIFBCWFZhcmlhbnRHcm91cCBz
ZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KLQkJ
MTQ5QzI5ODQwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBOTzsKLQkJCQlHQ0NfREVCVUdHSU5HX1NZTUJPTFMgPSBmdWxsOwotCQkJCUdDQ19EWU5B
TUlDX05PX1BJQyA9IE5POwotCQkJCUdDQ19FTkFCTEVfRklYX0FORF9DT05USU5VRSA9IFlFUzsK
LQkJCQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9
IDA7Ci0JCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwotCQkJCUlOU1RBTExfUEFUSCA9
ICIkKEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7Ci0JCQkJUFJPRFVDVF9OQU1FID0gTmV0c2NhcGVJ
bnB1dE1ldGhvZFBsdWdpbjsKLQkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IHBsdWdpbjsKLQkJCQla
RVJPX0xJTksgPSBZRVM7Ci0JCQl9OwotCQkJbmFtZSA9IERlYnVnOwotCQl9OwotCQkxNDlDMjk4
NTA4OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLyA9IHsKLQkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwotCQkJYnVpbGRTZXR0aW5ncyA9IHsKLQkJCQlBUkNIUyA9ICgKLQkJCQkJcHBj
LAotCQkJCQlpMzg2LAotCQkJCSk7Ci0JCQkJR0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZnVsbDsK
LQkJCQlHQ0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBOTzsKLQkJCQlHQ0NfTU9ERUxf
VFVOSU5HID0gRzU7Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7Ci0JCQkJSU5GT1BM
SVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwotCQkJCUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL0xpYnJh
cnkvQnVuZGxlcyI7Ci0JCQkJUFJPRFVDVF9OQU1FID0gTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdp
bjsKLQkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9IHBsdWdpbjsKLQkJCX07Ci0JCQluYW1lID0gUmVs
ZWFzZTsKLQkJfTsKLQkJMTQ5QzI5ODgwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovID0gewot
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUX1BSRV9YQ09ERV8zXzEpIjsKLQkJ
CQlBUkNIU19TVEFOREFSRF8zMl82NF9CSVRfUFJFX1hDT0RFXzNfMSA9ICJwcGMgaTM4NiBwcGM2
NCB4ODZfNjQiOwotCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gYzk5OwotCQkJCUdDQ19X
QVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwotCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJM
RSA9IFlFUzsKLQkJCQlQUkVCSU5ESU5HID0gTk87Ci0JCQkJU0RLUk9PVCA9IC9EZXZlbG9wZXIv
U0RLcy9NYWNPU1gxMC41LnNkazsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTE0
OUMyOTg5MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfMzJfNjRfQklUX1BSRV9YQ09ERV8zXzEpIjsKLQkJCQlBUkNIU19TVEFOREFS
RF8zMl82NF9CSVRfUFJFX1hDT0RFXzNfMSA9ICJwcGMgaTM4NiBwcGM2NCB4ODZfNjQiOwotCQkJ
CUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gYzk5OwotCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVS
Tl9UWVBFID0gWUVTOwotCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKLQkJCQlQ
UkVCSU5ESU5HID0gTk87Ci0JCQkJU0RLUk9PVCA9IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC41
LnNkazsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLS8qIEVuZCBYQ0J1aWxkQ29u
ZmlndXJhdGlvbiBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2Vj
dGlvbiAqLwotCQkxNDlDMjk4MzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIk5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4iICov
ID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCi0JCQkJMTQ5QzI5ODQwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovLAotCQkJCTE0
OUMyOTg1MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFJlbGVhc2U7Ci0JCX07Ci0JCTE0OUMyOTg3MDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIk5ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4i
ICovID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJh
dGlvbnMgPSAoCi0JCQkJMTQ5QzI5ODgwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovLAotCQkJ
CTE0OUMyOTg5MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFJlbGVhc2U7Ci0JCX07Ci0vKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICov
Ci0JfTsKLQlyb290T2JqZWN0ID0gMDg5QzE2NjlGRTg0MTIwOUMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovOwotfQpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9O
ZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luLnhjb2RlcHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBFeGFtcGxl
cy9OZXRzY2FwZUlucHV0TWV0aG9kUGx1Z2luL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4ueGNv
ZGVwcm9qCShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9OZXRzY2FwZUlucHV0TWV0aG9k
UGx1Z2luL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4ueGNvZGVwcm9qCShub25leGlzdGVudCkK
ClByb3BlcnR5IGNoYW5nZXMgb246IEV4YW1wbGVzL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4v
TmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi54Y29kZXByb2oKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46aWdub3JlCiMjIC0xLDUgKzAsMCAjIwotKi5tb2RlKgotKi5wYnh1c2VyCi0qLnBlcnNwZWN0
aXZlKgotcHJvamVjdC54Y3dvcmtzcGFjZQoteGN1c2VyZGF0YQpJbmRleDogRXhhbXBsZXMvTmV0
c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9tYWluLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0
c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi9tYWluLm0JKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4YW1w
bGVzL05ldHNjYXBlSW5wdXRNZXRob2RQbHVnaW4vbWFpbi5tCShub25leGlzdGVudCkKQEAgLTEs
Mzk4ICswLDAgQEAKLS8qCi0gSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBzb2Z0d2FyZSBpcyBzdXBw
bGllZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikgaW4KLSBjb25zaWRlcmF0aW9uIG9m
IHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCB5b3VyIHVzZSwgaW5z
dGFsbGF0aW9uLCAKLSBtb2RpZmljYXRpb24gb3IgcmVkaXN0cmlidXRpb24gb2YgdGhpcyBBcHBs
ZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHRoZXNlIAotIHRlcm1zLiAgSWYg
eW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zLCBwbGVhc2UgZG8gbm90IHVzZSwgaW5z
dGFsbCwgbW9kaWZ5IG9yIAotIHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgotIAot
IEluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gYWJpZGUgYnkgdGhlIGZvbGxv
d2luZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhlc2UgCi0gdGVybXMsIEFwcGxlIGdyYW50cyB5
b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlLCB1bmRlciBBcHBsZeKAmXMgY29w
eXJpZ2h0cyBpbiAKLSB0aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3YXJlICh0aGUgIkFwcGxlIFNv
ZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5kIAotIHJlZGlzdHJpYnV0ZSB0
aGUgQXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBpbiBzb3Vy
Y2UgYW5kL29yIGJpbmFyeSAKLSBmb3JtczsgcHJvdmlkZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmli
dXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50aXJldHkgYW5kIHdpdGhvdXQgCi0gbW9k
aWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5n
IHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAKLSBzdWNoIHJlZGlzdHJpYnV0aW9ucyBvZiB0
aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRoZSBuYW1lLCB0cmFkZW1hcmtzLCBzZXJ2aWNl
IG1hcmtzIAotIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4gbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAKLSB0aGUgQXBwbGUgU29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0
IGFzIGV4cHJlc3NseQotIHN0YXRlZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9y
IGxpY2Vuc2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFwcGxlCi0gaGVy
ZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueSBwYXRlbnQgcmlnaHRzIHRoYXQg
bWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIAotIGRlcml2YXRpdmUgd29ya3Mgb3IgYnkgb3RoZXIg
d29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBiZSBpbmNvcnBvcmF0ZWQuCi0g
Ci0gVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFwcGxlIG9uIGFuICJBUyBJUyIg
YmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVTLCAKLSBFWFBSRVNTIE9SIElNUExJRUQs
IElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBO
T04tSU5GUklOR0VNRU5ULCAKLSBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNPRlRXQVJFIE9SIElUUyAKLSBV
U0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElPTiBXSVRIIFlPVVIgUFJPRFVD
VFMuCi0gCi0gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lB
TCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCAKLSBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyAKLSBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFLCAKLSBS
RVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBBUFBM
RSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5EIAotIFdIRVRIRVIgVU5ERVIgVEhFT1JZIE9G
IENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSksIFNUUklDVCBMSUFCSUxJVFkg
T1IgCi0gT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgPFdlYktpdC9ucGFwaS5o
PgotI2ltcG9ydCA8V2ViS2l0L25wZnVuY3Rpb25zLmg+Ci0jaW1wb3J0IDxXZWJLaXQvbnBydW50
aW1lLmg+Ci0KLSNpbXBvcnQgPENvY29hL0NvY29hLmg+Ci0KLS8vIEJyb3dzZXIgZnVuY3Rpb24g
dGFibGUKLXN0YXRpYyBOUE5ldHNjYXBlRnVuY3MqIGJyb3dzZXI7Ci0KLS8vIFN0cnVjdHVyZSBm
b3IgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLXR5cGVkZWYgc3RydWN0IFBsdWdpbk9iamVjdAotewot
ICAgIE5QUCBucHA7Ci0gICAgCi0gICAgTlBXaW5kb3cgd2luZG93OwotICAgIAotICAgIGJvb2wg
cGx1Z2luSGFzRm9jdXM7Ci0gICAgCi0gICAgYm9vbCB0ZXh0RmllbGRIYXNGb2N1czsKLSAgICBO
U1JlY3QgdGV4dEZpZWxkUmVjdDsKLSAgICAKLSAgICBOU1JhbmdlIHNlbGVjdGVkUmFuZ2U7Ci0g
ICAgTlNUZXh0U3RvcmFnZSAqdGV4dFN0b3JhZ2U7Ci0gICAgTlNMYXlvdXRNYW5hZ2VyICpsYXlv
dXRNYW5hZ2VyOwotICAgIE5TVGV4dENvbnRhaW5lciAqdGV4dENvbnRhaW5lcjsKLSAgICAKLX0g
UGx1Z2luT2JqZWN0OwotCi1OUEVycm9yIE5QUF9OZXcoTlBNSU1FVHlwZSBwbHVnaW5UeXBlLCBO
UFAgaW5zdGFuY2UsIHVpbnQxNiBtb2RlLCBpbnQxNiBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIq
IGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKTsKLU5QRXJyb3IgTlBQX0Rlc3Ryb3koTlBQIGlu
c3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpOwotTlBFcnJvciBOUFBfU2V0V2luZG93KE5QUCBp
bnN0YW5jZSwgTlBXaW5kb3cqIHdpbmRvdyk7Ci1OUEVycm9yIE5QUF9OZXdTdHJlYW0oTlBQIGlu
c3RhbmNlLCBOUE1JTUVUeXBlIHR5cGUsIE5QU3RyZWFtKiBzdHJlYW0sIE5QQm9vbCBzZWVrYWJs
ZSwgdWludDE2KiBzdHlwZSk7Ci1OUEVycm9yIE5QUF9EZXN0cm95U3RyZWFtKE5QUCBpbnN0YW5j
ZSwgTlBTdHJlYW0qIHN0cmVhbSwgTlBSZWFzb24gcmVhc29uKTsKLWludDMyIE5QUF9Xcml0ZVJl
YWR5KE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSk7Ci1pbnQzMiBOUFBfV3JpdGUoTlBQ
IGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBpbnQzMiBvZmZzZXQsIGludDMyIGxlbiwgdm9p
ZCogYnVmZmVyKTsKLXZvaWQgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFt
KiBzdHJlYW0sIGNvbnN0IGNoYXIqIGZuYW1lKTsKLXZvaWQgTlBQX1ByaW50KE5QUCBpbnN0YW5j
ZSwgTlBQcmludCogcGxhdGZvcm1QcmludCk7Ci1pbnQxNiBOUFBfSGFuZGxlRXZlbnQoTlBQIGlu
c3RhbmNlLCB2b2lkKiBldmVudCk7Ci12b2lkIE5QUF9VUkxOb3RpZnkoTlBQIGluc3RhbmNlLCBj
b25zdCBjaGFyKiBVUkwsIE5QUmVhc29uIHJlYXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7Ci1OUEVy
cm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QUFZhcmlhYmxlIHZhcmlhYmxlLCB2b2lk
KiB2YWx1ZSk7Ci1OUEVycm9yIE5QUF9TZXRWYWx1ZShOUFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxl
IHZhcmlhYmxlLCB2b2lkKiB2YWx1ZSk7Ci0KLSNwcmFnbWEgZXhwb3J0IG9uCi0vLyBNYWNoLW8g
ZW50cnkgcG9pbnRzCi1OUEVycm9yIE5QX0luaXRpYWxpemUoTlBOZXRzY2FwZUZ1bmNzKiBicm93
c2VyRnVuY3MpOwotTlBFcnJvciBOUF9HZXRFbnRyeVBvaW50cyhOUFBsdWdpbkZ1bmNzKiBwbHVn
aW5GdW5jcyk7Ci12b2lkIE5QX1NodXRkb3duKHZvaWQpOwotI3ByYWdtYSBleHBvcnQgb2ZmCi0K
LU5QRXJyb3IgTlBfSW5pdGlhbGl6ZShOUE5ldHNjYXBlRnVuY3MqIGJyb3dzZXJGdW5jcykKLXsK
LSAgICBicm93c2VyID0gYnJvd3NlckZ1bmNzOwotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsK
LX0KLQotTlBFcnJvciBOUF9HZXRFbnRyeVBvaW50cyhOUFBsdWdpbkZ1bmNzKiBwbHVnaW5GdW5j
cykKLXsKLSAgICBwbHVnaW5GdW5jcy0+dmVyc2lvbiA9IDExOwotICAgIHBsdWdpbkZ1bmNzLT5z
aXplID0gc2l6ZW9mKHBsdWdpbkZ1bmNzKTsKLSAgICBwbHVnaW5GdW5jcy0+bmV3cCA9IE5QUF9O
ZXc7Ci0gICAgcGx1Z2luRnVuY3MtPmRlc3Ryb3kgPSBOUFBfRGVzdHJveTsKLSAgICBwbHVnaW5G
dW5jcy0+c2V0d2luZG93ID0gTlBQX1NldFdpbmRvdzsKLSAgICBwbHVnaW5GdW5jcy0+bmV3c3Ry
ZWFtID0gTlBQX05ld1N0cmVhbTsKLSAgICBwbHVnaW5GdW5jcy0+ZGVzdHJveXN0cmVhbSA9IE5Q
UF9EZXN0cm95U3RyZWFtOwotICAgIHBsdWdpbkZ1bmNzLT5hc2ZpbGUgPSBOUFBfU3RyZWFtQXNG
aWxlOwotICAgIHBsdWdpbkZ1bmNzLT53cml0ZXJlYWR5ID0gTlBQX1dyaXRlUmVhZHk7Ci0gICAg
cGx1Z2luRnVuY3MtPndyaXRlID0gKE5QUF9Xcml0ZVByb2NQdHIpTlBQX1dyaXRlOwotICAgIHBs
dWdpbkZ1bmNzLT5wcmludCA9IE5QUF9QcmludDsKLSAgICBwbHVnaW5GdW5jcy0+ZXZlbnQgPSBO
UFBfSGFuZGxlRXZlbnQ7Ci0gICAgcGx1Z2luRnVuY3MtPnVybG5vdGlmeSA9IE5QUF9VUkxOb3Rp
Znk7Ci0gICAgcGx1Z2luRnVuY3MtPmdldHZhbHVlID0gTlBQX0dldFZhbHVlOwotICAgIHBsdWdp
bkZ1bmNzLT5zZXR2YWx1ZSA9IE5QUF9TZXRWYWx1ZTsKLSAgICAKLSAgICByZXR1cm4gTlBFUlJf
Tk9fRVJST1I7Ci19Ci0KLXZvaWQgTlBfU2h1dGRvd24odm9pZCkKLXsKLX0KLQotTlBFcnJvciBO
UFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgTlBQIGluc3RhbmNlLCB1aW50MTYgbW9kZSwg
aW50MTYgYXJnYywgY2hhciogYXJnbltdLCBjaGFyKiBhcmd2W10sIE5QU2F2ZWREYXRhKiBzYXZl
ZCkKLXsKLSAgICAvLyBDcmVhdGUgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLSAgICBQbHVnaW5PYmpl
Y3QqIG9iaiA9IChQbHVnaW5PYmplY3QqKW1hbGxvYyhzaXplb2YoUGx1Z2luT2JqZWN0KSk7Ci0g
ICAgYnplcm8ob2JqLCBzaXplb2YoUGx1Z2luT2JqZWN0KSk7Ci0gICAgCi0gICAgb2JqLT5ucHAg
PSBpbnN0YW5jZTsKLSAgICBpbnN0YW5jZS0+cGRhdGEgPSBvYmo7Ci0gICAgCi0gICAgLy8gQXNr
IHRoZSBicm93c2VyIGlmIGl0IHN1cHBvcnRzIHRoZSBDb3JlR3JhcGhpY3MgZHJhd2luZyBtb2Rl
bAotICAgIE5QQm9vbCBzdXBwb3J0c0NvcmVHcmFwaGljczsKLSAgICBpZiAoYnJvd3Nlci0+Z2V0
dmFsdWUoaW5zdGFuY2UsIE5QTlZzdXBwb3J0c0NvcmVHcmFwaGljc0Jvb2wsICZzdXBwb3J0c0Nv
cmVHcmFwaGljcykgIT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIHN1cHBvcnRzQ29yZUdyYXBo
aWNzID0gRkFMU0U7Ci0gICAgCi0gICAgaWYgKCFzdXBwb3J0c0NvcmVHcmFwaGljcykKLSAgICAg
ICAgcmV0dXJuIE5QRVJSX0lOQ09NUEFUSUJMRV9WRVJTSU9OX0VSUk9SOwotICAgIAotICAgIC8v
IElmIHRoZSBicm93c2VyIHN1cHBvcnRzIHRoZSBDb3JlR3JhcGhpY3MgZHJhd2luZyBtb2RlbCwg
ZW5hYmxlIGl0LgotICAgIGJyb3dzZXItPnNldHZhbHVlKGluc3RhbmNlLCBOUFBWcGx1Z2luRHJh
d2luZ01vZGVsLCAodm9pZCopTlBEcmF3aW5nTW9kZWxDb3JlR3JhcGhpY3MpOwotCi0gICAgLy8g
SWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMgdGhlIENvY29hIGV2ZW50IG1vZGVsLCBlbmFibGUgaXQu
Ci0gICAgTlBCb29sIHN1cHBvcnRzQ29jb2E7Ci0gICAgaWYgKGJyb3dzZXItPmdldHZhbHVlKGlu
c3RhbmNlLCBOUE5Wc3VwcG9ydHNDb2NvYUJvb2wsICZzdXBwb3J0c0NvY29hKSAhPSBOUEVSUl9O
T19FUlJPUikKLSAgICAgICAgc3VwcG9ydHNDb2NvYSA9IEZBTFNFOwotICAgIAotICAgIGlmICgh
c3VwcG9ydHNDb2NvYSkKLSAgICAgICAgcmV0dXJuIE5QRVJSX0lOQ09NUEFUSUJMRV9WRVJTSU9O
X0VSUk9SOwotICAgIAotICAgIGJyb3dzZXItPnNldHZhbHVlKGluc3RhbmNlLCBOUFBWcGx1Z2lu
RXZlbnRNb2RlbCwgKHZvaWQqKU5QRXZlbnRNb2RlbENvY29hKTsKLQotICAgIG9iai0+dGV4dEZp
ZWxkUmVjdCA9IE5TTWFrZVJlY3QoMTAsIDEwLCAyMDAsIDEwMCk7Ci0KLSAgICBvYmotPnRleHRT
dG9yYWdlID0gW1tOU1RleHRTdG9yYWdlIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIiJdOwotICAg
IG9iai0+bGF5b3V0TWFuYWdlciA9IFtbTlNMYXlvdXRNYW5hZ2VyIGFsbG9jXSBpbml0XTsKLSAg
ICBbb2JqLT50ZXh0U3RvcmFnZSBhZGRMYXlvdXRNYW5hZ2VyOm9iai0+bGF5b3V0TWFuYWdlcl07
Ci0gICAgCi0gICAgb2JqLT50ZXh0Q29udGFpbmVyID0gW1tOU1RleHRDb250YWluZXIgYWxsb2Nd
IGluaXRXaXRoQ29udGFpbmVyU2l6ZTpvYmotPnRleHRGaWVsZFJlY3Quc2l6ZV07Ci0gICAgW29i
ai0+bGF5b3V0TWFuYWdlciBhZGRUZXh0Q29udGFpbmVyOm9iai0+dGV4dENvbnRhaW5lcl07Ci0K
LSAgICBvYmotPnNlbGVjdGVkUmFuZ2UubG9jYXRpb24gPSBbb2JqLT50ZXh0U3RvcmFnZSBsZW5n
dGhdOwotICAgIAotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotTlBFcnJvciBOUFBf
RGVzdHJveShOUFAgaW5zdGFuY2UsIE5QU2F2ZWREYXRhKiogc2F2ZSkKLXsKLSAgICAvLyBGcmVl
IHBlci1pbnN0YW5jZSBzdG9yYWdlCi0gICAgUGx1Z2luT2JqZWN0KiBvYmogPSBpbnN0YW5jZS0+
cGRhdGE7Ci0gICAgCi0gICAgW29iai0+dGV4dFN0b3JhZ2UgcmVsZWFzZV07Ci0gICAgW29iai0+
bGF5b3V0TWFuYWdlciByZWxlYXNlXTsKLSAgICAKLSAgICBmcmVlKG9iaik7Ci0gICAgCi0gICAg
cmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QUF9TZXRXaW5kb3coTlBQIGlu
c3RhbmNlLCBOUFdpbmRvdyogd2luZG93KQotewotICAgIFBsdWdpbk9iamVjdCogb2JqID0gaW5z
dGFuY2UtPnBkYXRhOwotICAgIG9iai0+d2luZG93ID0gKndpbmRvdzsKLQotICAgIHJldHVybiBO
UEVSUl9OT19FUlJPUjsKLX0KLSAKLQotTlBFcnJvciBOUFBfTmV3U3RyZWFtKE5QUCBpbnN0YW5j
ZSwgTlBNSU1FVHlwZSB0eXBlLCBOUFN0cmVhbSogc3RyZWFtLCBOUEJvb2wgc2Vla2FibGUsIHVp
bnQxNiogc3R5cGUpCi17Ci0gICAgKnN0eXBlID0gTlBfQVNGSUxFT05MWTsKLSAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3Rh
bmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJlYXNvbiByZWFzb24pCi17Ci0gICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOwotfQotCi1pbnQzMiBOUFBfV3JpdGVSZWFkeShOUFAgaW5zdGFuY2UsIE5Q
U3RyZWFtKiBzdHJlYW0pCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLWludDMyIE5QUF9Xcml0ZShO
UFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGludDMyIG9mZnNldCwgaW50MzIgbGVuLCB2
b2lkKiBidWZmZXIpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgTlBQX1N0cmVhbUFzRmls
ZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiBzdHJlYW0sIGNvbnN0IGNoYXIqIGZuYW1lKQotewot
fQotCi12b2lkIE5QUF9QcmludChOUFAgaW5zdGFuY2UsIE5QUHJpbnQqIHBsYXRmb3JtUHJpbnQp
Ci17Ci0KLX0KLQotc3RhdGljIHZvaWQgaGFuZGxlRHJhdyhQbHVnaW5PYmplY3QqIG9iaiwgTlBD
b2NvYUV2ZW50ICpldmVudCkKLXsKLSAgICBOU0dyYXBoaWNzQ29udGV4dCAqb2xkQ29udGV4dCA9
IFtbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdIHJldGFpbl07Ci0gICAgCi0gICAg
TlNHcmFwaGljc0NvbnRleHQgKmNvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3ND
b250ZXh0V2l0aEdyYXBoaWNzUG9ydDpldmVudC0+ZGF0YS5kcmF3LmNvbnRleHQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmbGlwcGVkOllFU107Ci0KLQotICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRD
dXJyZW50Q29udGV4dDpjb250ZXh0XTsKLSAgICAKLSAgICBOU1JlY3QgcmVjdCA9IE5TTWFrZVJl
Y3QoMCwgMCwgb2JqLT53aW5kb3cud2lkdGgsIG9iai0+d2luZG93LmhlaWdodCk7Ci0gICAgCi0g
ICAgW1tOU0NvbG9yIGxpZ2h0R3JheUNvbG9yXSBzZXRdOwotICAgIFtOU0JlemllclBhdGggZmls
bFJlY3Q6cmVjdF07Ci0KLSAgICBpZiAob2JqLT5wbHVnaW5IYXNGb2N1cykgewotICAgICAgICBb
W05TQ29sb3IgYmxhY2tDb2xvcl0gc2V0XTsKLSAgICAgICAgW05TQmV6aWVyUGF0aCBzdHJva2VS
ZWN0OnJlY3RdOwotICAgIH0KLSAgICAKLSAgICBbW05TQ29sb3Igd2hpdGVDb2xvcl0gc2V0XTsK
LSAgICBbTlNCZXppZXJQYXRoIGZpbGxSZWN0Om9iai0+dGV4dEZpZWxkUmVjdF07Ci0KLSAgICAv
LyBEcmF3IHRoZSB0ZXh0Ci0gICAgTlNSYW5nZSBnbHlwaFJhbmdlID0gW29iai0+bGF5b3V0TWFu
YWdlciBnbHlwaFJhbmdlRm9yVGV4dENvbnRhaW5lcjpvYmotPnRleHRDb250YWluZXJdOwotICAg
IGlmIChnbHlwaFJhbmdlLmxlbmd0aCA+IDApIHsKLSAgICAgICAgW29iai0+bGF5b3V0TWFuYWdl
ciBkcmF3QmFja2dyb3VuZEZvckdseXBoUmFuZ2U6Z2x5cGhSYW5nZSBhdFBvaW50Om9iai0+dGV4
dEZpZWxkUmVjdC5vcmlnaW5dOwotICAgICAgICBbb2JqLT5sYXlvdXRNYW5hZ2VyIGRyYXdHbHlw
aHNGb3JHbHlwaFJhbmdlOmdseXBoUmFuZ2UgYXRQb2ludDpvYmotPnRleHRGaWVsZFJlY3Qub3Jp
Z2luXTsKLSAgICB9Ci0gICAgCi0gICAgTlNCZXppZXJQYXRoICp0ZXh0SW5wdXRCb3JkZXIgPSBb
TlNCZXppZXJQYXRoIGJlemllclBhdGhXaXRoUmVjdDpvYmotPnRleHRGaWVsZFJlY3RdOwotICAg
IFtbTlNDb2xvciBibGFja0NvbG9yXSBzZXRdOwotICAgIAotICAgIGlmIChvYmotPnBsdWdpbkhh
c0ZvY3VzICYmIG9iai0+dGV4dEZpZWxkSGFzRm9jdXMpCi0gICAgICAgIFt0ZXh0SW5wdXRCb3Jk
ZXIgc2V0TGluZVdpZHRoOjJdOwotICAgIGVsc2UKLSAgICAgICAgW3RleHRJbnB1dEJvcmRlciBz
ZXRMaW5lV2lkdGg6MV07Ci0gICAgCi0gICAgW3RleHRJbnB1dEJvcmRlciBzdHJva2VdOwotICAg
IAotICAgIGlmIChvYmotPnBsdWdpbkhhc0ZvY3VzICYmIG9iai0+dGV4dEZpZWxkSGFzRm9jdXMp
IHsKLSAgICAgICAgTlNVSW50ZWdlciByZWN0Q291bnQ7Ci0gICAgICAgIE5TUmVjdCAqcmVjdEFy
cmF5ID0gW29iai0+bGF5b3V0TWFuYWdlciByZWN0QXJyYXlGb3JDaGFyYWN0ZXJSYW5nZTpvYmot
PnNlbGVjdGVkUmFuZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2l0aGluU2VsZWN0ZWRDaGFyYWN0ZXJSYW5nZTpvYmotPnNlbGVjdGVkUmFuZ2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5UZXh0
Q29udGFpbmVyOm9iai0+dGV4dENvbnRhaW5lcgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3RDb3VudDomcmVjdENvdW50
XTsKLSAgICAgICAgCi0gICAgICAgIFtbTlNDb2xvciBibGFja0NvbG9yXSBzZXRdOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50OyBpKyspIHsKLSAgICAgICAgICAg
IE5TUmVjdCByZWN0ID0gcmVjdEFycmF5W2ldOwotICAgICAgICAgICAgcmVjdC5vcmlnaW4ueCAr
PSBvYmotPnRleHRGaWVsZFJlY3Qub3JpZ2luLng7Ci0gICAgICAgICAgICByZWN0Lm9yaWdpbi55
ICs9IG9iai0+dGV4dEZpZWxkUmVjdC5vcmlnaW4ueTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgW05TQmV6aWVyUGF0aCBzdHJva2VSZWN0OnJlY3RdOwotICAgICAgICB9ICAgICAgICAKLSAg
ICB9Ci0gICAgCi0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0Om9sZENv
bnRleHRdOwotfQotCi1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlUGx1Z2luKFBsdWdpbk9iamVjdCog
b2JqKQotewotICAgIE5QUmVjdCByZWN0OwotICAgIHJlY3QubGVmdCA9IDA7Ci0gICAgcmVjdC50
b3AgPSAwOwotICAgIHJlY3QucmlnaHQgPSBvYmotPndpbmRvdy53aWR0aDsKLSAgICByZWN0LmJv
dHRvbSA9IG9iai0+d2luZG93LmhlaWdodDsKLSAgICAKLSAgICBicm93c2VyLT5pbnZhbGlkYXRl
cmVjdChvYmotPm5wcCwgJnJlY3QpOyAgICAKLX0KLQotc3RhdGljIHZvaWQgaGFuZGxlRm9jdXND
aGFuZ2VkKE5QQ29jb2FFdmVudCogY29jb2FFdmVudCwgUGx1Z2luT2JqZWN0KiBvYmopCi17Ci0g
ICAgb2JqLT5wbHVnaW5IYXNGb2N1cyA9IGNvY29hRXZlbnQtPmRhdGEuZm9jdXMuaGFzRm9jdXM7
Ci0gICAgCi0gICAgaW52YWxpZGF0ZVBsdWdpbihvYmopOwotfQotCi1zdGF0aWMgdm9pZCBoYW5k
bGVNb3VzZU1vdmVkKE5QQ29jb2FFdmVudCogY29jb2FFdmVudCwgUGx1Z2luT2JqZWN0KiBvYmop
Ci17Ci0gICAgTlNQb2ludCBwb2ludCA9IE5TTWFrZVBvaW50KGNvY29hRXZlbnQtPmRhdGEubW91
c2UucGx1Z2luWCwgY29jb2FFdmVudC0+ZGF0YS5tb3VzZS5wbHVnaW5ZKTsKLSAgICAKLSAgICBp
ZiAoTlNQb2ludEluUmVjdChwb2ludCwgb2JqLT50ZXh0RmllbGRSZWN0KSkKLSAgICAgICAgW1tO
U0N1cnNvciBJQmVhbUN1cnNvcl0gc2V0XTsKLSAgICBlbHNlCi0gICAgICAgIFtbTlNDdXJzb3Ig
YXJyb3dDdXJzb3JdIHNldF07Ci19Ci0KLXN0YXRpYyB2b2lkIGhhbmRsZU1vdXNlRG93bihOUENv
Y29hRXZlbnQqIGNvY29hRXZlbnQsIFBsdWdpbk9iamVjdCogb2JqKSAKLXsKLSAgICBOU1BvaW50
IHBvaW50ID0gTlNNYWtlUG9pbnQoY29jb2FFdmVudC0+ZGF0YS5tb3VzZS5wbHVnaW5YLCBjb2Nv
YUV2ZW50LT5kYXRhLm1vdXNlLnBsdWdpblkpOwotICAgIAotICAgIG9iai0+dGV4dEZpZWxkSGFz
Rm9jdXMgPSBOU1BvaW50SW5SZWN0KHBvaW50LCBvYmotPnRleHRGaWVsZFJlY3QpOwotICAgIAot
ICAgIGludmFsaWRhdGVQbHVnaW4ob2JqKTsKLX0KLQotc3RhdGljIGludDE2X3QgaGFuZGxlVGV4
dEZpZWxkS2V5RG93bihOUENvY29hRXZlbnQqIGV2ZW50LCBQbHVnaW5PYmplY3QqIG9iaikKLXsK
LSAgICBOU1N0cmluZyAqc3RyaW5nID0gKE5TU3RyaW5nICopZXZlbnQtPmRhdGEua2V5LmNoYXJh
Y3RlcnNJZ25vcmluZ01vZGlmaWVyczsKLSAgICAKLSAgICB1bmljaGFyIGMgPSBbc3RyaW5nIGxl
bmd0aF0gPiAwID8gW3N0cmluZyBjaGFyYWN0ZXJBdEluZGV4OjBdIDogMDsKLSAgICAKLSAgICBz
d2l0Y2ggKGMpIHsKLSAgICAgICAgY2FzZSBOU0xlZnRBcnJvd0Z1bmN0aW9uS2V5OgotICAgICAg
ICAgICAgaWYgKG9iai0+c2VsZWN0ZWRSYW5nZS5sb2NhdGlvbiA+IDApIHsKLSAgICAgICAgICAg
ICAgICBvYmotPnNlbGVjdGVkUmFuZ2UubG9jYXRpb24tLTsKLSAgICAgICAgICAgICAgICBpbnZh
bGlkYXRlUGx1Z2luKG9iaik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgICAgIAotICAgICAgICBjYXNlIE5TUmlnaHRBcnJvd0Z1bmN0aW9uS2V5OgotICAg
ICAgICAgICAgaWYgKG9iai0+c2VsZWN0ZWRSYW5nZS5sb2NhdGlvbiA8IFtvYmotPnRleHRTdG9y
YWdlIGxlbmd0aF0pIHsKLSAgICAgICAgICAgICAgICBvYmotPnNlbGVjdGVkUmFuZ2UubG9jYXRp
b24rKzsgIAotICAgICAgICAgICAgICAgIGludmFsaWRhdGVQbHVnaW4ob2JqKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAg
ICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAvLyBSZXR1cm4gMCBhbmQgbGV0IHRo
ZSB0ZXh0IGlucHV0IHN5c3RlbSBoYW5kbGUgaXQuCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci19Ci0KLQotc3RhdGljIGludDE2X3QgaGFuZGxlVGV4dElucHV0KE5QQ29jb2FFdmVudCog
ZXZlbnQsIFBsdWdpbk9iamVjdCogb2JqKQotewotICAgIE5TU3RyaW5nICpzdHJpbmcgPSAoTlNT
dHJpbmcgKilldmVudC0+ZGF0YS50ZXh0LnRleHQ7Ci0gICAgTlNSYW5nZSByYW5nZSA9IG9iai0+
c2VsZWN0ZWRSYW5nZTsKLSAgICAgICAgCi0gICAgW29iai0+dGV4dFN0b3JhZ2UgcmVwbGFjZUNo
YXJhY3RlcnNJblJhbmdlOnJhbmdlIHdpdGhTdHJpbmc6c3RyaW5nXTsKLSAgICAgICAgCi0gICAg
b2JqLT5zZWxlY3RlZFJhbmdlLmxvY2F0aW9uID0gcmFuZ2UubG9jYXRpb24gKyBbc3RyaW5nIGxl
bmd0aF07Ci0gICAgb2JqLT5zZWxlY3RlZFJhbmdlLmxlbmd0aCA9IDA7Ci0KLSAgICBpbnZhbGlk
YXRlUGx1Z2luKG9iaik7Ci0gICAgCi0gICAgcmV0dXJuIDE7Ci19Ci0KLWludDE2IE5QUF9IYW5k
bGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQqIGV2ZW50KQotewotICAgIFBsdWdpbk9iamVjdCog
b2JqID0gaW5zdGFuY2UtPnBkYXRhOwotCi0gICAgTlBDb2NvYUV2ZW50KiBjb2NvYUV2ZW50ID0g
ZXZlbnQ7Ci0gICAgCi0gICAgc3dpdGNoIChjb2NvYUV2ZW50LT50eXBlKSB7Ci0gICAgICAgIGNh
c2UgTlBDb2NvYUV2ZW50RHJhd1JlY3Q6Ci0gICAgICAgICAgICBoYW5kbGVEcmF3KG9iaiwgY29j
b2FFdmVudCk7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBOUENvY29hRXZl
bnRGb2N1c0NoYW5nZWQ6Ci0gICAgICAgICAgICBoYW5kbGVGb2N1c0NoYW5nZWQoY29jb2FFdmVu
dCwgb2JqKTsKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIE5QQ29jb2FFdmVu
dE1vdXNlTW92ZWQ6Ci0gICAgICAgICAgICBoYW5kbGVNb3VzZU1vdmVkKGNvY29hRXZlbnQsIG9i
aik7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgY2FzZSBOUENvY29hRXZlbnRNb3Vz
ZURvd246Ci0gICAgICAgICAgICBoYW5kbGVNb3VzZURvd24oY29jb2FFdmVudCwgb2JqKTsKLSAg
ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIE5QQ29jb2FFdmVudEtleURvd246Ci0g
ICAgICAgICAgICAvLyBJZiB0aGUgdGV4dCBmaWVsZCBoYXMgZm9jdXMgd2UgaWdub3JlIHRoZSBl
dmVudCwgY2F1c2luZyBpdAotICAgICAgICAgICAgLy8gdG8gYmUgc2VudCB0byB0aGUgaW5wdXQg
bWFuYWdlci4KLSAgICAgICAgICAgIGlmIChvYmotPnRleHRGaWVsZEhhc0ZvY3VzKQotICAgICAg
ICAgICAgICAgIHJldHVybiBoYW5kbGVUZXh0RmllbGRLZXlEb3duKGNvY29hRXZlbnQsIG9iaik7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNh
c2UgTlBDb2NvYUV2ZW50VGV4dElucHV0OgotICAgICAgICAgICAgcmV0dXJuIGhhbmRsZVRleHRJ
bnB1dChjb2NvYUV2ZW50LCBvYmopOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgfQotICAgIAotICAgIHJldHVybiAwOwotfQotCi12b2lkIE5QUF9VUkxOb3Rp
ZnkoTlBQIGluc3RhbmNlLCBjb25zdCBjaGFyKiB1cmwsIE5QUmVhc29uIHJlYXNvbiwgdm9pZCog
bm90aWZ5RGF0YSkKLXsKLX0KLQotTlBFcnJvciBOUFBfR2V0VmFsdWUoTlBQIGluc3RhbmNlLCBO
UFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCi17Ci0gICAgcmV0dXJuIE5QRVJSX0dF
TkVSSUNfRVJST1I7Ci19Ci0KLU5QRXJyb3IgTlBQX1NldFZhbHVlKE5QUCBpbnN0YW5jZSwgTlBO
VmFyaWFibGUgdmFyaWFibGUsIHZvaWQqIHZhbHVlKQotewotICAgIHJldHVybiBOUEVSUl9HRU5F
UklDX0VSUk9SOwotfQpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdpbi90
ZXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0c2NhcGVJbnB1dE1ldGhvZFBsdWdp
bi90ZXN0Lmh0bWwJKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4YW1wbGVzL05ldHNjYXBlSW5wdXRN
ZXRob2RQbHVnaW4vdGVzdC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTEgKzAsMCBAQAotPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9F
TiIgImh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLWh0bWw0MDEtMTk5OTEyMjQvbG9vc2Uu
ZHRkIj4KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+TmV0c2NhcGUgSW5wdXQgTWV0aG9kIFBsdWct
SW48L3RpdGxlPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2PgotICAgIDxlbWJlZCB3aWR0aD0iNDAw
IiBoZWlnaHQ9IjQwMCIgdHlwZT0idGVzdC94LW5ldHNjYXBlLWlucHV0LW1ldGhvZC1wbHVnaW4i
PjwvZW1iZWQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IEV4YW1wbGVzL05ldHNj
YXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEV4YW1wbGVzL05l
dHNjYXBlTXV0ZUFQSVBsdWdpbi9BdWRpb1BsYXllci5oCShyZXZpc2lvbiAyNDg5NjUpCisrKyBF
eGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIuaAkobm9uZXhpc3RlbnQp
CkBAIC0xLDYyICswLDAgQEAKLS8qCi0gSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBzb2Z0d2FyZSBp
cyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikgaW4KLSBjb25zaWRlcmF0
aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCB5b3VyIHVz
ZSwgaW5zdGFsbGF0aW9uLAotIG1vZGlmaWNhdGlvbiBvciByZWRpc3RyaWJ1dGlvbiBvZiB0aGlz
IEFwcGxlIHNvZnR3YXJlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlc2UKLSB0ZXJtcy4g
IElmIHlvdSBkbyBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcywgcGxlYXNlIGRvIG5vdCB1c2Us
IGluc3RhbGwsIG1vZGlmeSBvcgotIHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxlIHNvZnR3YXJlLgot
Ci0gSW4gY29uc2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byBhYmlkZSBieSB0aGUgZm9s
bG93aW5nIHRlcm1zLCBhbmQgc3ViamVjdCB0byB0aGVzZQotIHRlcm1zLCBBcHBsZSBncmFudHMg
eW91IGEgcGVyc29uYWwsIG5vbi1leGNsdXNpdmUgbGljZW5zZSwgdW5kZXIgQXBwbGXigJlzIGNv
cHlyaWdodHMgaW4KLSB0aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3YXJlICh0aGUgIkFwcGxlIFNv
ZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5kCi0gcmVkaXN0cmlidXRlIHRo
ZSBBcHBsZSBTb2Z0d2FyZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGluIHNvdXJj
ZSBhbmQvb3IgYmluYXJ5Ci0gZm9ybXM7IHByb3ZpZGVkIHRoYXQgaWYgeW91IHJlZGlzdHJpYnV0
ZSB0aGUgQXBwbGUgU29mdHdhcmUgaW4gaXRzIGVudGlyZXR5IGFuZCB3aXRob3V0Ci0gbW9kaWZp
Y2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90aWNlIGFuZCB0aGUgZm9sbG93aW5nIHRl
eHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbAotIHN1Y2ggcmVkaXN0cmlidXRpb25zIG9mIHRoZSBB
cHBsZSBTb2Z0d2FyZS4gIE5laXRoZXIgdGhlIG5hbWUsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFy
a3MKLSBvciBsb2dvcyBvZiBBcHBsZSBJbmMuIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSB0aGUgQXBwbGUgU29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4
cHJlc3NseQotIHN0YXRlZCBpbiB0aGlzIG5vdGljZSwgbm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vu
c2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFyZSBncmFudGVkIGJ5IEFwcGxlCi0gaGVyZWluLCBp
bmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueSBwYXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJl
IGluZnJpbmdlZCBieSB5b3VyCi0gZGVyaXZhdGl2ZSB3b3JrcyBvciBieSBvdGhlciB3b3JrcyBp
biB3aGljaCB0aGUgQXBwbGUgU29mdHdhcmUgbWF5IGJlIGluY29ycG9yYXRlZC4KLQotIFRoZSBB
cHBsZSBTb2Z0d2FyZSBpcyBwcm92aWRlZCBieSBBcHBsZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiAg
QVBQTEUgTUFLRVMgTk8gV0FSUkFOVElFUywKLSBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElO
RyBXSVRIT1VUIExJTUlUQVRJT04gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklO
R0VNRU5ULAotIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UsIFJFR0FSRElORyBUSEUgQVBQTEUgU09GVFdBUkUgT1IgSVRTCi0gVVNFIEFORCBPUEVS
QVRJT04gQUxPTkUgT1IgSU4gQ09NQklOQVRJT04gV0lUSCBZT1VSIFBST0RVQ1RTLgotCi0gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTAotIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTCi0gT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSwKLSBSRVBST0RVQ1RJT04sIE1P
RElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gV0hFVEhFUiBVTkRFUiBUSEVPUlkgT0YgQ09OVFJBQ1QsIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFKSwgU1RSSUNUIExJQUJJTElUWSBPUgotIE9USEVSV0lTRSwg
RVZFTiBJRiBBUFBMRSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxXZWJLaXQvbnBmdW5jdGlvbnMuaD4KLQotQGNsYXNz
IEFWUGxheWVyOwotQGNsYXNzIEFWUGxheWVySXRlbTsKLUBjbGFzcyBBdWRpb1BsYXllcjsKLQot
QHByb3RvY29sIEF1ZGlvUGxheWVyRGVsZWdhdGUgPE5TT2JqZWN0PgotCi0tICh2b2lkKXJlYWR5
U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjooQXVkaW9QbGF5ZXIgKilhdWRpb1BsYXllcjsK
LS0gKHZvaWQpbXV0ZWRTdGF0ZURpZENoYW5nZUZvckF1ZGlvUGxheWVyOihBdWRpb1BsYXllciAq
KWF1ZGlvUGxheWVyOwotLSAodm9pZClwbGF5U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjoo
QXVkaW9QbGF5ZXIgKilhdWRpb1BsYXllcjsKLQotQGVuZAotCi1AaW50ZXJmYWNlIEF1ZGlvUGxh
eWVyIDogTlNPYmplY3QgewotICAgIEJPT0wgX3BsYXlpbmc7Ci0gICAgQVZQbGF5ZXIgKl9hdWRp
b1BsYXllcjsKLSAgICBBVlBsYXllckl0ZW0gKl9wbGF5ZXJJdGVtOwotICAgIGlkPEF1ZGlvUGxh
eWVyRGVsZWdhdGU+IF9hdWRpb1BsYXllckRlbGVnYXRlOwotfQotCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhVUkw6KE5TVVJMICopdXJsOwotCi1AcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaykg
aWQ8QXVkaW9QbGF5ZXJEZWxlZ2F0ZT4gYXVkaW9QbGF5ZXJEZWxlZ2F0ZTsKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlzUmVhZHlUb1BsYXkpIEJPT0wgcmVhZHlUb1Bs
YXk7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzUGxheWluZykgQk9PTCBwbGF5aW5n
OwotQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1pc011dGVkKSBCT09MIG11dGVkOwotCi1A
ZW5kCkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vQXVkaW9QbGF5ZXIubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0F1ZGlvUGxheWVy
Lm1tCShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4v
QXVkaW9QbGF5ZXIubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTggKzAsMCBAQAotLyoKLSBJTVBP
UlRBTlQ6ICBUaGlzIEFwcGxlIHNvZnR3YXJlIGlzIHN1cHBsaWVkIHRvIHlvdSBieSBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBpbgotIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gdGhl
IGZvbGxvd2luZyB0ZXJtcywgYW5kIHlvdXIgdXNlLCBpbnN0YWxsYXRpb24sCi0gbW9kaWZpY2F0
aW9uIG9yIHJlZGlzdHJpYnV0aW9uIG9mIHRoaXMgQXBwbGUgc29mdHdhcmUgY29uc3RpdHV0ZXMg
YWNjZXB0YW5jZSBvZiB0aGVzZQotIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRo
ZXNlIHRlcm1zLCBwbGVhc2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yCi0gcmVkaXN0
cmlidXRlIHRoaXMgQXBwbGUgc29mdHdhcmUuCi0KLSBJbiBjb25zaWRlcmF0aW9uIG9mIHlvdXIg
YWdyZWVtZW50IHRvIGFiaWRlIGJ5IHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCBzdWJqZWN0IHRv
IHRoZXNlCi0gdGVybXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2
ZSBsaWNlbnNlLCB1bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbgotIHRoaXMgb3JpZ2luYWwg
QXBwbGUgc29mdHdhcmUgKHRoZSAiQXBwbGUgU29mdHdhcmUiKSwgdG8gdXNlLCByZXByb2R1Y2Us
IG1vZGlmeSBhbmQKLSByZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJlLCB3aXRoIG9yIHdp
dGhvdXQgbW9kaWZpY2F0aW9ucywgaW4gc291cmNlIGFuZC9vciBiaW5hcnkKLSBmb3JtczsgcHJv
dmlkZWQgdGhhdCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMg
ZW50aXJldHkgYW5kIHdpdGhvdXQKLSBtb2RpZmljYXRpb25zLCB5b3UgbXVzdCByZXRhaW4gdGhp
cyBub3RpY2UgYW5kIHRoZSBmb2xsb3dpbmcgdGV4dCBhbmQgZGlzY2xhaW1lcnMgaW4gYWxsCi0g
c3VjaCByZWRpc3RyaWJ1dGlvbnMgb2YgdGhlIEFwcGxlIFNvZnR3YXJlLiAgTmVpdGhlciB0aGUg
bmFtZSwgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcwotIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4g
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IHRoZSBBcHBsZSBTb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbiBmcm9tIEFwcGxlLiBFeGNlcHQgYXMgZXhwcmVzc2x5Ci0gc3RhdGVkIGluIHRoaXMgbm90
aWNlLCBubyBvdGhlciByaWdodHMgb3IgbGljZW5zZXMsIGV4cHJlc3Mgb3IgaW1wbGllZCwgYXJl
IGdyYW50ZWQgYnkgQXBwbGUKLSBoZXJlaW4sIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8g
YW55IHBhdGVudCByaWdodHMgdGhhdCBtYXkgYmUgaW5mcmluZ2VkIGJ5IHlvdXIKLSBkZXJpdmF0
aXZlIHdvcmtzIG9yIGJ5IG90aGVyIHdvcmtzIGluIHdoaWNoIHRoZSBBcHBsZSBTb2Z0d2FyZSBt
YXkgYmUgaW5jb3Jwb3JhdGVkLgotCi0gVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5
IEFwcGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVTLAot
IEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE5PTi1JTkZSSU5HRU1FTlQsCi0gTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUkVHQVJESU5HIFRIRSBBUFBMRSBT
T0ZUV0FSRSBPUiBJVFMKLSBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElP
TiBXSVRIIFlPVVIgUFJPRFVDVFMuCi0KLSBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBCRSBMSUFC
TEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFM
Ci0gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MKLSBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFLAotIFJFUFJPRFVDVElPTiwgTU9ESUZJQ0FUSU9OIEFORC9PUiBESVNUUklCVVRJ
T04gT0YgVEhFIEFQUExFIFNPRlRXQVJFLCBIT1dFVkVSIENBVVNFRCBBTkQKLSBXSEVUSEVSIFVO
REVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UpLCBTVFJJ
Q1QgTElBQklMSVRZIE9SCi0gT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVOIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQgIkF1
ZGlvUGxheWVyLmgiCi0KLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkZvdW5kYXRpb24uaD4KLQot
c3RhdGljIHZvaWQgKml0ZW1TdGF0dXNLVk9Db250ZXh0ID0gJml0ZW1TdGF0dXNLVk9Db250ZXh0
OwotCi1AaW1wbGVtZW50YXRpb24gQXVkaW9QbGF5ZXIKLQotQHN5bnRoZXNpemUgYXVkaW9QbGF5
ZXJEZWxlZ2F0ZT1fYXVkaW9QbGF5ZXJEZWxlZ2F0ZTsKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoVVJMOihOU1VSTCAqKXVybAotewotICAgIGlmICghdXJsLmFic29sdXRlU3RyaW5nLmxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgQVZVUkxBc3NldCAqYXZBc3NldCA9IFtBVlVS
TEFzc2V0IFVSTEFzc2V0V2l0aFVSTDp1cmwgb3B0aW9uczpuaWxdOwotICAgIF9wbGF5ZXJJdGVt
ID0gW1tBVlBsYXllckl0ZW0gYWxsb2NdIGluaXRXaXRoQXNzZXQ6YXZBc3NldF07Ci0gICAgW19w
bGF5ZXJJdGVtIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyIgb3B0aW9uczow
IGNvbnRleHQ6aXRlbVN0YXR1c0tWT0NvbnRleHRdOwotICAgIF9hdWRpb1BsYXllciA9IFtbQVZQ
bGF5ZXIgYWxsb2NdIGluaXRXaXRoUGxheWVySXRlbTpfcGxheWVySXRlbV07Ci0KLSAgICByZXR1
cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19wbGF5ZXJJdGVtIHJlbW92
ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInN0YXR1cyJdOwotICAgIFtfYXVkaW9QbGF5ZXIg
cmVsZWFzZV07Ci0gICAgW19wbGF5ZXJJdGVtIHJlbGVhc2VdOwotICAgIFtzdXBlciBkZWFsbG9j
XTsKLX0KLQotLSAoQk9PTClpc1JlYWR5VG9QbGF5Ci17Ci0gICAgcmV0dXJuIF9hdWRpb1BsYXll
ci5jdXJyZW50SXRlbS5zdGF0dXMgPT0gQVZQbGF5ZXJJdGVtU3RhdHVzUmVhZHlUb1BsYXk7Ci19
Ci0KLS0gKEJPT0wpaXNQbGF5aW5nCi17Ci0gICAgcmV0dXJuIF9wbGF5aW5nOwotfQotCi0tICh2
b2lkKXNldFBsYXlpbmc6KEJPT0wpcGxheWluZwotewotICAgIGlmIChfcGxheWluZyA9PSBwbGF5
aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAocGxheWluZyAmJiAhc2VsZi5pc1JlYWR5
VG9QbGF5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBfcGxheWluZyA9IHBsYXlpbmc7Ci0KLSAg
ICBpZiAoX3BsYXlpbmcpCi0gICAgICAgIFtfYXVkaW9QbGF5ZXIgcGxheV07Ci0gICAgZWxzZQot
ICAgICAgICBbX2F1ZGlvUGxheWVyIHBhdXNlXTsKLQotICAgIFtfYXVkaW9QbGF5ZXJEZWxlZ2F0
ZSBwbGF5U3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjpzZWxmXTsKLX0KLQotLSAoQk9PTClp
c011dGVkCi17Ci0gICAgcmV0dXJuIF9hdWRpb1BsYXllci5pc011dGVkOwotfQotCi0tICh2b2lk
KXNldE11dGVkOihCT09MKW11dGVkCi17Ci0gICAgaWYgKHNlbGYuaXNNdXRlZCA9PSBtdXRlZCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgX2F1ZGlvUGxheWVyLm11dGVkID0gbXV0ZWQ7Ci0gICAg
W19hdWRpb1BsYXllckRlbGVnYXRlIG11dGVkU3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXllcjpz
ZWxmXTsKLX0KLQotLSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtl
eVBhdGggb2ZPYmplY3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBj
b250ZXh0Oih2b2lkICopY29udGV4dCB7Ci0KLSAgICBpZiAoY29udGV4dCA9PSAmaXRlbVN0YXR1
c0tWT0NvbnRleHQpIHsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsgW19hdWRpb1BsYXllckRlbGVnYXRlIHJlYWR5U3RhdGVEaWRDaGFuZ2VGb3JB
dWRpb1BsYXllcjpzZWxmXTsgfSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgW3N1cGVy
IG9ic2VydmVWYWx1ZUZvcktleVBhdGg6a2V5UGF0aCBvZk9iamVjdDpvYmplY3QgY2hhbmdlOmNo
YW5nZSBjb250ZXh0OmNvbnRleHRdOwotfQotQGVuZApJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVN
dXRlQVBJUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL0VuZ2xpc2gubHByb2ovSW5mb1BsaXN0
LnN0cmluZ3MJKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBs
dWdpbi9FbmdsaXNoLmxwcm9qL0luZm9QbGlzdC5zdHJpbmdzCShub25leGlzdGVudCkKQEAgLTEs
MyArMCwwIEBACi3//i8AKgAgAEwAbwBjAGEAbABpAHoAZQBkACAAdgBlAHIAcwBpAG8AbgBzACAA
bwBmACAASQBuAGYAbwAuAHAAbABpAHMAdAAgAGsAZQB5AHMAIAAqAC8ACi0ACi0AClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L0luZm8ucGxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L0luZm8ucGxpc3QJKHJldmlzaW9uIDI0ODk2NSkKKysrIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQ
SVBsdWdpbi9JbmZvLnBsaXN0CShub25leGlzdGVudCkKQEAgLTEsMzYgKzAsMCBAQAotPD94bWwg
dmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KLTwhRE9DVFlQRSBwbGlzdCBQVUJMSUMg
Ii0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMv
UHJvcGVydHlMaXN0LTEuMC5kdGQiPgotPHBsaXN0IHZlcnNpb249IjEuMCI+Ci08ZGljdD4KLQk8
a2V5PkNGQnVuZGxlRGV2ZWxvcG1lbnRSZWdpb248L2tleT4KLQk8c3RyaW5nPkVuZ2xpc2g8L3N0
cmluZz4KLQk8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgotCTxzdHJpbmc+TmV0c2NhcGVN
dXRlQVBJUGx1Z2luPC9zdHJpbmc+Ci0JPGtleT5DRkJ1bmRsZUljb25GaWxlPC9rZXk+Ci0JPHN0
cmluZz48L3N0cmluZz4KLQk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgotCTxzdHJpbmc+
Y29tLmFwcGxlLm5ldHNjYXBlbXV0ZWFwaXBsdWdpbjwvc3RyaW5nPgotCTxrZXk+Q0ZCdW5kbGVJ
bmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KLQk8c3RyaW5nPjYuMDwvc3RyaW5nPgotCTxrZXk+
Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PgotCTxzdHJpbmc+QlJQTDwvc3RyaW5nPgotCTxrZXk+
Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KLQk8c3RyaW5nPjEuMDwvc3RyaW5nPgot
CTxrZXk+Q0ZCdW5kbGVTaWduYXR1cmU8L2tleT4KLQk8c3RyaW5nPj8/Pz88L3N0cmluZz4KLQk8
a2V5PkNGQnVuZGxlVmVyc2lvbjwva2V5PgotCTxzdHJpbmc+MS4wPC9zdHJpbmc+Ci0JPGtleT5X
ZWJQbHVnaW5EZXNjcmlwdGlvbjwva2V5PgotCTxzdHJpbmc+U2ltcGxlIE5ldHNjYXBlIHBsdWct
aW4gdGhhdCB1c2VzIHRoZSBNdXRlIEFQSTwvc3RyaW5nPgotCTxrZXk+V2ViUGx1Z2luTUlNRVR5
cGVzPC9rZXk+Ci0JPGRpY3Q+Ci0JCTxrZXk+dGVzdC94LW5ldHNjYXBlLW11dGUtYXBpLXBsdWdp
bjwva2V5PgotCQk8ZGljdD4KLQkJCTxrZXk+V2ViUGx1Z2luVHlwZURlc2NyaXB0aW9uPC9rZXk+
Ci0JCQk8c3RyaW5nPk5ldHNjYXBlIENvY29hIFBsdWctaW48L3N0cmluZz4KLQkJPC9kaWN0Pgot
CTwvZGljdD4KLQk8a2V5PldlYlBsdWdpbk5hbWU8L2tleT4KLQk8c3RyaW5nPk5ldHNjYXBlIE11
dGUgQVBJIFBsdWctaW48L3N0cmluZz4KLTwvZGljdD4KLTwvcGxpc3Q+CkluZGV4OiBFeGFtcGxl
cy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBFeGFt
cGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTWVudUhhbmRsZXIuaAkocmV2aXNpb24gMjQ4OTY1
KQorKysgRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL01lbnVIYW5kbGVyLmgJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0NiArMCwwIEBACi0vKgotIElNUE9SVEFOVDogIFRoaXMgQXBwbGUgc29m
dHdhcmUgaXMgc3VwcGxpZWQgdG8geW91IGJ5IEFwcGxlIEluYy4gKCJBcHBsZSIpIGluCi0gY29u
c2lkZXJhdGlvbiBvZiB5b3VyIGFncmVlbWVudCB0byB0aGUgZm9sbG93aW5nIHRlcm1zLCBhbmQg
eW91ciB1c2UsIGluc3RhbGxhdGlvbiwgCi0gbW9kaWZpY2F0aW9uIG9yIHJlZGlzdHJpYnV0aW9u
IG9mIHRoaXMgQXBwbGUgc29mdHdhcmUgY29uc3RpdHV0ZXMgYWNjZXB0YW5jZSBvZiB0aGVzZSAK
LSB0ZXJtcy4gIElmIHlvdSBkbyBub3QgYWdyZWUgd2l0aCB0aGVzZSB0ZXJtcywgcGxlYXNlIGRv
IG5vdCB1c2UsIGluc3RhbGwsIG1vZGlmeSBvciAKLSByZWRpc3RyaWJ1dGUgdGhpcyBBcHBsZSBz
b2Z0d2FyZS4KLSAKLSBJbiBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIGFiaWRl
IGJ5IHRoZSBmb2xsb3dpbmcgdGVybXMsIGFuZCBzdWJqZWN0IHRvIHRoZXNlIAotIHRlcm1zLCBB
cHBsZSBncmFudHMgeW91IGEgcGVyc29uYWwsIG5vbi1leGNsdXNpdmUgbGljZW5zZSwgdW5kZXIg
QXBwbGXigJlzIGNvcHlyaWdodHMgaW4gCi0gdGhpcyBvcmlnaW5hbCBBcHBsZSBzb2Z0d2FyZSAo
dGhlICJBcHBsZSBTb2Z0d2FyZSIpLCB0byB1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5IGFuZCAKLSBy
ZWRpc3RyaWJ1dGUgdGhlIEFwcGxlIFNvZnR3YXJlLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0
aW9ucywgaW4gc291cmNlIGFuZC9vciBiaW5hcnkgCi0gZm9ybXM7IHByb3ZpZGVkIHRoYXQgaWYg
eW91IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUgaW4gaXRzIGVudGlyZXR5IGFuZCB3
aXRob3V0IAotIG1vZGlmaWNhdGlvbnMsIHlvdSBtdXN0IHJldGFpbiB0aGlzIG5vdGljZSBhbmQg
dGhlIGZvbGxvd2luZyB0ZXh0IGFuZCBkaXNjbGFpbWVycyBpbiBhbGwgCi0gc3VjaCByZWRpc3Ry
aWJ1dGlvbnMgb2YgdGhlIEFwcGxlIFNvZnR3YXJlLiAgTmVpdGhlciB0aGUgbmFtZSwgdHJhZGVt
YXJrcywgc2VydmljZSBtYXJrcyAKLSBvciBsb2dvcyBvZiBBcHBsZSBJbmMuIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gCi0gdGhlIEFwcGxl
IFNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uIGZyb20g
QXBwbGUuIEV4Y2VwdCBhcyBleHByZXNzbHkKLSBzdGF0ZWQgaW4gdGhpcyBub3RpY2UsIG5vIG90
aGVyIHJpZ2h0cyBvciBsaWNlbnNlcywgZXhwcmVzcyBvciBpbXBsaWVkLCBhcmUgZ3JhbnRlZCBi
eSBBcHBsZQotIGhlcmVpbiwgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBhbnkgcGF0ZW50
IHJpZ2h0cyB0aGF0IG1heSBiZSBpbmZyaW5nZWQgYnkgeW91ciAKLSBkZXJpdmF0aXZlIHdvcmtz
IG9yIGJ5IG90aGVyIHdvcmtzIGluIHdoaWNoIHRoZSBBcHBsZSBTb2Z0d2FyZSBtYXkgYmUgaW5j
b3Jwb3JhdGVkLgotIAotIFRoZSBBcHBsZSBTb2Z0d2FyZSBpcyBwcm92aWRlZCBieSBBcHBsZSBv
biBhbiAiQVMgSVMiIGJhc2lzLiAgQVBQTEUgTUFLRVMgTk8gV0FSUkFOVElFUywgCi0gRVhQUkVT
UyBPUiBJTVBMSUVELCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTk9OLUlORlJJTkdFTUVOVCwgCi0gTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgUkVHQVJESU5HIFRIRSBBUFBMRSBTT0ZUV0FS
RSBPUiBJVFMgCi0gVVNFIEFORCBPUEVSQVRJT04gQUxPTkUgT1IgSU4gQ09NQklOQVRJT04gV0lU
SCBZT1VSIFBST0RVQ1RTLgotIAotIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIEJFIExJQUJMRSBG
T1IgQU5ZIFNQRUNJQUwsIElORElSRUNULCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgCi0g
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgCi0gT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSwgCi0gUkVQUk9EVUNUSU9OLCBNT0RJRklDQVRJT04gQU5EL09SIERJU1RSSUJVVElP
TiBPRiBUSEUgQVBQTEUgU09GVFdBUkUsIEhPV0VWRVIgQ0FVU0VEIEFORCAKLSBXSEVUSEVSIFVO
REVSIFRIRU9SWSBPRiBDT05UUkFDVCwgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UpLCBTVFJJ
Q1QgTElBQklMSVRZIE9SIAotIE9USEVSV0lTRSwgRVZFTiBJRiBBUFBMRSBIQVMgQkVFTiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0IDxD
b2NvYS9Db2NvYS5oPgotCi1AY2xhc3MgQXVkaW9QbGF5ZXI7Ci0KLUBpbnRlcmZhY2UgTWVudUhh
bmRsZXIgOiBOU09iamVjdCB7Ci0gICAgTlNNZW51ICpfbWVudTsKLSAgICBBdWRpb1BsYXllciAq
X2F1ZGlvUGxheWVyOwotfQotCi0tIChpZClpbml0V2l0aEF1ZGlvUGxheWVyOihBdWRpb1BsYXll
ciAqKWF1ZGlvUGxheWVyOwotLSAoTlNNZW51ICopbWVudTsKLQotQGVuZApJbmRleDogRXhhbXBs
ZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL01lbnVIYW5kbGVyLm0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gRXhh
bXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL01lbnVIYW5kbGVyLm0JKHJldmlzaW9uIDI0ODk2
NSkKKysrIEV4YW1wbGVzL05ldHNjYXBlTXV0ZUFQSVBsdWdpbi9NZW51SGFuZGxlci5tCShub25l
eGlzdGVudCkKQEAgLTEsMTAwICswLDAgQEAKLS8qCi0gSU1QT1JUQU5UOiAgVGhpcyBBcHBsZSBz
b2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikgaW4KLSBj
b25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMsIGFu
ZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLCAKLSBtb2RpZmljYXRpb24gb3IgcmVkaXN0cmlidXRp
b24gb2YgdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHRoZXNl
IAotIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zLCBwbGVhc2Ug
ZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yIAotIHJlZGlzdHJpYnV0ZSB0aGlzIEFwcGxl
IHNvZnR3YXJlLgotIAotIEluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8gYWJp
ZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhlc2UgCi0gdGVybXMs
IEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlLCB1bmRl
ciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbiAKLSB0aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3YXJl
ICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5kIAot
IHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmlj
YXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSAKLSBmb3JtczsgcHJvdmlkZWQgdGhhdCBp
ZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50aXJldHkgYW5k
IHdpdGhvdXQgCi0gbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90aWNlIGFu
ZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAKLSBzdWNoIHJlZGlz
dHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRoZSBuYW1lLCB0cmFk
ZW1hcmtzLCBzZXJ2aWNlIG1hcmtzIAotIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4gbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAKLSB0aGUgQXBw
bGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24gZnJv
bSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3NseQotIHN0YXRlZCBpbiB0aGlzIG5vdGljZSwgbm8g
b3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFyZSBncmFudGVk
IGJ5IEFwcGxlCi0gaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueSBwYXRl
bnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIAotIGRlcml2YXRpdmUgd29y
a3Mgb3IgYnkgb3RoZXIgd29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBiZSBp
bmNvcnBvcmF0ZWQuCi0gCi0gVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFwcGxl
IG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVTLCAKLSBFWFBS
RVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULCAKLSBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNPRlRX
QVJFIE9SIElUUyAKLSBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElPTiBX
SVRIIFlPVVIgUFJPRFVDVFMuCi0gCi0gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElBQkxF
IEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCAK
LSBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyAKLSBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFLCAKLSBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJQlVU
SU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5EIAotIFdIRVRIRVIg
VU5ERVIgVEhFT1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSksIFNU
UklDVCBMSUFCSUxJVFkgT1IgCi0gT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVOIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBvcnQg
Ik1lbnVIYW5kbGVyLmgiCi0KLSNpbXBvcnQgIkF1ZGlvUGxheWVyLmgiCi0KLUBpbXBsZW1lbnRh
dGlvbiBNZW51SGFuZGxlcgotCi0tICh2b2lkKV9wbGF5OihpZClzZW5kZXIKLXsKLSAgICBfYXVk
aW9QbGF5ZXIucGxheWluZyA9IFlFUzsKLX0KLQotLSAodm9pZClfcGF1c2U6KGlkKXNlbmRlcgot
ewotICAgIF9hdWRpb1BsYXllci5wbGF5aW5nID0gTk87Ci19Ci0KLS0gKEJPT0wpdmFsaWRhdGVV
c2VySW50ZXJmYWNlSXRlbTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWFuSXRl
bQotewotICAgIFNFTCBzZWwgPSBbYW5JdGVtIGFjdGlvbl07Ci0gICAgCi0gICAgaWYgKHNlbCA9
PSBAc2VsZWN0b3IoX3BsYXk6KSkKLSAgICAgICAgcmV0dXJuIF9hdWRpb1BsYXllci5pc1JlYWR5
VG9QbGF5ICYmICFfYXVkaW9QbGF5ZXIuaXNQbGF5aW5nOwotCi0gICAgaWYgKHNlbCA9PSBAc2Vs
ZWN0b3IoX3BhdXNlOikpCi0gICAgICAgIHJldHVybiBfYXVkaW9QbGF5ZXIuaXNQbGF5aW5nOwot
Ci0gICAgcmV0dXJuIE5POwotfQotCi0tIChpZClpbml0V2l0aEF1ZGlvUGxheWVyOihBdWRpb1Bs
YXllciAqKWF1ZGlvUGxheWVyCi17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAo
IXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBfYXVkaW9QbGF5ZXIgPSBbYXVkaW9Q
bGF5ZXIgcmV0YWluXTsKLQotICAgIC8vIENyZWF0ZSB0aGUgbWVudQotICAgIF9tZW51ID0gW1tO
U01lbnUgYWxsb2NdIGluaXRXaXRoVGl0bGU6QCJNZW51Il07Ci0gICAgCi0gICAgTlNNZW51SXRl
bSAqaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIlBsYXkiIGFjdGlv
bjpAc2VsZWN0b3IoX3BsYXk6KSBrZXlFcXVpdmFsZW50OkAiIl07Ci0gICAgW2l0ZW0gc2V0VGFy
Z2V0OnNlbGZdOwotICAgIFtfbWVudSBhZGRJdGVtOml0ZW1dOwotICAgIFtpdGVtIHJlbGVhc2Vd
OwotCi0gICAgaXRlbSA9IFtbTlNNZW51SXRlbSBhbGxvY10gaW5pdFdpdGhUaXRsZTpAIlBhdXNl
IiBhY3Rpb246QHNlbGVjdG9yKF9wYXVzZTopIGtleUVxdWl2YWxlbnQ6QCIiXTsKLSAgICBbaXRl
bSBzZXRUYXJnZXQ6c2VsZl07Ci0gICAgW19tZW51IGFkZEl0ZW06aXRlbV07Ci0gICAgW2l0ZW0g
cmVsZWFzZV07Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgW19tZW51IHJlbGVhc2VdOwotICAgIFtfYXVkaW9QbGF5ZXIgcmVsZWFzZV07Ci0gICAgCi0g
ICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChOU01lbnUgKiltZW51Ci17Ci0gICAgcmV0dXJu
IF9tZW51OwotfQotCi1AZW5kCkluZGV4OiBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4v
TmV0c2NhcGVNdXRlQVBJUGx1Z2luLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL05ldHNjYXBlTXV0ZUFQSVBsdWdp
bi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxl
cy9OZXRzY2FwZU11dGVBUElQbHVnaW4vTmV0c2NhcGVNdXRlQVBJUGx1Z2luLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNjMgKzAsMCBAQAotLy8gISQqVVRG
OCokIQotewotCWFyY2hpdmVWZXJzaW9uID0gMTsKLQljbGFzc2VzID0gewotCX07Ci0Jb2JqZWN0
VmVyc2lvbiA9IDQ2OwotCW9iamVjdHMgPSB7Ci0KLS8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCi0JCTFBNjI0RTU5MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTYyNEU1ODBEQ0JDN0Y2MDA2ODk4
QzggLyogbWFpbi5tICovOyB9OwotCQkxQTYyNTA0MjBEQ0JDODFCMDA2ODk4QzggLyogQ29jb2Eu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUE2MjUwNDEwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZyYW1ld29yayAqLzsgfTsKLQkJ
MUFBRDZBMDkwREQwREM1MjAwMzk4NURBIC8qIE1lbnVIYW5kbGVyLm0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUFENkEwODBERDBEQzUyMDAzOTg1REEg
LyogTWVudUhhbmRsZXIubSAqLzsgfTsKLQkJNTJFMkNBRjExOUY4NTZFOTAwMUVFQjRGIC8qIEFW
Rm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MkUyQ0FGMDE5Rjg1NkU5MDAxRUVCNEYgLyogQVZGb3VuZGF0aW9uLmZy
YW1ld29yayAqLzsgfTsKLQkJNTJFMkNBRjQxOUY4NUE0NzAwMUVFQjRGIC8qIEF1ZGlvUGxheWVy
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJFMkNB
RjMxOUY4NUE0NzAwMUVFQjRGIC8qIEF1ZGlvUGxheWVyLm1tICovOyB9OwotCQk4RDVCNDlBODA0
ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhENUI0OUE3MDQ4NjdGRDMwMDBFNDhEQSAvKiBJ
bmZvUGxpc3Quc3RyaW5ncyAqLzsgfTsKLS8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwot
Ci0vKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJMDg5QzE2N0VGRTg0MTI0
MUMwMkFBQzA3IC8qIEVuZ2xpc2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMTA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1l
ID0gRW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFBNjI0RTU4MERDQkM3RjYwMDY4OThDOCAvKiBtYWlu
Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IG1haW4ubTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUE2MjUwNDEwRENCQzgxQjAwNjg5OEM4IC8qIENvY29hLmZy
YW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29jb2EuZnJhbWV3b3JrOyBwYXRoID0gL1N5c3Rl
bS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNv
bHV0ZT4iOyB9OwotCQkxQUFENkEwNzBERDBEQzUyMDAzOTg1REEgLyogTWVudUhhbmRsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVudUhhbmRsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFBRDZBMDgwREQwREM1MjAwMzk4NURBIC8qIE1lbnVIYW5k
bGVyLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IE1lbnVIYW5kbGVyLm07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUyRTJDQUYwMTlGODU2RTkwMDFFRUI0RiAv
KiBBVkZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBBVkZvdW5kYXRpb24u
ZnJhbWV3b3JrOyBwYXRoID0gLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9BVkZvdW5kYXRpb24uZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk1MkUyQ0FGMjE5Rjg1QTQ3MDAxRUVCNEYgLyogQXVkaW9QbGF5ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXVkaW9QbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTJFMkNBRjMxOUY4NUE0NzAwMUVFQjRGIC8qIEF1ZGlvUGxheWVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXVkaW9QbGF5ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCThENTc2MzE2MDQ4Njc3RUEwMEVBNzdDRCAv
KiBOZXRzY2FwZU11dGVBUElQbHVnaW4ucGx1Z2luICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSB3cmFwcGVyLmNmYnVuZGxlOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSBOZXRzY2FwZU11dGVBUElQbHVnaW4ucGx1Z2luOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwotCQk4RDU3NjMxNzA0ODY3N0VBMDBFQTc3Q0QgLyogSW5mby5w
bGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Q7IHBhdGggPSBJbmZvLnBsaXN0OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCi0v
KiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCThENTc2MzEzMDQ4
Njc3RUEwMEVBNzdDRCAvKiBGcmFtZXdvcmtzICovID0gewotCQkJaXNhID0gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMg
PSAoCi0JCQkJNTJFMkNBRjExOUY4NTZFOTAwMUVFQjRGIC8qIEFWRm91bmRhdGlvbi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKLQkJCQkxQTYyNTA0MjBEQ0JDODFCMDA2ODk4QzggLyogQ29j
b2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCi0JCTA4OUMx
NjZBRkU4NDEyMDlDMDJBQUMwNyAvKiBOZXRzY2FwZU11dGVBUElQbHVnaW4gKi8gPSB7Ci0JCQlp
c2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTUyRTJDQUYwMTlGODU2RTkwMDFF
RUI0RiAvKiBBVkZvdW5kYXRpb24uZnJhbWV3b3JrICovLAotCQkJCTA4RkI3N0FGRkU4NDE3M0RD
MDJBQUMwNyAvKiBTb3VyY2UgKi8sCi0JCQkJMDg5QzE2N0NGRTg0MTI0MUMwMkFBQzA3IC8qIFJl
c291cmNlcyAqLywKLQkJCQkwODlDMTY3MUZFODQxMjA5QzAyQUFDMDcgLyogRXh0ZXJuYWwgRnJh
bWV3b3JrcyBhbmQgTGlicmFyaWVzICovLAotCQkJCTE5QzI4RkI2RkU5RDUyQjIxMUNBMkNCQiAv
KiBQcm9kdWN0cyAqLywKLQkJCSk7Ci0JCQluYW1lID0gTmV0c2NhcGVNdXRlQVBJUGx1Z2luOwot
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKLQkJMDg5QzE2NzFGRTg0MTIwOUMwMkFB
QzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAqLyA9IHsKLQkJCWlzYSA9
IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUE2MjUwNDEwRENCQzgxQjAwNjg5OEM4
IC8qIENvY29hLmZyYW1ld29yayAqLywKLQkJCSk7Ci0JCQluYW1lID0gIkV4dGVybmFsIEZyYW1l
d29ya3MgYW5kIExpYnJhcmllcyI7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owot
CQkwODlDMTY3Q0ZFODQxMjQxQzAyQUFDMDcgLyogUmVzb3VyY2VzICovID0gewotCQkJaXNhID0g
UEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQk4RDU3NjMxNzA0ODY3N0VBMDBFQTc3Q0Qg
LyogSW5mby5wbGlzdCAqLywKLQkJCQk4RDVCNDlBNzA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1Bs
aXN0LnN0cmluZ3MgKi8sCi0JCQkpOwotCQkJbmFtZSA9IFJlc291cmNlczsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0JCTA4RkI3N0FGRkU4NDE3M0RDMDJBQUMwNyAvKiBTb3Vy
Y2UgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCTFBNjI0
RTU4MERDQkM3RjYwMDY4OThDOCAvKiBtYWluLm0gKi8sCi0JCQkJMUFBRDZBMDcwREQwREM1MjAw
Mzk4NURBIC8qIE1lbnVIYW5kbGVyLmggKi8sCi0JCQkJMUFBRDZBMDgwREQwREM1MjAwMzk4NURB
IC8qIE1lbnVIYW5kbGVyLm0gKi8sCi0JCQkJNTJFMkNBRjIxOUY4NUE0NzAwMUVFQjRGIC8qIEF1
ZGlvUGxheWVyLmggKi8sCi0JCQkJNTJFMkNBRjMxOUY4NUE0NzAwMUVFQjRGIC8qIEF1ZGlvUGxh
eWVyLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBTb3VyY2U7Ci0JCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwotCQl9OwotCQkxOUMyOEZCNkZFOUQ1MkIyMTFDQTJDQkIgLyogUHJvZHVjdHMgKi8g
PSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCThENTc2MzE2MDQ4
Njc3RUEwMEVBNzdDRCAvKiBOZXRzY2FwZU11dGVBUElQbHVnaW4ucGx1Z2luICovLAotCQkJKTsK
LQkJCW5hbWUgPSBQcm9kdWN0czsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07Ci0v
KiBFbmQgUEJYR3JvdXAgc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2Vj
dGlvbiAqLwotCQk4RDU3NjMwRDA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0c2NhcGVNdXRlQVBJUGx1
Z2luICovID0gewotCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwotCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDE0OUMyOTgzMDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiTmV0c2NhcGVNdXRlQVBJUGx1Z2luIiAqLzsKLQkJ
CWJ1aWxkUGhhc2VzID0gKAotCQkJCThENTc2MzExMDQ4Njc3RUEwMEVBNzdDRCAvKiBTb3VyY2Vz
ICovLAotCQkJCThENTc2MzBGMDQ4Njc3RUEwMEVBNzdDRCAvKiBSZXNvdXJjZXMgKi8sCi0JCQkJ
OEQ1NzYzMTMwNDg2NzdFQTAwRUE3N0NEIC8qIEZyYW1ld29ya3MgKi8sCi0JCQkpOwotCQkJYnVp
bGRSdWxlcyA9ICgKLQkJCSk7Ci0JCQlkZXBlbmRlbmNpZXMgPSAoCi0JCQkpOwotCQkJbmFtZSA9
IE5ldHNjYXBlTXV0ZUFQSVBsdWdpbjsKLQkJCXByb2R1Y3RJbnN0YWxsUGF0aCA9ICIkKEhPTUUp
L0xpYnJhcnkvQnVuZGxlcyI7Ci0JCQlwcm9kdWN0TmFtZSA9IE5ldHNjYXBlTXV0ZUFQSVBsdWdp
bjsKLQkJCXByb2R1Y3RSZWZlcmVuY2UgPSA4RDU3NjMxNjA0ODY3N0VBMDBFQTc3Q0QgLyogTmV0
c2NhcGVNdXRlQVBJUGx1Z2luLnBsdWdpbiAqLzsKLQkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBs
ZS5wcm9kdWN0LXR5cGUuYnVuZGxlIjsKLQkJfTsKLS8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2Vj
dGlvbiAqLwotCi0vKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KLQkJMDg5QzE2NjlGRTg0
MTIwOUMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewotCQkJaXNhID0gUEJYUHJvamVj
dDsKLQkJCWF0dHJpYnV0ZXMgPSB7Ci0JCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA2MDA7Ci0JCQl9
OwotCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyOTg3MDg5MDJDNTMwMDhBOUVGQyAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIk5ldHNjYXBlTXV0ZUFQ
SVBsdWdpbiIgKi87Ci0JCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOwotCQkJ
ZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwotCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9
IDE7Ci0JCQlrbm93blJlZ2lvbnMgPSAoCi0JCQkJRW5nbGlzaCwKLQkJCQlKYXBhbmVzZSwKLQkJ
CQlGcmVuY2gsCi0JCQkJR2VybWFuLAotCQkJKTsKLQkJCW1haW5Hcm91cCA9IDA4OUMxNjZBRkU4
NDEyMDlDMDJBQUMwNyAvKiBOZXRzY2FwZU11dGVBUElQbHVnaW4gKi87Ci0JCQlwcm9qZWN0RGly
UGF0aCA9ICIiOwotCQkJcHJvamVjdFJvb3QgPSAiIjsKLQkJCXRhcmdldHMgPSAoCi0JCQkJOEQ1
NzYzMEQwNDg2NzdFQTAwRUE3N0NEIC8qIE5ldHNjYXBlTXV0ZUFQSVBsdWdpbiAqLywKLQkJCSk7
Ci0JCX07Ci0vKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFBCWFJlc291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCQk4RDU3NjMwRjA0ODY3N0VBMDBFQTc3Q0QgLyog
UmVzb3VyY2VzICovID0gewotCQkJaXNhID0gUEJYUmVzb3VyY2VzQnVpbGRQaGFzZTsKLQkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7Ci0JCQlmaWxlcyA9ICgKLQkJCQk4RDVCNDlBODA0
ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAotCQkJ
KTsKLQkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwotCQl9OwotLyog
RW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCi0JCThENTc2MzExMDQ4Njc3RUEwMEVBNzdDRCAvKiBT
b3VyY2VzICovID0gewotCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7Ci0JCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwotCQkJZmlsZXMgPSAoCi0JCQkJMUE2MjRFNTkwRENCQzdG
NjAwNjg5OEM4IC8qIG1haW4ubSBpbiBTb3VyY2VzICovLAotCQkJCTUyRTJDQUY0MTlGODVBNDcw
MDFFRUI0RiAvKiBBdWRpb1BsYXllci5tbSBpbiBTb3VyY2VzICovLAotCQkJCTFBQUQ2QTA5MERE
MERDNTIwMDM5ODVEQSAvKiBNZW51SGFuZGxlci5tIGluIFNvdXJjZXMgKi8sCi0JCQkpOwotCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Ci0JCX07Ci0vKiBFbmQgUEJY
U291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwotCi0vKiBCZWdpbiBQQlhWYXJpYW50R3JvdXAg
c2VjdGlvbiAqLwotCQk4RDVCNDlBNzA0ODY3RkQzMDAwRTQ4REEgLyogSW5mb1BsaXN0LnN0cmlu
Z3MgKi8gPSB7Ci0JCQlpc2EgPSBQQlhWYXJpYW50R3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQkwODlDMTY3RUZFODQxMjQxQzAyQUFDMDcgLyogRW5nbGlzaCAqLywKLQkJCSk7Ci0JCQluYW1l
ID0gSW5mb1BsaXN0LnN0cmluZ3M7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owot
LyogRW5kIFBCWFZhcmlhbnRHcm91cCBzZWN0aW9uICovCi0KLS8qIEJlZ2luIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KLQkJMTQ5QzI5ODQwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVn
ICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247Ci0JCQlidWlsZFNldHRpbmdz
ID0gewotCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVTOwotCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBOTzsKLQkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAotCQkJCQkiJChpbmhlcml0
ZWQpIiwKLQkJCQkJIiQoU1lTVEVNX0xJQlJBUllfRElSKS9Qcml2YXRlRnJhbWV3b3JrcyIsCi0J
CQkJKTsKLQkJCQlHQ0NfREVCVUdHSU5HX1NZTUJPTFMgPSBmdWxsOwotCQkJCUdDQ19EWU5BTUlD
X05PX1BJQyA9IE5POwotCQkJCUdDQ19FTkFCTEVfRklYX0FORF9DT05USU5VRSA9IFlFUzsKLQkJ
CQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7Ci0JCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7
Ci0JCQkJSU5GT1BMSVNUX0ZJTEUgPSBJbmZvLnBsaXN0OwotCQkJCUlOU1RBTExfUEFUSCA9ICIk
KEhPTUUpL0xpYnJhcnkvQnVuZGxlcyI7Ci0JCQkJUFJPRFVDVF9OQU1FID0gTmV0c2NhcGVNdXRl
QVBJUGx1Z2luOwotCQkJCVdSQVBQRVJfRVhURU5TSU9OID0gcGx1Z2luOwotCQkJCVpFUk9fTElO
SyA9IFlFUzsKLQkJCX07Ci0JCQluYW1lID0gRGVidWc7Ci0JCX07Ci0JCTE0OUMyOTg1MDg5MDJD
NTMwMDhBOUVGQyAvKiBSZWxlYXNlICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUNPTUJJTkVfSElEUElfSU1BR0VTID0gWUVT
OwotCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCi0JCQkJCSIkKGluaGVyaXRlZCkiLAot
CQkJCQkiJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzIiwKLQkJCQkpOwot
CQkJCUdDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGZ1bGw7Ci0JCQkJR0NDX0dFTkVSQVRFX0RFQlVH
R0lOR19TWU1CT0xTID0gTk87Ci0JCQkJR0NDX01PREVMX1RVTklORyA9IEc1OwotCQkJCUdDQ19P
UFRJTUlaQVRJT05fTEVWRUwgPSAwOwotCQkJCUlORk9QTElTVF9GSUxFID0gSW5mby5wbGlzdDsK
LQkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9MaWJyYXJ5L0J1bmRsZXMiOwotCQkJCVBST0RV
Q1RfTkFNRSA9IE5ldHNjYXBlTXV0ZUFQSVBsdWdpbjsKLQkJCQlXUkFQUEVSX0VYVEVOU0lPTiA9
IHBsdWdpbjsKLQkJCX07Ci0JCQluYW1lID0gUmVsZWFzZTsKLQkJfTsKLQkJMTQ5QzI5ODgwODkw
MkM1MzAwOEE5RUZDIC8qIERlYnVnICovID0gewotCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247Ci0JCQlidWlsZFNldHRpbmdzID0gewotCQkJCUFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVF9Q
UkVfWENPREVfM18xID0gInBwYyBpMzg2IHBwYzY0IHg4Nl82NCI7Ci0JCQkJR0NDX1dBUk5fQUJP
VVRfUkVUVVJOX1RZUEUgPSBZRVM7Ci0JCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVT
OwotCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7Ci0JCQkJUFJFQklORElORyA9IE5POwotCQkJ
fTsKLQkJCW5hbWUgPSBEZWJ1ZzsKLQkJfTsKLQkJMTQ5QzI5ODkwODkwMkM1MzAwOEE5RUZDIC8q
IFJlbGVhc2UgKi8gPSB7Ci0JCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKLQkJCWJ1aWxk
U2V0dGluZ3MgPSB7Ci0JCQkJQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUX1BSRV9YQ09ERV8zXzEg
PSAicHBjIGkzODYgcHBjNjQgeDg2XzY0IjsKLQkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQ
RSA9IFlFUzsKLQkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0JCQkJUFJFQklO
RElORyA9IE5POwotCQkJfTsKLQkJCW5hbWUgPSBSZWxlYXNlOwotCQl9OwotLyogRW5kIFhDQnVp
bGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KLQotLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlz
dCBzZWN0aW9uICovCi0JCTE0OUMyOTgzMDg5MDJDNTMwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiTmV0c2NhcGVNdXRlQVBJUGx1Z2luIiAq
LyA9IHsKLQkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7Ci0JCQlidWlsZENvbmZpZ3VyYXRp
b25zID0gKAotCQkJCTE0OUMyOTg0MDg5MDJDNTMwMDhBOUVGQyAvKiBEZWJ1ZyAqLywKLQkJCQkx
NDlDMjk4NTA4OTAyQzUzMDA4QTlFRkMgLyogUmVsZWFzZSAqLywKLQkJCSk7Ci0JCQlkZWZhdWx0
Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7Ci0JCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBSZWxlYXNlOwotCQl9OwotCQkxNDlDMjk4NzA4OTAyQzUzMDA4QTlFRkMgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJOZXRzY2FwZU11dGVBUElQbHVnaW4iICov
ID0gewotCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKLQkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCi0JCQkJMTQ5QzI5ODgwODkwMkM1MzAwOEE5RUZDIC8qIERlYnVnICovLAotCQkJCTE0
OUMyOTg5MDg5MDJDNTMwMDhBOUVGQyAvKiBSZWxlYXNlICovLAotCQkJKTsKLQkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKLQkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFJlbGVhc2U7Ci0JCX07Ci0vKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCi0J
fTsKLQlyb290T2JqZWN0ID0gMDg5QzE2NjlGRTg0MTIwOUMwMkFBQzA3IC8qIFByb2plY3Qgb2Jq
ZWN0ICovOwotfQpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2luL21haW4ubQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vbWFpbi5tCShyZXZp
c2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4vbWFpbi5tCShu
b25leGlzdGVudCkKQEAgLTEsNDA4ICswLDAgQEAKLS8qCi0gSU1QT1JUQU5UOiAgVGhpcyBBcHBs
ZSBzb2Z0d2FyZSBpcyBzdXBwbGllZCB0byB5b3UgYnkgQXBwbGUgSW5jLiAoIkFwcGxlIikgaW4K
LSBjb25zaWRlcmF0aW9uIG9mIHlvdXIgYWdyZWVtZW50IHRvIHRoZSBmb2xsb3dpbmcgdGVybXMs
IGFuZCB5b3VyIHVzZSwgaW5zdGFsbGF0aW9uLCAKLSBtb2RpZmljYXRpb24gb3IgcmVkaXN0cmli
dXRpb24gb2YgdGhpcyBBcHBsZSBzb2Z0d2FyZSBjb25zdGl0dXRlcyBhY2NlcHRhbmNlIG9mIHRo
ZXNlIAotIHRlcm1zLiAgSWYgeW91IGRvIG5vdCBhZ3JlZSB3aXRoIHRoZXNlIHRlcm1zLCBwbGVh
c2UgZG8gbm90IHVzZSwgaW5zdGFsbCwgbW9kaWZ5IG9yIAotIHJlZGlzdHJpYnV0ZSB0aGlzIEFw
cGxlIHNvZnR3YXJlLgotIAotIEluIGNvbnNpZGVyYXRpb24gb2YgeW91ciBhZ3JlZW1lbnQgdG8g
YWJpZGUgYnkgdGhlIGZvbGxvd2luZyB0ZXJtcywgYW5kIHN1YmplY3QgdG8gdGhlc2UgCi0gdGVy
bXMsIEFwcGxlIGdyYW50cyB5b3UgYSBwZXJzb25hbCwgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlLCB1
bmRlciBBcHBsZeKAmXMgY29weXJpZ2h0cyBpbiAKLSB0aGlzIG9yaWdpbmFsIEFwcGxlIHNvZnR3
YXJlICh0aGUgIkFwcGxlIFNvZnR3YXJlIiksIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnkgYW5k
IAotIHJlZGlzdHJpYnV0ZSB0aGUgQXBwbGUgU29mdHdhcmUsIHdpdGggb3Igd2l0aG91dCBtb2Rp
ZmljYXRpb25zLCBpbiBzb3VyY2UgYW5kL29yIGJpbmFyeSAKLSBmb3JtczsgcHJvdmlkZWQgdGhh
dCBpZiB5b3UgcmVkaXN0cmlidXRlIHRoZSBBcHBsZSBTb2Z0d2FyZSBpbiBpdHMgZW50aXJldHkg
YW5kIHdpdGhvdXQgCi0gbW9kaWZpY2F0aW9ucywgeW91IG11c3QgcmV0YWluIHRoaXMgbm90aWNl
IGFuZCB0aGUgZm9sbG93aW5nIHRleHQgYW5kIGRpc2NsYWltZXJzIGluIGFsbCAKLSBzdWNoIHJl
ZGlzdHJpYnV0aW9ucyBvZiB0aGUgQXBwbGUgU29mdHdhcmUuICBOZWl0aGVyIHRoZSBuYW1lLCB0
cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzIAotIG9yIGxvZ29zIG9mIEFwcGxlIEluYy4gbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSAKLSB0aGUg
QXBwbGUgU29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24g
ZnJvbSBBcHBsZS4gRXhjZXB0IGFzIGV4cHJlc3NseQotIHN0YXRlZCBpbiB0aGlzIG5vdGljZSwg
bm8gb3RoZXIgcmlnaHRzIG9yIGxpY2Vuc2VzLCBleHByZXNzIG9yIGltcGxpZWQsIGFyZSBncmFu
dGVkIGJ5IEFwcGxlCi0gaGVyZWluLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGFueSBw
YXRlbnQgcmlnaHRzIHRoYXQgbWF5IGJlIGluZnJpbmdlZCBieSB5b3VyIAotIGRlcml2YXRpdmUg
d29ya3Mgb3IgYnkgb3RoZXIgd29ya3MgaW4gd2hpY2ggdGhlIEFwcGxlIFNvZnR3YXJlIG1heSBi
ZSBpbmNvcnBvcmF0ZWQuCi0gCi0gVGhlIEFwcGxlIFNvZnR3YXJlIGlzIHByb3ZpZGVkIGJ5IEFw
cGxlIG9uIGFuICJBUyBJUyIgYmFzaXMuICBBUFBMRSBNQUtFUyBOTyBXQVJSQU5USUVTLCAKLSBF
WFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBXSVRIT1VUIExJTUlUQVRJT04gVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBOT04tSU5GUklOR0VNRU5ULCAKLSBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBSRUdBUkRJTkcgVEhFIEFQUExFIFNP
RlRXQVJFIE9SIElUUyAKLSBVU0UgQU5EIE9QRVJBVElPTiBBTE9ORSBPUiBJTiBDT01CSU5BVElP
TiBXSVRIIFlPVVIgUFJPRFVDVFMuCi0gCi0gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQkUgTElB
QkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElB
TCAKLSBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyAKLSBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFLCAKLSBSRVBST0RVQ1RJT04sIE1PRElGSUNBVElPTiBBTkQvT1IgRElTVFJJ
QlVUSU9OIE9GIFRIRSBBUFBMRSBTT0ZUV0FSRSwgSE9XRVZFUiBDQVVTRUQgQU5EIAotIFdIRVRI
RVIgVU5ERVIgVEhFT1JZIE9GIENPTlRSQUNULCBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSks
IFNUUklDVCBMSUFCSUxJVFkgT1IgCi0gT1RIRVJXSVNFLCBFVkVOIElGIEFQUExFIEhBUyBCRUVO
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbXBv
cnQgIkF1ZGlvUGxheWVyLmgiCi0jaW1wb3J0ICJNZW51SGFuZGxlci5oIgotI2ltcG9ydCA8Q29j
b2EvQ29jb2EuaD4KLSNpbXBvcnQgPFdlYktpdC9ucGFwaS5oPgotI2ltcG9ydCA8V2ViS2l0L25w
ZnVuY3Rpb25zLmg+Ci0jaW1wb3J0IDxXZWJLaXQvbnBydW50aW1lLmg+Ci0KLS8vIEJyb3dzZXIg
ZnVuY3Rpb24gdGFibGUKLXN0YXRpYyBOUE5ldHNjYXBlRnVuY3MqIGJyb3dzZXI7Ci0KLS8vIFN0
cnVjdHVyZSBmb3IgcGVyLWluc3RhbmNlIHN0b3JhZ2UKLUBpbnRlcmZhY2UgUGx1Z2luT2JqZWN0
IDogTlNPYmplY3QgPEF1ZGlvUGxheWVyRGVsZWdhdGU+IHsKLSAgICBBdWRpb1BsYXllciAqX2F1
ZGlvUGxheWVyOwotICAgIE1lbnVIYW5kbGVyICpfbWVudUhhbmRsZXI7Ci19Ci0KLUBwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgTlBQIG5wcDsKLUBwcm9wZXJ0eSAobm9uYXRvbWljKSBO
UFdpbmRvdyB3aW5kb3c7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nLCByZWFkb25seSkg
TlNVUkwgKmF1ZGlvVVJMOwotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHJlYWRvbmx5KSBO
U1N0cmluZyAqZGlzcGxheVN0cmluZzsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcsIHJl
YWRvbmx5KSBNZW51SGFuZGxlciAqbWVudUhhbmRsZXI7Ci1AcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBoYXNGb2N1czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPWlz
UGxheWluZ0F1ZGlvKSBCT09MIHBsYXlpbmdBdWRpbzsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCBn
ZXR0ZXI9aXNNdXRlZCkgQk9PTCBtdXRlZDsKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTlBQ
OihOUFApbnBwIGF1ZGlvVVJMOihOU1VSTCAqKWF1ZGlvVVJMOwotCi1AZW5kCi0KLU5QRXJyb3Ig
TlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2X3QgbW9k
ZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEq
KTsKLU5QRXJyb3IgTlBQX0Rlc3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqKTsKLU5Q
RXJyb3IgTlBQX1NldFdpbmRvdyhOUFAgaW5zdGFuY2UsIE5QV2luZG93Kik7Ci1OUEVycm9yIE5Q
UF9OZXdTdHJlYW0oTlBQIGluc3RhbmNlLCBOUE1JTUVUeXBlLCBOUFN0cmVhbSosIE5QQm9vbCBz
ZWVrYWJsZSwgdWludDE2X3QqIHN0eXBlKTsKLU5QRXJyb3IgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQ
IGluc3RhbmNlLCBOUFN0cmVhbSosIE5QUmVhc29uKTsKLWludDMyX3QgTlBQX1dyaXRlUmVhZHko
TlBQIGluc3RhbmNlLCBOUFN0cmVhbSopOwotaW50MzJfdCBOUFBfV3JpdGUoTlBQIGluc3RhbmNl
LCBOUFN0cmVhbSosIGludDMyX3Qgb2Zmc2V0LCBpbnQzMl90IGxlbiwgdm9pZCogYnVmZmVyKTsK
LXZvaWQgTlBQX1N0cmVhbUFzRmlsZShOUFAgaW5zdGFuY2UsIE5QU3RyZWFtKiwgY29uc3QgY2hh
ciogZm5hbWUpOwotdm9pZCBOUFBfUHJpbnQoTlBQIGluc3RhbmNlLCBOUFByaW50KiBwbGF0Zm9y
bVByaW50KTsKLWludDE2X3QgTlBQX0hhbmRsZUV2ZW50KE5QUCBpbnN0YW5jZSwgdm9pZCogZXZl
bnQpOwotdm9pZCBOUFBfVVJMTm90aWZ5KE5QUCBpbnN0YW5jZSwgY29uc3QgY2hhciogVVJMLCBO
UFJlYXNvbiwgdm9pZCogbm90aWZ5RGF0YSk7Ci1OUEVycm9yIE5QUF9HZXRWYWx1ZShOUFAgaW5z
dGFuY2UsIE5QUFZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci1OUEVycm9yIE5QUF9TZXRWYWx1ZShO
UFAgaW5zdGFuY2UsIE5QTlZhcmlhYmxlLCB2b2lkICp2YWx1ZSk7Ci0KLSNwcmFnbWEgZXhwb3J0
IG9uCi0vLyBNYWNoLW8gZW50cnkgcG9pbnRzCi1OUEVycm9yIE5QX0luaXRpYWxpemUoTlBOZXRz
Y2FwZUZ1bmNzICpicm93c2VyRnVuY3MpOwotTlBFcnJvciBOUF9HZXRFbnRyeVBvaW50cyhOUFBs
dWdpbkZ1bmNzICopOwotdm9pZCBOUF9TaHV0ZG93bih2b2lkKTsKLSNwcmFnbWEgZXhwb3J0IG9m
ZgotCi1zdGF0aWMgdm9pZCBpbnZhbGlkYXRlUGx1Z2luKFBsdWdpbk9iamVjdCAqKTsKLQotQGlt
cGxlbWVudGF0aW9uIFBsdWdpbk9iamVjdAotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhOUFA6
KE5QUClucHAgYXVkaW9VUkw6KE5TVVJMICopYXVkaW9VUkwKLXsKLSAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIF9ucHAgPSBucHA7Ci0g
ICAgX2F1ZGlvVVJMID0gW2F1ZGlvVVJMIHJldGFpbl07Ci0gICAgX2F1ZGlvUGxheWVyID0gW1tB
dWRpb1BsYXllciBhbGxvY10gaW5pdFdpdGhVUkw6YXVkaW9VUkxdOwotICAgIF9hdWRpb1BsYXll
ci5hdWRpb1BsYXllckRlbGVnYXRlID0gc2VsZjsKLQotICAgIE5QQm9vbCBpc011dGVkOwotICAg
IGlmIChicm93c2VyLT5nZXR2YWx1ZShucHAsIE5QTlZtdXRlQXVkaW9Cb29sLCAmaXNNdXRlZCkg
IT0gTlBFUlJfTk9fRVJST1IpCi0gICAgICAgIGlzTXV0ZWQgPSBGQUxTRTsKLSAgICBzZWxmLm11
dGVkID0gaXNNdXRlZDsKLQotICAgIFtzZWxmIF9pbnZhbGlkYXRlRGlzcGxheVN0cmluZ107Ci0K
LSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0gICAgW19hdWRpb1VS
TCByZWxlYXNlXTsKLSAgICBbX21lbnVIYW5kbGVyIHJlbGVhc2VdOwotICAgIFtfYXVkaW9QbGF5
ZXIgcmVsZWFzZV07Ci0gICAgW19kaXNwbGF5U3RyaW5nIHJlbGVhc2VdOwotCi0gICAgW3N1cGVy
IGRlYWxsb2NdOwotfQotCi0tIChNZW51SGFuZGxlciAqKW1lbnVIYW5kbGVyCi17Ci0gICAgaWYg
KCFfbWVudUhhbmRsZXIpCi0gICAgICAgIF9tZW51SGFuZGxlciA9IFtbTWVudUhhbmRsZXIgYWxs
b2NdIGluaXRXaXRoQXVkaW9QbGF5ZXI6X2F1ZGlvUGxheWVyXTsKLQotICAgIHJldHVybiBfbWVu
dUhhbmRsZXI7Ci19Ci0KLS0gKEJPT0wpaXNQbGF5aW5nQXVkaW8KLXsKLSAgICByZXR1cm4gX2F1
ZGlvUGxheWVyLmlzUGxheWluZzsKLX0KLQotLSAoQk9PTClpc011dGVkCi17Ci0gICAgcmV0dXJu
IF9hdWRpb1BsYXllci5pc011dGVkOwotfQotCi0tICh2b2lkKXNldE11dGVkOihCT09MKW11dGVk
Ci17Ci0gICAgX2F1ZGlvUGxheWVyLm11dGVkID0gbXV0ZWQ7Ci19Ci0KLS0gKHZvaWQpcmVhZHlT
dGF0ZURpZENoYW5nZUZvckF1ZGlvUGxheWVyOihBdWRpb1BsYXllciAqKWF1ZGlvUGxheWVyCi17
Ci0gICAgW3NlbGYgX2ludmFsaWRhdGVEaXNwbGF5U3RyaW5nXTsKLSAgICBpbnZhbGlkYXRlUGx1
Z2luKHNlbGYpOwotfQotCi0tICh2b2lkKW11dGVkU3RhdGVEaWRDaGFuZ2VGb3JBdWRpb1BsYXll
cjooQXVkaW9QbGF5ZXIgKilhdWRpb1BsYXllcgotewotfQotCi0tICh2b2lkKXBsYXlTdGF0ZURp
ZENoYW5nZUZvckF1ZGlvUGxheWVyOihBdWRpb1BsYXllciAqKWF1ZGlvUGxheWVyCi17Ci0gICAg
W3NlbGYgX2ludmFsaWRhdGVEaXNwbGF5U3RyaW5nXTsKLSAgICBpbnZhbGlkYXRlUGx1Z2luKHNl
bGYpOwotICAgIGJyb3dzZXItPnNldHZhbHVlKF9ucHAsIE5QUFZwbHVnaW5Jc1BsYXlpbmdBdWRp
bywgX2F1ZGlvUGxheWVyLmlzUGxheWluZyk7Ci19Ci0KLS0gKHZvaWQpX2ludmFsaWRhdGVEaXNw
bGF5U3RyaW5nCi17Ci0gICAgW19kaXNwbGF5U3RyaW5nIHJlbGVhc2VdOwotCi0gICAgTlNTdHJp
bmcgKnByZWZpeDsKLSAgICBpZiAoIV9hdWRpb1BsYXllci5pc1JlYWR5VG9QbGF5KQotICAgICAg
ICBwcmVmaXggPSBAIkxvYWRpbmc6ICI7Ci0gICAgZWxzZSBpZiAoX2F1ZGlvUGxheWVyLmlzUGxh
eWluZykKLSAgICAgICAgcHJlZml4ID0gQCJQbGF5aW5nOiAiOwotICAgIGVsc2UKLSAgICAgICAg
cHJlZml4ID0gQCJSZWFkeSB0byBwbGF5OiAiOwotCi0gICAgX2Rpc3BsYXlTdHJpbmcgPSBbW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAlQCIsIHByZWZpeCwgX2F1ZGlvVVJMLmFic29s
dXRlU3RyaW5nXSByZXRhaW5dOwotfQotCi1AZW5kCi0KLQotTlBFcnJvciBOUF9Jbml0aWFsaXpl
KE5QTmV0c2NhcGVGdW5jcyogYnJvd3NlckZ1bmNzKQotewotICAgIGJyb3dzZXIgPSBicm93c2Vy
RnVuY3M7Ci0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1OUEVycm9yIE5QX0dldEVu
dHJ5UG9pbnRzKE5QUGx1Z2luRnVuY3MqIHBsdWdpbkZ1bmNzKQotewotICAgIHBsdWdpbkZ1bmNz
LT52ZXJzaW9uID0gMTE7Ci0gICAgcGx1Z2luRnVuY3MtPnNpemUgPSBzaXplb2YocGx1Z2luRnVu
Y3MpOwotICAgIHBsdWdpbkZ1bmNzLT5uZXdwID0gTlBQX05ldzsKLSAgICBwbHVnaW5GdW5jcy0+
ZGVzdHJveSA9IE5QUF9EZXN0cm95OwotICAgIHBsdWdpbkZ1bmNzLT5zZXR3aW5kb3cgPSBOUFBf
U2V0V2luZG93OwotICAgIHBsdWdpbkZ1bmNzLT5uZXdzdHJlYW0gPSBOUFBfTmV3U3RyZWFtOwot
ICAgIHBsdWdpbkZ1bmNzLT5kZXN0cm95c3RyZWFtID0gTlBQX0Rlc3Ryb3lTdHJlYW07Ci0gICAg
cGx1Z2luRnVuY3MtPmFzZmlsZSA9IE5QUF9TdHJlYW1Bc0ZpbGU7Ci0gICAgcGx1Z2luRnVuY3Mt
PndyaXRlcmVhZHkgPSBOUFBfV3JpdGVSZWFkeTsKLSAgICBwbHVnaW5GdW5jcy0+d3JpdGUgPSAo
TlBQX1dyaXRlUHJvY1B0cilOUFBfV3JpdGU7Ci0gICAgcGx1Z2luRnVuY3MtPnByaW50ID0gTlBQ
X1ByaW50OwotICAgIHBsdWdpbkZ1bmNzLT5ldmVudCA9IE5QUF9IYW5kbGVFdmVudDsKLSAgICBw
bHVnaW5GdW5jcy0+dXJsbm90aWZ5ID0gTlBQX1VSTE5vdGlmeTsKLSAgICBwbHVnaW5GdW5jcy0+
Z2V0dmFsdWUgPSBOUFBfR2V0VmFsdWU7Ci0gICAgcGx1Z2luRnVuY3MtPnNldHZhbHVlID0gTlBQ
X1NldFZhbHVlOwotICAgIAotICAgIHJldHVybiBOUEVSUl9OT19FUlJPUjsKLX0KLQotdm9pZCBO
UF9TaHV0ZG93bih2b2lkKQotewotCi19Ci0KLU5QRXJyb3IgTlBQX05ldyhOUE1JTUVUeXBlIHBs
dWdpblR5cGUsIE5QUCBpbnN0YW5jZSwgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFy
KiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZlZERhdGEqIHNhdmVkKQotewotICAgIC8vIENy
ZWF0ZSBwZXItaW5zdGFuY2Ugc3RvcmFnZQotICAgIC8vIEFzayB0aGUgYnJvd3NlciBpZiBpdCBz
dXBwb3J0cyB0aGUgQ29yZUdyYXBoaWNzIGRyYXdpbmcgbW9kZWwKLSAgICBOUEJvb2wgc3VwcG9y
dHNDb3JlR3JhcGhpY3M7Ci0gICAgaWYgKGJyb3dzZXItPmdldHZhbHVlKGluc3RhbmNlLCBOUE5W
c3VwcG9ydHNDb3JlR3JhcGhpY3NCb29sLCAmc3VwcG9ydHNDb3JlR3JhcGhpY3MpICE9IE5QRVJS
X05PX0VSUk9SKQotICAgICAgICBzdXBwb3J0c0NvcmVHcmFwaGljcyA9IEZBTFNFOwotICAgIAot
ICAgIGlmICghc3VwcG9ydHNDb3JlR3JhcGhpY3MpCi0gICAgICAgIHJldHVybiBOUEVSUl9JTkNP
TVBBVElCTEVfVkVSU0lPTl9FUlJPUjsKLSAgICAKLSAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBw
b3J0cyB0aGUgQ29yZUdyYXBoaWNzIGRyYXdpbmcgbW9kZWwsIGVuYWJsZSBpdC4KLSAgICBicm93
c2VyLT5zZXR2YWx1ZShpbnN0YW5jZSwgTlBQVnBsdWdpbkRyYXdpbmdNb2RlbCwgKHZvaWQgKilO
UERyYXdpbmdNb2RlbENvcmVHcmFwaGljcyk7Ci0KLSAgICAvLyBJZiB0aGUgYnJvd3NlciBzdXBw
b3J0cyB0aGUgQ29jb2EgZXZlbnQgbW9kZWwsIGVuYWJsZSBpdC4KLSAgICBOUEJvb2wgc3VwcG9y
dHNDb2NvYTsKLSAgICBpZiAoYnJvd3Nlci0+Z2V0dmFsdWUoaW5zdGFuY2UsIE5QTlZzdXBwb3J0
c0NvY29hQm9vbCwgJnN1cHBvcnRzQ29jb2EpICE9IE5QRVJSX05PX0VSUk9SKQotICAgICAgICBz
dXBwb3J0c0NvY29hID0gRkFMU0U7Ci0gICAgCi0gICAgaWYgKCFzdXBwb3J0c0NvY29hKQotICAg
ICAgICByZXR1cm4gTlBFUlJfSU5DT01QQVRJQkxFX1ZFUlNJT05fRVJST1I7Ci0gICAgCi0gICAg
YnJvd3Nlci0+c2V0dmFsdWUoaW5zdGFuY2UsIE5QUFZwbHVnaW5FdmVudE1vZGVsLCAodm9pZCAq
KU5QRXZlbnRNb2RlbENvY29hKTsKLQotICAgIE5TVVJMICphdWRpb1VSTCA9IG5pbDsKLSAgICBm
b3IgKGludDE2X3QgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgaWYgKCFzdHJjYXNl
Y21wKGFyZ25baV0sICJhdWRpb3VybCIpKSB7Ci0gICAgICAgICAgICBOU1N0cmluZyAqdXJsU3Ry
aW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFyZ3ZbaV1dOwotICAgICAgICAg
ICAgaWYgKHVybFN0cmluZykKLSAgICAgICAgICAgICAgICBhdWRpb1VSTCA9IFtOU1VSTCBVUkxX
aXRoU3RyaW5nOnVybFN0cmluZ107Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIFBsdWdpbk9iamVjdCAqb2JqID0gW1tQbHVnaW5PYmplY3QgYWxsb2NdIGluaXRX
aXRoTlBQOmluc3RhbmNlIGF1ZGlvVVJMOmF1ZGlvVVJMXTsKLSAgICBpbnN0YW5jZS0+cGRhdGEg
PSBvYmo7Ci0KLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJyb3IgTlBQX0Rl
c3Ryb3koTlBQIGluc3RhbmNlLCBOUFNhdmVkRGF0YSoqIHNhdmUpCi17Ci0gICAgLy8gRnJlZSBw
ZXItaW5zdGFuY2Ugc3RvcmFnZQotICAgIFBsdWdpbk9iamVjdCAqb2JqID0gaW5zdGFuY2UtPnBk
YXRhOwotICAgIFtvYmogcmVsZWFzZV07Ci0KLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19
Ci0KLU5QRXJyb3IgTlBQX1NldFdpbmRvdyhOUFAgaW5zdGFuY2UsIE5QV2luZG93KiB3aW5kb3cp
Ci17Ci0gICAgUGx1Z2luT2JqZWN0ICpvYmogPSBpbnN0YW5jZS0+cGRhdGE7Ci0gICAgb2JqLndp
bmRvdyA9ICp3aW5kb3c7Ci0KLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJy
b3IgTlBQX05ld1N0cmVhbShOUFAgaW5zdGFuY2UsIE5QTUlNRVR5cGUgdHlwZSwgTlBTdHJlYW0q
IHN0cmVhbSwgTlBCb29sIHNlZWthYmxlLCB1aW50MTZfdCogc3R5cGUpCi17Ci0gICAgKnN0eXBl
ID0gTlBfQVNGSUxFT05MWTsKLSAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci19Ci0KLU5QRXJy
b3IgTlBQX0Rlc3Ryb3lTdHJlYW0oTlBQIGluc3RhbmNlLCBOUFN0cmVhbSogc3RyZWFtLCBOUFJl
YXNvbiByZWFzb24pCi17Ci0gICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOwotfQotCi1pbnQzMl90
IE5QUF9Xcml0ZVJlYWR5KE5QUCBpbnN0YW5jZSwgTlBTdHJlYW0qIHN0cmVhbSkKLXsKLSAgICBy
ZXR1cm4gMDsKLX0KLQotaW50MzJfdCBOUFBfV3JpdGUoTlBQIGluc3RhbmNlLCBOUFN0cmVhbSog
c3RyZWFtLCBpbnQzMl90IG9mZnNldCwgaW50MzJfdCBsZW4sIHZvaWQqIGJ1ZmZlcikKLXsKLSAg
ICByZXR1cm4gMDsKLX0KLQotdm9pZCBOUFBfU3RyZWFtQXNGaWxlKE5QUCBpbnN0YW5jZSwgTlBT
dHJlYW0qIHN0cmVhbSwgY29uc3QgY2hhciogZm5hbWUpCi17Ci19Ci0KLXZvaWQgTlBQX1ByaW50
KE5QUCBpbnN0YW5jZSwgTlBQcmludCogcGxhdGZvcm1QcmludCkKLXsKLX0KLQotc3RhdGljIHZv
aWQgaGFuZGxlRHJhdyhQbHVnaW5PYmplY3QgKm9iaiwgTlBDb2NvYUV2ZW50ICpldmVudCkKLXsK
LSAgICBOU0dyYXBoaWNzQ29udGV4dCAqb2xkQ29udGV4dCA9IFtbTlNHcmFwaGljc0NvbnRleHQg
Y3VycmVudENvbnRleHRdIHJldGFpbl07Ci0gICAgCi0gICAgTlNHcmFwaGljc0NvbnRleHQgKmNv
bnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEdyYXBoaWNzUG9y
dDpldmVudC0+ZGF0YS5kcmF3LmNvbnRleHQgZmxpcHBlZDpZRVNdOwotCi0gICAgW05TR3JhcGhp
Y3NDb250ZXh0IHNldEN1cnJlbnRDb250ZXh0OmNvbnRleHRdOwotICAgIAotICAgIE5TUmVjdCBy
ZWN0ID0gTlNNYWtlUmVjdCgwLCAwLCBvYmoud2luZG93LndpZHRoLCBvYmoud2luZG93LmhlaWdo
dCk7Ci0gICAgCi0gICAgW1tOU0NvbG9yIGxpZ2h0R3JheUNvbG9yXSBzZXRdOwotICAgIFtOU0Jl
emllclBhdGggZmlsbFJlY3Q6cmVjdF07Ci0KLSAgICAvLyBJZiB0aGUgcGx1Z2luIGhhcyBmb2N1
cywgZHJhdyBhIGZvY3VzIGluZGljYXRvcgotICAgIGlmIChvYmouaGFzRm9jdXMpIHsKLSAgICAg
ICAgW1tOU0NvbG9yIGJsYWNrQ29sb3JdIHNldF07Ci0gICAgICAgIE5TQmV6aWVyUGF0aCAqcGF0
aCA9IFtOU0JlemllclBhdGggYmV6aWVyUGF0aFdpdGhSZWN0OnJlY3RdOwotICAgICAgICBbcGF0
aCBzZXRMaW5lV2lkdGg6NV07Ci0gICAgICAgIFtwYXRoIHN0cm9rZV07Ci0gICAgfQotICAgIAot
ICAgIFtvYmouZGlzcGxheVN0cmluZyBkcmF3QXRQb2ludDpOU01ha2VQb2ludCgxMCwgMTApIHdp
dGhBdHRyaWJ1dGVzOm5pbF07Ci0gICAgCi0gICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJl
bnRDb250ZXh0Om9sZENvbnRleHRdOwotICAgIFtvbGRDb250ZXh0IHJlbGVhc2VdOwotfQotCi1z
dGF0aWMgdm9pZCBpbnZhbGlkYXRlUGx1Z2luKFBsdWdpbk9iamVjdCAqb2JqKQotewotICAgIE5Q
UmVjdCByZWN0OwotICAgIHJlY3QubGVmdCA9IDA7Ci0gICAgcmVjdC50b3AgPSAwOwotICAgIHJl
Y3QucmlnaHQgPSBvYmoud2luZG93LndpZHRoOwotICAgIHJlY3QuYm90dG9tID0gb2JqLndpbmRv
dy5oZWlnaHQ7Ci0gICAgCi0gICAgYnJvd3Nlci0+aW52YWxpZGF0ZXJlY3Qob2JqLm5wcCwgJnJl
Y3QpOwotfQotCi0KLXN0YXRpYyB2b2lkIGhhbmRsZU1vdXNlRXZlbnQoUGx1Z2luT2JqZWN0ICpv
YmosIE5QQ29jb2FFdmVudCAqZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LT5kYXRhLm1vdXNlLmJ1
dHRvbk51bWJlciA9PSAxKQotICAgICAgICBicm93c2VyLT5wb3B1cGNvbnRleHRtZW51KG9iai5u
cHAsIChOUE5TTWVudSAqKVtvYmoubWVudUhhbmRsZXIgbWVudV0pOwotfQotCi1pbnQxNl90IE5Q
UF9IYW5kbGVFdmVudChOUFAgaW5zdGFuY2UsIHZvaWQqIGV2ZW50KQotewotICAgIFBsdWdpbk9i
amVjdCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOwotCi0gICAgTlBDb2NvYUV2ZW50ICpjb2NvYUV2
ZW50ID0gZXZlbnQ7Ci0gICAgCi0gICAgc3dpdGNoIChjb2NvYUV2ZW50LT50eXBlKSB7Ci0gICAg
Y2FzZSBOUENvY29hRXZlbnRGb2N1c0NoYW5nZWQ6Ci0gICAgICAgIG9iai5oYXNGb2N1cyA9IGNv
Y29hRXZlbnQtPmRhdGEuZm9jdXMuaGFzRm9jdXM7Ci0gICAgICAgIGludmFsaWRhdGVQbHVnaW4o
b2JqKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIAotICAgIGNhc2UgTlBDb2NvYUV2ZW50
RHJhd1JlY3Q6Ci0gICAgICAgIGhhbmRsZURyYXcob2JqLCBjb2NvYUV2ZW50KTsKLSAgICAgICAg
cmV0dXJuIDE7Ci0gICAgCi0gICAgY2FzZSBOUENvY29hRXZlbnRNb3VzZURvd246Ci0gICAgY2Fz
ZSBOUENvY29hRXZlbnRNb3VzZVVwOgotICAgICAgICAKLSAgICAvLyBGSVhNRTogTlBDb2NvYUV2
ZW50TW91c2VNb3ZlZCBpcyBjdXJyZW50bHkgZGlzYWJsZWQgaW4gb3JkZXIgdG8gc2VlIG90aGVy
IGV2ZW50cyBtb3JlIGNsZWFybHkKLSAgICAvLyB3aXRob3V0ICJkcm93bmluZyIgaW4gbW91c2Ug
bW92ZWQgZXZlbnRzLgotLy8gICAgICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VNb3ZlZDoKLSAg
ICBjYXNlIE5QQ29jb2FFdmVudE1vdXNlRW50ZXJlZDoKLSAgICBjYXNlIE5QQ29jb2FFdmVudE1v
dXNlRXhpdGVkOgotICAgIGNhc2UgTlBDb2NvYUV2ZW50TW91c2VEcmFnZ2VkOgotICAgIGNhc2Ug
TlBDb2NvYUV2ZW50U2Nyb2xsV2hlZWw6Ci0gICAgICAgIGhhbmRsZU1vdXNlRXZlbnQob2JqLCBj
b2NvYUV2ZW50KTsKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgTlBQX1VSTE5vdGlm
eShOUFAgaW5zdGFuY2UsIGNvbnN0IGNoYXIqIHVybCwgTlBSZWFzb24gcmVhc29uLCB2b2lkKiBu
b3RpZnlEYXRhKQotewotCi19Ci0KLU5QRXJyb3IgTlBQX0dldFZhbHVlKE5QUCBpbnN0YW5jZSwg
TlBQVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQotewotICAgIFBsdWdpbk9iamVjdCAq
b2JqID0gaW5zdGFuY2UtPnBkYXRhOwotCi0gICAgc3dpdGNoICh2YXJpYWJsZSkgewotICAgIGNh
c2UgTlBQVnBsdWdpbklzUGxheWluZ0F1ZGlvOgotICAgICAgICBpZiAodmFsdWUpCi0gICAgICAg
ICAgICAqKChOUEJvb2wgKiopdmFsdWUpID0gb2JqLmlzUGxheWluZ0F1ZGlvOwotICAgICAgICBy
ZXR1cm4gTlBFUlJfTk9fRVJST1I7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTlBF
UlJfR0VORVJJQ19FUlJPUjsKLSAgICB9Ci19Ci0KLU5QRXJyb3IgTlBQX1NldFZhbHVlKE5QUCBp
bnN0YW5jZSwgTlBOVmFyaWFibGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQotewotICAgIFBsdWdp
bk9iamVjdCAqb2JqID0gaW5zdGFuY2UtPnBkYXRhOwotCi0gICAgc3dpdGNoICh2YXJpYWJsZSkg
ewotICAgIGNhc2UgTlBOVm11dGVBdWRpb0Jvb2w6Ci0gICAgICAgIGlmICh2YWx1ZSkKLSAgICAg
ICAgICAgIG9iai5tdXRlZCA9ICooKE5QQm9vbCAqKXZhbHVlKTsKLSAgICAgICAgcmV0dXJuIE5Q
RVJSX05PX0VSUk9SOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVS
SUNfRVJST1I7Ci0gICAgfQotfQpJbmRleDogRXhhbXBsZXMvTmV0c2NhcGVNdXRlQVBJUGx1Z2lu
L3Rlc3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQbHVnaW4v
dGVzdC5odG1sCShyZXZpc2lvbiAyNDg5NjUpCisrKyBFeGFtcGxlcy9OZXRzY2FwZU11dGVBUElQ
bHVnaW4vdGVzdC5odG1sCShub25leGlzdGVudCkKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0
dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLWh0bWw0MDEtMTk5OTEyMjQvbG9vc2UuZHRkIj4K
LTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+Q29jb2EgTXV0ZSBBUEkgUGx1Zy1JbjwvdGl0bGU+Ci08
L2hlYWQ+Ci08Ym9keT4KLTxwPlRvIHRlc3QsIHNldCBhdWRpb3VybCB0byBhbiBhYnNvbHV0ZSBV
UkwgdG8gYW4gYXVkaW8gZmlsZSAoZS5nLiBtcDMpLjwvcD4KLTxkaXY+Ci0gICAgPGVtYmVkIHdp
ZHRoPSI3MDAiIGhlaWdodD0iNTAiIHR5cGU9InRlc3QveC1uZXRzY2FwZS1tdXRlLWFwaS1wbHVn
aW4iIGF1ZGlvdXJsPSIiPjwvZW1iZWQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4K
</data>
<flag name="review"
          id="392927"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>