<?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>172147</bug_id>
          
          <creation_ts>2017-05-15 17:05:22 -0700</creation_ts>
          <short_desc>Rolling out r214038 and r213697: Crashes when using computed properties with rest destructuring and object spread.</short_desc>
          <delta_ts>2017-05-16 10:50:13 -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>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>172171</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>keith_miller</cc>
    
    <cc>lokihardt</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1308881</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-15 17:05:22 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308884</commentid>
    <comment_count>1</comment_count>
      <attachid>310192</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-15 17:12:30 -0700</bug_when>
    <thetext>Created attachment 310192
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308886</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-15 17:15:11 -0700</bug_when>
    <thetext>rs=Saam Barati.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308887</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-15 17:22:44 -0700</bug_when>
    <thetext>Landed in r216891: &lt;http://trac.webkit.org/r216891&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308892</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-15 17:25:54 -0700</bug_when>
    <thetext>*** Bug 171958 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309161</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-16 10:15:22 -0700</bug_when>
    <thetext>r216891 needs a test result rebase.  This was done in r216934: &lt;http://trac.webkit.org/r216934&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1309185</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-05-16 10:50:13 -0700</bug_when>
    <thetext>*** Bug 172005 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>310192</attachid>
            <date>2017-05-15 17:12:30 -0700</date>
            <delta_ts>2017-05-15 17:22:09 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-172147.patch</filename>
            <type>text/plain</type>
            <size>59379</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTY4ODkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE3LTA1LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBSb2xsaW5nIG91dCByMjE0MDM4IGFuZCByMjEzNjk3OiBDcmFzaGVzIHdo
