<?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>200846</bug_id>
          
          <creation_ts>2019-08-16 18:34:47 -0700</creation_ts>
          <short_desc>[WHLSL] We need to null check when emitting native code for operator&amp;.&lt;field-name&gt;</short_desc>
          <delta_ts>2019-08-20 16:12:20 -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>WebGPU</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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>rmorisset</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1562350</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-16 18:34:47 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1562352</commentid>
    <comment_count>1</comment_count>
      <attachid>376573</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-16 18:57:39 -0700</bug_when>
    <thetext>Created attachment 376573
WIP

it works, but contains another patch inside of it. Will need to rebase and post for review after the other patch lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563229</commentid>
    <comment_count>2</comment_count>
      <attachid>376801</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-08-20 14:18:08 -0700</bug_when>
    <thetext>Created attachment 376801
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563285</commentid>
    <comment_count>3</comment_count>
      <attachid>376801</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-20 16:11:47 -0700</bug_when>
    <thetext>Comment on attachment 376801
patch

Clearing flags on attachment: 376801

Committed r248920: &lt;https://trac.webkit.org/changeset/248920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563286</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-08-20 16:11:49 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1563287</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-08-20 16:12:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/54533101&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376573</attachid>
            <date>2019-08-16 18:57:39 -0700</date>
            <delta_ts>2019-08-20 14:18:08 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>39608</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODgwNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE5LTA4LTE2ICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gTWFrZSAib3BlcmF0