ZW4gdXNpbmcgY29tcHV0ZWQgcHJvcGVydGllcyB3aXRoIHJlc3QgZGVzdHJ1Y3R1cmluZyBhbmQg
b2JqZWN0IHNwcmVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjE0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogc3RyZXNzL29iamVjdC1yZXN0LWRlY29uc3RydWN0LmpzOiBSZW1vdmVkLgorICAg
ICAgICAqIHN0cmVzcy9vYmplY3Qtc3ByZWFkLmpzOiBSZW1vdmVkLgorCiAyMDE3LTA1LTExICBK
RiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTog
c3RvcCBzdXBwb3J0aW5nIDB4RApJbmRleDogSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXJlc3QtZGVj
b25zdHJ1Y3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXJlc3QtZGVj
b25zdHJ1Y3QuanMJKHJldmlzaW9uIDIxNjg4NykKKysrIEpTVGVzdHMvc3RyZXNzL29iamVjdC1y
ZXN0LWRlY29uc3RydWN0LmpzCShub25leGlzdGVudCkKQEAgLTEsMjQ2ICswLDAgQEAKLWxldCBh
c3NlcnQgPSAoZSkgPT4gewotICAgIGlmICghZSkKLSAgICAgICAgdGhyb3cgRXJyb3IoIkJhZCBh
c3NlcnRpb24hIik7Ci19Ci0KLWxldCBhc3NlcnRQcm9wRGVzY3JpcHRvciA9IChyZXN0T2JqLCBw
cm9wKSA9PiB7Ci0gICAgbGV0IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KHJlc3RPYmosIHByb3ApOwotICAgIGFzc2VydChkZXNjLmVudW1lcmFibGUpOwotICAgIGFzc2Vy
dChkZXNjLndyaXRhYmxlKTsKLSAgICBhc3NlcnQoZGVzYy5jb25maWd1cmFibGUpOwotfQotCi0v
LyBCYXNlIENhc2UKLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9IHt4OiAxLCB5OiAyLCBhOiA1LCBi
OiAzfQotCi0gICAgbGV0IHthLCBiLCAuLi5yZXN0fSA9IG9iajsKLQotICAgIGFzc2VydChhID09
PSA1KTsKLSAgICBhc3NlcnQoYiA9PT0gMyk7Ci0KLSAgICBhc3NlcnQocmVzdC54ID09PSAxKTsK
LSAgICBhc3NlcnQocmVzdC55ID09PSAyKTsKLQotICAgIGFzc2VydFByb3BEZXNjcmlwdG9yKHJl
c3QsICd4Jyk7Ci0gICAgYXNzZXJ0UHJvcERlc2NyaXB0b3IocmVzdCwgJ3knKTsKLX0pKCk7Ci0K
LS8vIEVtcHR5IE9iamVjdAotKCgpID0+IHsKLSAgICBsZXQgb2JqID0ge30KLQotICAgIGxldCB7
YSwgYiwgLi4ucmVzdH0gPSBvYmo7Ci0KLSAgICBhc3NlcnQoYSA9PT0gdW5kZWZpbmVkKTsKLSAg
ICBhc3NlcnQoYiA9PT0gdW5kZWZpbmVkKTsKLQotICAgIGFzc2VydCh0eXBlb2YgcmVzdCA9PT0g
Im9iamVjdCIpOwotfSkoKTsKLQotLy8gTnVtYmVyIGNhc2UKLSgoKSA9PiB7Ci0gICAgbGV0IG9i
aiA9IDM7Ci0KLSAgICBsZXQgey4uLnJlc3R9ID0gb2JqOwotCi0gICAgYXNzZXJ0KHR5cGVvZiBy
ZXN0ID09PSAib2JqZWN0Iik7Ci19KSgpOwotCi0vLyBTdHJpbmcgY2FzZQotKCgpID0+IHsKLSAg
ICBsZXQgb2JqID0gImZvbyI7Ci0KLSAgICBsZXQgey4uLnJlc3R9ID0gb2JqOwotCi0gICAgYXNz
ZXJ0KHR5cGVvZiByZXN0ID09PSAib2JqZWN0Iik7Ci19KSgpOwotCi0vLyBTeW1ib2wgY2FzZQot
KCgpID0+IHsKLSAgICBsZXQgb2JqID0gU3ltYm9sKCJmb28iKTsKLQotICAgIGxldCB7Li4ucmVz
dH0gPSBvYmo7Ci0KLSAgICBhc3NlcnQodHlwZW9mIHJlc3QgPT09ICJvYmplY3QiKTsKLX0pKCk7
Ci0KLS8vIG51bGwgY2FzZQotKCgpID0+IHsKLSAgICBsZXQgb2JqID0gbnVsbDsKLQotICAgIHRy
eSB7Ci0gICAgICAgIGxldCB7Li4ucmVzdH0gPSBvYmo7Ci0gICAgICAgIGFzc2VydChmYWxzZSk7
Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnQoZS5tZXNzYWdlID09ICJSaWdodCBz
aWRlIG9mIGFzc2lnbm1lbnQgY2Fubm90IGJlIGRlc3RydWN0dXJlZCIpOwotICAgIH0KLQotfSko
KTsKLQotLy8gdW5kZWZpbmVkIGNhc2UKLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9IHVuZGVmaW5l
ZDsKLQotICAgIHRyeSB7Ci0gICAgICAgIGxldCB7Li4ucmVzdH0gPSBvYmo7Ci0gICAgICAgIGFz
c2VydChmYWxzZSk7Ci0gICAgfSBjYXRjaCAoZSkgewotICAgICAgICBhc3NlcnQoZS5tZXNzYWdl
ID09ICJSaWdodCBzaWRlIG9mIGFzc2lnbm1lbnQgY2Fubm90IGJlIGRlc3RydWN0dXJlZCIpOwot
ICAgIH0KLQotfSkoKTsKLQotLy8gZ2V0dGVyIGNhc2UKLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9
IHthOiAzLCBiOiA0fTsKLSAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCAieCIsIHsgZ2V0
OiAoKSA9PiAzLCBlbnVtZXJhYmxlOiB0cnVlIH0pOwotCi0gICAgbGV0IHthLCBiLCAuLi5yZXN0
fSA9IG9iajsKLQotICAgIGFzc2VydChhID09PSAzKTsKLSAgICBhc3NlcnQoYiA9PT0gNCk7Ci0K
LSAgICBhc3NlcnQocmVzdC54ID09PSAzKTsKLSAgICBhc3NlcnRQcm9wRGVzY3JpcHRvcihyZXN0
LCAneCcpOwotfSkoKTsKLQotLy8gU2tpcCBub24tZW51bWVyYWJsZSBjYXNlCi0oKCkgPT4gewot
ICAgIGxldCBvYmogPSB7YTogMywgYjogNH07Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9i
aiwgIngiLCB7IHZhbHVlOiA0LCBlbnVtZXJhYmxlOiBmYWxzZSB9KTsKLQotICAgIGxldCB7Li4u
cmVzdH0gPSBvYmo7Ci0KLSAgICBhc3NlcnQocmVzdC5hID09PSAzKTsKLSAgICBhc3NlcnQocmVz
dC5iID09PSA0KTsKLSAgICBhc3NlcnQocmVzdC54ID09PSB1bmRlZmluZWQpOwotfSkoKTsKLQot
Ly8gRG9uJ3QgY29weSBkZXNjcmlwdG9yIGNhc2UKLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9IHt9
OwotICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosICJhIiwgeyB2YWx1ZTogMywgY29uZmln
dXJhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTogdHJ1ZSB9KTsKLSAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkob2JqLCAiYiIsIHsgdmFsdWU6IDQsIHdyaXRhYmxlOiBmYWxzZSwgZW51bWVyYWJsZTog
dHJ1ZSB9KTsKLQotICAgIGxldCB7Li4ucmVzdH0gPSBvYmo7Ci0KLSAgICBhc3NlcnQocmVzdC5h
ID09PSAzKTsKLSAgICBhc3NlcnQocmVzdC5iID09PSA0KTsKLQotICAgIGFzc2VydFByb3BEZXNj
cmlwdG9yKHJlc3QsICdhJyk7Ci0gICAgYXNzZXJ0UHJvcERlc2NyaXB0b3IocmVzdCwgJ2InKTsK
LX0pKCk7Ci0KLS8vIE5lc3RlZCBiYXNlIGNhc2UKLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9IHth
OiAxLCBiOiAyLCBjOiAzLCBkOiA0LCBlOiA1fTsKLQotICAgIGxldCB7YSwgYiwgLi4ue2MsIGV9
fSA9IG9iajsKLQotICAgIGFzc2VydChhID09PSAxKTsKLSAgICBhc3NlcnQoYiA9PT0gMik7Ci0g
ICAgYXNzZXJ0KGMgPT09IDMpOwotICAgIGFzc2VydChlID09PSA1KTsKLX0pKCk7Ci0KLS8vIE5l
c3RlZCByZXN0IGNhc2UKLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9IHthOiAxLCBiOiAyLCBjOiAz
LCBkOiA0LCBlOiA1fTsKLQotICAgIGxldCB7YSwgYiwgLi4ue2MsIC4uLnJlc3R9fSA9IG9iajsK
LQotICAgIGFzc2VydChhID09PSAxKTsKLSAgICBhc3NlcnQoYiA9PT0gMik7Ci0gICAgYXNzZXJ0
KGMgPT09IDMpOwotCi0gICAgYXNzZXJ0KHJlc3QuZCA9PT0gNCk7Ci0gICAgYXNzZXJ0KHJlc3Qu
ZSA9PT0gNSk7Ci19KSgpOwotCi0vLyBEZXN0cnVjdHVyaW5nIE9ubHkgT3duIFByb3BlcnRpZXMK
LSgoKSA9PiB7Ci0gICAgdmFyIG8gPSBPYmplY3QuY3JlYXRlKHsgeDogMSwgeTogMiB9KTsKLSAg
ICBvLnogPSAzOwotCi0gICAgdmFyIHgsIHksIHo7Ci0KLSAgICAvLyBEZXN0cnVjdHVyaW5nIGFz
c2lnbm1lbnQgYWxsb3dzIG5lc3RlZCBvYmplY3RzCi0gICAgKHsgeCwgLi4ue3kgLCB6fSB9ID0g
byk7Ci0KLSAgICBhc3NlcnQoeCA9PT0gMSk7Ci0gICAgYXNzZXJ0KHkgPT09IHVuZGVmaW5lZCk7
Ci0gICAgYXNzZXJ0KHogPT09IDMpOwotfSkoKTsKLQotLy8gRGVzdHJ1Y3R1cmluZyBmdW5jdGlv
biBwYXJhbWV0ZXIKLQotKCgpID0+IHsKLQotICAgIHZhciBvID0geyB4OiAxLCB5OiAyLCB3OiAz
LCB6OiA0IH07Ci0gICAgCi0gICAgZnVuY3Rpb24gZm9vKHsgeCwgeSwgLi4ucmVzdCB9KSB7Ci0g
ICAgICAgIGFzc2VydCh4ID09PSAxKTsKLSAgICAgICAgYXNzZXJ0KHkgPT09IDIpOwotICAgICAg
ICBhc3NlcnQocmVzdC53ID09PSAzKTsKLSAgICAgICAgYXNzZXJ0KHJlc3QueiA9PT0gNCk7Ci0g
ICAgfQotICAgIGZvbyhvKTsKLX0pKCk7Ci0KLS8vIERlc3RydWN0dXJpbmcgYXJyb3cgZnVuY3Rp
b24gcGFyYW1ldGVyCi0KLSgoKSA9PiB7Ci0KLSAgICB2YXIgbyA9IHsgeDogMSwgeTogMiwgdzog
MywgejogNCB9OwotICAgIAotICAgICgoeyB4LCB5LCAuLi5yZXN0IH0pID0+IHsKLSAgICAgICAg
YXNzZXJ0KHggPT09IDEpOwotICAgICAgICBhc3NlcnQoeSA9PT0gMik7Ci0gICAgICAgIGFzc2Vy
dChyZXN0LncgPT09IDMpOwotICAgICAgICBhc3NlcnQocmVzdC56ID09PSA0KTsKLSAgICB9KShv
KTsKLX0pKCk7Ci0KLS8vIERlc3RydWN0dXJpbmcgdG8gYSBwcm9wZXJ0eQotKCgpID0+IHsKLQot
ICAgIHZhciBvID0geyB4OiAxLCB5OiAyfTsKLSAgICAKLSAgICBsZXQgc2V0dGVkVmFsdWU7Ci0g
ICAgbGV0IHNyYyA9IHt9OwotICAgICh7Li4uc3JjLnl9ID0gbyk7Ci0gICAgYXNzZXJ0KHNyYy55
LnggPT09IDEpOwotICAgIGFzc2VydChzcmMueS55ID09PSAyKTsKLX0pKCk7Ci0KLS8vIERlc3Ry
dWN0dXJpbmcgd2l0aCBzZXR0ZXIKLSgoKSA9PiB7Ci0KLSAgICB2YXIgbyA9IHsgeDogMSwgeTog
Mn07Ci0gICAgCi0gICAgbGV0IHNldHRlZFZhbHVlOwotICAgIGxldCBzcmMgPSB7Ci0gICAgICAg
IGdldCB5KCkgeyB0aHJvdyBFcnJvcigiVGhlIHByb3BlcnR5IHNob3VsZCBub3QgYmUgYWNjZXNz
ZWQiKTsgfSwgCi0gICAgICAgIHNldCB5KHYpIHsKLSAgICAgICAgICAgIHNldHRlZFZhbHVlID0g
djsKLSAgICAgICAgfQotICAgIH0KLSAgICBzcmMueSA9IHVuZGVmaW5lZDsKLSAgICAoey4uLnNy
Yy55fSA9IG8pOwotICAgIGFzc2VydChzZXR0ZWRWYWx1ZS54ID09PSAxKTsKLSAgICBhc3NlcnQo
c2V0dGVkVmFsdWUueSA9PT0gMik7Ci19KSgpOwotCi0vLyBEZXN0cnVjdHVyaW5nIHlpZWxkCi0o
KCkgPT4gewotCi0gICAgdmFyIG8gPSB7IHg6IDEsIHk6IDIsIHc6IDMsIHo6IDQgfTsKLSAgICAK
LSAgICBsZXQgZ2VuID0gKGZ1bmN0aW9uICogKG8pIHsKLSAgICAgICAgKHsuLi57IHggPSB5aWVs
ZCB9fSA9IG8pOwotICAgIH0pKG8pOwotICAgIAotICAgIGFzc2VydChnZW4ubmV4dCgpLnZhbHVl
ID09PSB1bmRlZmluZWQpOwotfSkoKTsKLQpJbmRleDogSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXNw
cmVhZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmplY3Qtc3ByZWFkLmpzCShy
ZXZpc2lvbiAyMTY4ODcpCisrKyBKU1Rlc3RzL3N0cmVzcy9vYmplY3Qtc3ByZWFkLmpzCShub25l
eGlzdGVudCkKQEAgLTEsMjk3ICswLDAgQEAKLWxldCBhc3NlcnQgPSAoYSkgPT4gewotICAgIGlm
ICghYSkKLSAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQgQXNzZXJ0aW9uIik7Ci19Ci0KLWFz
c2VydC5zYW1lVmFsdWUgPSAoYSwgYikgPT4gIHsKLSAgICBhc3NlcnQoYSA9PT0gYik7Ci19Ci0K
LWZ1bmN0aW9uIHZhbGlkYXRlUHJvcGVydHlEZXNjcmlwdG9yKG8sIHApIHsKLSAgICBsZXQgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobywgcCk7Ci0KLSAgICBhc3NlcnQo
ZGVzYy5lbnVtZXJhYmxlKTsKLSAgICBhc3NlcnQoZGVzYy5jb25maWd1cmFibGUpOwotICAgIGFz
c2VydChkZXNjLndyaXRhYmxlKTsKLX0KLQotLy8gQmFzZSBjYXNlcwotCi0oKCkgPT4gewotICAg
IGxldCBvYmogPSB7YTogMSwgYjogMiwgLi4ue2M6IDMsIGQ6IDR9fTsKLQotICAgIGFzc2VydC5z
YW1lVmFsdWUob2JqLmEsIDEpOwotICAgIGFzc2VydChvYmouYiwgMik7Ci0gICAgYXNzZXJ0KG9i
ai5jLCAzKTsKLSAgICBhc3NlcnQob2JqLmQsIDQpOwotICAgIHZhbGlkYXRlUHJvcGVydHlEZXNj
cmlwdG9yKG9iaiwgImMiKTsKLSAgICB2YWxpZGF0ZVByb3BlcnR5RGVzY3JpcHRvcihvYmosICJk
Iik7Ci0gICAgYXNzZXJ0KE9iamVjdC5rZXlzKG9iaiksIDIpOwotfSkoKTsKLQotKCgpID0+IHsK
LSAgICBsZXQgbyA9IHtjOiAzLCBkOiA0fTsKLSAgICBsZXQgb2JqID0ge2E6IDEsIGI6IDIsIC4u
Lm99OwotCi0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouYSwgMSk7Ci0gICAgYXNzZXJ0LnNhbWVW
YWx1ZShvYmouYiwgMik7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouYywgMyk7Ci0gICAgYXNz
ZXJ0LnNhbWVWYWx1ZShvYmouZCwgNCk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShPYmplY3Qua2V5
cyhvYmopLmxlbmd0aCwgNCk7Ci0KLSAgICB2YWxpZGF0ZVByb3BlcnR5RGVzY3JpcHRvcihvYmos
ICJhIik7Ci0gICAgdmFsaWRhdGVQcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCAiYiIpOwotICAgIHZh
bGlkYXRlUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgImMiKTsKLSAgICB2YWxpZGF0ZVByb3BlcnR5
RGVzY3JpcHRvcihvYmosICJkIik7Ci19KSgpOwotCi0oKCkgPT4gewotICAgIGxldCBvID0ge2E6
IDIsIGI6IDN9OwotICAgIGxldCBvMiA9IHtjOiA0LCBkOiA1fTsKLQotICAgIGxldCBvYmogPSB7
Li4ubywgLi4ubzJ9OwotCi0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouYSwgMik7Ci0gICAgYXNz
ZXJ0LnNhbWVWYWx1ZShvYmouYiwgMyk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouYywgNCk7
Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouZCwgNSk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShP
YmplY3Qua2V5cyhvYmopLmxlbmd0aCwgNCk7Ci19KSgpOwotCi0vLyBFbXB0eSBjYXNlCi0KLSgo
KSA9PiB7Ci0gICAgbGV0IG9iaiA9IHthOiAxLCBiOiAyLCAuLi57fX07Ci0KLSAgICBhc3NlcnQu
c2FtZVZhbHVlKG9iai5hLCAxKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5iLCAyKTsKLSAg
ICBhc3NlcnQuc2FtZVZhbHVlKE9iamVjdC5rZXlzKG9iaikubGVuZ3RoLCAyKTsKLX0pKCk7Ci0K
LS8vIElnbm9yaW5nIGNhc2VzCi0KLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9IHthOiAxLCAuLi5u
dWxsLCBiOiAyLCAuLi51bmRlZmluZWQsIGM6IDMsIC4uLnt9LCAuLi57Li4ue319LCBkOiA0fTsK
LQotICAgIGFzc2VydC5zYW1lVmFsdWUob2JqLmEsIDEpOwotICAgIGFzc2VydC5zYW1lVmFsdWUo
b2JqLmIsIDIpOwotICAgIGFzc2VydC5zYW1lVmFsdWUob2JqLmMsIDMpOwotICAgIGFzc2VydC5z
YW1lVmFsdWUob2JqLmQsIDQpOwotCi0gICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopOwot
ICAgIGFzc2VydC5zYW1lVmFsdWUoa2V5c1swXSwgImEiKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVl
KGtleXNbMV0sICJiIik7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShrZXlzWzJdLCAiYyIpOwotICAg
IGFzc2VydC5zYW1lVmFsdWUoa2V5c1szXSwgImQiKTsKLX0pKCk7Ci0KLS8vIE51bGwgY2FzZQot
Ci0oKCkgPT4gewotICAgIGxldCBvYmogPSB7YTogMSwgYjogMiwgLi4ubnVsbH07Ci0KLSAgICBh
c3NlcnQuc2FtZVZhbHVlKG9iai5hLCAxKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5iLCAy
KTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKE9iamVjdC5rZXlzKG9iaikubGVuZ3RoLCAyKTsKLX0p
KCk7Ci0KLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9IHsuLi5udWxsfTsKLQotICAgIGFzc2VydC5z
YW1lVmFsdWUoT2JqZWN0LmtleXMob2JqKS5sZW5ndGgsIDApOwotfSkoKTsKLQotLy8gVW5kZWZp
bmVkIGNhc2UKLQotKCgpID0+IHsKLSAgICBsZXQgb2JqID0ge2E6IDEsIGI6IDIsIC4uLnVuZGVm
aW5lZH07Ci0KLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5hLCAxKTsKLSAgICBhc3NlcnQuc2Ft
ZVZhbHVlKG9iai5iLCAyKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKE9iamVjdC5rZXlzKG9iaiku
bGVuZ3RoLCAyKTsKLX0pKCk7Ci0KLSgoKSA9PiB7Ci0gICAgbGV0IG9iaiA9IHsuLi51bmRlZmlu
ZWR9OwotCi0gICAgYXNzZXJ0LnNhbWVWYWx1ZShPYmplY3Qua2V5cyhvYmopLmxlbmd0aCwgMCk7
Ci19KSgpOwotCi0vLyBHZXR0ZXIgY2FzZQotCi0oKCkgPT4gewotICAgIGxldCBvID0gewotICAg
ICAgICBnZXQgYSgpIHsKLSAgICAgICAgICAgIHJldHVybiA0MjsKLSAgICAgICAgfQotICAgIH07
Ci0KLSAgICBsZXQgb2JqID0gey4uLm8sIGM6IDQsIGQ6IDV9OwotCi0gICAgYXNzZXJ0LnNhbWVW
YWx1ZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgImEiKS52YWx1ZSwgNDIp
OwotICAgIGFzc2VydC5zYW1lVmFsdWUob2JqLmMsIDQpOwotICAgIGFzc2VydC5zYW1lVmFsdWUo
b2JqLmQsIDUpOwotICAgIGFzc2VydC5zYW1lVmFsdWUoT2JqZWN0LmtleXMob2JqKS5sZW5ndGgs
IDMpOwotCi0gICAgdmFsaWRhdGVQcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCAiYSIpOwotfSkoKTsK
LQotKCgpID0+IHsKLSAgICBsZXQgbyA9IHthOiAyLCBiOiAzfQotICAgIGxldCBleGVjdXRlZEdl
dHRlciA9IGZhbHNlOwotCi0gICAgbGV0IG9iaiA9IHsuLi5vLCBnZXQgYygpIHsgZXhlY3V0ZWRH
ZXR0ZXIgPSB0cnVlOyB9fTsKLQotICAgIGFzc2VydC5zYW1lVmFsdWUob2JqLmEsIDIpOwotICAg
IGFzc2VydC5zYW1lVmFsdWUob2JqLmIsIDMpOwotICAgIGFzc2VydC5zYW1lVmFsdWUoZXhlY3V0
ZWRHZXR0ZXIsIGZhbHNlKQotICAgIGFzc2VydC5zYW1lVmFsdWUoT2JqZWN0LmtleXMob2JqKS5s
ZW5ndGgsIDMpOwotfSkoKTsKLQotKCgpID0+IHsKLSAgICBsZXQgZ2V0dGVyQ2FsbENvdW50ID0g
MDsKLSAgICBsZXQgbyA9IHsKLSAgICAgICAgZ2V0IGEoKSB7Ci0gICAgICAgICAgICByZXR1cm4g
KytnZXR0ZXJDYWxsQ291bnQ7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgbGV0IG9iaiA9IHsu
Li5vLCBjOiA0LCBkOiA1LCBhOiA0MiwgLi4ub307Ci0KLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9i
ai5hLCAyKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5jLCA0KTsKLSAgICBhc3NlcnQuc2Ft
ZVZhbHVlKG9iai5kLCA1KTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKE9iamVjdC5rZXlzKG9iaiku
bGVuZ3RoLCAzKTsKLX0pKCk7Ci0KLS8vIE1hbmlwdWxhdGUgT2JqZWN0IGNhc2UKLQotKCgpID0+
IHsKLSAgICB2YXIgbyA9IHsgYTogMCwgYjogMSB9OwotICAgIHZhciBjdGh1bGh1ID0geyBnZXQg
eCgpIHsKLSAgICAgIGRlbGV0ZSBvLmE7Ci0gICAgICBvLmIgPSA0MjsKLSAgICAgIG8uYyA9ICJu
aSI7Ci0gICAgfX07Ci0KLSAgICBsZXQgb2JqID0gey4uLmN0aHVsaHUsIC4uLm99OwotCi0gICAg
YXNzZXJ0LnNhbWVWYWx1ZShvYmouaGFzT3duUHJvcGVydHkoImEiKSwgZmFsc2UpOwotICAgIGFz
c2VydC5zYW1lVmFsdWUob2JqLmIsIDQyKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5jLCAi
bmkiKTsKLSAgICBhc3NlcnQob2JqLmhhc093blByb3BlcnR5KCJ4IikpOwotICAgIGFzc2VydC5z
YW1lVmFsdWUoT2JqZWN0LmtleXMob2JqKS5sZW5ndGgsIDMpOwotfSkoKTsKLQotLy8gT3ZlcnJp
ZGUKLQotKCgpID0+IHsKLSAgICBsZXQgbyA9IHthOiAyLCBiOiAzfTsKLQotICAgIGxldCBvYmog
PSB7YTogMSwgYjogNywgLi4ub307Ci0KLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5hLCAyKTsK
LSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5iLCAzKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKE9i
amVjdC5rZXlzKG9iaikubGVuZ3RoLCAyKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKG8uYSwgMik7
Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvLmIsIDMpOwotfSkoKTsKLQotKCgpID0+IHsKLSAgICBs
ZXQgbyA9IHthOiAyLCBiOiAzLCBjOiA0LCBlOiB1bmRlZmluZWQsIGY6IG51bGwsIGc6IGZhbHNl
fTsKLQotICAgIGxldCBvYmogPSB7Li4ubywgYTogMSwgYjogNywgZDogNSwgaDogLTAsIGk6IFN5
bWJvbCgiZm9vIiksIGo6IG99OwotCi0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouYSwgMSk7Ci0g
ICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouYiwgNyk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmou
YywgNCk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouZCwgNSk7Ci0gICAgYXNzZXJ0KG9iai5o
YXNPd25Qcm9wZXJ0eSgiZSIpKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5mLCBudWxsKTsK
LSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5nLCBmYWxzZSk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1
ZShvYmouaCwgLTApOwotICAgIGFzc2VydC5zYW1lVmFsdWUob2JqLmkudG9TdHJpbmcoKSwgIlN5
bWJvbChmb28pIik7Ci0gICAgYXNzZXJ0KE9iamVjdC5pcyhvYmouaiwgbykpOwotICAgIGFzc2Vy
dC5zYW1lVmFsdWUoT2JqZWN0LmtleXMob2JqKS5sZW5ndGgsIDEwKTsKLX0pKCk7Ci0KLS8vIE92
ZXJyaWRlIEltbXV0YWJsZQotCi0oKCkgPT4gewotICAgIGxldCBvID0ge2I6IDJ9OwotICAgIE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShvLCAiYSIsIHt2YWx1ZTogMSwgZW51bWVyYWJsZTogdHJ1ZSwg
d3JpdGFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IHRydWV9KTsKLQotICAgIGxldCBvYmogPSB7
Li4ubywgYTogM307Ci0KLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5hLCAzKQotICAgIGFzc2Vy
dC5zYW1lVmFsdWUob2JqLmIsIDIpOwotICAgIHZhbGlkYXRlUHJvcGVydHlEZXNjcmlwdG9yKG9i
aiwgImEiKTsKLSAgICB2YWxpZGF0ZVByb3BlcnR5RGVzY3JpcHRvcihvYmosICJiIik7Ci19KSgp
OwotCi0vLyBTZXR0ZXIKLQotKCgpID0+IHsKLSAgICBsZXQgZXhlY3V0ZWRTZXR0ZXIgPSBmYWxz
ZTsKLQotICAgIGxldCBvYmogPSB7c2V0IGModikgeyBleGVjdXRlZFNldHRlciA9IHRydWU7IH0s
IC4uLntjOiAxfX07Ci0KLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5jLCAxKTsKLSAgICBhc3Nl
cnQuc2FtZVZhbHVlKGV4ZWN1dGVkU2V0dGVyLCBmYWxzZSk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1
ZShPYmplY3Qua2V5cyhvYmopLmxlbmd0aCwgMSk7Ci19KSgpOwotCi0vLyBTa2lwIG5vbi1lbnVt
ZXJibGUKLQotKCgpID0+IHsKLSAgICBsZXQgbyA9IHt9OwotICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShvLCAiYiIsIHt2YWx1ZTogMywgZW51bWVyYWJsZTogZmFsc2V9KTsKLQotICAgIGxldCBv
YmogPSB7Li4ub307Ci0KLSAgICBhc3NlcnQuc2FtZVZhbHVlKG9iai5oYXNPd25Qcm9wZXJ0eSgi
YiIpLCBmYWxzZSkKLSAgICBhc3NlcnQuc2FtZVZhbHVlKE9iamVjdC5rZXlzKG9iaikubGVuZ3Ro
LCAwKTsKLX0pKCk7Ci0KLS8vIFNwcmVhZCBvcmRlcgotCi0oKCkgPT4gewotICAgIHZhciBjYWxs
cyA9IFtdCi0gICAgdmFyIG8gPSB7IGdldCB6KCkgeyBjYWxscy5wdXNoKCd6JykgfSwgZ2V0IGEo
KSB7IGNhbGxzLnB1c2goJ2EnKSB9IH07Ci0gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIDEs
IHsgZ2V0OiAoKSA9PiB7IGNhbGxzLnB1c2goMSkgfSwgZW51bWVyYWJsZTogdHJ1ZSB9KTsKLSAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgU3ltYm9sKCdmb28nKSwgeyBnZXQ6ICgpID0+IHsg
Y2FsbHMucHVzaCgiU3ltYm9sKGZvbykiKSB9LCBlbnVtZXJhYmxlOiB0cnVlIH0pOwotCi0gICAg
bGV0IG9iaiA9IHsuLi5vfTsKLQotICAgIGFzc2VydC5zYW1lVmFsdWUoY2FsbHNbMF0sIDEpOwot
ICAgIGFzc2VydC5zYW1lVmFsdWUoY2FsbHNbMV0sICJ6Iik7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1
ZShjYWxsc1syXSwgImEiKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKGNhbGxzWzNdLCAiU3ltYm9s
KGZvbykiKTsKLSAgICBhc3NlcnQuc2FtZVZhbHVlKE9iamVjdC5rZXlzKG9iaikubGVuZ3RoLCAz
KTsKLX0pKCk7Ci0KLS8vIFN5bWJvbCBwcm9wZXJ0eQotKCgpID0+IHsKLSAgICBsZXQgc3ltYm9s
ID0gU3ltYm9sKCdmb28nKTsKLSAgICBsZXQgbyA9IHt9OwotICAgIG9bc3ltYm9sXSA9IDE7Ci0K
LSAgICBsZXQgb2JqID0gey4uLm8sIGM6IDQsIGQ6IDV9OwotCi0gICAgYXNzZXJ0LnNhbWVWYWx1
ZShvYmpbc3ltYm9sXSwgMSk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShvYmouYywgNCk7Ci0gICAg
YXNzZXJ0LnNhbWVWYWx1ZShvYmouZCwgNSk7Ci0gICAgYXNzZXJ0LnNhbWVWYWx1ZShPYmplY3Qu
a2V5cyhvYmopLmxlbmd0aCwgMik7Ci19KSgpOwotCi0vLyBHZXR0ZXIgdGhyb3cKLQotKCgpID0+
IHsKLSAgICB0cnkgewotICAgICAgICBsZXQgb2JqID0gey4uLnsgZ2V0IGZvbygpIHsgdGhyb3cg
bmV3IEVycm9yKCJHZXR0ZXIgRXhjZXB0aW9uIik7IH0gfX07Ci0gICAgICAgIGFzc2VydChmYWxz
ZSk7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIGFzc2VydC5zYW1lVmFsdWUoZS5tZXNzYWdl
LCAiR2V0dGVyIEV4Y2VwdGlvbiIpOwotICAgIH0KLX0pKCk7Ci0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMjE2ODg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA1LTE1ICBNYXJr
IExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSb2xsaW5nIG91dCByMjE0MDM4
IGFuZCByMjEzNjk3OiBDcmFzaGVzIHdoZW4gdXNpbmcgY29tcHV0ZWQgcHJvcGVydGllcyB3aXRo
IHJlc3QgZGVzdHJ1Y3R1cmluZyBhbmQgb2JqZWN0IHNwcmVhZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE0NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgcm9sbGVkIG91dCBldmVyeSB0aGluZyBp
biB0aG9zZSAyIHBhdGNoZXMgZXhjZXB0IGZvciB0aGUgY2hhbmdlIHRvIG1ha2UKKyAgICAgICAg
Q29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbigpIHJldHVybiBhIGJvb2wgcGx1cyBpdHMgY2xpZW50
cyB0aGF0IGRlcGVuZCBvbiB0aGlzLgorICAgICAgICBJIG1hZGUgdGhpcyBleGNlcHRpb24gYmVj
YXVzZSByMjE0OTMxIHJlbGllcyBvbiB0aGlzIGNoYW5nZSwgYW5kIHRoaXMgcGFydCBvZgorICAg
ICAgICB0aGUgY2hhbmdlIGxvb2tzIGNvcnJlY3QuCisKKyAgICAgICAgKiBidWlsdGlucy9CdWls
dGluTmFtZXMuaDoKKyAgICAgICAgKiBidWlsdGlucy9HbG9iYWxPcGVyYXRpb25zLmpzOgorICAg
ICAgICAoZ2xvYmFsUHJpdmF0ZS5zcGVjaWVzQ29uc3RydWN0b3IpOgorICAgICAgICAoZ2xvYmFs
UHJpdmF0ZS5jb3B5RGF0YVByb3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNldENvbnN0YW50SWRlbnRpZmllclNldFJlZ2lz
dGVycyk6IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
ICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6VW5saW5rZWRD
b2RlQmxvY2s6OmFkZEJpdFZlY3Rvcik6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojpjb25zdGFudFJlZ2lzdGVycyk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjph
ZGRTZXRDb25zdGFudCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2Nr
Ojpjb25zdGFudElkZW50aWZpZXJTZXRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgor
ICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
U3ByZWFkRXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZSk6IERlbGV0ZWQuCisgICAgICAgICog
cGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJv
cGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRPYmplY3RQYXR0ZXJuRW50
cnkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVPYmplY3RTcHJlYWRFeHByZXNz
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kT2JqZWN0UGF0
dGVyblJlc3RFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnNldENv
bnRhaW5zT2JqZWN0UmVzdEVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6OlByb3BlcnR5Tm9kZTo6UHJvcGVydHlOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ByZWFkRXhwcmVzc2lvbk5vZGU6OlNwcmVhZEV4cHJlc3Npb25O
b2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0U3ByZWFkRXhwcmVzc2lvbk5vZGU6Ok9iamVjdFNw
cmVhZEV4cHJlc3Npb25Ob2RlKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoK
KyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmFwcGVuZEVudHJ5KToKKyAgICAgICAg
KEpTQzo6T2JqZWN0U3ByZWFkRXhwcmVzc2lvbk5vZGU6OmV4cHJlc3Npb24pOiBEZWxldGVkLgor
ICAgICAgICAoSlNDOjpPYmplY3RQYXR0ZXJuTm9kZTo6c2V0Q29udGFpbnNSZXN0RWxlbWVudCk6
IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAqIHBhcnNlci9T
eW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVNwcmVh
ZEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVQcm9wZXJ0
eSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJhdG9yU3RhY2tQb3ApOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVPYmplY3RTcHJlYWRFeHByZXNzaW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6T2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OlNldFByb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24pOgorCiAyMDE3LTA1LTE1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBs
ZS5jb20+CiAKICAgICAgICAgSlNFbnZpcm9ubWVudFJlY29yZDo6YWxsb2NhdGlvblNpemVGb3JT
Y29wZVNpemUoKSBhbmQgb2Zmc2V0T2ZWYXJpYWJsZShTY29wZU9mZnNldCkgc2hvdWxkIHVzZWQg
Y2hlY2tlZCBhcml0aG1ldGljCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0
aW5zL0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAyMTY4ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw3ICsx
NTksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhzdHJpbmdJbmNsdWRlc0ludGVybmFs
KSBcCiAgICAgbWFjcm8oc3RyaW5nU3BsaXRGYXN0KSBcCiAgICAgbWFjcm8oc3RyaW5nU3Vic3Ry
SW50ZXJuYWwpIFwKLSAgICBtYWNybyh0b09iamVjdCkgXAogICAgIG1hY3JvKG1ha2VCb3VuZEZ1
bmN0aW9uKSBcCiAgICAgbWFjcm8oaGFzT3duTGVuZ3RoUHJvcGVydHkpIFwKICAgICBtYWNybyhp
bXBvcnRNb2R1bGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9HbG9i
YWxPcGVyYXRpb25zLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9HbG9iYWxPcGVyYXRpb25zLmpzCShyZXZpc2lvbiAyMTY4ODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvR2xvYmFsT3BlcmF0aW9ucy5qcwkod29ya2luZyBjb3B5KQpA
QCAtNzksMjkgKzc5LDMgQEAgZnVuY3Rpb24gc3BlY2llc0NvbnN0cnVjdG9yKG9iaiwgZGVmYXVs
dAogICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CiAgICAgQHRocm93VHlwZUVycm9yKCJ8dGhp
c3wuY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdIGlzIG5vdCBhIGNvbnN0cnVjdG9yIik7CiB9
Ci0KLUBnbG9iYWxQcml2YXRlCi1mdW5jdGlvbiBjb3B5RGF0YVByb3BlcnRpZXModGFyZ2V0LCBz
b3VyY2UsIGV4Y2x1ZGVkU2V0KQotewotICAgIGlmICghQGlzT2JqZWN0KHRhcmdldCkpCi0gICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigidGFyZ2V0IG5lZWRzIHRvIGJlIGFuIG9iamVjdCIpOwotICAg
IAotICAgIGlmIChzb3VyY2UgPT0gbnVsbCkKLSAgICAgICAgcmV0dXJuIHRhcmdldDsKLSAgICAK
LSAgICBsZXQgZnJvbSA9IEBPYmplY3Qoc291cmNlKTsKLSAgICBsZXQga2V5cyA9IEBSZWZsZWN0
LkBvd25LZXlzKGZyb20pOwotICAgIGxldCBrZXlzTGVuZ3RoID0ga2V5cy5sZW5ndGg7Ci0gICAg
Zm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzTGVuZ3RoOyBpKyspIHsKLSAgICAgICAgbGV0IG5leHRL
ZXkgPSBrZXlzW2ldOwotICAgICAgICBpZiAoIWV4Y2x1ZGVkU2V0LkBoYXMobmV4dEtleSkpIHsK
LSAgICAgICAgICAgIGxldCBkZXNjID0gQE9iamVjdC5AZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KGZyb20sIG5leHRLZXkpOwotICAgICAgICAgICAgaWYgKGRlc2MuZW51bWVyYWJsZSAmJiBkZXNj
ICE9PSBAdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByb3BWYWx1ZSA9IGZyb21b
bmV4dEtleV07Ci0gICAgICAgICAgICAgICAgQE9iamVjdC5AZGVmaW5lUHJvcGVydHkodGFyZ2V0
LCBuZXh0S2V5LCB7dmFsdWU6IHByb3BWYWx1ZSwgZW51bWVyYWJsZTogdHJ1ZSwgd3JpdGFibGU6
IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRhcmdldDsKLX0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAyMTY4ODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTgsOCArNTgsNiBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0xleGlj
YWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTW9kdWxlRW52aXJvbm1lbnQuaCIKLSNpbmNs
dWRlICJKU1NldC5oIgotI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNUZW1wbGF0
ZVJlZ2lzdHJ5S2V5LmgiCiAjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTExJbnRF
bnRyeXBvaW50LmgiCkBAIC00MDcsOCArNDA1LDYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgUwogCiAgICAgaWYgKCFzZXRDb25zdGFudFJlZ2lzdGVycyh1bmxpbmtl
ZENvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMoKSwgdW5saW5rZWRDb2RlQmxvY2stPmNvbnN0
YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbigpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghc2V0Q29uc3RhbnRJZGVudGlmaWVyU2V0UmVnaXN0ZXJzKHZtLCB1bmxpbmtlZENv
ZGVCbG9jay0+Y29uc3RhbnRJZGVudGlmaWVyU2V0cygpKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+dXNlc0dsb2JhbE9iamVjdCgpKQogICAgICAg
ICBtX2NvbnN0YW50UmVnaXN0ZXJzW3VubGlua2VkQ29kZUJsb2NrLT5nbG9iYWxPYmplY3RSZWdp
c3RlcigpLnRvQ29uc3RhbnRJbmRleCgpXS5zZXQoKm1fdm0sIHRoaXMsIG1fZ2xvYmFsT2JqZWN0
LmdldCgpKTsKIApAQCAtODY3LDI5ICs4NjMsNiBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQog
I2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKLWJvb2wgQ29kZUJsb2NrOjpzZXRDb25zdGFudElk
ZW50aWZpZXJTZXRSZWdpc3RlcnMoVk0mIHZtLCBjb25zdCBWZWN0b3I8Q29uc3RhbnRJbmRlbnRp
ZmllclNldEVudHJ5PiYgY29uc3RhbnRzKQotewotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9i
YWxPYmplY3QuZ2V0KCk7Ci0gICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGVudHJ5IDogY29uc3RhbnRzKSB7Ci0g
ICAgICAgIFN0cnVjdHVyZSogc2V0U3RydWN0dXJlID0gZ2xvYmFsT2JqZWN0LT5zZXRTdHJ1Y3R1
cmUoKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwotICAgICAg
ICBKU1NldCoganNTZXQgPSBKU1NldDo6Y3JlYXRlKGV4ZWMsIHZtLCBzZXRTdHJ1Y3R1cmUpOwot
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7Ci0KLSAgICAgICAgY29u
c3QgSWRlbnRpZmllclNldCYgc2V0ID0gZW50cnkuZmlyc3Q7Ci0gICAgICAgIGZvciAoYXV0byYg
c2V0RW50cnkgOiBzZXQpIHsKLSAgICAgICAgICAgIEpTU3RyaW5nKiBqc1N0cmluZyA9IGpzT3du
ZWRTdHJpbmcoJnZtLCBzZXRFbnRyeS5nZXQoKSk7Ci0gICAgICAgICAgICBqc1NldC0+YWRkKGV4
ZWMsIEpTVmFsdWUoanNTdHJpbmcpKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKLSAgICAgICAgfQotICAgICAgICBtX2NvbnN0YW50UmVnaXN0ZXJzW2Vu
dHJ5LnNlY29uZF0uc2V0KHZtLCB0aGlzLCBKU1ZhbHVlKGpzU2V0KSk7Ci0gICAgfQotICAgIHJl
dHVybiB0cnVlOwotfQotCiBib29sIENvZGVCbG9jazo6c2V0Q29uc3RhbnRSZWdpc3RlcnMoY29u
c3QgVmVjdG9yPFdyaXRlQmFycmllcjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgVmVjdG9y
PFNvdXJjZUNvZGVSZXByZXNlbnRhdGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbikKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSgqbV92bSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lv
biAyMTY4ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkyMCw4ICs5MjAsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1
cGRhdGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2
ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcywgdW5zaWduZWQmIG51bWJlck9mU2FtcGxlc0luUHJv
ZmlsZXMpOwogCi0gICAgYm9vbCBzZXRDb25zdGFudElkZW50aWZpZXJTZXRSZWdpc3RlcnMoVk0m
LCBjb25zdCBWZWN0b3I8Q29uc3RhbnRJbmRlbnRpZmllclNldEVudHJ5PiYgY29uc3RhbnRzKTsK
LQogICAgIGJvb2wgc2V0Q29uc3RhbnRSZWdpc3RlcnMoY29uc3QgVmVjdG9yPFdyaXRlQmFycmll
cjxVbmtub3duPj4mIGNvbnN0YW50cywgY29uc3QgVmVjdG9yPFNvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbj4mIGNvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbik7CiAKICAgICB2b2lkIHJl
cGxhY2VDb25zdGFudChpbnQgaW5kZXgsIEpTVmFsdWUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAkocmV2aXNp
b24gMjE2ODg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSw5IEBACiAjaW5jbHVkZSAiVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJWYXJpYWJsZUVudmlyb25tZW50
LmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgog
I2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9UcmlTdGF0ZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
NjgsNyArNjUsNiBAQCB0eXBlZGVmIHVuc2lnbmVkIFVubGlua2VkQXJyYXlQcm9maWxlOwogdHlw
ZWRlZiB1bnNpZ25lZCBVbmxpbmtlZEFycmF5QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVu
c2lnbmVkIFVubGlua2VkT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiB0eXBlZGVmIHVuc2lnbmVk
IFVubGlua2VkTExJbnRDYWxsTGlua0luZm87Ci10eXBlZGVmIHN0ZDo6cGFpcjxJZGVudGlmaWVy
U2V0LCB1bnNpZ25lZD4gQ29uc3RhbnRJbmRlbnRpZmllclNldEVudHJ5OwogCiBzdHJ1Y3QgVW5s
aW5rZWRTdHJpbmdKdW1wVGFibGUgewogICAgIHN0cnVjdCBPZmZzZXRMb2NhdGlvbiB7CkBAIC0x
ODYsMTYgKzE4Miw2IEBAIHB1YmxpYzoKICAgICAgICAgbV9iaXRWZWN0b3JzLmFwcGVuZChXVEZN
b3ZlKGJpdFZlY3RvcikpOwogICAgICAgICByZXR1cm4gbV9iaXRWZWN0b3JzLnNpemUoKSAtIDE7
CiAgICAgfQotICAgIAotICAgIHZvaWQgYWRkU2V0Q29uc3RhbnQoSWRlbnRpZmllclNldCYgc2V0
KQotICAgIHsKLSAgICAgICAgVk0mIHZtID0gKnRoaXMtPnZtKCk7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gbG9ja0R1cmluZ01hcmtpbmcodm0uaGVhcCwgKnRoaXMpOwotICAgICAgICB1bnNpZ25l
ZCByZXN1bHQgPSBtX2NvbnN0YW50UmVnaXN0ZXJzLnNpemUoKTsKLSAgICAgICAgbV9jb25zdGFu
dFJlZ2lzdGVycy5hcHBlbmQoV3JpdGVCYXJyaWVyPFVua25vd24+KCkpOwotICAgICAgICBtX2Nv
bnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRhdGlvbi5hcHBlbmQoU291cmNlQ29kZVJlcHJlc2Vu
dGF0aW9uOjpPdGhlcik7Ci0gICAgICAgIG1fY29uc3RhbnRJZGVudGlmaWVyU2V0cy5hcHBlbmQo
Q29uc3RhbnRJbmRlbnRpZmllclNldEVudHJ5KHNldCwgcmVzdWx0KSk7Ci0gICAgfQogCiAgICAg
dW5zaWduZWQgYWRkQ29uc3RhbnQoSlNWYWx1ZSB2LCBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24g
c291cmNlQ29kZVJlcHJlc2VudGF0aW9uID0gU291cmNlQ29kZVJlcHJlc2VudGF0aW9uOjpPdGhl
cikKICAgICB7CkBAIC0yMjgsNyArMjE0LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9s
aW5rVGltZUNvbnN0YW50c1tpbmRleF07CiAgICAgfQogICAgIGNvbnN0IFZlY3RvcjxXcml0ZUJh
cnJpZXI8VW5rbm93bj4+JiBjb25zdGFudFJlZ2lzdGVycygpIHsgcmV0dXJuIG1fY29uc3RhbnRS
ZWdpc3RlcnM7IH0KLSAgICBjb25zdCBWZWN0b3I8Q29uc3RhbnRJbmRlbnRpZmllclNldEVudHJ5
PiYgY29uc3RhbnRJZGVudGlmaWVyU2V0cygpIHsgcmV0dXJuIG1fY29uc3RhbnRJZGVudGlmaWVy
U2V0czsgfQogICAgIGNvbnN0IFdyaXRlQmFycmllcjxVbmtub3duPiYgY29uc3RhbnRSZWdpc3Rl
cihpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNbaW5kZXggLSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF07IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXND
b25zdGFudFJlZ2lzdGVySW5kZXgoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiBpbmRleCA+PSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleDsgfQogICAgIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBn
ZXRDb25zdGFudChpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RhbnRSZWdpc3RlcnNb
aW5kZXggLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleF0uZ2V0KCk7IH0KQEAgLTQ2Miw3ICs0
NDcsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxJZGVudGlmaWVyPiBtX2lkZW50aWZpZXJzOwog
ICAgIFZlY3RvcjxCaXRWZWN0b3I+IG1fYml0VmVjdG9yczsKICAgICBWZWN0b3I8V3JpdGVCYXJy
aWVyPFVua25vd24+PiBtX2NvbnN0YW50UmVnaXN0ZXJzOwotICAgIFZlY3RvcjxDb25zdGFudElu
ZGVudGlmaWVyU2V0RW50cnk+IG1fY29uc3RhbnRJZGVudGlmaWVyU2V0czsKICAgICBWZWN0b3I8
U291cmNlQ29kZVJlcHJlc2VudGF0aW9uPiBtX2NvbnN0YW50c1NvdXJjZUNvZGVSZXByZXNlbnRh
dGlvbjsKICAgICB0eXBlZGVmIFZlY3RvcjxXcml0ZUJhcnJpZXI8VW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU+PiBGdW5jdGlvbkV4cHJlc3Npb25WZWN0b3I7CiAgICAgRnVuY3Rpb25FeHByZXNz
aW9uVmVjdG9yIG1fZnVuY3Rpb25EZWNsczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lv
biAyMTY4ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1MSwyNyArMTk1MSw2IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TG9hZCgKICAgICByZXR1cm4gY29uc3RhbnRJ
RDsKIH0KIAotUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb2FkKFJlZ2lzdGVy
SUQqIGRzdCwgSWRlbnRpZmllclNldCYgc2V0KQotewotICAgIGZvciAoY29uc3QgYXV0byYgZW50
cnkgOiBtX2NvZGVCbG9jay0+Y29uc3RhbnRJZGVudGlmaWVyU2V0cygpKSB7Ci0gICAgICAgIGlm
IChlbnRyeS5maXJzdCAhPSBzZXQpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgCi0g
ICAgICAgIHJldHVybiAmbV9jb25zdGFudFBvb2xSZWdpc3RlcnNbZW50cnkuc2Vjb25kXTsKLSAg
ICB9Ci0gICAgCi0gICAgdW5zaWduZWQgaW5kZXggPSBtX25leHRDb25zdGFudE9mZnNldDsKLSAg
ICBtX2NvbnN0YW50UG9vbFJlZ2lzdGVycy5hcHBlbmQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggKyBtX25leHRDb25zdGFudE9mZnNldCk7Ci0gICAgKyttX25leHRDb25zdGFudE9mZnNldDsK
LSAgICBtX2NvZGVCbG9jay0+YWRkU2V0Q29uc3RhbnQoc2V0KTsKLSAgICBSZWdpc3RlcklEKiBt
X3NldFJlZ2lzdGVyID0gJm1fY29uc3RhbnRQb29sUmVnaXN0ZXJzW2luZGV4XTsKLSAgICAKLSAg
ICBpZiAoZHN0KQotICAgICAgICByZXR1cm4gZW1pdE1vdmUoZHN0LCBtX3NldFJlZ2lzdGVyKTsK
LSAgICAKLSAgICByZXR1cm4gbV9zZXRSZWdpc3RlcjsKLX0KLQogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRMb2FkR2xvYmFsT2JqZWN0KFJlZ2lzdGVySUQqIGRzdCkKIHsKICAg
ICBpZiAoIW1fZ2xvYmFsT2JqZWN0UmVnaXN0ZXIpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlz
aW9uIDIxNjg4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTg3LDcgKzU4Nyw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGJv
b2wpOwogICAgICAgICBSZWdpc3RlcklEKiBlbWl0TG9hZChSZWdpc3RlcklEKiBkc3QsIGNvbnN0
IElkZW50aWZpZXImKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJRCog
ZHN0LCBKU1ZhbHVlLCBTb3VyY2VDb2RlUmVwcmVzZW50YXRpb24gPSBTb3VyY2VDb2RlUmVwcmVz
ZW50YXRpb246Ok90aGVyKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdExvYWQoUmVnaXN0ZXJJ
RCogZHN0LCBJZGVudGlmaWVyU2V0JiBleGNsdWRlZExpc3QpOwogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0TG9hZEdsb2JhbE9iamVjdChSZWdpc3RlcklEKiBkc3QpOwogCiAgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRVbmFyeU9wKE9wY29kZUlELCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IHNyYyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAyMTY4ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDEwICs0MSw4IEBACiAjaW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiU3RhY2tBbGlnbm1l
bnQuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZGluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9VbmlxdWVkU3RyaW5nSW1wbC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV1RGOwogCkBAIC01MTYsNyArNTE0LDcgQEAgUmVnaXN0ZXJJRCogUHJv
cGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjbwogICAgICAgICAgICAgICAgIGhhc0NvbXB1dGVkUHJv
cGVydHkgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKG5vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQgfHwgbm9k
ZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpTcHJlYWQpCisgICAgICAgICAgICBpZiAobm9kZS0+
bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICAgICAgLy8gRHVwbGljYXRlcyBhcmUgcG9zc2libGUuCkBAIC01MzgsOSAr
NTM2LDYgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjbwogICAgICAg
ICAgICAgaWYgKG5vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKICAgICAg
ICAgICAgICAgICBlbWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShnZW5lcmF0b3IsIGRzdCwgKm5vZGUp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChub2Rl
LT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OlNwcmVhZCkgewotICAgICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZShkc3QsIG5vZGUtPm1fYXNzaWduKTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUtPm1fYXNzaWduKTsKQEAgLTQwNjYsNTYgKzQw
NjEsMjUgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6dG9TdHJpbmcoU3RyaW5nQgogdm9pZCBP
YmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIHJocykgY29uc3QKIHsKICAgICBnZW5lcmF0b3IuZW1pdFJlcXVpcmVPYmpl
Y3RDb2VyY2libGUocmhzLCBBU0NJSUxpdGVyYWwoIlJpZ2h0IHNpZGUgb2YgYXNzaWdubWVudCBj
YW5ub3QgYmUgZGVzdHJ1Y3R1cmVkIikpOwotICAgIAotICAgIElkZW50aWZpZXJTZXQgZXhjbHVk
ZWRTZXQ7Ci0KICAgICBmb3IgKGNvbnN0IGF1dG8mIHRhcmdldCA6IG1fdGFyZ2V0UGF0dGVybnMp
IHsKLSAgICAgICAgaWYgKHRhcmdldC5iaW5kaW5nVHlwZSA9PSBCaW5kaW5nVHlwZTo6RWxlbWVu
dCkgewotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRlbXAgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBpZiAoIXRhcmdldC5wcm9wZXJ0eUV4cHJlc3Npb24p
IHsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBTaG91bGQgbm90IGVtaXQg
Z2V0X2J5X2lkIGZvciBpbmRleGVkIG9uZXMuCi0gICAgICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDx1aW50MzJfdD4gb3B0aW9uYWxJbmRleCA9IHBhcnNlSW5kZXgodGFyZ2V0LnByb3BlcnR5TmFt
ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25hbEluZGV4KQotICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVy
dHlOYW1lKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHBJbmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051
bWJlcihvcHRpb25hbEluZGV4LnZhbHVlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMsIHBJbmRleC5nZXQoKSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcHJvcGVydHlOYW1lID0gZ2VuZXJhdG9yLmVtaXROb2RlKHRhcmdldC5wcm9w
ZXJ0eUV4cHJlc3Npb24pOwotICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0QnlWYWwo
dGVtcC5nZXQoKSwgcmhzLCBwcm9wZXJ0eU5hbWUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdGVtcCA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgaWYgKCF0
YXJnZXQucHJvcGVydHlFeHByZXNzaW9uKSB7CisgICAgICAgICAgICAvLyBTaG91bGQgbm90IGVt
aXQgZ2V0X2J5X2lkIGZvciBpbmRleGVkIG9uZXMuCisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQzMl90PiBvcHRpb25hbEluZGV4ID0gcGFyc2VJbmRleCh0YXJnZXQucHJvcGVydHlOYW1l
KTsKKyAgICAgICAgICAgIGlmICghb3B0aW9uYWxJbmRleCkKKyAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEdldEJ5SWQodGVtcC5nZXQoKSwgcmhzLCB0YXJnZXQucHJvcGVydHlOYW1lKTsK
KyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBp
bmRleCA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihvcHRpb25hbEluZGV4
LnZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5VmFsKHRlbXAu
Z2V0KCksIHJocywgaW5kZXguZ2V0KCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBpZiAoVU5MSUtFTFkobV9jb250YWluc1Jlc3RFbGVtZW50KSkKLSAgICAgICAg
ICAgICAgICBleGNsdWRlZFNldC5hZGQodGFyZ2V0LnByb3BlcnR5TmFtZS5pbXBsKCkpOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICBpZiAodGFyZ2V0LmRlZmF1bHRWYWx1ZSkKLSAgICAgICAg
ICAgICAgICBhc3NpZ25EZWZhdWx0VmFsdWVJZlVuZGVmaW5lZChnZW5lcmF0b3IsIHRlbXAuZ2V0
KCksIHRhcmdldC5kZWZhdWx0VmFsdWUpOwotICAgICAgICAgICAgdGFyZ2V0LnBhdHRlcm4tPmJp
bmRWYWx1ZShnZW5lcmF0b3IsIHRlbXAuZ2V0KCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4Y2x1ZGVkU2V0UmVnID0gZ2VuZXJhdG9yLmVtaXRM
b2FkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZXhjbHVkZWRTZXQpOwotICAgICAgICAKLSAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBuZXdPYmplY3QgPSBnZW5lcmF0b3IuZW1pdE5l
d09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICAvLyBsb2FkIGFuZCBjYWxsIEBjb3B5RGF0YVByb3BlcnRpZXMKLSAgICAgICAgICAgIGF1
dG8gdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVp
bHRpbk5hbWVzKCkuY29weURhdGFQcm9wZXJ0aWVzUHJpdmF0ZU5hbWUoKSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVl
ZGVkKHNjb3BlLmdldCgpLCBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShzY29wZS5nZXQoKSwg
dmFyKSk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0aWVz
ID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAzKTsKLSAgICAgICAg
ICAgIHVuc2lnbmVkIGFyZ3VtZW50Q291bnQgPSAwOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRMb2FkKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRNb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50Kysp
LCBuZXdPYmplY3QuZ2V0KCkpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGFyZ3Mu
YXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCByaHMpOwotICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBl
eGNsdWRlZFNldFJlZy5nZXQoKSk7Ci0KLSAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBy
ZXN1bHQgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgICAgICBnZW5lcmF0b3Iu
ZW1pdENhbGwocmVzdWx0LmdldCgpLCBjb3B5RGF0YVByb3BlcnRpZXMuZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgYXJncywgZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpLCBEZWJ1
Z2dhYmxlQ2FsbDo6Tm8pOwotICAgICAgICAgICAgdGFyZ2V0LnBhdHRlcm4tPmJpbmRWYWx1ZShn
ZW5lcmF0b3IsIHJlc3VsdC5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJvcGVydHlOYW1lID0gZ2VuZXJhdG9yLmVtaXROb2RlKHRhcmdldC5wcm9wZXJ0eUV4cHJlc3Np
b24pOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRCeVZhbCh0ZW1wLmdldCgpLCByaHMs
IHByb3BlcnR5TmFtZS5nZXQoKSk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAodGFyZ2V0LmRl
ZmF1bHRWYWx1ZSkKKyAgICAgICAgICAgIGFzc2lnbkRlZmF1bHRWYWx1ZUlmVW5kZWZpbmVkKGdl
bmVyYXRvciwgdGVtcC5nZXQoKSwgdGFyZ2V0LmRlZmF1bHRWYWx1ZSk7CisgICAgICAgIHRhcmdl
dC5wYXR0ZXJuLT5iaW5kVmFsdWUoZ2VuZXJhdG9yLCB0ZW1wLmdldCgpKTsKICAgICB9CiB9CiAK
QEAgLTQyNjUsMzEgKzQyMjksNCBAQCBSZWdpc3RlcklEKiBTcHJlYWRFeHByZXNzaW9uTm9kZTo6
ZW1pdEJ5CiAgICAgcmV0dXJuIDA7CiB9CiAKLVJlZ2lzdGVySUQqIE9iamVjdFNwcmVhZEV4cHJl
c3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQotewotICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzcmMgPSBnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXROb2RlKHNyYy5nZXQoKSwgbV9leHBy
ZXNzaW9uKTsKLSAgICBJZGVudGlmaWVyU2V0IGV4Y2x1ZGVkU2V0OwotICAgIAotICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBleGNsdWRlZFNldFJlZyA9IGdlbmVyYXRvci5lbWl0TG9hZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGV4Y2x1ZGVkU2V0KTsKLSAgICAgICAgCi0gICAgLy8gbG9hZCBh
bmQgY2FsbCBAY29weURhdGFQcm9wZXJ0aWVzCi0gICAgYXV0byB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUoZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5jb3B5RGF0YVBy
b3BlcnRpZXNQcml2YXRlTmFtZSgpKTsKLSAgICAKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2Nv
cGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgZ2VuZXJhdG9yLm1vdmVUb0Rlc3Rp
bmF0aW9uSWZOZWVkZWQoc2NvcGUuZ2V0KCksIGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKHNj
b3BlLmdldCgpLCB2YXIpKTsKLSAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29weURhdGFQcm9wZXJ0
aWVzID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwotICAgIAotICAgIENhbGxBcmd1
bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDMpOwotICAgIHVuc2lnbmVkIGFyZ3VtZW50
Q291bnQgPSAwOwotICAgIGdlbmVyYXRvci5lbWl0TG9hZChhcmdzLnRoaXNSZWdpc3RlcigpLCBq
c1VuZGVmaW5lZCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdE1vdmUoYXJncy5hcmd1bWVudFJlZ2lz
dGVyKGFyZ3VtZW50Q291bnQrKyksIGRzdCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRNb3ZlKGFyZ3Mu
YXJndW1lbnRSZWdpc3Rlcihhcmd1bWVudENvdW50KyspLCBzcmMuZ2V0KCkpOwotICAgIGdlbmVy
YXRvci5lbWl0TW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoYXJndW1lbnRDb3VudCsrKSwgZXhj
bHVkZWRTZXRSZWcuZ2V0KCkpOwotICAgIAotICAgIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGNvcHlEYXRhUHJvcGVydGllcy5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBhcmdzLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCksIERlYnVnZ2Fi
bGVDYWxsOjpObyk7Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgJKHJldmlz
aW9uIDIxNjg4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsMTMgKzI3NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdFNwcmVh
ZEV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHJlc3Npb24sIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQotICAgIHsKLSAgICAg
ICAgYXV0byBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBPYmplY3RTcHJlYWRFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbiwgZXhwcmVzc2lvbik7Ci0gICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKLSAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAgfQot
CiAgICAgVGVtcGxhdGVTdHJpbmdOb2RlKiBjcmVhdGVUZW1wbGF0ZVN0cmluZyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBjb29rZWQsIGNvbnN0IElk
ZW50aWZpZXIqIHJhdykKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IFRlbXBsYXRlU3RyaW5nTm9kZShsb2NhdGlvbiwgY29va2VkLCByYXcpOwpAQCAtNTAyLDEwICs0
OTUsNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgUHJvcGVydHlOb2RlKCpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUsIHB1dFR5cGUsIHN1
cGVyQmluZGluZywgaXNDbGFzc1Byb3BlcnR5KTsKICAgICB9Ci0gICAgUHJvcGVydHlOb2RlKiBj
cmVhdGVQcm9wZXJ0eShFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSBwdXRUeXBlLCBib29sLCBTdXBlckJpbmRpbmcgc3Vw
ZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fcGFyc2VyQXJlbmEpIFByb3BlcnR5Tm9kZShub2RlLCB0eXBlLCBwdXRUeXBlLCBzdXBl
ckJpbmRpbmcsIGlzQ2xhc3NQcm9wZXJ0eSk7Ci0gICAgfQogICAgIFByb3BlcnR5Tm9kZSogY3Jl
YXRlUHJvcGVydHkoVk0qIHZtLCBQYXJzZXJBcmVuYSYgcGFyc2VyQXJlbmEsIGRvdWJsZSBwcm9w
ZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwg
UHJvcGVydHlOb2RlOjpQdXRUeXBlIHB1dFR5cGUsIGJvb2wsIFN1cGVyQmluZGluZyBzdXBlckJp
bmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyAo
bV9wYXJzZXJBcmVuYSkgUHJvcGVydHlOb2RlKHBhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgp
Lm1ha2VOdW1lcmljSWRlbnRpZmllcih2bSwgcHJvcGVydHlOYW1lKSwgbm9kZSwgdHlwZSwgcHV0
VHlwZSwgc3VwZXJCaW5kaW5nLCBpc0NsYXNzUHJvcGVydHkpOwpAQCAtOTU1LDI1ICs5NDQsMTUg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KE9iamVj
dFBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCB3YXNT
dHJpbmcsIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIsIERlc3RydWN0dXJpbmdQYXR0ZXJu
IHBhdHRlcm4sIEV4cHJlc3Npb25Ob2RlKiBkZWZhdWx0VmFsdWUpCiAgICAgewotICAgICAgICBu
b2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgaWRlbnRpZmllciwgd2FzU3RyaW5nLCBwYXR0ZXJu
LCBkZWZhdWx0VmFsdWUsIE9iamVjdFBhdHRlcm5Ob2RlOjpCaW5kaW5nVHlwZTo6RWxlbWVudCk7
CisgICAgICAgIG5vZGUtPmFwcGVuZEVudHJ5KGxvY2F0aW9uLCBpZGVudGlmaWVyLCB3YXNTdHJp
bmcsIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CiAgICAgICAgIHRyeUluZmVyTmFtZUluUGF0dGVy
bihwYXR0ZXJuLCBkZWZhdWx0VmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQgYXBwZW5kT2JqZWN0
UGF0dGVybkVudHJ5KE9iamVjdFBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5RXhwcmVzc2lvbiwgRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm4gcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICB7Ci0g
ICAgICAgIG5vZGUtPmFwcGVuZEVudHJ5KGxvY2F0aW9uLCBwcm9wZXJ0eUV4cHJlc3Npb24sIHBh
dHRlcm4sIGRlZmF1bHRWYWx1ZSwgT2JqZWN0UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGVt
ZW50KTsKKyAgICAgICAgbm9kZS0+YXBwZW5kRW50cnkobG9jYXRpb24sIHByb3BlcnR5RXhwcmVz
c2lvbiwgcGF0dGVybiwgZGVmYXVsdFZhbHVlKTsKICAgICAgICAgdHJ5SW5mZXJOYW1lSW5QYXR0
ZXJuKHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSk7CiAgICAgfQotICAgIAotICAgIHZvaWQgYXBwZW5k
T2JqZWN0UGF0dGVyblJlc3RFbnRyeShPYmplY3RQYXR0ZXJuIG5vZGUsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuIHBhdHRlcm4pCi0gICAgewot
ICAgICAgICBub2RlLT5hcHBlbmRFbnRyeShsb2NhdGlvbiwgbnVsbHB0ciwgcGF0dGVybiwgbnVs
bHB0ciwgT2JqZWN0UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpSZXN0RWxlbWVudCk7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRDb250YWluc09iamVjdFJlc3RFbGVtZW50KE9iamVjdFBhdHRlcm4g
bm9kZSwgYm9vbCBjb250YWluc1Jlc3RFbGVtZW50KQotICAgIHsKLSAgICAgICAgbm9kZS0+c2V0
Q29udGFpbnNSZXN0RWxlbWVudChjb250YWluc1Jlc3RFbGVtZW50KTsKLSAgICB9CiAKICAgICBC
aW5kaW5nUGF0dGVybiBjcmVhdGVCaW5kaW5nTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYgYm91bmRQcm9wZXJ0eSwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IHN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kLCBBc3NpZ25tZW50Q29udGV4dCBjb250
ZXh0KQogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAyMTY4ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDE5ICsy
MzQsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBtX2lzQ2xhc3NQcm9wZXJ0eShpc0Ns
YXNzUHJvcGVydHkpCiAgICAgewogICAgIH0KLSAgICAKLSAgICBpbmxpbmUgUHJvcGVydHlOb2Rl
OjpQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRUeXBl
IHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3BlcnR5
KQotICAgICAgICA6IG1fbmFtZShudWxscHRyKQotICAgICAgICAsIG1fYXNzaWduKGFzc2lnbikK
LSAgICAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1
cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKLSAgICAgICAgLCBtX3B1dFR5cGUo
cHV0VHlwZSkKLSAgICAgICAgLCBtX2lzQ2xhc3NQcm9wZXJ0eShpc0NsYXNzUHJvcGVydHkpCi0g
ICAgewotICAgIH0KIAogICAgIGlubGluZSBQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZShFeHBy
ZXNzaW9uTm9kZSogbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlLCBQdXRU
eXBlIHB1dFR5cGUsIFN1cGVyQmluZGluZyBzdXBlckJpbmRpbmcsIGJvb2wgaXNDbGFzc1Byb3Bl
cnR5KQotICAgICAgICA6IG1fbmFtZShudWxscHRyKQorICAgICAgICA6IG1fbmFtZSgwKQogICAg
ICAgICAsIG1fZXhwcmVzc2lvbihuYW1lKQogICAgICAgICAsIG1fYXNzaWduKGFzc2lnbikKICAg
ICAgICAgLCBtX3R5cGUodHlwZSkKQEAgLTMwNCwxMiArMjk0LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICwgbV9leHByZXNzaW9uKGV4cHJlc3Npb24pCiAgICAgewogICAgIH0KLSAgICAK
LSAgICBpbmxpbmUgT2JqZWN0U3ByZWFkRXhwcmVzc2lvbk5vZGU6Ok9iamVjdFNwcmVhZEV4cHJl
c3Npb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByZXNzaW9uKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQotICAgICAg
ICAsIG1fZXhwcmVzc2lvbihleHByZXNzaW9uKQotICAgIHsKLSAgICB9CiAKICAgICBpbmxpbmUg
QXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKICAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlz
aW9uIDIxNjg4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNjQ2LDExICs2NDYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBQcm9wZXJ0eU5vZGUgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBlbnVtIFR5cGUgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRl
ciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyIH07CisgICAg
ICAgIGVudW0gVHlwZSB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29t
cHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiB9OwogICAgICAgICBlbnVtIFB1dFR5cGUgeyBVbmtu
b3duLCBLbm93bkRpcmVjdCB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlm
aWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRUeXBlLCBTdXBlckJpbmRpbmcsIGJvb2wg
aXNDbGFzc1Byb3BlcnR5KTsKLSAgICAgICAgUHJvcGVydHlOb2RlKEV4cHJlc3Npb25Ob2RlKiwg
VHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBib29sIGlzQ2xhc3NQcm9wZXJ0eSk7CiAgICAg
ICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9u
Tm9kZSosIFR5cGUsIFB1dFR5cGUsIFN1cGVyQmluZGluZywgYm9vbCBpc0NsYXNzUHJvcGVydHkp
OwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwcmVzc2lvbjsgfQpAQCAtNjY2LDcgKzY2NSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAg
ICAgdW5zaWduZWQgbV90eXBlIDogNjsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlIDogNTsKICAg
ICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVk
IG1fcHV0VHlwZSA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNDbGFzc1Byb3BlcnR5OiAxOwpA
QCAtNzQ4LDE4ICs3NDcsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc1NwcmVh
ZEV4cHJlc3Npb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgfTsKLSAgICAKLSAgICBjbGFzcyBPYmpl
Y3RTcHJlYWRFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIE9iamVjdFNwcmVh
ZEV4cHJlc3Npb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7
Ci0gICAgICAgIAotICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcmVzc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwcmVzc2lvbjsgfQotICAgICAgICAKLSAgICBwcml2YXRlOgotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOwotICAgICAgICAKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcmVz
c2lvbjsKLSAgICB9OwogCiAgICAgY2xhc3MgQXJndW1lbnRMaXN0Tm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgpAQCAtMjEyNywyOCArMjExNCwxOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgVmVjdG9yPEVudHJ5PiBtX3RhcmdldFBhdHRlcm5zOwogICAgIH07
CiAgICAgCi0gICAgY2xhc3MgT2JqZWN0UGF0dGVybk5vZGUgOiBwdWJsaWMgRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEsIHB1YmxpYyBQYXJz
ZXJBcmVuYURlbGV0YWJsZSB7CisgICAgY2xhc3MgT2JqZWN0UGF0dGVybk5vZGUgOiBwdWJsaWMg
RGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFEZWxldGFibGU6Om9wZXJhdG9y
IG5ldzsKICAgICAgICAgCiAgICAgICAgIE9iamVjdFBhdHRlcm5Ob2RlKCk7Ci0gICAgICAgIGVu
dW0gY2xhc3MgQmluZGluZ1R5cGUgewotICAgICAgICAgICAgRWxlbWVudCwKLSAgICAgICAgICAg
IFJlc3RFbGVtZW50Ci0gICAgICAgIH07Ci0gICAgICAgIHZvaWQgYXBwZW5kRW50cnkoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciwgYm9vbCB3YXNT
dHJpbmcsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVzc2lvbk5vZGUq
IGRlZmF1bHRWYWx1ZSwgQmluZGluZ1R5cGUgYmluZGluZ1R5cGUpCisgICAgICAgIHZvaWQgYXBw
ZW5kRW50cnkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllciwgYm9vbCB3YXNTdHJpbmcsIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwg
RXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgewotICAgICAgICAgICAgbV90
YXJnZXRQYXR0ZXJucy5hcHBlbmQoRW50cnl7IGlkZW50aWZpZXIsIG51bGxwdHIsIHdhc1N0cmlu
ZywgcGF0dGVybiwgZGVmYXVsdFZhbHVlLCBiaW5kaW5nVHlwZSB9KTsKKyAgICAgICAgICAgIG1f
dGFyZ2V0UGF0dGVybnMuYXBwZW5kKEVudHJ5IHsgaWRlbnRpZmllciwgbnVsbHB0ciwgd2FzU3Ry
aW5nLCBwYXR0ZXJuLCBkZWZhdWx0VmFsdWUgfSk7CiAgICAgICAgIH0KIAotICAgICAgICB2b2lk
IGFwcGVuZEVudHJ5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBwcm9w
ZXJ0eUV4cHJlc3Npb24sIERlc3RydWN0dXJpbmdQYXR0ZXJuTm9kZSogcGF0dGVybiwgRXhwcmVz
c2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSwgQmluZGluZ1R5cGUgYmluZGluZ1R5cGUpCisgICAgICAg
IHZvaWQgYXBwZW5kRW50cnkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IHByb3BlcnR5RXhwcmVzc2lvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBwYXR0ZXJuLCBF
eHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtX3Rh
cmdldFBhdHRlcm5zLmFwcGVuZChFbnRyeXsgSWRlbnRpZmllcigpLCBwcm9wZXJ0eUV4cHJlc3Np
b24sIGZhbHNlLCBwYXR0ZXJuLCBkZWZhdWx0VmFsdWUsIGJpbmRpbmdUeXBlIH0pOwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHNldENvbnRhaW5zUmVzdEVsZW1lbnQoYm9vbCBj
b250YWluc1Jlc3RFbGVtZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBtX2NvbnRhaW5zUmVz
dEVsZW1lbnQgPSBjb250YWluc1Jlc3RFbGVtZW50OworICAgICAgICAgICAgbV90YXJnZXRQYXR0
ZXJucy5hcHBlbmQoRW50cnkgeyBJZGVudGlmaWVyKCksIHByb3BlcnR5RXhwcmVzc2lvbiwgZmFs
c2UsIHBhdHRlcm4sIGRlZmF1bHRWYWx1ZSB9KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToK
QEAgLTIxNjEsOSArMjEzOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgYm9vbCB3
YXNTdHJpbmc7CiAgICAgICAgICAgICBEZXN0cnVjdHVyaW5nUGF0dGVybk5vZGUqIHBhdHRlcm47
CiAgICAgICAgICAgICBFeHByZXNzaW9uTm9kZSogZGVmYXVsdFZhbHVlOwotICAgICAgICAgICAg
QmluZGluZ1R5cGUgYmluZGluZ1R5cGU7CiAgICAgICAgIH07Ci0gICAgICAgIGJvb2wgbV9jb250
YWluc1Jlc3RFbGVtZW50IHsgZmFsc2UgfTsKICAgICAgICAgVmVjdG9yPEVudHJ5PiBtX3Rhcmdl
dFBhdHRlcm5zOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAJKHJldmlzaW9uIDIxNjg4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxMywyNyArMTAxMywxMiBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjCiAgICAgICAgIGlmIChoYXNEZXN0
cnVjdHVyaW5nUGF0dGVybikKICAgICAgICAgICAgICpoYXNEZXN0cnVjdHVyaW5nUGF0dGVybiA9
IHRydWU7CiAKLSAgICAgICAgYm9vbCByZXN0RWxlbWVudFdhc0ZvdW5kID0gZmFsc2U7Ci0KICAg
ICAgICAgZG8gewogICAgICAgICAgICAgYm9vbCB3YXNTdHJpbmcgPSBmYWxzZTsKIAogICAgICAg
ICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgICAgICBpZiAoVU5MSUtFTFkobWF0Y2goRE9URE9URE9UKSkpIHsKLSAgICAgICAgICAg
ICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24gPSBtX3Rva2VuLm1fbG9jYXRpb247Ci0gICAg
ICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJuID0g
cGFyc2VCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudChjb250ZXh0LCBraW5kLCBleHBvcnRUeXBl
LCBkdXBsaWNhdGVJZGVudGlmaWVyLCBoYXNEZXN0cnVjdHVyaW5nUGF0dGVybiwgYmluZGluZ0Nv
bnRleHQsIGRlcHRoICsgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1
cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQYXR0ZXJuKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBwcm9wYWdhdGVFcnJv
cigpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kT2JqZWN0UGF0dGVyblJlc3RFbnRy
eShvYmplY3RQYXR0ZXJuLCBsb2NhdGlvbiwgaW5uZXJQYXR0ZXJuKTsKLSAgICAgICAgICAgICAg
ICByZXN0RWxlbWVudFdhc0ZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LnNl
dENvbnRhaW5zT2JqZWN0UmVzdEVsZW1lbnQob2JqZWN0UGF0dGVybiwgcmVzdEVsZW1lbnRXYXNG
b3VuZCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBwcm9wZXJ0eUV4cHJlc3Npb24gPSAwOwogICAgICAgICAgICAgVHJl
ZURlc3RydWN0dXJpbmdQYXR0ZXJuIGlubmVyUGF0dGVybiA9IDA7CkBAIC0xMTA4LDcgKzEwOTMs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjCiAKICAgICAgICAg
aWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9FeHByZXNzaW9ucyAm
JiAhbWF0Y2goQ0xPU0VCUkFDRSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgY29u
c3VtZU9yRmFpbChDTE9TRUJSQUNFLCByZXN0RWxlbWVudFdhc0ZvdW5kID8gIkV4cGVjdGVkIGEg
Y2xvc2luZyAnfScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVy
biIgOiAiRXhwZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnfScgb3IgYW4gJywnIGFmdGVyIGEgcHJv
cGVydHkgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CisgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xP
U0VCUkFDRSwgIkV4cGVjdGVkIGVpdGhlciBhIGNsb3NpbmcgJ30nIG9yIGFuICcsJyBhZnRlciBh
IHByb3BlcnR5IGRlc3RydWN0dXJpbmcgcGF0dGVybiIpOwogICAgICAgICBwYXR0ZXJuID0gb2Jq
ZWN0UGF0dGVybjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzgwNCwxNiArMzc4OSw2IEBA
IG5hbWVkUHJvcGVydHk6CiAgICAgICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KG5vZGUsIG1fbGV4
ZXItPmN1cnJlbnRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVByb3Bl
cnR5KHByb3BlcnR5TmFtZSwgbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPihQ
cm9wZXJ0eU5vZGU6OkNvbnN0YW50IHwgUHJvcGVydHlOb2RlOjpDb21wdXRlZCksIFByb3BlcnR5
Tm9kZTo6VW5rbm93biwgY29tcGxldGUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBpc0NsYXNz
UHJvcGVydHkpOwogICAgIH0KLSAgICBjYXNlIERPVERPVERPVDogewotICAgICAgICBhdXRvIHNw
cmVhZExvY2F0aW9uID0gbV90b2tlbi5tX2xvY2F0aW9uOwotICAgICAgICBhdXRvIHN0YXJ0ID0g
bV90b2tlbi5tX3N0YXJ0UG9zaXRpb247Ci0gICAgICAgIGF1dG8gZGl2b3QgPSBtX3Rva2VuLm1f
ZW5kUG9zaXRpb247Ci0gICAgICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24gZWxl
bSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb25PclByb3BhZ2F0ZUVycm9yQ2xhc3MoY29udGV4
dCk7Ci0gICAgICAgIGZhaWxJZkZhbHNlKGVsZW0sICJDYW5ub3QgcGFyc2Ugc3ViamVjdCBvZiBh
IHNwcmVhZCBvcGVyYXRpb24iKTsKLSAgICAgICAgYXV0byBub2RlID0gY29udGV4dC5jcmVhdGVP
YmplY3RTcHJlYWRFeHByZXNzaW9uKHNwcmVhZExvY2F0aW9uLCBlbGVtLCBzdGFydCwgZGl2b3Qs
IG1fbGFzdFRva2VuRW5kUG9zaXRpb24pOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVQ
cm9wZXJ0eShub2RlLCBQcm9wZXJ0eU5vZGU6OlNwcmVhZCwgUHJvcGVydHlOb2RlOjpVbmtub3du
LCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGlzQ2xhc3NQcm9wZXJ0eSk7Ci0g
ICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZhaWxJZkZhbHNlKG1fdG9rZW4ubV90eXBlICYg
S2V5d29yZFRva2VuRmxhZywgIkV4cGVjdGVkIGEgcHJvcGVydHkgbmFtZSIpOwogICAgICAgICB3
YXNJZGVudCA9IHRydWU7IC8vIFRyZWF0IGtleXdvcmQgdG9rZW4gYXMgYW4gaWRlbnRpZmllcgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgJKHJl
dmlzaW9uIDIxNjg4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICAgICAg
Q29uZGl0aW9uYWxFeHByLCBBc3NpZ25tZW50RXhwciwgVHlwZW9mRXhwciwgTmV3VGFyZ2V0RXhw
ciwKICAgICAgICAgRGVsZXRlRXhwciwgQXJyYXlMaXRlcmFsRXhwciwgQmluZGluZ0Rlc3RydWN0
dXJpbmcsIFJlc3RQYXJhbWV0ZXIsCiAgICAgICAgIEFycmF5RGVzdHJ1Y3R1cmluZywgT2JqZWN0
RGVzdHJ1Y3R1cmluZywgU291cmNlRWxlbWVudHNSZXN1bHQsCi0gICAgICAgIEZ1bmN0aW9uQm9k
eVJlc3VsdCwgU3ByZWFkRXhwciwgT2JqZWN0U3ByZWFkRXhwciwgQXJndW1lbnRzUmVzdWx0LAor
ICAgICAgICBGdW5jdGlvbkJvZHlSZXN1bHQsIFNwcmVhZEV4cHIsIEFyZ3VtZW50c1Jlc3VsdCwK
ICAgICAgICAgUHJvcGVydHlMaXN0UmVzdWx0LCBBcmd1bWVudHNMaXN0UmVzdWx0LCBFbGVtZW50
c0xpc3RSZXN1bHQsCiAgICAgICAgIFN0YXRlbWVudFJlc3VsdCwgRm9ybWFsUGFyYW1ldGVyTGlz
dFJlc3VsdCwgQ2xhdXNlUmVzdWx0LAogICAgICAgICBDbGF1c2VMaXN0UmVzdWx0LCBDb21tYUV4
cHIsIERlc3RydWN0dXJpbmdBc3NpZ25tZW50LApAQCAtMTk0LDcgKzE5NCw2IEBAIHB1YmxpYzoK
ICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gQXJndW1lbnRzUmVzdWx0OyB9CiAg
ICAgaW50IGNyZWF0ZUFyZ3VtZW50cyhpbnQpIHsgcmV0dXJuIEFyZ3VtZW50c1Jlc3VsdDsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVNwcmVhZEV4cHJlc3Npb24oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFNwcmVhZEV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RTcHJlYWRFeHByZXNzaW9uKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiBPYmplY3RTcHJlYWRFeHByOyB9CiAgICAgVGVtcGxhdGVTdHJpbmcgY3JlYXRlVGVtcGxh
dGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGNvbnN0
IElkZW50aWZpZXIqKSB7IHJldHVybiBUZW1wbGF0ZVN0cmluZ1Jlc3VsdDsgfQogICAgIFRlbXBs
YXRlU3RyaW5nTGlzdCBjcmVhdGVUZW1wbGF0ZVN0cmluZ0xpc3QoVGVtcGxhdGVTdHJpbmcpIHsg
cmV0dXJuIFRlbXBsYXRlU3RyaW5nTGlzdFJlc3VsdDsgfQogICAgIFRlbXBsYXRlU3RyaW5nTGlz
dCBjcmVhdGVUZW1wbGF0ZVN0cmluZ0xpc3QoVGVtcGxhdGVTdHJpbmdMaXN0LCBUZW1wbGF0ZVN0
cmluZykgeyByZXR1cm4gVGVtcGxhdGVTdHJpbmdMaXN0UmVzdWx0OyB9CkBAIC0yMTMsMTAgKzIx
Miw2IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICByZXR1cm4gUHJv
cGVydHkobmFtZSwgdHlwZSk7CiAgICAgfQotICAgIFByb3BlcnR5IGNyZWF0ZVByb3BlcnR5KGlu
dCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCwg
U3VwZXJCaW5kaW5nLCBib29sKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUp
OwotICAgIH0KICAgICBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShWTSogdm0sIFBhcnNlckFyZW5h
JiBwYXJzZXJBcmVuYSwgZG91YmxlIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IFByb3BlcnR5Tm9kZTo6UHV0VHlwZSwgYm9vbCBjb21wbGV0ZSwgU3VwZXJCaW5kaW5nLCBib29s
KQogICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKQEAgLTM1NywxMiArMzUyLDYgQEAgcHVi
bGljOgogICAgIHZvaWQgYXBwZW5kT2JqZWN0UGF0dGVybkVudHJ5KEFycmF5UGF0dGVybiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4sIEV4
cHJlc3Npb24pCiAgICAgewogICAgIH0KLSAgICB2b2lkIGFwcGVuZE9iamVjdFBhdHRlcm5SZXN0
RW50cnkoT2JqZWN0UGF0dGVybiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm4pCi0gICAgewotICAgIH0KLSAgICB2b2lkIHNldENvbnRhaW5zT2JqZWN0UmVzdEVs
ZW1lbnQoT2JqZWN0UGF0dGVybiwgYm9vbCkKLSAgICB7Ci0gICAgfQogCiAgICAgRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4gY3JlYXRlQmluZGluZ0xvY2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiwgQXNzaWdubWVudENvbnRleHQpCiAgICAgewpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MjE2ODg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDYgQEAgdm9pZCBPYmplY3RDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmRlZmluZVByb3Bl
cnR5UHJpdmF0ZU5hbWUoKSwgb2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSwgRG9udEVu
dW0sIDMpOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmdldFByb3RvdHlwZU9mUHJpdmF0ZU5hbWUoKSwg
b2JqZWN0Q29uc3RydWN0b3JHZXRQcm90b3R5cGVPZiwgRG9udEVudW0sIDEpOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLmdldE93blByb3BlcnR5TmFtZXNQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1
Y3RvckdldE93blByb3BlcnR5TmFtZXMsIERvbnRFbnVtLCAxKTsKLSAgICBKU0NfTkFUSVZFX0ZV
TkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JQcml2YXRlTmFtZSgpLCBvYmplY3RDb25zdHJ1Y3Rv
ckdldE93blByb3BlcnR5RGVzY3JpcHRvciwgRG9udEVudW0sIDEpOwogfQogCiAvLyBFUyAxOS4x
LjEuMSBPYmplY3QoW3ZhbHVlXSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1NldFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2V0UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjE2ODg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NyArNjcsNiBAQCB2b2lkIFNldFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtCiAgICAg
SlNDX05BVElWRV9GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+
Y2xlYXIsIHNldFByb3RvRnVuY0NsZWFyLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9G
VU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+ZGVsZXRlS2V5d29y
ZCwgc2V0UHJvdG9GdW5jRGVsZXRlLCBEb250RW51bSwgMSk7CiAgICAgSlNDX05BVElWRV9JTlRS
SU5TSUNfRlVOQ1RJT05fV0lUSE9VVF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmhhcywg
c2V0UHJvdG9GdW5jSGFzLCBEb250RW51bSwgMSwgSlNTZXRIYXNJbnRyaW5zaWMpOwotICAgIEpT
Q19OQVRJVkVfSU5UUklOU0lDX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5oYXNQcml2YXRlTmFtZSgpLCBzZXRQcm90b0Z1bmNIYXMs
IERvbnRFbnVtLCAxLCBKU1NldEhhc0ludHJpbnNpYyk7CiAgICAgSlNDX05BVElWRV9GVU5DVElP
Tl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuZW50
cmllc1B1YmxpY05hbWUoKSwgc2V0UHJvdG9GdW5jRW50cmllcywgRG9udEVudW0sIDApOwogCiAg
ICAgSlNGdW5jdGlvbiogdmFsdWVzID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDAsIHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnZhbHVlc1B1YmxpY05hbWUo
KS5zdHJpbmcoKSwgc2V0UHJvdG9GdW5jVmFsdWVzKTsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTY4ODcp
CisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBA
CisyMDE3LTA1LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBS
b2xsaW5nIG91dCByMjE0MDM4IGFuZCByMjEzNjk3OiBDcmFzaGVzIHdoZW4gdXNpbmcgY29tcHV0
ZWQgcHJvcGVydGllcyB3aXRoIHJlc3QgZGVzdHJ1Y3R1cmluZyBhbmQgb2JqZWN0IHNwcmVhZC4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE0Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0hh
c2hTZXQuaDoKKyAgICAgICAgKFdURjo6PSk6CisKIDIwMTctMDUtMTQgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIFBhc3NSZWZQdHIgY2xhc3MgZnJvbSBX
VEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9IYXNoU2V0LmgJKHJldmlzaW9uIDIxNjg4NykKKysrIFNvdXJjZS9XVEYvd3RmL0hh
c2hTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTMsIDIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMTIzLDkgKzEyMyw2IEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyQ29sbGVjdGlvbj4KICAgICAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IE90aGVyQ29sbGVjdGlvbiYpIGNvbnN0OwotICAgICAgICAKLSAgICAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgT3RoZXJDb2xsZWN0aW9uPgotICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgT3RoZXJDb2xsZWN0aW9uJikgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICBI
YXNoVGFibGVUeXBlIG1faW1wbDsKQEAgLTM4MCwxMyArMzc3LDYgQEAgbmFtZXNwYWNlIFdURiB7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQotICAgIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgT3RoZXJDb2xsZWN0aW9uPgotICAgIGlubGluZSBib29sIEhhc2hTZXQ8VCwgVSwgVj46
Om9wZXJhdG9yIT0oY29uc3QgT3RoZXJDb2xsZWN0aW9uJiBvdGhlckNvbGxlY3Rpb24pIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlckNvbGxlY3Rpb24pOwotICAg
IH0KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNjg4NykKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisy
MDE3LTA1LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSb2xs
aW5nIG91dCByMjE0MDM4IGFuZCByMjEzNjk3OiBDcmFzaGVzIHdoZW4gdXNpbmcgY29tcHV0ZWQg
cHJvcGVydGllcyB3aXRoIHJlc3QgZGVzdHJ1Y3R1cmluZyBhbmQgb2JqZWN0IHNwcmVhZC4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjE0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvcGFyc2Vy
LXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL3Bh
cnNlci1zeW50YXgtY2hlY2suanM6CisKIDIwMTctMDUtMTUgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGV4cGVyaW1lbnRhbCBzZXR0aW5nIHRvIGFsbG93
IGRvY3VtZW50IGdlc3R1cmUgaW50ZXJhY3Rpb24gdG8gZnVsZmlsbCBtZWRpYSBwbGF5YmFjayBn
ZXN0dXJlIHJlcXVpcmVtZW50CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9wYXJzZXItc3ludGF4LWNo
ZWNrLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9wYXJzZXItc3lu
dGF4LWNoZWNrLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjE2ODg3KQorKysgTGF5b3V0VGVzdHMv
anMvcGFyc2VyLXN5bnRheC1jaGVjay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEx
NjcsNDYgKzExNjcsOCBAQCBQQVNTIFZhbGlkOiAgICJ2YXIge3g6IFt5LCB7ejoge3o6IFsuLi56
CiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIge3g6IFt5LCB7ejoge3o6IFsuLi56
XX19XX0gPSAyMCB9IgogUEFTUyBJbnZhbGlkOiAidmFyIFsuLi55LCAuLi56XSA9IDIwIi4gUHJv
ZHVjZWQgdGhlIGZvbGxvd2luZyBzeW50YXggZXJyb3I6ICJTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnXScgZm9sbG93aW5nIGEgcmVzdCBlbGVt
ZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybi4iCiBQQVNTIEludmFsaWQ6ICJmdW5jdGlvbiBmKCkg
eyB2YXIgWy4uLnksIC4uLnpdID0gMjAgfSIuIFByb2R1Y2VkIHRoZSBmb2xsb3dpbmcgc3ludGF4
IGVycm9yOiAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIGNs
b3NpbmcgJ10nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4u
IgotUEFTUyBWYWxpZDogICAidmFyIFsuLi57Li4ueX1dID0gMjAiIHdpdGggVHlwZUVycm9yCi1Q
QVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIgWy4uLnsuLi55fV0gPSAyMCB9IgotUEFT
UyBWYWxpZDogICAidmFyIHthLCBiLCAuLi5yfSA9IHthOiAxLCBiOiAyLCBjOiAzfTsiCi1QQVNT
IFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIge2EsIGIsIC4uLnJ9ID0ge2E6IDEsIGI6IDIs
IGM6IDN9OyB9IgotUEFTUyBWYWxpZDogICAidmFyIHthLCBiLCAuLi57ZH19ID0ge2E6IDEsIGI6
IDIsIGM6IDMsIGQ6IDR9OyIKLVBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IHZhciB7YSwg
YiwgLi4ue2R9fSA9IHthOiAxLCBiOiAyLCBjOiAzLCBkOiA0fTsgfSIKLVBBU1MgVmFsaWQ6ICAg
InZhciB7YSwgYiwgLi4ue2QgPSAxNX19ID0ge2E6IDEsIGI6IDIsIGM6IDMsIGQ6IDR9OyIKLVBB
U1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IHZhciB7YSwgYiwgLi4ue2QgPSAxNX19ID0ge2E6
IDEsIGI6IDIsIGM6IDMsIGQ6IDR9OyB9IgotUEFTUyBWYWxpZDogICAidmFyIHthLCBiLCAuLi57
ZCA9IDE1LCAuLi5yfX0gPSB7YTogMSwgYjogMiwgYzogMywgZDogNH07IgotUEFTUyBWYWxpZDog
ICAiZnVuY3Rpb24gZigpIHsgdmFyIHthLCBiLCAuLi57ZCA9IDE1LCAuLi5yfX0gPSB7YTogMSwg
YjogMiwgYzogMywgZDogNH07IH0iCi1QQVNTIFZhbGlkOiAgICIoKHthLCBiLCAuLi5yfSkgPT4g
e30pKHthOiAxLCBiOiAyLCBjOiAzLCBkOiA0fSk7IgotUEFTUyBWYWxpZDogICAiZnVuY3Rpb24g
ZigpIHsgKCh7YSwgYiwgLi4ucn0pID0+IHt9KSh7YTogMSwgYjogMiwgYzogMywgZDogNH0pOyB9
IgotUEFTUyBWYWxpZDogICAiKGZ1bmN0aW9uICh7YSwgYiwgLi4ucn0pIHt9KSh7YTogMSwgYjog
MiwgYzogMywgZDogNH0pOyIKLVBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IChmdW5jdGlv
biAoe2EsIGIsIC4uLnJ9KSB7fSkoe2E6IDEsIGI6IDIsIGM6IDMsIGQ6IDR9KTsgfSIKLVBBU1Mg
VmFsaWQ6ICAgInZhciBhLCBiLCBjOyAoe2EsIGIsIC4uLnJ9ID0ge2E6IDEsIGI6IDIsIGM6IDMs
IGQ6IDR9KTsiCi1QQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyB2YXIgYSwgYiwgYzsgKHth
LCBiLCAuLi5yfSA9IHthOiAxLCBiOiAyLCBjOiAzLCBkOiA0fSk7IH0iCi1QQVNTIFZhbGlkOiAg
ICJmdW5jdGlvbiAqIGZvbyhvKSB7ICh7Li4ueyB4ID0geWllbGQgfX0gPSBvKTsgfSIKLVBBU1Mg
VmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGZ1bmN0aW9uICogZm9vKG8pIHsgKHsuLi57IHggPSB5
aWVsZCB9fSA9IG8pOyB9IH0iCi1QQVNTIFZhbGlkOiAgICJsZXQgYyA9IHt9OyBsZXQgbyA9IHth
OiAxLCBiOiAyLCAuLi5jfTsiCi1QQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBsZXQgYyA9
IHt9OyBsZXQgbyA9IHthOiAxLCBiOiAyLCAuLi5jfTsgfSIKLVBBU1MgVmFsaWQ6ICAgImxldCBv
ID0ge2E6IDEsIGI6IDMsIC4uLnt9fTsiCi1QQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBs
ZXQgbyA9IHthOiAxLCBiOiAzLCAuLi57fX07IH0iCi1QQVNTIFZhbGlkOiAgICJsZXQgbyA9IHth
OiAxLCBiOiAyLCAuLi5udWxsLCBjOiAzfTsiCi1QQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkg
eyBsZXQgbyA9IHthOiAxLCBiOiAyLCAuLi5udWxsLCBjOiAzfTsgfSIKLVBBU1MgVmFsaWQ6ICAg
ImxldCBvID0ge2E6IDEsIGI6IDIsIC4uLnVuZGVmaW5lZCwgYzogM307IgotUEFTUyBWYWxpZDog
ICAiZnVuY3Rpb24gZigpIHsgbGV0IG8gPSB7YTogMSwgYjogMiwgLi4udW5kZWZpbmVkLCBjOiAz
fTsgfSIKLVBBU1MgVmFsaWQ6ICAgImxldCBvID0ge2E6IDEsIGI6IDIsIC4uLnsuLi57fX0sIGM6
IDN9OyIKLVBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGxldCBvID0ge2E6IDEsIGI6IDIs
IC4uLnsuLi57fX0sIGM6IDN9OyB9IgotUEFTUyBWYWxpZDogICAibGV0IGMgPSB7fTsgbGV0IG8g
PSB7YTogMSwgYjogMiwgLi4uYywgZDogMywgLi4uYywgZTogNX07IgotUEFTUyBWYWxpZDogICAi
ZnVuY3Rpb24gZigpIHsgbGV0IGMgPSB7fTsgbGV0IG8gPSB7YTogMSwgYjogMiwgLi4uYywgZDog
MywgLi4uYywgZTogNX07IH0iCi1QQVNTIFZhbGlkOiAgICJmdW5jdGlvbiogZ2VuKCkgeyB5aWVs
ZCB7YTogMSwgYjogMiwgLi4ueWllbGQgeWllbGQsIGQ6IDMsIC4uLnlpZWxkLCBlOiA1fTsgfSIK
LVBBU1MgVmFsaWQ6ICAgImZ1bmN0aW9uIGYoKSB7IGZ1bmN0aW9uKiBnZW4oKSB7IHlpZWxkIHth
OiAxLCBiOiAyLCAuLi55aWVsZCB5aWVsZCwgZDogMywgLi4ueWllbGQsIGU6IDV9OyB9IH0iCi1Q
QVNTIEludmFsaWQ6ICJ2YXIgey4uLnIgPSB7YTogMn19ID0ge2E6IDEsIGI6IDJ9OyIuIFByb2R1
Y2VkIHRoZSBmb2xsb3dpbmcgc3ludGF4IGVycm9yOiAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQg
dG9rZW4gJz0nLiBFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVu
dCBkZXN0cnVjdHVyaW5nIHBhdHRlcm4uIgotUEFTUyBJbnZhbGlkOiAiZnVuY3Rpb24gZigpIHsg
dmFyIHsuLi5yID0ge2E6IDJ9fSA9IHthOiAxLCBiOiAyfTsgfSIuIFByb2R1Y2VkIHRoZSBmb2xs
b3dpbmcgc3ludGF4IGVycm9yOiAiU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJz0nLiBF
eHBlY3RlZCBhIGNsb3NpbmcgJ30nIGZvbGxvd2luZyBhIHJlc3QgZWxlbWVudCBkZXN0cnVjdHVy
aW5nIHBhdHRlcm4uIgotUEFTUyBJbnZhbGlkOiAidmFyIHsuLi5yLCBifSA9IHthOiAxLCBiOiAy
fTsiLiBQcm9kdWNlZCB0aGUgZm9sbG93aW5nIHN5bnRheCBlcnJvcjogIlN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBmb2xsb3dpbmcgYSBy
ZXN0IGVsZW1lbnQgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuLiIKLVBBU1MgSW52YWxpZDogImZ1bmN0
aW9uIGYoKSB7IHZhciB7Li4uciwgYn0gPSB7YTogMSwgYjogMn07IH0iLiBQcm9kdWNlZCB0aGUg
Zm9sbG93aW5nIHN5bnRheCBlcnJvcjogIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcs
Jy4gRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBmb2xsb3dpbmcgYSByZXN0IGVsZW1lbnQgZGVzdHJ1
Y3R1cmluZyBwYXR0ZXJuLiIKLVBBU1MgSW52YWxpZDogInZhciB7Li4uciwgLi4uZX0gPSB7YTog
MSwgYjogMn07Ii4gUHJvZHVjZWQgdGhlIGZvbGxvd2luZyBzeW50YXggZXJyb3I6ICJTeW50YXhF
cnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnfScgZm9sbG93
aW5nIGEgcmVzdCBlbGVtZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybi4iCi1QQVNTIEludmFsaWQ6
ICJmdW5jdGlvbiBmKCkgeyB2YXIgey4uLnIsIC4uLmV9ID0ge2E6IDEsIGI6IDJ9OyB9Ii4gUHJv
ZHVjZWQgdGhlIGZvbGxvd2luZyBzeW50YXggZXJyb3I6ICJTeW50YXhFcnJvcjogVW5leHBlY3Rl
ZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgY2xvc2luZyAnfScgZm9sbG93aW5nIGEgcmVzdCBlbGVt
ZW50IGRlc3RydWN0dXJpbmcgcGF0dGVybi4iCi1QQVNTIEludmFsaWQ6ICJmdW5jdGlvbiAqIChv
KSB7ICh7IC4uLnsgeDogeWllbGQgfSB9ID0gbyk7IH0iLiBQcm9kdWNlZCB0aGUgZm9sbG93aW5n
IHN5bnRheCBlcnJvcjogIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcoJyIKLVBBU1Mg
SW52YWxpZDogImZ1bmN0aW9uIGYoKSB7IGZ1bmN0aW9uICogKG8pIHsgKHsgLi4ueyB4OiB5aWVs
ZCB9IH0gPSBvKTsgfSB9Ii4gUHJvZHVjZWQgdGhlIGZvbGxvd2luZyBzeW50YXggZXJyb3I6ICJT
eW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnKCciCitQQVNTIEludmFsaWQ6ICJ2YXIgWy4u
LnsuLi55fV0gPSAyMCIuIFByb2R1Y2VkIHRoZSBmb2xsb3dpbmcgc3ludGF4IGVycm9yOiAiU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJy4uLicuIEV4cGVjdGVkIGEgcHJvcGVydHkgbmFt
ZS4iCitQQVNTIEludmFsaWQ6ICJmdW5jdGlvbiBmKCkgeyB2YXIgWy4uLnsuLi55fV0gPSAyMCB9
Ii4gUHJvZHVjZWQgdGhlIGZvbGxvd2luZyBzeW50YXggZXJyb3I6ICJTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnLi4uJy4gRXhwZWN0ZWQgYSBwcm9wZXJ0eSBuYW1lLiIKIFJlc3QgcGFy
YW1ldGVyCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmb28oLi4uYSkgeyB9IgogUEFTUyBWYWxp
ZDogICAiZnVuY3Rpb24gZigpIHsgZnVuY3Rpb24gZm9vKC4uLmEpIHsgfSB9IgpAQCAtMTI3NCw4
ICsxMjM2LDggQEAgUEFTUyBWYWxpZDogICAibGV0IHggPSAoYSA9IDIwLCAuLi5bLi4uWwogUEFT
UyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgbGV0IHggPSAoYSA9IDIwLCAuLi5bLi4uW2IgPSA0
MF1dKSA9PiB7IH0gfSIKIFBBU1MgVmFsaWQ6ICAgImxldCB4ID0gKGEgPSAyMCwgLi4ue2J9KSA9
PiB7IH0iCiBQQVNTIFZhbGlkOiAgICJmdW5jdGlvbiBmKCkgeyBsZXQgeCA9IChhID0gMjAsIC4u
LntifSkgPT4geyB9IH0iCi1QQVNTIFZhbGlkOiAgICJsZXQgeCA9IChhID0gMjAsIC4uLnsuLi5i
fSkgPT4geyB9IgotUEFTUyBWYWxpZDogICAiZnVuY3Rpb24gZigpIHsgbGV0IHggPSAoYSA9IDIw
LCAuLi57Li4uYn0pID0+IHsgfSB9IgorUEFTUyBJbnZhbGlkOiAibGV0IHggPSAoYSA9IDIwLCAu
Li57Li4uYn0pID0+IHsgfSIuIFByb2R1Y2VkIHRoZSBmb2xsb3dpbmcgc3ludGF4IGVycm9yOiAi
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJy4uLiciCitQQVNTIEludmFsaWQ6ICJmdW5j
dGlvbiBmKCkgeyBsZXQgeCA9IChhID0gMjAsIC4uLnsuLi5ifSkgPT4geyB9IH0iLiBQcm9kdWNl
ZCB0aGUgZm9sbG93aW5nIHN5bnRheCBlcnJvcjogIlN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRv
a2VuICcuLi4nIgogUEFTUyBJbnZhbGlkOiAibGV0IHggPSAoYSA9IDIwLCAuLi57MTI0fSkgPT4g
eyB9Ii4gUHJvZHVjZWQgdGhlIGZvbGxvd2luZyBzeW50YXggZXJyb3I6ICJTeW50YXhFcnJvcjog
VW5leHBlY3RlZCB0b2tlbiAnLi4uJyIKIFBBU1MgSW52YWxpZDogImZ1bmN0aW9uIGYoKSB7IGxl
dCB4ID0gKGEgPSAyMCwgLi4uezEyNH0pID0+IHsgfSB9Ii4gUHJvZHVjZWQgdGhlIGZvbGxvd2lu
ZyBzeW50YXggZXJyb3I6ICJTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLi4uJyIKIG5v
bi1zaW1wbGUgcGFyYW1ldGVyIGxpc3QKSW5kZXg6IExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9wYXJzZXItc3ludGF4LWNoZWNrLmpzCShyZXZpc2lvbiAyMTY4ODcpCisrKyBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcGFyc2VyLXN5bnRheC1jaGVjay5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtNjkxLDI2ICs2OTEsNyBAQCB2YWxpZCgidmFyIFsuLi5be3h9ID0gMjAsIC4u
LnldXSA9IDIwOyIpCiB2YWxpZCgidmFyIHt4OiBbeSwgLi4uWy4uLlsuLi57ejogWy4uLnpdfV1d
XX0gPSAyMCIpOwogdmFsaWQoInZhciB7eDogW3ksIHt6OiB7ejogWy4uLnpdfX1dfSA9IDIwIik7
CiBpbnZhbGlkKCJ2YXIgWy4uLnksIC4uLnpdID0gMjAiKTsKLXZhbGlkKCJ2YXIgWy4uLnsuLi55
fV0gPSAyMCIpOwotdmFsaWQoInZhciB7YSwgYiwgLi4ucn0gPSB7YTogMSwgYjogMiwgYzogM307
Iik7Ci12YWxpZCgidmFyIHthLCBiLCAuLi57ZH19ID0ge2E6IDEsIGI6IDIsIGM6IDMsIGQ6IDR9
OyIpOwotdmFsaWQoInZhciB7YSwgYiwgLi4ue2QgPSAxNX19ID0ge2E6IDEsIGI6IDIsIGM6IDMs
IGQ6IDR9OyIpOwotdmFsaWQoInZhciB7YSwgYiwgLi4ue2QgPSAxNSwgLi4ucn19ID0ge2E6IDEs
IGI6IDIsIGM6IDMsIGQ6IDR9OyIpOwotdmFsaWQoIigoe2EsIGIsIC4uLnJ9KSA9PiB7fSkoe2E6
IDEsIGI6IDIsIGM6IDMsIGQ6IDR9KTsiKTsKLXZhbGlkKCIoZnVuY3Rpb24gKHthLCBiLCAuLi5y
fSkge30pKHthOiAxLCBiOiAyLCBjOiAzLCBkOiA0fSk7Iik7Ci12YWxpZCgidmFyIGEsIGIsIGM7
ICh7YSwgYiwgLi4ucn0gPSB7YTogMSwgYjogMiwgYzogMywgZDogNH0pOyIpOwotdmFsaWQoImZ1
bmN0aW9uICogZm9vKG8pIHsgKHsuLi57IHggPSB5aWVsZCB9fSA9IG8pOyB9Iik7Ci12YWxpZCgi
bGV0IGMgPSB7fTsgbGV0IG8gPSB7YTogMSwgYjogMiwgLi4uY307Iik7Ci12YWxpZCgibGV0IG8g
PSB7YTogMSwgYjogMywgLi4ue319OyIpOwotdmFsaWQoImxldCBvID0ge2E6IDEsIGI6IDIsIC4u
Lm51bGwsIGM6IDN9OyIpOwotdmFsaWQoImxldCBvID0ge2E6IDEsIGI6IDIsIC4uLnVuZGVmaW5l
ZCwgYzogM307Iik7Ci12YWxpZCgibGV0IG8gPSB7YTogMSwgYjogMiwgLi4uey4uLnt9fSwgYzog
M307Iik7Ci12YWxpZCgibGV0IGMgPSB7fTsgbGV0IG8gPSB7YTogMSwgYjogMiwgLi4uYywgZDog
MywgLi4uYywgZTogNX07Iik7Ci12YWxpZCgiZnVuY3Rpb24qIGdlbigpIHsgeWllbGQge2E6IDEs
IGI6IDIsIC4uLnlpZWxkIHlpZWxkLCBkOiAzLCAuLi55aWVsZCwgZTogNX07IH0iKTsKLWludmFs
aWQoInZhciB7Li4uciA9IHthOiAyfX0gPSB7YTogMSwgYjogMn07Iik7Ci1pbnZhbGlkKCJ2YXIg
ey4uLnIsIGJ9ID0ge2E6IDEsIGI6IDJ9OyIpOwotaW52YWxpZCgidmFyIHsuLi5yLCAuLi5lfSA9
IHthOiAxLCBiOiAyfTsiKTsKLWludmFsaWQoImZ1bmN0aW9uICogKG8pIHsgKHsgLi4ueyB4OiB5
aWVsZCB9IH0gPSBvKTsgfSIpOworaW52YWxpZCgidmFyIFsuLi57Li4ueX1dID0gMjAiKTsKIAog
ZGVidWcoIlJlc3QgcGFyYW1ldGVyIik7CiB2YWxpZCgiZnVuY3Rpb24gZm9vKC4uLmEpIHsgfSIp
OwpAQCAtNzQ2LDcgKzcyNyw3IEBAIGludmFsaWQoImxldCB4ID0gKGEgPSAyMCwgLi4uYiwgLi4u
YykgPT4KIHZhbGlkKCJsZXQgeCA9IChhID0gMjAsIC4uLlsuLi5iXSkgPT4geyB9Iik7CiB2YWxp
ZCgibGV0IHggPSAoYSA9IDIwLCAuLi5bLi4uW2IgPSA0MF1dKSA9PiB7IH0iKTsKIHZhbGlkKCJs
ZXQgeCA9IChhID0gMjAsIC4uLntifSkgPT4geyB9Iik7Ci12YWxpZCgibGV0IHggPSAoYSA9IDIw
LCAuLi57Li4uYn0pID0+IHsgfSIpOworaW52YWxpZCgibGV0IHggPSAoYSA9IDIwLCAuLi57Li4u
Yn0pID0+IHsgfSIpOwogaW52YWxpZCgibGV0IHggPSAoYSA9IDIwLCAuLi57MTI0fSkgPT4geyB9
Iik7CiAKIGRlYnVnKCJub24tc2ltcGxlIHBhcmFtZXRlciBsaXN0IikK
</data>

          </attachment>
      

    </bug>

</bugzilla>