b3IgY2FzdCIgY29uc3RydWN0b3JzIG5hdGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAwNzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IHdlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0
b3JzLmh0bWwKKyAgICAgICAgICAgICAgIHdlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3Jz
Lmh0bWwKKworICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMTmF0aXZl
RnVuY3Rpb25Xcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6Ok1ldGFsOjppbmxp
bmVOYXRpdmVGdW5jdGlvbik6CisgICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
dGFuZGFyZExpYnJhcnkudHh0OgorCiAyMDE5LTA4LTE1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3
ZWJraXQub3JnPgogCiAgICAgICAgIERvbid0IHVzZSB1bmlvbiB0byBzdG9yZSBOb2RlUmFyZURh
dGEqIGFuZCBSZW5kZXJPYmplY3QqCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFByZXBhcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9XSExTTFByZXBhcmUuaAkocmV2aXNpb24gMjQ4ODA2KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xQcmVwYXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBuYW1lc3BhY2Ug
V0hMU0wgewogCi1jb25zdGV4cHIgYm9vbCBkdW1wTWV0YWxDb21waWxlVGltZXMgPSBmYWxzZTsK
K2NvbnN0ZXhwciBib29sIGR1bXBNZXRhbENvbXBpbGVUaW1lcyA9IHRydWU7CiAKIHN0cnVjdCBS
ZW5kZXJQcmVwYXJlUmVzdWx0IHsKICAgICBTdHJpbmdCdWlsZGVyIG1ldGFsU291cmNlOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJh
cnkudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dAkocmV2aXNpb24gMjQ4ODA2KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGFuZGFyZExpYnJhcnkudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjk1OSw1MzIgKzEyOTU5LDkwIEBAIG5hdGl2ZSBvcGVyYXRvciBpbnQo
dWludCk7CiBuYXRpdmUgb3BlcmF0b3IgaW50KGZsb2F0KTsKIG5hdGl2ZSBvcGVyYXRvciBmbG9h
dCh1aW50KTsKIG5hdGl2ZSBvcGVyYXRvciBmbG9hdChpbnQpOwotCi1vcGVyYXRvciBpbnQoYm9v
bCB4KSB7Ci0gICAgcmV0dXJuIHggPyAxIDogMDsKLX0KLW9wZXJhdG9yIGJvb2wodWludCB4KSB7
Ci0gICAgcmV0dXJuIHggIT0gMDsKLX0KLW9wZXJhdG9yIGJvb2woaW50IHgpIHsKLSAgICByZXR1
cm4geCAhPSAwOwotfQotb3BlcmF0b3IgYm9vbChmbG9hdCB4KSB7Ci0gICAgcmV0dXJuIHggIT0g
MDsKLX0KLQotb3BlcmF0b3IgYm9vbDIoYm9vbCB4LCBib29sIHkpIHsKLSAgICBib29sMiByZXN1
bHQ7Ci0gICAgcmVzdWx0LnggPSB4OwotICAgIHJlc3VsdC55ID0geTsKLSAgICByZXR1cm4gcmVz
dWx0OwotfQotb3BlcmF0b3IgYm9vbDMoYm9vbCB4LCBib29sIHksIGJvb2wgeikgewotICAgIGJv
b2wzIHJlc3VsdDsKLSAgICByZXN1bHQueCA9IHg7Ci0gICAgcmVzdWx0LnkgPSB5OwotICAgIHJl
c3VsdC56ID0gejsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgYm9vbDMoYm9vbDIg
eCwgYm9vbCB5KSB7Ci0gICAgYm9vbDMgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geC54OwotICAg
IHJlc3VsdC55ID0geC55OwotICAgIHJlc3VsdC56ID0geTsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotb3BlcmF0b3IgYm9vbDMoYm9vbCB4LCBib29sMiB5KSB7Ci0gICAgYm9vbDMgcmVzdWx0Owot
ICAgIHJlc3VsdC54ID0geDsKLSAgICByZXN1bHQueSA9IHkueDsKLSAgICByZXN1bHQueiA9IHku
eTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgYm9vbDQoYm9vbCB4LCBib29sIHks
IGJvb2wgeiwgYm9vbCB3KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geDsK
LSAgICByZXN1bHQueSA9IHk7Ci0gICAgcmVzdWx0LnogPSB6OwotICAgIHJlc3VsdC53ID0gdzsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgYm9vbDQoYm9vbDIgeCwgYm9vbCB5LCBi
b29sIHopIHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB4Lng7Ci0gICAgcmVz
dWx0LnkgPSB4Lnk7Ci0gICAgcmVzdWx0LnogPSB5OwotICAgIHJlc3VsdC53ID0gejsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgYm9vbDQoYm9vbCB4LCBib29sMiB5LCBib29sIHop
IHsKLSAgICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB4OwotICAgIHJlc3VsdC55ID0g
eS54OwotICAgIHJlc3VsdC56ID0geS55OwotICAgIHJlc3VsdC53ID0gejsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotb3BlcmF0b3IgYm9vbDQoYm9vbCB4LCBib29sIHksIGJvb2wyIHopIHsKLSAg
ICBib29sNCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB4OwotICAgIHJlc3VsdC55ID0geTsKLSAg
ICByZXN1bHQueiA9IHoueDsKLSAgICByZXN1bHQudyA9IHoueTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotb3BlcmF0b3IgYm9vbDQoYm9vbDIgeCwgYm9vbDIgeSkgewotICAgIGJvb2w0IHJlc3Vs
dDsKLSAgICByZXN1bHQueCA9IHgueDsKLSAgICByZXN1bHQueSA9IHgueTsKLSAgICByZXN1bHQu
eiA9IHkueDsKLSAgICByZXN1bHQudyA9IHkueTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3Bl
cmF0b3IgYm9vbDQoYm9vbDMgeCwgYm9vbCB5KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJl
c3VsdC54ID0geC54OwotICAgIHJlc3VsdC55ID0geC55OwotICAgIHJlc3VsdC56ID0geC56Owot
ICAgIHJlc3VsdC53ID0geTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgYm9vbDQo
Ym9vbCB4LCBib29sMyB5KSB7Ci0gICAgYm9vbDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geDsK
LSAgICByZXN1bHQueSA9IHkueDsKLSAgICByZXN1bHQueiA9IHkueTsKLSAgICByZXN1bHQudyA9
IHkuejsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgdWludDIodWludCB4LCB1aW50
IHkpIHsKLSAgICB1aW50MiByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB4OwotICAgIHJlc3VsdC55
ID0geTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgdWludDModWludCB4LCB1aW50
IHksIHVpbnQgeikgewotICAgIHVpbnQzIHJlc3VsdDsKLSAgICByZXN1bHQueCA9IHg7Ci0gICAg
cmVzdWx0LnkgPSB5OwotICAgIHJlc3VsdC56ID0gejsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
b3BlcmF0b3IgdWludDModWludDIgeCwgdWludCB5KSB7Ci0gICAgdWludDMgcmVzdWx0OwotICAg
IHJlc3VsdC54ID0geC54OwotICAgIHJlc3VsdC55ID0geC55OwotICAgIHJlc3VsdC56ID0geTsK
LSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgdWludDModWludCB4LCB1aW50MiB5KSB7
Ci0gICAgdWludDMgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geDsKLSAgICByZXN1bHQueSA9IHku
eDsKLSAgICByZXN1bHQueiA9IHkueTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3Ig
dWludDQodWludCB4LCB1aW50IHksIHVpbnQgeiwgdWludCB3KSB7Ci0gICAgdWludDQgcmVzdWx0
OwotICAgIHJlc3VsdC54ID0geDsKLSAgICByZXN1bHQueSA9IHk7Ci0gICAgcmVzdWx0LnogPSB6
OwotICAgIHJlc3VsdC53ID0gdzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgdWlu
dDQodWludDIgeCwgdWludCB5LCB1aW50IHopIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVz
dWx0LnggPSB4Lng7Ci0gICAgcmVzdWx0LnkgPSB4Lnk7Ci0gICAgcmVzdWx0LnogPSB5OwotICAg
IHJlc3VsdC53ID0gejsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgdWludDQodWlu
dCB4LCB1aW50MiB5LCB1aW50IHopIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0Lngg
PSB4OwotICAgIHJlc3VsdC55ID0geS54OwotICAgIHJlc3VsdC56ID0geS55OwotICAgIHJlc3Vs
dC53ID0gejsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgdWludDQodWludCB4LCB1
aW50IHksIHVpbnQyIHopIHsKLSAgICB1aW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB4Owot
ICAgIHJlc3VsdC55ID0geTsKLSAgICByZXN1bHQueiA9IHoueDsKLSAgICByZXN1bHQudyA9IHou
eTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgdWludDQodWludDIgeCwgdWludDIg
eSkgewotICAgIHVpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IHgueDsKLSAgICByZXN1bHQu
eSA9IHgueTsKLSAgICByZXN1bHQueiA9IHkueDsKLSAgICByZXN1bHQudyA9IHkueTsKLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgdWludDQodWludDMgeCwgdWludCB5KSB7Ci0gICAg
dWludDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geC54OwotICAgIHJlc3VsdC55ID0geC55Owot
ICAgIHJlc3VsdC56ID0geC56OwotICAgIHJlc3VsdC53ID0geTsKLSAgICByZXR1cm4gcmVzdWx0
OwotfQotb3BlcmF0b3IgdWludDQodWludCB4LCB1aW50MyB5KSB7Ci0gICAgdWludDQgcmVzdWx0
OwotICAgIHJlc3VsdC54ID0geDsKLSAgICByZXN1bHQueSA9IHkueDsKLSAgICByZXN1bHQueiA9
IHkueTsKLSAgICByZXN1bHQudyA9IHkuejsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0
b3IgaW50MihpbnQgeCwgaW50IHkpIHsKLSAgICBpbnQyIHJlc3VsdDsKLSAgICByZXN1bHQueCA9
IHg7Ci0gICAgcmVzdWx0LnkgPSB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1vcGVyYXRvciBp
bnQzKGludCB4LCBpbnQgeSwgaW50IHopIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHQu
eCA9IHg7Ci0gICAgcmVzdWx0LnkgPSB5OwotICAgIHJlc3VsdC56ID0gejsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotb3BlcmF0b3IgaW50MyhpbnQyIHgsIGludCB5KSB7Ci0gICAgaW50MyByZXN1
bHQ7Ci0gICAgcmVzdWx0LnggPSB4Lng7Ci0gICAgcmVzdWx0LnkgPSB4Lnk7Ci0gICAgcmVzdWx0
LnogPSB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1vcGVyYXRvciBpbnQzKGludCB4LCBpbnQy
IHkpIHsKLSAgICBpbnQzIHJlc3VsdDsKLSAgICByZXN1bHQueCA9IHg7Ci0gICAgcmVzdWx0Lnkg
PSB5Lng7Ci0gICAgcmVzdWx0LnogPSB5Lnk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW9wZXJh
dG9yIGludDQoaW50IHgsIGludCB5LCBpbnQgeiwgaW50IHcpIHsKLSAgICBpbnQ0IHJlc3VsdDsK
LSAgICByZXN1bHQueCA9IHg7Ci0gICAgcmVzdWx0LnkgPSB5OwotICAgIHJlc3VsdC56ID0gejsK
LSAgICByZXN1bHQudyA9IHc7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW9wZXJhdG9yIGludDQo
aW50MiB4LCBpbnQgeSwgaW50IHopIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHQueCA9
IHgueDsKLSAgICByZXN1bHQueSA9IHgueTsKLSAgICByZXN1bHQueiA9IHk7Ci0gICAgcmVzdWx0
LncgPSB6OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1vcGVyYXRvciBpbnQ0KGludCB4LCBpbnQy
IHksIGludCB6KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB4OwotICAgIHJl
c3VsdC55ID0geS54OwotICAgIHJlc3VsdC56ID0geS55OwotICAgIHJlc3VsdC53ID0gejsKLSAg
ICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgaW50NChpbnQgeCwgaW50IHksIGludDIgeikg
ewotICAgIGludDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geDsKLSAgICByZXN1bHQueSA9IHk7
Ci0gICAgcmVzdWx0LnogPSB6Lng7Ci0gICAgcmVzdWx0LncgPSB6Lnk7Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLW9wZXJhdG9yIGludDQoaW50MiB4LCBpbnQyIHkpIHsKLSAgICBpbnQ0IHJlc3Vs
dDsKLSAgICByZXN1bHQueCA9IHgueDsKLSAgICByZXN1bHQueSA9IHgueTsKLSAgICByZXN1bHQu
eiA9IHkueDsKLSAgICByZXN1bHQudyA9IHkueTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3Bl
cmF0b3IgaW50NChpbnQzIHgsIGludCB5KSB7Ci0gICAgaW50NCByZXN1bHQ7Ci0gICAgcmVzdWx0
LnggPSB4Lng7Ci0gICAgcmVzdWx0LnkgPSB4Lnk7Ci0gICAgcmVzdWx0LnogPSB4Lno7Ci0gICAg
cmVzdWx0LncgPSB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1vcGVyYXRvciBpbnQ0KGludCB4
LCBpbnQzIHkpIHsKLSAgICBpbnQ0IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IHg7Ci0gICAgcmVz
dWx0LnkgPSB5Lng7Ci0gICAgcmVzdWx0LnogPSB5Lnk7Ci0gICAgcmVzdWx0LncgPSB5Lno7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KLW9wZXJhdG9yIGZsb2F0MihmbG9hdCB4LCBmbG9hdCB5KSB7
Ci0gICAgZmxvYXQyIHJlc3VsdDsKLSAgICByZXN1bHQueCA9IHg7Ci0gICAgcmVzdWx0LnkgPSB5
OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1vcGVyYXRvciBmbG9hdDMoZmxvYXQgeCwgZmxvYXQg
eSwgZmxvYXQgeikgewotICAgIGZsb2F0MyByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB4OwotICAg
IHJlc3VsdC55ID0geTsKLSAgICByZXN1bHQueiA9IHo7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LW9wZXJhdG9yIGZsb2F0MyhmbG9hdDIgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0MyByZXN1bHQ7
Ci0gICAgcmVzdWx0LnggPSB4Lng7Ci0gICAgcmVzdWx0LnkgPSB4Lnk7Ci0gICAgcmVzdWx0Lnog
PSB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1vcGVyYXRvciBmbG9hdDMoZmxvYXQgeCwgZmxv
YXQyIHkpIHsKLSAgICBmbG9hdDMgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geDsKLSAgICByZXN1
bHQueSA9IHkueDsKLSAgICByZXN1bHQueiA9IHkueTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
b3BlcmF0b3IgZmxvYXQ0KGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IHcpIHsKLSAg
ICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geDsKLSAgICByZXN1bHQueSA9IHk7Ci0g
ICAgcmVzdWx0LnogPSB6OwotICAgIHJlc3VsdC53ID0gdzsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotb3BlcmF0b3IgZmxvYXQ0KGZsb2F0MiB4LCBmbG9hdCB5LCBmbG9hdCB6KSB7Ci0gICAgZmxv
YXQ0IHJlc3VsdDsKLSAgICByZXN1bHQueCA9IHgueDsKLSAgICByZXN1bHQueSA9IHgueTsKLSAg
ICByZXN1bHQueiA9IHk7Ci0gICAgcmVzdWx0LncgPSB6OwotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci1vcGVyYXRvciBmbG9hdDQoZmxvYXQgeCwgZmxvYXQyIHksIGZsb2F0IHopIHsKLSAgICBmbG9h
dDQgcmVzdWx0OwotICAgIHJlc3VsdC54ID0geDsKLSAgICByZXN1bHQueSA9IHkueDsKLSAgICBy
ZXN1bHQueiA9IHkueTsKLSAgICByZXN1bHQudyA9IHo7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0K
LW9wZXJhdG9yIGZsb2F0NChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdDIgeikgewotICAgIGZsb2F0
NCByZXN1bHQ7Ci0gICAgcmVzdWx0LnggPSB4OwotICAgIHJlc3VsdC55ID0geTsKLSAgICByZXN1
bHQueiA9IHoueDsKLSAgICByZXN1bHQudyA9IHoueTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
b3BlcmF0b3IgZmxvYXQ0KGZsb2F0MiB4LCBmbG9hdDIgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7
Ci0gICAgcmVzdWx0LnggPSB4Lng7Ci0gICAgcmVzdWx0LnkgPSB4Lnk7Ci0gICAgcmVzdWx0Lnog
PSB5Lng7Ci0gICAgcmVzdWx0LncgPSB5Lnk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW9wZXJh
dG9yIGZsb2F0NChmbG9hdDMgeCwgZmxvYXQgeSkgewotICAgIGZsb2F0NCByZXN1bHQ7Ci0gICAg
cmVzdWx0LnggPSB4Lng7Ci0gICAgcmVzdWx0LnkgPSB4Lnk7Ci0gICAgcmVzdWx0LnogPSB4Lno7
Ci0gICAgcmVzdWx0LncgPSB5OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1vcGVyYXRvciBmbG9h
dDQoZmxvYXQgeCwgZmxvYXQzIHkpIHsKLSAgICBmbG9hdDQgcmVzdWx0OwotICAgIHJlc3VsdC54
ID0geDsKLSAgICByZXN1bHQueSA9IHkueDsKLSAgICByZXN1bHQueiA9IHkueTsKLSAgICByZXN1
bHQudyA9IHkuejsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgZmxvYXQyeDIoZmxv
YXQyIGEsIGZsb2F0MiBiKSB7Ci0gICAgZmxvYXQyeDIgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9
IGE7Ci0gICAgcmVzdWx0WzFdID0gYjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3Ig
ZmxvYXQyeDMoZmxvYXQzIGEsIGZsb2F0MyBiKSB7Ci0gICAgZmxvYXQyeDMgcmVzdWx0OwotICAg
IHJlc3VsdFswXSA9IGE7Ci0gICAgcmVzdWx0WzFdID0gYjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotb3BlcmF0b3IgZmxvYXQyeDQoZmxvYXQ0IGEsIGZsb2F0NCBiKSB7Ci0gICAgZmxvYXQyeDQg
cmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGE7Ci0gICAgcmVzdWx0WzFdID0gYjsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgZmxvYXQzeDIoZmxvYXQyIGEsIGZsb2F0MiBiLCBmbG9h
dDIgYykgewotICAgIGZsb2F0M3gyIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhOwotICAgIHJl
c3VsdFsxXSA9IGI7Ci0gICAgcmVzdWx0WzJdID0gYzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
b3BlcmF0b3IgZmxvYXQzeDMoZmxvYXQzIGEsIGZsb2F0MyBiLCBmbG9hdDMgYykgewotICAgIGZs
b2F0M3gzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhOwotICAgIHJlc3VsdFsxXSA9IGI7Ci0g
ICAgcmVzdWx0WzJdID0gYzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgZmxvYXQz
eDQoZmxvYXQ0IGEsIGZsb2F0NCBiLCBmbG9hdDQgYykgewotICAgIGZsb2F0M3g0IHJlc3VsdDsK
LSAgICByZXN1bHRbMF0gPSBhOwotICAgIHJlc3VsdFsxXSA9IGI7Ci0gICAgcmVzdWx0WzJdID0g
YzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgZmxvYXQ0eDIoZmxvYXQyIGEsIGZs
b2F0MiBiLCBmbG9hdDIgYywgZmxvYXQyIGQpIHsKLSAgICBmbG9hdDR4MiByZXN1bHQ7Ci0gICAg
cmVzdWx0WzBdID0gYTsKLSAgICByZXN1bHRbMV0gPSBiOwotICAgIHJlc3VsdFsyXSA9IGM7Ci0g
ICAgcmVzdWx0WzNdID0gZDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgZmxvYXQ0
eDMoZmxvYXQzIGEsIGZsb2F0MyBiLCBmbG9hdDMgYywgZmxvYXQzIGQpIHsKLSAgICBmbG9hdDR4
MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYTsKLSAgICByZXN1bHRbMV0gPSBiOwotICAgIHJl
c3VsdFsyXSA9IGM7Ci0gICAgcmVzdWx0WzNdID0gZDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQot
b3BlcmF0b3IgZmxvYXQ0eDQoZmxvYXQ0IGEsIGZsb2F0NCBiLCBmbG9hdDQgYywgZmxvYXQ0IGQp
IHsKLSAgICBmbG9hdDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYTsKLSAgICByZXN1bHRb
MV0gPSBiOwotICAgIHJlc3VsdFsyXSA9IGM7Ci0gICAgcmVzdWx0WzNdID0gZDsKLSAgICByZXR1
cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgZmxvYXQyeDIoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQg
ZSwgZmxvYXQgZikgewotICAgIHJldHVybiBmbG9hdDJ4MihmbG9hdDIoYSwgYiksIGZsb2F0Mihl
LCBmKSk7Ci19Ci1vcGVyYXRvciBmbG9hdDJ4MyhmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBm
bG9hdCBlLCBmbG9hdCBmLCBmbG9hdCBnKSB7Ci0gICAgcmV0dXJuIGZsb2F0MngzKGZsb2F0Myhh
LCBiLCBjKSwgZmxvYXQzKGUsIGYsIGcpKTsKLX0KLW9wZXJhdG9yIGZsb2F0Mng0KGZsb2F0IGEs
IGZsb2F0IGIsIGZsb2F0IGMsIGZsb2F0IGQsIGZsb2F0IGUsIGZsb2F0IGYsIGZsb2F0IGcsIGZs
b2F0IGgpIHsKLSAgICByZXR1cm4gZmxvYXQyeDQoZmxvYXQ0KGEsIGIsIGMsIGQpLCBmbG9hdDQo
ZSwgZiwgZywgaCkpOwotfQotb3BlcmF0b3IgZmxvYXQzeDIoZmxvYXQgYSwgZmxvYXQgYiwgZmxv
YXQgZSwgZmxvYXQgZiwgZmxvYXQgaSwgZmxvYXQgaikgewotICAgIHJldHVybiBmbG9hdDN4Mihm
bG9hdDIoYSwgYiksIGZsb2F0MihlLCBmKSwgZmxvYXQyKGksIGopKTsKLX0KLW9wZXJhdG9yIGZs
b2F0M3gzKGZsb2F0IGEsIGZsb2F0IGIsIGZsb2F0IGMsIGZsb2F0IGUsIGZsb2F0IGYsIGZsb2F0
IGcsIGZsb2F0IGksIGZsb2F0IGosIGZsb2F0IGspIHsKLSAgICByZXR1cm4gZmxvYXQzeDMoZmxv
YXQzKGEsIGIsIGMpLCBmbG9hdDMoZSwgZiwgZyksIGZsb2F0MyhpLCBqLCBrKSk7Ci19Ci1vcGVy
YXRvciBmbG9hdDN4NChmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkLCBmbG9hdCBl
LCBmbG9hdCBmLCBmbG9hdCBnLCBmbG9hdCBoLCBmbG9hdCBpLCBmbG9hdCBqLCBmbG9hdCBrLCBm
bG9hdCBsKSB7Ci0gICAgcmV0dXJuIGZsb2F0M3g0KGZsb2F0NChhLCBiLCBjLCBkKSwgZmxvYXQ0
KGUsIGYsIGcsIGgpLCBmbG9hdDQoaSwgaiwgaywgbCkpOwotfQotb3BlcmF0b3IgZmxvYXQ0eDIo
ZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgZSwgZmxvYXQgZiwgZmxvYXQgaSwgZmxvYXQgaiwgZmxv
YXQgbSwgZmxvYXQgbikgewotICAgIHJldHVybiBmbG9hdDR4MihmbG9hdDIoYSwgYiksIGZsb2F0
MihlLCBmKSwgZmxvYXQyKGksIGopLCBmbG9hdDIobSwgbikpOwotfQotb3BlcmF0b3IgZmxvYXQ0
eDMoZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgYywgZmxvYXQgZSwgZmxvYXQgZiwgZmxvYXQgZywg
ZmxvYXQgaSwgZmxvYXQgaiwgZmxvYXQgaywgZmxvYXQgbSwgZmxvYXQgbiwgZmxvYXQgbykgewot
ICAgIHJldHVybiBmbG9hdDR4MyhmbG9hdDMoYSwgYiwgYyksIGZsb2F0MyhlLCBmLCBnKSwgZmxv
YXQzKGksIGosIGspLCBmbG9hdDMobSwgbiwgbykpOwotfQotb3BlcmF0b3IgZmxvYXQ0eDQoZmxv
YXQgYSwgZmxvYXQgYiwgZmxvYXQgYywgZmxvYXQgZCwgZmxvYXQgZSwgZmxvYXQgZiwgZmxvYXQg
ZywgZmxvYXQgaCwgZmxvYXQgaSwgZmxvYXQgaiwgZmxvYXQgaywgZmxvYXQgbCwgZmxvYXQgbSwg
ZmxvYXQgbiwgZmxvYXQgbywgZmxvYXQgcCkgewotICAgIHJldHVybiBmbG9hdDR4NChmbG9hdDQo
YSwgYiwgYywgZCksIGZsb2F0NChlLCBmLCBnLCBoKSwgZmxvYXQ0KGksIGosIGssIGwpLCBmbG9h
dDQobSwgbiwgbywgcCkpOwotfQotb3BlcmF0b3IgYm9vbDJ4Mihib29sMiBhLCBib29sMiBiKSB7
Ci0gICAgYm9vbDJ4MiByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYTsKLSAgICByZXN1bHRbMV0g
PSBiOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci1vcGVyYXRvciBib29sMngzKGJvb2wzIGEsIGJv
b2wzIGIpIHsKLSAgICBib29sMngzIHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhOwotICAgIHJl
c3VsdFsxXSA9IGI7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW9wZXJhdG9yIGJvb2wyeDQoYm9v
bDQgYSwgYm9vbDQgYikgewotICAgIGJvb2wyeDQgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGE7
Ci0gICAgcmVzdWx0WzFdID0gYjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgYm9v
bDN4Mihib29sMiBhLCBib29sMiBiLCBib29sMiBjKSB7Ci0gICAgYm9vbDN4MiByZXN1bHQ7Ci0g
ICAgcmVzdWx0WzBdID0gYTsKLSAgICByZXN1bHRbMV0gPSBiOwotICAgIHJlc3VsdFsyXSA9IGM7
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLW9wZXJhdG9yIGJvb2wzeDMoYm9vbDMgYSwgYm9vbDMg
YiwgYm9vbDMgYykgewotICAgIGJvb2wzeDMgcmVzdWx0OwotICAgIHJlc3VsdFswXSA9IGE7Ci0g
ICAgcmVzdWx0WzFdID0gYjsKLSAgICByZXN1bHRbMl0gPSBjOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci1vcGVyYXRvciBib29sM3g0KGJvb2w0IGEsIGJvb2w0IGIsIGJvb2w0IGMpIHsKLSAgICBi
b29sM3g0IHJlc3VsdDsKLSAgICByZXN1bHRbMF0gPSBhOwotICAgIHJlc3VsdFsxXSA9IGI7Ci0g
ICAgcmVzdWx0WzJdID0gYzsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0b3IgYm9vbDR4
Mihib29sMiBhLCBib29sMiBiLCBib29sMiBjLCBib29sMiBkKSB7Ci0gICAgYm9vbDR4MiByZXN1
bHQ7Ci0gICAgcmVzdWx0WzBdID0gYTsKLSAgICByZXN1bHRbMV0gPSBiOwotICAgIHJlc3VsdFsy
XSA9IGM7Ci0gICAgcmVzdWx0WzNdID0gZDsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotb3BlcmF0
b3IgYm9vbDR4Myhib29sMyBhLCBib29sMyBiLCBib29sMyBjLCBib29sMyBkKSB7Ci0gICAgYm9v
bDR4MyByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYTsKLSAgICByZXN1bHRbMV0gPSBiOwotICAg
IHJlc3VsdFsyXSA9IGM7Ci0gICAgcmVzdWx0WzNdID0gZDsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotb3BlcmF0b3IgYm9vbDR4NChib29sNCBhLCBib29sNCBiLCBib29sNCBjLCBib29sNCBkKSB7
Ci0gICAgYm9vbDR4NCByZXN1bHQ7Ci0gICAgcmVzdWx0WzBdID0gYTsKLSAgICByZXN1bHRbMV0g
PSBiOwotICAgIHJlc3VsdFsyXSA9IGM7Ci0gICAgcmVzdWx0WzNdID0gZDsKLSAgICByZXR1cm4g
cmVzdWx0OwotfQotb3BlcmF0b3IgYm9vbDJ4Mihib29sIGEsIGJvb2wgYiwgYm9vbCBlLCBib29s
IGYpIHsKLSAgICByZXR1cm4gYm9vbDJ4Mihib29sMihhLCBiKSwgYm9vbDIoZSwgZikpOwotfQot
b3BlcmF0b3IgYm9vbDJ4Myhib29sIGEsIGJvb2wgYiwgYm9vbCBjLCBib29sIGUsIGJvb2wgZiwg
Ym9vbCBnKSB7Ci0gICAgcmV0dXJuIGJvb2wyeDMoYm9vbDMoYSwgYiwgYyksIGJvb2wzKGUsIGYs
IGcpKTsKLX0KLW9wZXJhdG9yIGJvb2wyeDQoYm9vbCBhLCBib29sIGIsIGJvb2wgYywgYm9vbCBk
LCBib29sIGUsIGJvb2wgZiwgYm9vbCBnLCBib29sIGgpIHsKLSAgICByZXR1cm4gYm9vbDJ4NChi
b29sNChhLCBiLCBjLCBkKSwgYm9vbDQoZSwgZiwgZywgaCkpOwotfQotb3BlcmF0b3IgYm9vbDN4
Mihib29sIGEsIGJvb2wgYiwgYm9vbCBlLCBib29sIGYsIGJvb2wgaSwgYm9vbCBqKSB7Ci0gICAg
cmV0dXJuIGJvb2wzeDIoYm9vbDIoYSwgYiksIGJvb2wyKGUsIGYpLCBib29sMihpLCBqKSk7Ci19
Ci1vcGVyYXRvciBib29sM3gzKGJvb2wgYSwgYm9vbCBiLCBib29sIGMsIGJvb2wgZSwgYm9vbCBm
LCBib29sIGcsIGJvb2wgaSwgYm9vbCBqLCBib29sIGspIHsKLSAgICByZXR1cm4gYm9vbDN4Myhi
b29sMyhhLCBiLCBjKSwgYm9vbDMoZSwgZiwgZyksIGJvb2wzKGksIGosIGspKTsKLX0KLW9wZXJh
dG9yIGJvb2wzeDQoYm9vbCBhLCBib29sIGIsIGJvb2wgYywgYm9vbCBkLCBib29sIGUsIGJvb2wg
ZiwgYm9vbCBnLCBib29sIGgsIGJvb2wgaSwgYm9vbCBqLCBib29sIGssIGJvb2wgbCkgewotICAg
IHJldHVybiBib29sM3g0KGJvb2w0KGEsIGIsIGMsIGQpLCBib29sNChlLCBmLCBnLCBoKSwgYm9v
bDQoaSwgaiwgaywgbCkpOwotfQotb3BlcmF0b3IgYm9vbDR4Mihib29sIGEsIGJvb2wgYiwgYm9v
bCBlLCBib29sIGYsIGJvb2wgaSwgYm9vbCBqLCBib29sIG0sIGJvb2wgbikgewotICAgIHJldHVy
biBib29sNHgyKGJvb2wyKGEsIGIpLCBib29sMihlLCBmKSwgYm9vbDIoaSwgaiksIGJvb2wyKG0s
IG4pKTsKLX0KLW9wZXJhdG9yIGJvb2w0eDMoYm9vbCBhLCBib29sIGIsIGJvb2wgYywgYm9vbCBl
LCBib29sIGYsIGJvb2wgZywgYm9vbCBpLCBib29sIGosIGJvb2wgaywgYm9vbCBtLCBib29sIG4s
IGJvb2wgbykgewotICAgIHJldHVybiBib29sNHgzKGJvb2wzKGEsIGIsIGMpLCBib29sMyhlLCBm
LCBnKSwgYm9vbDMoaSwgaiwgayksIGJvb2wzKG0sIG4sIG8pKTsKLX0KLW9wZXJhdG9yIGJvb2w0
eDQoYm9vbCBhLCBib29sIGIsIGJvb2wgYywgYm9vbCBkLCBib29sIGUsIGJvb2wgZiwgYm9vbCBn
LCBib29sIGgsIGJvb2wgaSwgYm9vbCBqLCBib29sIGssIGJvb2wgbCwgYm9vbCBtLCBib29sIG4s
IGJvb2wgbywgYm9vbCBwKSB7Ci0gICAgcmV0dXJuIGJvb2w0eDQoYm9vbDQoYSwgYiwgYywgZCks
IGJvb2w0KGUsIGYsIGcsIGgpLCBib29sNChpLCBqLCBrLCBsKSwgYm9vbDQobSwgbiwgbywgcCkp
OwotfQorbmF0aXZlIG9wZXJhdG9yIGludChib29sKTsKK25hdGl2ZSBvcGVyYXRvciBib29sKHVp
bnQpOworbmF0aXZlIG9wZXJhdG9yIGJvb2woaW50KTsKK25hdGl2ZSBvcGVyYXRvciBib29sKGZs
b2F0KTsKK25hdGl2ZSBvcGVyYXRvciBib29sMihib29sLCBib29sKTsKK25hdGl2ZSBvcGVyYXRv
ciBib29sMyhib29sLCBib29sLCBib29sKTsKK25hdGl2ZSBvcGVyYXRvciBib29sMyhib29sMiwg
Ym9vbCk7CituYXRpdmUgb3BlcmF0b3IgYm9vbDMoYm9vbCwgYm9vbDIpOworbmF0aXZlIG9wZXJh
dG9yIGJvb2w0KGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOworbmF0aXZlIG9wZXJhdG9yIGJvb2w0
KGJvb2wyLCBib29sLCBib29sKTsKK25hdGl2ZSBvcGVyYXRvciBib29sNChib29sLCBib29sMiwg
Ym9vbCk7CituYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9vbCwgYm9vbCwgYm9vbDIpOworbmF0aXZl
IG9wZXJhdG9yIGJvb2w0KGJvb2wyLCBib29sMik7CituYXRpdmUgb3BlcmF0b3IgYm9vbDQoYm9v
bDMsIGJvb2wpOworbmF0aXZlIG9wZXJhdG9yIGJvb2w0KGJvb2wsIGJvb2wzKTsKK25hdGl2ZSBv
cGVyYXRvciB1aW50Mih1aW50LCB1aW50KTsKK25hdGl2ZSBvcGVyYXRvciB1aW50Myh1aW50LCB1
aW50LCB1aW50KTsKK25hdGl2ZSBvcGVyYXRvciB1aW50Myh1aW50MiwgdWludCk7CituYXRpdmUg
b3BlcmF0b3IgdWludDModWludCwgdWludDIpOworbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQs
IHVpbnQsIHVpbnQsIHVpbnQpOworbmF0aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQyLCB1aW50LCB1
aW50KTsKK25hdGl2ZSBvcGVyYXRvciB1aW50NCh1aW50LCB1aW50MiwgdWludCk7CituYXRpdmUg
b3BlcmF0b3IgdWludDQodWludCwgdWludCwgdWludDIpOworbmF0aXZlIG9wZXJhdG9yIHVpbnQ0
KHVpbnQyLCB1aW50Mik7CituYXRpdmUgb3BlcmF0b3IgdWludDQodWludDMsIHVpbnQpOworbmF0
aXZlIG9wZXJhdG9yIHVpbnQ0KHVpbnQsIHVpbnQzKTsKK25hdGl2ZSBvcGVyYXRvciBpbnQyKGlu
dCwgaW50KTsKK25hdGl2ZSBvcGVyYXRvciBpbnQzKGludCwgaW50LCBpbnQpOworbmF0aXZlIG9w
ZXJhdG9yIGludDMoaW50MiwgaW50KTsKK25hdGl2ZSBvcGVyYXRvciBpbnQzKGludCwgaW50Mik7
CituYXRpdmUgb3BlcmF0b3IgaW50NChpbnQsIGludCwgaW50LCBpbnQpOworbmF0aXZlIG9wZXJh
dG9yIGludDQoaW50MiwgaW50LCBpbnQpOworbmF0aXZlIG9wZXJhdG9yIGludDQoaW50LCBpbnQy
LCBpbnQpOworbmF0aXZlIG9wZXJhdG9yIGludDQoaW50LCBpbnQsIGludDIpOworbmF0aXZlIG9w
ZXJhdG9yIGludDQoaW50MiwgaW50Mik7CituYXRpdmUgb3BlcmF0b3IgaW50NChpbnQzLCBpbnQp
OworbmF0aXZlIG9wZXJhdG9yIGludDQoaW50LCBpbnQzKTsKK25hdGl2ZSBvcGVyYXRvciBmbG9h
dDIoZmxvYXQsIGZsb2F0KTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDMoZmxvYXQsIGZsb2F0LCBm
bG9hdCk7CituYXRpdmUgb3BlcmF0b3IgZmxvYXQzKGZsb2F0MiwgZmxvYXQpOworbmF0aXZlIG9w
ZXJhdG9yIGZsb2F0MyhmbG9hdCwgZmxvYXQyKTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOworbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdDIs
IGZsb2F0LCBmbG9hdCk7CituYXRpdmUgb3BlcmF0b3IgZmxvYXQ0KGZsb2F0LCBmbG9hdDIsIGZs
b2F0KTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDQoZmxvYXQsIGZsb2F0LCBmbG9hdDIpOworbmF0
aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdDIsIGZsb2F0Mik7CituYXRpdmUgb3BlcmF0b3IgZmxv
YXQ0KGZsb2F0MywgZmxvYXQpOworbmF0aXZlIG9wZXJhdG9yIGZsb2F0NChmbG9hdCwgZmxvYXQz
KTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4MihmbG9hdDIsIGZsb2F0Mik7CituYXRpdmUgb3Bl
cmF0b3IgZmxvYXQyeDMoZmxvYXQzLCBmbG9hdDMpOworbmF0aXZlIG9wZXJhdG9yIGZsb2F0Mng0
KGZsb2F0NCwgZmxvYXQ0KTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDN4MihmbG9hdDIsIGZsb2F0
MiwgZmxvYXQyKTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDN4MyhmbG9hdDMsIGZsb2F0MywgZmxv
YXQzKTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDN4NChmbG9hdDQsIGZsb2F0NCwgZmxvYXQ0KTsK
K25hdGl2ZSBvcGVyYXRvciBmbG9hdDR4MihmbG9hdDIsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIp
OworbmF0aXZlIG9wZXJhdG9yIGZsb2F0NHgzKGZsb2F0MywgZmxvYXQzLCBmbG9hdDMsIGZsb2F0
Myk7CituYXRpdmUgb3BlcmF0b3IgZmxvYXQ0eDQoZmxvYXQ0LCBmbG9hdDQsIGZsb2F0NCwgZmxv
YXQ0KTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDJ4MihmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CituYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDMoZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCk7CituYXRpdmUgb3BlcmF0b3IgZmxvYXQyeDQoZmxvYXQsIGZsb2F0LCBm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKK25hdGl2ZSBvcGVyYXRv
ciBmbG9hdDN4MihmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKK25h
dGl2ZSBvcGVyYXRvciBmbG9hdDN4MyhmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQs
IGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDN4NChm
bG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZs
b2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKK25hdGl2ZSBvcGVyYXRvciBmbG9hdDR4MihmbG9h
dCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOworbmF0
aXZlIG9wZXJhdG9yIGZsb2F0NHgzKGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwg
ZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQpOworbmF0aXZl
IG9wZXJhdG9yIGZsb2F0NHg0KGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIGZsb2F0KTsKK25hdGl2ZSBvcGVyYXRvciBib29sMngyKGJvb2wyLCBib29sMik7
CituYXRpdmUgb3BlcmF0b3IgYm9vbDJ4Myhib29sMywgYm9vbDMpOworbmF0aXZlIG9wZXJhdG9y
IGJvb2wyeDQoYm9vbDQsIGJvb2w0KTsKK25hdGl2ZSBvcGVyYXRvciBib29sM3gyKGJvb2wyLCBi
b29sMiwgYm9vbDIpOworbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDMoYm9vbDMsIGJvb2wzLCBib29s
Myk7CituYXRpdmUgb3BlcmF0b3IgYm9vbDN4NChib29sNCwgYm9vbDQsIGJvb2w0KTsKK25hdGl2
ZSBvcGVyYXRvciBib29sNHgyKGJvb2wyLCBib29sMiwgYm9vbDIsIGJvb2wyKTsKK25hdGl2ZSBv
cGVyYXRvciBib29sNHgzKGJvb2wzLCBib29sMywgYm9vbDMsIGJvb2wzKTsKK25hdGl2ZSBvcGVy
YXRvciBib29sNHg0KGJvb2w0LCBib29sNCwgYm9vbDQsIGJvb2w0KTsKK25hdGl2ZSBvcGVyYXRv
ciBib29sMngyKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOworbmF0aXZlIG9wZXJhdG9yIGJvb2wy
eDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7CituYXRpdmUgb3BlcmF0b3Ig
Ym9vbDJ4NChib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sKTsK
K25hdGl2ZSBvcGVyYXRvciBib29sM3gyKGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wpOworbmF0aXZlIG9wZXJhdG9yIGJvb2wzeDMoYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCk7CituYXRpdmUgb3BlcmF0b3IgYm9vbDN4NChib29s
LCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBi
b29sLCBib29sKTsKK25hdGl2ZSBvcGVyYXRvciBib29sNHgyKGJvb2wsIGJvb2wsIGJvb2wsIGJv
b2wsIGJvb2wsIGJvb2wsIGJvb2wsIGJvb2wpOworbmF0aXZlIG9wZXJhdG9yIGJvb2w0eDMoYm9v
bCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwgYm9vbCwg
Ym9vbCwgYm9vbCk7CituYXRpdmUgb3BlcmF0b3IgYm9vbDR4NChib29sLCBib29sLCBib29sLCBi
b29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29sLCBib29s
LCBib29sLCBib29sLCBib29sKTsKIAogLyogRnVuY3Rpb25zIG5hbWVkIG9wZXJhdG9yLnd5eCAq
LwogYm9vbDMgb3BlcmF0b3Iud3l4KGJvb2w0IHYpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVuY3Rpb25Xcml0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML01ldGFsL1dITFNMRnVu
Y3Rpb25Xcml0ZXIuY3BwCShyZXZpc2lvbiAyNDg4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTEZ1bmN0aW9uV3JpdGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAorI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIFdITFNMIHsKQEAgLTE1NSw2
ICsxNTcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gYSBub24tbnVsbCBsdmFsdWUuCiAgICAgdm9p
ZCBhcHBlbmRSaWdodFZhbHVlV2l0aE51bGxhYmlsaXR5KEFTVDo6RXhwcmVzc2lvbiYsIE1hbmds
ZWRWYXJpYWJsZU5hbWUgdmFsdWUsIE51bGxhYmlsaXR5IG51bGxhYmlsaXR5KQogICAgIHsKKyAg
ICAgICAgLy9udWxsYWJpbGl0eSA9IE51bGxhYmlsaXR5OjpOb3ROdWxsOwogICAgICAgICBtX3N0
YWNrLmFwcGVuZCh7IFdURk1vdmUodmFsdWUpLCBXVEY6Om51bGxvcHQsIG51bGxhYmlsaXR5LCBO
dWxsYWJpbGl0eTo6Q2FuQmVOdWxsIH0pOwogICAgIH0KIApAQCAtMTY2LDYgKzE2OSw3IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIGFwcGVuZExlZnRWYWx1ZShBU1Q6OkV4cHJlc3Npb24mIGV4cHJl
c3Npb24sIE1hbmdsZWRWYXJpYWJsZU5hbWUgdmFsdWUsIE1hbmdsZWRWYXJpYWJsZU5hbWUgbGVm
dFZhbHVlLCBOdWxsYWJpbGl0eSBudWxsYWJpbGl0eSkKICAgICB7CiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoZXhwcmVzc2lvbiwgZXhwcmVzc2lvbi50eXBlQW5ub3RhdGlvbigpLmxlZnRBZGRyZXNz
U3BhY2UoKSk7CisgICAgICAgIC8vbnVsbGFiaWxpdHkgPSBOdWxsYWJpbGl0eTo6Tm90TnVsbDsK
ICAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBXVEZNb3ZlKHZhbHVlKSwgV1RGTW92ZShsZWZ0VmFs
dWUpLCBOdWxsYWJpbGl0eTo6Q2FuQmVOdWxsLCBudWxsYWJpbGl0eSB9KTsKICAgICB9CiAKQEAg
LTUzMiw2ICs1MzYsOSBAQCB2b2lkIEZ1bmN0aW9uRGVmaW5pdGlvbldyaXRlcjo6dmlzaXQoQVNU
CiB7CiAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKSk7
CiAgICAgYXV0byBbcG9pbnRlck5hbWUsIG51bGxhYmlsaXR5XSA9IHRha2VMYXN0TGVmdFZhbHVl
KCk7CisgICAgaWYgKChhc3NpZ25tZW50RXhwcmVzc2lvbi5sZWZ0KCkuaXNHbG9iYWxWYXJpYWJs
ZVJlZmVyZW5jZSgpIHx8IGFzc2lnbm1lbnRFeHByZXNzaW9uLmxlZnQoKS5pc1ZhcmlhYmxlUmVm
ZXJlbmNlKCkpICYmIG51bGxhYmlsaXR5ID09IE51bGxhYmlsaXR5OjpDYW5CZU51bGwpIHsKKyAg
ICAgICAgZGF0YUxvZ0xuKCJVbmV4ZXBjdGVkIGNhbiBiZSBudWxsISIpOworICAgIH0KICAgICBj
aGVja0Vycm9yQW5kVmlzaXQoYXNzaWdubWVudEV4cHJlc3Npb24ucmlnaHQoKSk7CiAgICAgYXV0
byBbcmlnaHROYW1lLCByaWdodE51bGxhYmlsaXR5XSA9IHRha2VMYXN0VmFsdWVBbmROdWxsYWJp
bGl0eSgpOwogICAgIGlmIChudWxsYWJpbGl0eSA9PSBOdWxsYWJpbGl0eTo6Q2FuQmVOdWxsKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xNZXRh
bENvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZ3B1L1dITFNML01ldGFsL1dITFNMTWV0YWxDb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
MjQ4ODA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hM
U0xNZXRhbENvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw3IEBA
IG5hbWVzcGFjZSBXSExTTCB7CiAKIG5hbWVzcGFjZSBNZXRhbCB7CiAKLXN0YXRpYyBjb25zdGV4
cHIgYm9vbCBkdW1wTWV0YWxDb2RlID0gZmFsc2U7CitzdGF0aWMgY29uc3RleHByIGJvb2wgZHVt
cE1ldGFsQ29kZSA9IHRydWU7CiAKIHN0YXRpYyBTdHJpbmdWaWV3IG1ldGFsQ29kZVByb2xvZygp
CiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExT
TE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAko
cmV2aXNpb24gMjQ4ODA2KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wv
TWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Miw0MCArMTIyLDEwNSBAQCBzdGF0aWMgY29uc3QgY2hhciogdmVjdG9yU3VmZml4KGludCB2ZWN0
CiAKIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYgc3RyaW5nQnVpbGRl
ciwgQVNUOjpOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uJiBuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLCBNYW5nbGVkVmFyaWFibGVOYW1lIHJldHVybk5hbWUsIGNvbnN0IFZlY3RvcjxNYW5nbGVk
VmFyaWFibGVOYW1lPiYgYXJncywgSW50cmluc2ljcyYgaW50cmluc2ljcywgVHlwZU5hbWVyJiB0
eXBlTmFtZXIpCiB7CisgICAgYXV0byBhc01hdHJpeFR5cGUgPSBbJl0gKEFTVDo6VW5uYW1lZFR5
cGUmIHVubmFtZWRUeXBlKSAtPiBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogeworICAgICAg
ICBhdXRvJiByZWFsVHlwZSA9IHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpOworICAgICAgICBpZiAo
IXJlYWxUeXBlLmlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgICAgICBhdXRvJiBtYXliZU1hdHJpeFR5cGUgPSBkb3duY2FzdDxBU1Q6
Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocmVhbFR5cGUpOworICAgICAgICBpZiAobWF5YmVNYXRy
aXhUeXBlLmlzTWF0cml4KCkpCisgICAgICAgICAgICByZXR1cm4gJm1heWJlTWF0cml4VHlwZTsK
KworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9OworCisgICAgYXV0byBtYXRyaXhEaW1l
bnNpb24gPSBbJl0gKEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0aW9uJiBtYXRyaXhUeXBlLCB1bnNp
Z25lZCB0eXBlQXJndW1lbnRJbmRleCkgLT4gdW5zaWduZWQgeworICAgICAgICBBU1NFUlQobWF0
cml4VHlwZS5pc01hdHJpeCgpKTsKKyAgICAgICAgQVNTRVJUKG1hdHJpeFR5cGUudHlwZUFyZ3Vt
ZW50cygpLnNpemUoKSA9PSAzKTsKKyAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEFTVDo6Q29uc3Rh
bnRFeHByZXNzaW9uPihtYXRyaXhUeXBlLnR5cGVBcmd1bWVudHMoKVt0eXBlQXJndW1lbnRJbmRl
eF0pLmludGVnZXJMaXRlcmFsKCkudmFsdWUoKTsKKyAgICB9OworICAgIGF1dG8gbnVtYmVyT2ZN
YXRyaXhSb3dzID0gWyZdIChBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiYgbWF0cml4VHlwZSkg
eworICAgICAgICByZXR1cm4gbWF0cml4RGltZW5zaW9uKG1hdHJpeFR5cGUsIDEpOworICAgIH07
CisgICAgYXV0byBudW1iZXJPZk1hdHJpeENvbHVtbnMgPSBbJl0gKEFTVDo6TmF0aXZlVHlwZURl
Y2xhcmF0aW9uJiBtYXRyaXhUeXBlKSB7CisgICAgICAgIHJldHVybiBtYXRyaXhEaW1lbnNpb24o
bWF0cml4VHlwZSwgMik7CisgICAgfTsKKwogICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0
aW9uLmlzQ2FzdCgpKSB7CiAgICAgICAgIGF1dG8mIHJldHVyblR5cGUgPSBuYXRpdmVGdW5jdGlv
bkRlY2xhcmF0aW9uLnR5cGUoKTsKLSAgICAgICAgYXV0byBtZXRhbFJldHVybk5hbWUgPSB0eXBl
TmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJldHVyblR5cGUpOworICAgICAgICBhdXRvIG1ldGFs
UmV0dXJuVHlwZU5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHJldHVyblR5cGUp
OworCiAgICAgICAgIGlmICghbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCku
c2l6ZSgpKSB7CiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKHJldHVy
bk5hbWUsICIgPSB7IH07XG4iKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIEFTU0VSVChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXpl
KCkgPT0gMSk7Ci0gICAgICAgIGF1dG8mIHBhcmFtZXRlclR5cGUgPSAqbmF0aXZlRnVuY3Rpb25E
ZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKClbMF0tPnR5cGUoKTsKLSAgICAgICAgYXV0byBtZXRhbFBh
cmFtZXRlck5hbWUgPSB0eXBlTmFtZXIubWFuZ2xlZE5hbWVGb3JUeXBlKHBhcmFtZXRlclR5cGUp
OwotICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ7XG4iLCBtZXRhbFBhcmFt
ZXRlck5hbWUsICIgeCA9ICIsIGFyZ3NbMF0sICI7XG4iKTsKLQotICAgICAgICB7Ci0gICAgICAg
ICAgICBhdXRvIGlzRW51bWVyYXRpb25EZWZpbml0aW9uID0gW10gKGF1dG8mIHR5cGUpIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gaXM8QVNUOjpOYW1lZFR5cGU+KHR5cGUpICYmIGlzPEFTVDo6
RW51bWVyYXRpb25EZWZpbml0aW9uPihkb3duY2FzdDxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkpOwot
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGF1dG8mIHVuaWZpZWRSZXR1cm5UeXBlID0gcmV0
dXJuVHlwZS51bmlmeU5vZGUoKTsKLSAgICAgICAgICAgIGlmIChpc0VudW1lcmF0aW9uRGVmaW5p
dGlvbih1bmlmaWVkUmV0dXJuVHlwZSkgJiYgIWlzRW51bWVyYXRpb25EZWZpbml0aW9uKHBhcmFt
ZXRlclR5cGUudW5pZnlOb2RlKCkpKSB7IAotICAgICAgICAgICAgICAgIGF1dG8mIGVudW1lcmF0
aW9uRGVmaW5pdGlvbiA9IGRvd25jYXN0PEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihkb3du
Y2FzdDxBU1Q6Ok5hbWVkVHlwZT4odW5pZmllZFJldHVyblR5cGUpKTsKLSAgICAgICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiICAgIHN3aXRjaCAoeCkge1xuIik7Ci0gICAgICAgICAg
ICAgICAgYm9vbCBoYXNaZXJvQ2FzZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgbWVtYmVyIDogZW51bWVyYXRpb25EZWZpbml0aW9uLmVudW1lcmF0aW9uTWVtYmVycygpKSB7
Ci0gICAgICAgICAgICAgICAgICAgIGhhc1plcm9DYXNlIHw9ICFtZW1iZXIuZ2V0KCkudmFsdWUo
KTsKLSAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZCgiICAg
ICAgICBjYXNlICIsIG1lbWJlci5nZXQoKS52YWx1ZSgpLCAiOiBicmVhaztcbiIpOworCisgICAg
ICAgIGlmIChuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMoKS5zaXplKCkgPT0g
MSkgeworICAgICAgICAgICAgYXV0byYgcGFyYW1ldGVyVHlwZSA9ICpuYXRpdmVGdW5jdGlvbkRl
Y2xhcmF0aW9uLnBhcmFtZXRlcnMoKVswXS0+dHlwZSgpOworICAgICAgICAgICAgYXV0byBtZXRh
bFBhcmFtZXRlclR5cGVOYW1lID0gdHlwZU5hbWVyLm1hbmdsZWROYW1lRm9yVHlwZShwYXJhbWV0
ZXJUeXBlKTsKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIntcbiIs
IG1ldGFsUGFyYW1ldGVyVHlwZU5hbWUsICIgeCA9ICIsIGFyZ3NbMF0sICI7XG4iKTsKKworICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGF1dG8gaXNFbnVtZXJhdGlvbkRlZmluaXRpb24g
PSBbXSAoYXV0byYgdHlwZSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXM8QVNUOjpO
YW1lZFR5cGU+KHR5cGUpICYmIGlzPEFTVDo6RW51bWVyYXRpb25EZWZpbml0aW9uPihkb3duY2Fz
dDxBU1Q6Ok5hbWVkVHlwZT4odHlwZSkpOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAg
ICAgICAgYXV0byYgdW5pZmllZFJldHVyblR5cGUgPSByZXR1cm5UeXBlLnVuaWZ5Tm9kZSgpOwor
ICAgICAgICAgICAgICAgIGlmIChpc0VudW1lcmF0aW9uRGVmaW5pdGlvbih1bmlmaWVkUmV0dXJu
VHlwZSkgJiYgIWlzRW51bWVyYXRpb25EZWZpbml0aW9uKHBhcmFtZXRlclR5cGUudW5pZnlOb2Rl
KCkpKSB7IAorICAgICAgICAgICAgICAgICAgICBhdXRvJiBlbnVtZXJhdGlvbkRlZmluaXRpb24g
PSBkb3duY2FzdDxBU1Q6OkVudW1lcmF0aW9uRGVmaW5pdGlvbj4oZG93bmNhc3Q8QVNUOjpOYW1l
ZFR5cGU+KHVuaWZpZWRSZXR1cm5UeXBlKSk7CisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J1
aWxkZXIuYXBwZW5kKCIgICAgc3dpdGNoICh4KSB7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
Ym9vbCBoYXNaZXJvQ2FzZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IG1lbWJlciA6IGVudW1lcmF0aW9uRGVmaW5pdGlvbi5lbnVtZXJhdGlvbk1lbWJlcnMoKSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaGFzWmVyb0Nhc2UgfD0gIW1lbWJlci5nZXQoKS52YWx1
ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgiICAgICAgICBjYXNlICIsIG1lbWJlci5nZXQoKS52YWx1ZSgpLCAiOiBicmVhaztcbiIpOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
aGFzWmVyb0Nhc2UsIGhhc1plcm9DYXNlKTsKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIiAgICAgICAgZGVmYXVsdDogeCA9IDA7IGJyZWFrOyB9XG4iKTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChoYXNaZXJvQ2FzZSwg
aGFzWmVyb0Nhc2UpOwotICAgICAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIgICAg
ICAgIGRlZmF1bHQ6IHggPSAwOyBicmVhazsgfVxuIik7CiAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCisgICAgICAgICAgICAgICAgcmV0
dXJuTmFtZSwgIiA9IHN0YXRpY19jYXN0PCIsIG1ldGFsUmV0dXJuVHlwZU5hbWUsICI+KHgpO1xu
fVxuIik7CisKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHN0cmlu
Z0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCi0gICAgICAgICAgICByZXR1cm5OYW1lLCAiID0gc3Rh
dGljX2Nhc3Q8IiwgbWV0YWxSZXR1cm5OYW1lLCAiPih4KTtcbn1cbiIpOworICAgICAgICBpZiAo
YXV0byogbWF0cml4VHlwZSA9IGFzTWF0cml4VHlwZShyZXR1cm5UeXBlKSkgeworICAgICAgICAg
ICAgdW5zaWduZWQgbnVtUm93cyA9IG51bWJlck9mTWF0cml4Um93cygqbWF0cml4VHlwZSk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBudW1Db2x1bW5zID0gbnVtYmVyT2ZNYXRyaXhDb2x1bW5zKCpt
YXRyaXhUeXBlKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSBudW1Sb3dzIHx8IG5hdGl2ZUZ1bmN0aW9u
RGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKSA9PSBudW1Sb3dzICogbnVtQ29sdW1ucyk7
CisKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoIntcbiIsIG1ldGFs
UmV0dXJuVHlwZU5hbWUsICIgeDtcbiIpOworCisgICAgICAgICAgICBpZiAobmF0aXZlRnVuY3Rp
b25EZWNsYXJhdGlvbi5wYXJhbWV0ZXJzKCkuc2l6ZSgpID09IG51bVJvd3MpIHsKKyAgICAgICAg
ICAgICAgICAvLyBvcGVyYXRvciBtYXRyaXhNeE4gKHZlY3Rvck4sIC4uLiwgdmVjdG9yTikKKyAg
ICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUm93czsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBudW1Db2x1bW5zOyAr
K2opCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5k
KCJ4WyIsIGogKiBudW1Sb3dzICsgaSwgIl0gPSAiLCBhcmdzW2ldLCAiWyIsIGosICJdO1xuIik7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIG9wZXJhdG9yIG1hdHJpeE14TiAoc2NhbGFyLCAuLi4sIHNjYWxhcikKKyAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG51bVJvd3M7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGogPSAwOyBqIDwgbnVtQ29sdW1uczsgKytqKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJ4WyIsIGogKiBudW1Sb3dzICsgaSwg
Il0gPSAiLCBhcmdzW2luZGV4XSwgIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgKytp
bmRleDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXR1cm5O
YW1lLCAiID0geDtcbn1cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKKyAg
ICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVuZChyZXR1cm5OYW1lLCAiID0gIiwgbWV0
YWxSZXR1cm5UeXBlTmFtZSwgIigiKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAoaSA+IDApCisgICAgICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBl
bmQoIiwgIik7CisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKGFyZ3Nb
aV0pOworICAgICAgICB9CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpO1xuIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyMSw3ICsyODYsNyBAQCB2b2lkIGlubGluZU5h
dGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGF1dG8gZmllbGROYW1lID0gbmF0
aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvciYuIl9zdHIu
bGVuZ3RoKCkpOwogCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoCi0gICAg
ICAgICAgICByZXR1cm5OYW1lLCAiID0gJigiLCBhcmdzWzBdLCAiLT4iKTsKKyAgICAgICAgICAg
IHJldHVybk5hbWUsICIgPSAiLCBhcmdzWzBdLCAiPyAmKCIsIGFyZ3NbMF0sICItPiIpOwogCiAg
ICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFy
YW1ldGVycygpWzBdLT50eXBlKCk7CiAgICAgICAgIGF1dG8mIHVuaWZ5Tm9kZSA9IGRvd25jYXN0
PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgpLnVuaWZ5Tm9kZSgp
OwpAQCAtMjM0LDcgKzI5OSw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rpb24oU3RyaW5nQnVp
bGRlciYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxl
QXBwZW5kKGZpZWxkTmFtZSk7CiAKLSAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIik7XG4i
KTsKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIikgOiBudWxscHRyO1xuIik7CiAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI1NiwxOCArMzIxLDEyIEBAIHZvaWQgaW5saW5lTmF0
aXZlRnVuY3Rpb24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgQVNTRVJUKHZlY3RvclR5cGUudHlw
ZUFyZ3VtZW50cygpLnNpemUoKSA9PSAyKTsKICAgICAgICAgcmV0dXJuIFdURjo6Z2V0PEFTVDo6
Q29uc3RhbnRFeHByZXNzaW9uPih2ZWN0b3JUeXBlLnR5cGVBcmd1bWVudHMoKVsxXSkuaW50ZWdl
ckxpdGVyYWwoKS52YWx1ZSgpOwogICAgIH07Ci0gICAgYXV0byBtYXRyaXhEaW1lbnNpb24gPSBb
Jl0gKHVuc2lnbmVkIHR5cGVBcmd1bWVudEluZGV4KSAtPiB1bnNpZ25lZCB7CisKKyAgICBhdXRv
IGdldE1hdHJpeFR5cGUgPSBbJl0gKCkgLT4gQVNUOjpOYXRpdmVUeXBlRGVjbGFyYXRpb24mIHsK
ICAgICAgICAgYXV0byYgdHlwZVJlZmVyZW5jZSA9IGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5j
ZT4oKm5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCkpOwot
ICAgICAgICBhdXRvJiBtYXRyaXhUeXBlID0gZG93bmNhc3Q8QVNUOjpOYXRpdmVUeXBlRGVjbGFy
YXRpb24+KGRvd25jYXN0PEFTVDo6VHlwZVJlZmVyZW5jZT4oZG93bmNhc3Q8QVNUOjpUeXBlRGVm
aW5pdGlvbj4odHlwZVJlZmVyZW5jZS5yZXNvbHZlZFR5cGUoKSkudHlwZSgpKS5yZXNvbHZlZFR5
cGUoKSk7Ci0gICAgICAgIEFTU0VSVChtYXRyaXhUeXBlLm5hbWUoKSA9PSAibWF0cml4Iik7Ci0g
ICAgICAgIEFTU0VSVChtYXRyaXhUeXBlLnR5cGVBcmd1bWVudHMoKS5zaXplKCkgPT0gMyk7Ci0g
ICAgICAgIHJldHVybiBXVEY6OmdldDxBU1Q6OkNvbnN0YW50RXhwcmVzc2lvbj4obWF0cml4VHlw
ZS50eXBlQXJndW1lbnRzKClbdHlwZUFyZ3VtZW50SW5kZXhdKS5pbnRlZ2VyTGl0ZXJhbCgpLnZh
bHVlKCk7Ci0gICAgfTsKLSAgICBhdXRvIG51bWJlck9mTWF0cml4Um93cyA9IFsmXSB7Ci0gICAg
ICAgIHJldHVybiBtYXRyaXhEaW1lbnNpb24oMSk7Ci0gICAgfTsKLSAgICBhdXRvIG51bWJlck9m
TWF0cml4Q29sdW1ucyA9IFsmXSB7Ci0gICAgICAgIHJldHVybiBtYXRyaXhEaW1lbnNpb24oMik7
CisgICAgICAgIGF1dG8mIHJlc3VsdCA9IGRvd25jYXN0PEFTVDo6TmF0aXZlVHlwZURlY2xhcmF0
aW9uPihkb3duY2FzdDxBU1Q6OlR5cGVSZWZlcmVuY2U+KGRvd25jYXN0PEFTVDo6VHlwZURlZmlu
aXRpb24+KHR5cGVSZWZlcmVuY2UucmVzb2x2ZWRUeXBlKCkpLnR5cGUoKSkucmVzb2x2ZWRUeXBl
KCkpOworICAgICAgICBBU1NFUlQocmVzdWx0LmlzTWF0cml4KCkpOworICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH07CiAKICAgICBpZiAobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1l
KCkgPT0gIm9wZXJhdG9yW10iKSB7CkBAIC0yNzcsOCArMzM2LDggQEAgdm9pZCBpbmxpbmVOYXRp
dmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBpZiAobnVtVHlwZUFyZ3VtZW50cyA9
PSAzKSB7CiAgICAgICAgICAgICBhdXRvIG1ldGFsUmV0dXJuTmFtZSA9IHR5cGVOYW1lci5tYW5n
bGVkTmFtZUZvclR5cGUobmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi50eXBlKCkpOwogCi0gICAg
ICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJvd3MgPSBudW1iZXJPZk1hdHJpeFJvd3MoKTsKLSAg
ICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ29sdW1ucyA9IG51bWJlck9mTWF0cml4Q29sdW1u
cygpOworICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZSb3dzID0gbnVtYmVyT2ZNYXRyaXhS
b3dzKGdldE1hdHJpeFR5cGUoKSk7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkNvbHVt
bnMgPSBudW1iZXJPZk1hdHJpeENvbHVtbnMoZ2V0TWF0cml4VHlwZSgpKTsKICAgICAgICAgICAg
IHN0cmluZ0J1aWxkZXIuZmxleGlibGVBcHBlbmQoImRvIHtcbiIsIG1ldGFsUmV0dXJuTmFtZSwg
IiByZXN1bHQ7XG4iKTsKIAogICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5mbGV4aWJsZUFwcGVu
ZCgKQEAgLTMyMSw4ICszODAsOCBAQCB2b2lkIGlubGluZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1
aWxkZXImCiAgICAgICAgICAgICBhdXRvIG1ldGFsUGFyYW1ldGVyMk5hbWUgPSB0eXBlTmFtZXIu
bWFuZ2xlZE5hbWVGb3JUeXBlKCpuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnBhcmFtZXRlcnMo
KVsxXS0+dHlwZSgpKTsKICAgICAgICAgICAgIGF1dG8gbWV0YWxSZXR1cm5OYW1lID0gdHlwZU5h
bWVyLm1hbmdsZWROYW1lRm9yVHlwZShuYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLnR5cGUoKSk7
CiAKLSAgICAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mUm93cyA9IG51bWJlck9mTWF0cml4Um93
cygpOwotICAgICAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZDb2x1bW5zID0gbnVtYmVyT2ZNYXRy
aXhDb2x1bW5zKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBudW1iZXJPZlJvd3MgPSBudW1iZXJP
Zk1hdHJpeFJvd3MoZ2V0TWF0cml4VHlwZSgpKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIG51bWJl
ck9mQ29sdW1ucyA9IG51bWJlck9mTWF0cml4Q29sdW1ucyhnZXRNYXRyaXhUeXBlKCkpOwogCiAg
ICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmZsZXhpYmxlQXBwZW5kKCJkbyB7XG4iLCBtZXRhbFJl
dHVybk5hbWUsICIgbSA9ICIsIGFyZ3NbMF0sICI7XG4iLAogICAgICAgICAgICAgICAgIG1ldGFs
UGFyYW1ldGVyMk5hbWUsICIgaSA9ICIsIGFyZ3NbMV0sICI7XG4iKTsKQEAgLTM2MSwxOCArNDIw
LDYgQEAgdm9pZCBpbmxpbmVOYXRpdmVGdW5jdGlvbihTdHJpbmdCdWlsZGVyJgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBhc01hdHJpeFR5cGUgPSBbJl0gKEFTVDo6VW5uYW1l
ZFR5cGUmIHVubmFtZWRUeXBlKSAtPiBBU1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbiogewotICAg
ICAgICBhdXRvJiByZWFsVHlwZSA9IHVubmFtZWRUeXBlLnVuaWZ5Tm9kZSgpOwotICAgICAgICBp
ZiAoIXJlYWxUeXBlLmlzTmF0aXZlVHlwZURlY2xhcmF0aW9uKCkpCi0gICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgICAgICBhdXRvJiBtYXliZU1hdHJpeFR5cGUgPSBkb3duY2FzdDxB
U1Q6Ok5hdGl2ZVR5cGVEZWNsYXJhdGlvbj4ocmVhbFR5cGUpOwotICAgICAgICBpZiAobWF5YmVN
YXRyaXhUeXBlLmlzTWF0cml4KCkpCi0gICAgICAgICAgICByZXR1cm4gJm1heWJlTWF0cml4VHlw
ZTsKLQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9OwotCiAgICAgaWYgKG5hdGl2ZUZ1
bmN0aW9uRGVjbGFyYXRpb24uaXNPcGVyYXRvcigpKSB7CiAgICAgICAgIGF1dG8gb3BlcmF0b3JO
YW1lID0gbmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRv
ciJfc3RyLmxlbmd0aCgpKTsKICAgICAgICAgYXV0byBtZXRhbFJldHVyblR5cGUgPSB0eXBlTmFt
ZXIubWFuZ2xlZE5hbWVGb3JUeXBlKG5hdGl2ZUZ1bmN0aW9uRGVjbGFyYXRpb24udHlwZSgpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFk
ZXJNb2R1bGVNZXRhbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvY29jb2EvR1BVU2hhZGVyTW9kdWxlTWV0YWwubW0JKHJldmlzaW9uIDI0ODU4
NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9HUFVTaGFk
ZXJNb2R1bGVNZXRhbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOSBAQAogI2ltcG9y
dCA8TWV0YWwvTWV0YWwuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAK
KyNpbXBvcnQgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CisjaW1wb3J0IDx3dGYvRGF0YUxvZy5oPgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFJlZlB0cjxHUFVTaGFkZXJNb2R1bGU+IEdQVVNoYWRl
ck1vZHVsZTo6dHJ5Q3JlYXRlKGNvbnN0IEdQVURldmljZSYgZGV2aWNlLCBjb25zdCBHUFVTaGFk
ZXJNb2R1bGVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQpAQCAtNTIsNyArNTUsOSBAQCBSZWZQdHI8
R1BVU2hhZGVyTW9kdWxlPiBHUFVTaGFkZXJNb2R1bGU6CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19F
WENFUFRJT05TOwogCiAgICAgTlNFcnJvciAqZXJyb3IgPSBbTlNFcnJvciBlcnJvcldpdGhEb21h
aW46QCJjb20uYXBwbGUuV2ViS2l0LkdQVSIgY29kZToxIHVzZXJJbmZvOm5pbF07CisgICAgYXV0
byBzdGFydCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAgIG1vZHVsZSA9IGFkb3B0TlMoW2Rl
dmljZS5wbGF0Zm9ybURldmljZSgpIG5ld0xpYnJhcnlXaXRoU291cmNlOmRlc2NyaXB0b3IuY29k
ZSBvcHRpb25zOm5pbCBlcnJvcjomZXJyb3JdKTsKKyAgICBkYXRhTG9nTG4oImNvbXBpbGUgdGlt
ZTogIiwgKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnQpLm1pbGxpc2Vjb25kcygpLCAiIG1z
Iik7CiAgICAgaWYgKCFtb2R1bGUpCiAgICAgICAgIExPRyhXZWJHUFUsICJTaGFkZXIgY29tcGls
YXRpb24gZXJyb3I6ICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0gVVRGOFN0cmlu
Z10pOwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg1ODYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wOC0xNiAgU2FhbSBCYXJh
dGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBbV0hMU0xdIE1ha2UgIm9wZXJhdG9y
IGNhc3QiIGNvbnN0cnVjdG9ycyBuYXRpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMDc0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVj
dG9ycy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0cnVj
dG9ycy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmdwdS93aGxzbC92ZWN0b3It
Y29uc3RydWN0b3JzLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA4LTEyICBEYW5pZWwgQmF0ZXMgIDxk
YWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSB0ZXN0IHRvIGVuc3VyZSB0aGF0IHdl
IGRpc3BhdGNoIGtleWRvd24gYW5kIGtleXVwIGV2ZW50cyB3aGVuIG11bHRpcGxlIGtleXMgYXJl
IHByZXNzZWQgYXQgdGhlIHNhbWUgdGltZQpJbmRleDogTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNs
L21hdHJpeC1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAkobm9uZXhp
c3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgbWF0cml4
Q29uc3RydWN0b3IgCitQQVNTIG1hdHJpeENvbnN0cnVjdG9yMiAKKwpJbmRleDogTGF5b3V0VGVz
dHMvd2ViZ3B1L3dobHNsL21hdHJpeC1jb25zdHJ1Y3RvcnMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvbWF0cml4LWNvbnN0cnVjdG9ycy5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC9tYXRyaXgtY29uc3RydWN0b3JzLmh0
bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJs
b25nIj4KKzx0aXRsZT5tYXRyaXggY3Rvci48L3RpdGxlPgorPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NvbnN0IHdobHNsVGVzdHMgPSB7fTsKKwor
d2hsc2xUZXN0cy5tYXRyaXhDb25zdHJ1Y3RvciA9IGFzeW5jICgpID0+IHsKKyAgICBjb25zdCBw
cm9ncmFtID0gYAorICAgICAgICBib29sIGZvbygpIHsKKyAgICAgICAgICAgIGZsb2F0M3gyIHYg
PSBmbG9hdDN4MihmbG9hdDIoMS4wLCAyLjApLCBmbG9hdDIoMy4wLCA0LjApLCBmbG9hdDIoNS4w
LCA2LjApKTsKKyAgICAgICAgICAgIHJldHVybiB2WzBdWzBdID09IDEuMCAmJiB2WzBdWzFdID09
IDIuMCAKKyAgICAgICAgICAgICAgICAmJiB2WzFdWzBdID09IDMuMCAmJiB2WzFdWzFdID09IDQu
MCAKKyAgICAgICAgICAgICAgICAmJiB2WzJdWzBdID09IDUuMCAmJiB2WzJdWzFdID09IDYuMDsK
KyAgICAgICAgfQorICAgIGA7CisKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVu
Y3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbXSksIHRydWUpOworfTsKKword2hsc2xUZXN0cy5tYXRy
aXhDb25zdHJ1Y3RvcjIgPSBhc3luYyAoKSA9PiB7CisgICAgY29uc3QgcHJvZ3JhbSA9IGAKKyAg
ICAgICAgYm9vbCBmb28oKSB7CisgICAgICAgICAgICBmbG9hdDN4MiB2ID0gZmxvYXQzeDIoMS4w
LCAyLjAsIDMuMCwgNC4wLCA1LjAsIDYuMCk7CisgICAgICAgICAgICByZXR1cm4gdlswXVswXSA9
PSAxLjAgJiYgdlswXVsxXSA9PSAyLjAgCisgICAgICAgICAgICAgICAgJiYgdlsxXVswXSA9PSAz
LjAgJiYgdlsxXVsxXSA9PSA0LjAgCisgICAgICAgICAgICAgICAgJiYgdlsyXVswXSA9PSA1LjAg
JiYgdlsyXVsxXSA9PSA2LjA7CisgICAgICAgIH0KKyAgICBgOworCisgICAgYXNzZXJ0X2VxdWFs
cyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsKK307
CisKK3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3JpcHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWFjY2Vzcy1vbi1udWxsLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1h
Y2Nlc3Mtb24tbnVsbC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL3dlYmdwdS93
aGxzbC9zdHJ1Y3R1cmUtZmllbGQtYWNjZXNzLW9uLW51bGwuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPG1ldGEgY2hhcnNldD11
dGYtOD4KKzxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgorPHRpdGxlPmZpZWxk
IGFuZGVyIG9uIG51bGxwdHIgc2hvdWxkIHJldHVybiBudWxsLjwvdGl0bGU+Cis8c2NyaXB0IHNy
Yz0ianMvdGVzdC1oYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy93ZWJn
cHUtZnVuY3Rpb25zLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3Qgd2hsc2xUZXN0
cyA9IHt9OworCit3aGxzbFRlc3RzLmZpZWxkU2hvdWxkQmVOdWxsID0gYXN5bmMgKCkgPT4gewor
ICAgIGNvbnN0IHByb2dyYW0gPSBgCisgICAgICAgIHN0cnVjdCBGb28geworICAgICAgICAgICAg
aW50IHg7CisgICAgICAgICAgICBpbnQgeTsKKyAgICAgICAgICAgIGludCB6OworICAgICAgICB9
CisgICAgICAgIGJvb2wgZm9vKHVpbnQgaSkgeworICAgICAgICAgICAgRm9vWzEwXSBmb29zOwor
ICAgICAgICAgICAgdGhyZWFkIEZvbyogZm9vID0gJmZvb3NbaV07CisgICAgICAgICAgICB0aHJl
YWQgaW50KiBwdHIgPSAmKGZvby0+eik7CisgICAgICAgICAgICByZXR1cm4gcHRyID09IG51bGwg
JiYgZm9vID09IG51bGw7CisgICAgICAgIH0KKyAgICBgOworCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCAxMDsgKytpKQorICAgICAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGNhbGxCb29sRnVuY3Rp
b24ocHJvZ3JhbSwgICJmb28iLCBbbWFrZVVpbnQoaSldKSwgZmFsc2UpOworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFttYWtlVWludCgx
MCldKSwgdHJ1ZSk7CisgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHBy
b2dyYW0sICAiZm9vIiwgW21ha2VVaW50KDEwMDAwMDApXSksIHRydWUpOworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFttYWtlVWludCgw
eGZmZmZmZmZmKV0pLCB0cnVlKTsKK307CisKK3J1blRlc3RzKHdobHNsVGVzdHMpOworPC9zY3Jp
cHQ+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNvbnN0
cnVjdG9ycy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3do
bHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3JzLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKworUEFTUyB2ZWN0b3JDb25zdHJ1Y3RvciAK
K1BBU1MgdmVjdG9yQ29uc3RydWN0b3IyIAorUEFTUyB2ZWN0b3JDb25zdHJ1Y3RvcjMgCisKSW5k
ZXg6IExheW91dFRlc3RzL3dlYmdwdS93aGxzbC92ZWN0b3ItY29uc3RydWN0b3JzLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvd2ViZ3B1L3dobHNsL3ZlY3Rvci1jb25zdHJ1Y3RvcnMu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvdmVjdG9yLWNv
bnN0cnVjdG9ycy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8bWV0YSBjaGFyc2V0PXV0Zi04PgorPG1ldGEgbmFtZT0idGltZW91
dCIgY29udGVudD0ibG9uZyI+Cis8dGl0bGU+dmVjdG9yIGN0b3IuPC90aXRsZT4KKzxzY3JpcHQg
c3JjPSJqcy90ZXN0LWhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3dl
YmdwdS1mdW5jdGlvbnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCB3aGxzbFRl
c3RzID0ge307CisKK3dobHNsVGVzdHMudmVjdG9yQ29uc3RydWN0b3IgPSBhc3luYyAoKSA9PiB7
CisgICAgY29uc3QgcHJvZ3JhbSA9IGAKKyAgICAgICAgYm9vbCBmb28oKSB7CisgICAgICAgICAg
ICBmbG9hdDMgdiA9IGZsb2F0MyhmbG9hdDIoMTAuMCwgMTEuMCksIDEyLjApOworICAgICAgICAg
ICAgcmV0dXJuIHYueCA9PSAxMC4wICYmIHYueSA9PSAxMS4wICYmIHYueiA9PSAxMi4wOworICAg
ICAgICB9CisgICAgYDsKKworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlv
bihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7Cit9OworCit3aGxzbFRlc3RzLnZlY3RvckNv
bnN0cnVjdG9yMiA9IGFzeW5jICgpID0+IHsKKyAgICBjb25zdCBwcm9ncmFtID0gYAorICAgICAg
ICBib29sIGZvbygpIHsKKyAgICAgICAgICAgIGZsb2F0MyB2ID0gZmxvYXQzKDEwLjAsIGZsb2F0
MigxMS4wLCAxMi4wKSk7CisgICAgICAgICAgICByZXR1cm4gdi54ID09IDEwLjAgJiYgdi55ID09
IDExLjAgJiYgdi56ID09IDEyLjA7CisgICAgICAgIH0KKyAgICBgOworCisgICAgYXNzZXJ0X2Vx
dWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0sICAiZm9vIiwgW10pLCB0cnVlKTsK
K307CisKK3dobHNsVGVzdHMudmVjdG9yQ29uc3RydWN0b3IzID0gYXN5bmMgKCkgPT4geworICAg
IGNvbnN0IHByb2dyYW0gPSBgCisgICAgICAgIGJvb2wgZm9vKCkgeworICAgICAgICAgICAgYm9v
bDMgdiA9IGJvb2wzKHRydWUsIGJvb2wyKGZhbHNlLCB0cnVlKSk7CisgICAgICAgICAgICByZXR1
cm4gdi54ICYmICF2LnkgJiYgdi56OworICAgICAgICB9CisgICAgYDsKKworICAgIGFzc2VydF9l
cXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZvbyIsIFtdKSwgdHJ1ZSk7
Cit9OworCitydW5UZXN0cyh3aGxzbFRlc3RzKTsKKzwvc2NyaXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>376801</attachid>
            <date>2019-08-20 14:18:08 -0700</date>
            <delta_ts>2019-08-20 16:11:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>4448</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0ODkxNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA4LTIwICBTYWFtIEJh
cmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFtXSExTTF0gV2UgbmVlZCB0byBu
dWxsIGNoZWNrIHdoZW4gZW1pdHRpbmcgbmF0aXZlIGNvZGUgZm9yIG9wZXJhdG9yJi48ZmllbGQt
bmFtZT4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MDg0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IHdlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtYWNjZXNzLW9uLW51bGwuaHRtbAorCisg
ICAgICAgICogTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlvbldy
aXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXSExTTDo6TWV0YWw6OmlubGluZU5hdGl2ZUZ1
bmN0aW9uKToKKwogMjAxOS0wOC0yMCAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQgY29tbWVudCBmb2xsb3ctdXAgZm9yIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA3NTIuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRhbC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9NZXRh
bC9XSExTTE5hdGl2ZUZ1bmN0aW9uV3JpdGVyLmNwcAkocmV2aXNpb24gMjQ4OTE1KQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvTWV0YWwvV0hMU0xOYXRpdmVGdW5jdGlv
bldyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIGlubGlu
ZU5hdGl2ZUZ1bmN0aW9uKFN0cmluZ0J1aWxkZXImCiAgICAgICAgIGF1dG8gZmllbGROYW1lID0g
bmF0aXZlRnVuY3Rpb25EZWNsYXJhdGlvbi5uYW1lKCkuc3Vic3RyaW5nKCJvcGVyYXRvciYuIl9z
dHIubGVuZ3RoKCkpOwogCiAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKAotICAgICAgICAg
ICAgaW5kZW50LCByZXR1cm5OYW1lLCAiID0gJigiLCBhcmdzWzBdLCAiLT4iKTsKKyAgICAgICAg
ICAgIGluZGVudCwgcmV0dXJuTmFtZSwgIiA9ICIsIGFyZ3NbMF0sICIgPyAmKCIsIGFyZ3NbMF0s
ICItPiIpOwogCiAgICAgICAgIGF1dG8mIHVubmFtZWRUeXBlID0gKm5hdGl2ZUZ1bmN0aW9uRGVj
bGFyYXRpb24ucGFyYW1ldGVycygpWzBdLT50eXBlKCk7CiAgICAgICAgIGF1dG8mIHVuaWZ5Tm9k
ZSA9IGRvd25jYXN0PEFTVDo6UG9pbnRlclR5cGU+KHVubmFtZWRUeXBlKS5lbGVtZW50VHlwZSgp
LnVuaWZ5Tm9kZSgpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgaW5saW5lTmF0aXZlRnVuY3Rp
b24oU3RyaW5nQnVpbGRlciYKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChmaWVsZE5hbWUpOwogCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIp
O1xuIik7CisgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCIpIDogbnVsbHB0cjtcbiIpOwog
CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDg4OTMpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
OS0wOC0yMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBbV0hM
U0xdIFdlIG5lZWQgdG8gbnVsbCBjaGVjayB3aGVuIGVtaXR0aW5nIG5hdGl2ZSBjb2RlIGZvciBv
cGVyYXRvciYuPGZpZWxkLW5hbWU+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDA4NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHdlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtYWNjZXNzLW9uLW51
bGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWJncHUvd2hsc2wvc3RydWN0dXJl
LWZpZWxkLWFjY2Vzcy1vbi1udWxsLmh0bWw6IEFkZGVkLgorCiAyMDE5LTA4LTE5ICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBoYXZl
IG1vcmUgYWdncmVzc2l2ZSBjaGVja3MgZm9yIGRhdGFVUkxzIHByb3ZpZGVkIHRvIGBjb25zb2xl
LnNjcmVlbnNob3RgCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZp
ZWxkLWFjY2Vzcy1vbi1udWxsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZpZWxkLWFjY2Vzcy1vbi1udWxsLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0dXJlLWZp
ZWxkLWFjY2Vzcy1vbi1udWxsLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMgQEAKKworUEFTUyBmaWVsZFNob3VsZEJlTnVsbCAKKwpJbmRleDogTGF5b3V0VGVzdHMvd2Vi
Z3B1L3dobHNsL3N0cnVjdHVyZS1maWVsZC1hY2Nlc3Mtb24tbnVsbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3dlYmdwdS93aGxzbC9zdHJ1Y3R1cmUtZmllbGQtYWNjZXNzLW9uLW51
bGwuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy93ZWJncHUvd2hsc2wvc3RydWN0
dXJlLWZpZWxkLWFjY2Vzcy1vbi1udWxsLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxtZXRhIGNoYXJzZXQ9dXRmLTg+Cis8bWV0
YSBuYW1lPSJ0aW1lb3V0IiBjb250ZW50PSJsb25nIj4KKzx0aXRsZT5maWVsZCBhbmRlciBvbiBu
dWxscHRyIHNob3VsZCByZXR1cm4gbnVsbC48L3RpdGxlPgorPHNjcmlwdCBzcmM9ImpzL3Rlc3Qt
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvd2ViZ3B1LWZ1bmN0aW9u
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NvbnN0IHdobHNsVGVzdHMgPSB7fTsKKwor
d2hsc2xUZXN0cy5maWVsZFNob3VsZEJlTnVsbCA9IGFzeW5jICgpID0+IHsKKyAgICBjb25zdCBw
cm9ncmFtID0gYAorICAgICAgICBzdHJ1Y3QgRm9vIHsKKyAgICAgICAgICAgIGludCB4OworICAg
ICAgICAgICAgaW50IHk7CisgICAgICAgICAgICBpbnQgejsKKyAgICAgICAgfQorICAgICAgICBi
b29sIGZvbyh1aW50IGkpIHsKKyAgICAgICAgICAgIEZvb1sxMF0gZm9vczsKKyAgICAgICAgICAg
IHRocmVhZCBGb28qIGZvbyA9ICZmb29zW2ldOworICAgICAgICAgICAgdGhyZWFkIGludCogcHRy
ID0gJihmb28tPnopOworICAgICAgICAgICAgcmV0dXJuIHB0ciA9PSBudWxsICYmIGZvbyA9PSBu
dWxsOworICAgICAgICB9CisgICAgYDsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTA7ICsr
aSkKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhhd2FpdCBjYWxsQm9vbEZ1bmN0aW9uKHByb2dyYW0s
ICAiZm9vIiwgW21ha2VVaW50KGkpXSksIGZhbHNlKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbbWFrZVVpbnQoMTApXSksIHRydWUp
OworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgY2FsbEJvb2xGdW5jdGlvbihwcm9ncmFtLCAgImZv
byIsIFttYWtlVWludCgxMDAwMDAwKV0pLCB0cnVlKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0
IGNhbGxCb29sRnVuY3Rpb24ocHJvZ3JhbSwgICJmb28iLCBbbWFrZVVpbnQoMHhmZmZmZmZmZild
KSwgdHJ1ZSk7Cit9OworCitydW5UZXN0cyh3aGxzbFRlc3RzKTsKKzwvc2NyaXB0PgorPC9odG1s
Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>