<?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>20711</bug_id>
          
          <creation_ts>2008-09-07 20:51:19 -0700</creation_ts>
          <short_desc>Change KJS prefix on preprocessor macros to JSC</short_desc>
          <delta_ts>2008-09-07 21:25:56 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90453</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-07 20:51:19 -0700</bug_when>
    <thetext>I have a patch to do this, but it&apos;s too large for lisppaste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90454</commentid>
    <comment_count>1</comment_count>
      <attachid>23236</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-07 20:52:09 -0700</bug_when>
    <thetext>Created attachment 23236
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90459</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-07 21:25:56 -0700</bug_when>
    <thetext>Landed in r36264.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23236</attachid>
            <date>2008-09-07 20:52:09 -0700</date>
            <delta_ts>2008-09-07 21:15:09 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>kjs.diff</filename>
            <type>text/plain</type>
            <size>130307</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2MjYzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMwIEBACisyMDA4LTA5LTA3ICBDYW1lcm9u
IFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZSB0aGUgS0pTIHByZWZpeCBvbiBwcmVw
cm9jZXNzb3IgbWFjcm9zIHRvIEpTQy4KKworICAgICAgICAqIGtqcy9Db21tb25JZGVudGlmaWVy
cy5jcHA6CisgICAgICAgIChKU0M6OkNvbW1vbklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVy
cyk6CisgICAgICAgICoga2pzL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICoga2pzL1By
b3BlcnR5U2xvdC5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OmdldFZhbHVlKToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpwdXRWYWx1ZSk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5U2xvdDo6c2V0VmFsdWVTbG90KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpzZXRW
YWx1ZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0UmVnaXN0ZXJTbG90KToKKyAg
ICAgICAgKiBranMvbG9va3VwLmg6CisgICAgICAgICoga2pzL25vZGVzLmNwcDoKKyAgICAgICAg
KiBranMvbm9kZXMuaDoKKyAgICAgICAgKEpTQzo6Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6RXhw
cmVzc2lvbk5vZGU6Oik6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6Oik6CisgICAgICAg
IChKU0M6Ok51bGxOb2RlOjopOgorICAgICAgICAoSlNDOjpCb29sZWFuTm9kZTo6KToKKyAgICAg
ICAgKEpTQzo6TnVtYmVyTm9kZTo6KToKKyAgICAgICAgKEpTQzo6SW1tZWRpYXRlTnVtYmVyTm9k
ZTo6KToKKyAgICAgICAgKEpTQzo6U3RyaW5nTm9kZTo6KToKKyAgICAgICAgKEpTQzo6UmVnRXhw
Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6Oik6CisgICAgICAgIChKU0M6OlJlc29s
dmVOb2RlOjopOgorICAgICAgICAoSlNDOjpFbGVtZW50Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6
QXJyYXlOb2RlOjopOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5vZGU6Oik6CisgICAgICAgIChK
U0M6OlByb3BlcnR5TGlzdE5vZGU6Oik6CisgICAgICAgIChKU0M6Ok9iamVjdExpdGVyYWxOb2Rl
OjopOgorICAgICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JOb2RlOjopOgorICAgICAgICAoSlND
OjpEb3RBY2Nlc3Nvck5vZGU6Oik6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlzdE5vZGU6Oik6
CisgICAgICAgIChKU0M6OkFyZ3VtZW50c05vZGU6Oik6CisgICAgICAgIChKU0M6Ok5ld0V4cHJO
b2RlOjopOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6KToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjopOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNh
bGxSZXNvbHZlTm9kZTo6KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6
Oik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6Oik6CisgICAgICAgIChKU0M6
OlByZVBvc3RSZXNvbHZlTm9kZTo6KToKKyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2Rl
OjopOgorICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6Oik6CisgICAgICAgIChKU0M6
OlBvc3RmaXhEb3ROb2RlOjopOgorICAgICAgICAoSlNDOjpQb3N0Zml4RXJyb3JOb2RlOjopOgor
ICAgICAgICAoSlNDOjpEZWxldGVSZXNvbHZlTm9kZTo6KToKKyAgICAgICAgKEpTQzo6RGVsZXRl
QnJhY2tldE5vZGU6Oik6CisgICAgICAgIChKU0M6OkRlbGV0ZURvdE5vZGU6Oik6CisgICAgICAg
IChKU0M6OkRlbGV0ZVZhbHVlTm9kZTo6KToKKyAgICAgICAgKEpTQzo6Vm9pZE5vZGU6Oik6Cisg
ICAgICAgIChKU0M6OlR5cGVPZlJlc29sdmVOb2RlOjopOgorICAgICAgICAoSlNDOjpUeXBlT2ZW
YWx1ZU5vZGU6Oik6CisgICAgICAgIChKU0M6OlByZWZpeFJlc29sdmVOb2RlOjopOgorICAgICAg
ICAoSlNDOjpQcmVmaXhCcmFja2V0Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6UHJlZml4RG90Tm9k
ZTo6KToKKyAgICAgICAgKEpTQzo6UHJlZml4RXJyb3JOb2RlOjopOgorICAgICAgICAoSlNDOjpV
bmFyeVBsdXNOb2RlOjopOgorICAgICAgICAoSlNDOjpOZWdhdGVOb2RlOjopOgorICAgICAgICAo
SlNDOjpCaXR3aXNlTm90Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Oik6
CisgICAgICAgIChKU0M6Ok11bHROb2RlOjopOgorICAgICAgICAoSlNDOjpEaXZOb2RlOjopOgor
ICAgICAgICAoSlNDOjpNb2ROb2RlOjopOgorICAgICAgICAoSlNDOjpBZGROb2RlOjopOgorICAg
ICAgICAoSlNDOjpTdWJOb2RlOjopOgorICAgICAgICAoSlNDOjpMZWZ0U2hpZnROb2RlOjopOgor
ICAgICAgICAoSlNDOjpSaWdodFNoaWZ0Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6VW5zaWduZWRS
aWdodFNoaWZ0Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6TGVzc05vZGU6Oik6CisgICAgICAgIChK
U0M6OkdyZWF0ZXJOb2RlOjopOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjopOgorICAgICAg
ICAoSlNDOjpHcmVhdGVyRXFOb2RlOjopOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVCaW5hcnlP
cE5vZGU6Oik6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZOb2RlOjopOgorICAgICAgICAoSlND
OjpJbk5vZGU6Oik6CisgICAgICAgIChKU0M6OkVxdWFsTm9kZTo6KToKKyAgICAgICAgKEpTQzo6
Tm90RXF1YWxOb2RlOjopOgorICAgICAgICAoSlNDOjpTdHJpY3RFcXVhbE5vZGU6Oik6CisgICAg
ICAgIChKU0M6Ok5vdFN0cmljdEVxdWFsTm9kZTo6KToKKyAgICAgICAgKEpTQzo6Qml0QW5kTm9k
ZTo6KToKKyAgICAgICAgKEpTQzo6Qml0T3JOb2RlOjopOgorICAgICAgICAoSlNDOjpCaXRYT3JO
b2RlOjopOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BOb2RlOjopOgorICAgICAgICAoSlNDOjpD
b25kaXRpb25hbE5vZGU6Oik6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6
KToKKyAgICAgICAgKEpTQzo6QXNzaWduUmVzb2x2ZU5vZGU6Oik6CisgICAgICAgIChKU0M6OlJl
YWRNb2RpZnlCcmFja2V0Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6
Oik6CisgICAgICAgIChKU0M6OkFzc2lnbkRvdE5vZGU6Oik6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlEb3ROb2RlOjopOgorICAgICAgICAoSlNDOjpBc3NpZ25FcnJvck5vZGU6Oik6CisgICAg
ICAgIChKU0M6OkNvbW1hTm9kZTo6KToKKyAgICAgICAgKEpTQzo6VmFyRGVjbENvbW1hTm9kZTo6
KToKKyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6KToKKyAgICAgICAgKEpTQzo6Q29uc3RT
dGF0ZW1lbnROb2RlOjopOgorICAgICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5vZGU6Oik6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6RXhw
clN0YXRlbWVudE5vZGU6Oik6CisgICAgICAgIChKU0M6OlZhclN0YXRlbWVudE5vZGU6Oik6Cisg
ICAgICAgIChKU0M6OklmTm9kZTo6KToKKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6KToKKyAg
ICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6Oik6CisgICAgICAgIChKU0M6OldoaWxlTm9kZTo6KToK
KyAgICAgICAgKEpTQzo6Rm9yTm9kZTo6KToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjop
OgorICAgICAgICAoSlNDOjpCcmVha05vZGU6Oik6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6
Oik6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjopOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
Oik6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6KToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6
KToKKyAgICAgICAgKEpTQzo6UGFyYW1ldGVyTm9kZTo6KToKKyAgICAgICAgKEpTQzo6U2NvcGVO
b2RlOjopOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6KToKKyAgICAgICAgKEpTQzo6RXZh
bE5vZGU6Oik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6Oik6CisgICAgICAgIChK
U0M6OkZ1bmNFeHByTm9kZTo6KToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjopOgorICAg
ICAgICAoSlNDOjpDYXNlQ2xhdXNlTm9kZTo6KToKKyAgICAgICAgKEpTQzo6Q2xhdXNlTGlzdE5v
ZGU6Oik6CisgICAgICAgIChKU0M6OkNhc2VCbG9ja05vZGU6Oik6CisgICAgICAgIChKU0M6OlN3
aXRjaE5vZGU6Oik6CisKIDIwMDgtMDktMDcgIENhbWVyb24gWndhcmljaCAgPGN3endhcmljaEB1
d2F0ZXJsb28uY2E+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvQ29tbW9uSWRlbnRpZmllcnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Db21tb25JZGVudGlmaWVycy5jcHAJKHJldmlzaW9uIDM2
MjYzKQorKysgSmF2YVNjcmlwdENvcmUva2pzL0NvbW1vbklkZW50aWZpZXJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBDb21tb25JZGVudGlmaWVyczo6Q29tbW9uSWRlbnRp
ZmllcnMoSlNHCiAgICAgOiBudWxsSWRlbnRpZmllcihnbG9iYWxEYXRhLCBudWxsQ1N0cmluZykK
ICAgICAsIHVuZGVyc2NvcmVQcm90byhnbG9iYWxEYXRhLCAiX19wcm90b19fIikKICAgICAsIHRo
aXNJZGVudGlmaWVyKGdsb2JhbERhdGEsICJ0aGlzIikKLSAgICBLSlNfQ09NTU9OX0lERU5USUZJ
RVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShJTklUSUFMSVpFX1BST1BFUlRZX05BTUUpCisgICAgSlND
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUoSU5JVElBTElaRV9QUk9QRVJU
WV9OQU1FKQogewogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvQ29tbW9uSWRlbnRpZmll
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQ29tbW9uSWRlbnRpZmllcnMu
aAkocmV2aXNpb24gMzYyNjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvQ29tbW9uSWRlbnRpZmll
cnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNyBAQAogCiAvLyBBcmdMaXN0IG9mIHBy
b3BlcnR5IG5hbWVzLCBwYXNzZWQgdG8gYSBtYWNybyBzbyB3ZSBjYW4gZG8gc2V0IHRoZW0gdXAg
dmFyaW91cwogLy8gd2F5cyB3aXRob3V0IHJlcGVhdGluZyB0aGUgbGlzdC4KLSNkZWZpbmUgS0pT
X0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKKyNkZWZpbmUg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX1BST1BFUlRZX05BTUUobWFjcm8pIFwKICAgICBt
YWNybyhfX2RlZmluZUdldHRlcl9fKSBcCiAgICAgbWFjcm8oX19kZWZpbmVTZXR0ZXJfXykgXAog
ICAgIG1hY3JvKF9fbG9va3VwR2V0dGVyX18pIFwKQEAgLTc3LDkgKzc3LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdW5kZXJzY29yZVByb3RvOwogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyIHRoaXNJZGVudGlmaWVyOwogCi0jZGVmaW5lIEtKU19JREVOVElG
SUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwobmFtZSkgY29uc3QgSWRlbnRpZmllciBu
YW1lOwotICAgICAgICBLSlNfQ09NTU9OX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShL
SlNfSURFTlRJRklFUl9ERUNMQVJFX1BST1BFUlRZX05BTUVfR0xPQkFMKQotI3VuZGVmIEtKU19J
REVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwKKyNkZWZpbmUgSlNDX0lERU5U
SUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTChuYW1lKSBjb25zdCBJZGVudGlmaWVy
IG5hbWU7CisgICAgICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1F
KEpTQ19JREVOVElGSUVSX0RFQ0xBUkVfUFJPUEVSVFlfTkFNRV9HTE9CQUwpCisjdW5kZWYgSlND
X0lERU5USUZJRVJfREVDTEFSRV9QUk9QRVJUWV9OQU1FX0dMT0JBTAogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1Byb3BlcnR5U2xvdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Qcm9wZXJ0eVNsb3QuaAkocmV2aXNpb24g
MzYyNjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUHJvcGVydHlTbG90LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDggKzMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNPYmplY3Q7
CiAgICAgc3RydWN0IEhhc2hFbnRyeTsKIAotI2RlZmluZSBLSlNfVkFMVUVfU0xPVF9NQVJLRVIg
MAotI2RlZmluZSBLSlNfUkVHSVNURVJfU0xPVF9NQVJLRVIgcmVpbnRlcnByZXRfY2FzdDxHZXRW
YWx1ZUZ1bmM+KDEpCisjZGVmaW5lIEpTQ19WQUxVRV9TTE9UX01BUktFUiAwCisjZGVmaW5lIEpT
Q19SRUdJU1RFUl9TTE9UX01BUktFUiByZWludGVycHJldF9jYXN0PEdldFZhbHVlRnVuYz4oMSkK
IAogICAgIGNsYXNzIFByb3BlcnR5U2xvdCB7CiAgICAgcHVibGljOgpAQCAtNTYsMTggKzU2LDE4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEpTVmFsdWUqIGdldFZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9PSBLSlNfVkFMVUVfU0xPVF9NQVJLRVIpCisg
ICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9PSBKU0NfVkFMVUVfU0xPVF9NQVJLRVIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuICptX2RhdGEudmFsdWVTbG90OwotICAgICAgICAgICAgaWYgKG1f
Z2V0VmFsdWUgPT0gS0pTX1JFR0lTVEVSX1NMT1RfTUFSS0VSKQorICAgICAgICAgICAgaWYgKG1f
Z2V0VmFsdWUgPT0gSlNDX1JFR0lTVEVSX1NMT1RfTUFSS0VSKQogICAgICAgICAgICAgICAgIHJl
dHVybiAoKm1fZGF0YS5yZWdpc3RlclNsb3QpLmpzVmFsdWUoZXhlYyk7CiAgICAgICAgICAgICBy
ZXR1cm4gbV9nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUsICp0aGlzKTsKICAgICAgICAgfQog
CiAgICAgICAgIEpTVmFsdWUqIGdldFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJv
cGVydHlOYW1lKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9
PSBLSlNfVkFMVUVfU0xPVF9NQVJLRVIpCisgICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9PSBK
U0NfVkFMVUVfU0xPVF9NQVJLRVIpCiAgICAgICAgICAgICAgICAgcmV0dXJuICptX2RhdGEudmFs
dWVTbG90OwotICAgICAgICAgICAgaWYgKG1fZ2V0VmFsdWUgPT0gS0pTX1JFR0lTVEVSX1NMT1Rf
TUFSS0VSKQorICAgICAgICAgICAgaWYgKG1fZ2V0VmFsdWUgPT0gSlNDX1JFR0lTVEVSX1NMT1Rf
TUFSS0VSKQogICAgICAgICAgICAgICAgIHJldHVybiAoKm1fZGF0YS5yZWdpc3RlclNsb3QpLmpz
VmFsdWUoZXhlYyk7CiAgICAgICAgICAgICByZXR1cm4gbV9nZXRWYWx1ZShleGVjLCBJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSksICp0aGlzKTsKICAgICAgICAgfQpAQCAtODEs
MTggKzgxLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgcHV0VmFsdWUoSlNW
YWx1ZSogdmFsdWUpCiAgICAgICAgIHsgCi0gICAgICAgICAgICBpZiAobV9nZXRWYWx1ZSA9PSBL
SlNfVkFMVUVfU0xPVF9NQVJLRVIpIHsKKyAgICAgICAgICAgIGlmIChtX2dldFZhbHVlID09IEpT
Q19WQUxVRV9TTE9UX01BUktFUikgewogICAgICAgICAgICAgICAgICptX2RhdGEudmFsdWVTbG90
ID0gdmFsdWU7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgQVNTRVJUKG1fZ2V0VmFsdWUgPT0gS0pTX1JFR0lTVEVSX1NMT1RfTUFSS0VSKTsKKyAg
ICAgICAgICAgIEFTU0VSVChtX2dldFZhbHVlID09IEpTQ19SRUdJU1RFUl9TTE9UX01BUktFUik7
CiAgICAgICAgICAgICAqbV9kYXRhLnJlZ2lzdGVyU2xvdCA9IHZhbHVlOwogICAgICAgICB9CiAK
ICAgICAgICAgdm9pZCBzZXRWYWx1ZVNsb3QoSlNWYWx1ZSoqIHZhbHVlU2xvdCkgCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVCh2YWx1ZVNsb3QpOwotICAgICAgICAgICAgbV9nZXRWYWx1
ZSA9IEtKU19WQUxVRV9TTE9UX01BUktFUjsKKyAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0Nf
VkFMVUVfU0xPVF9NQVJLRVI7CiAgICAgICAgICAgICBjbGVhckJhc2UoKTsKICAgICAgICAgICAg
IG1fZGF0YS52YWx1ZVNsb3QgPSB2YWx1ZVNsb3Q7CiAgICAgICAgIH0KQEAgLTEwMCw3ICsxMDAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRWYWx1ZVNsb3QoSlNWYWx1ZSog
c2xvdEJhc2UsIEpTVmFsdWUqKiB2YWx1ZVNsb3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVCh2YWx1ZVNsb3QpOwotICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEtKU19WQUxVRV9TTE9U
X01BUktFUjsKKyAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfU0xPVF9NQVJLRVI7
CiAgICAgICAgICAgICBtX3Nsb3RCYXNlID0gc2xvdEJhc2U7CiAgICAgICAgICAgICBtX2RhdGEu
dmFsdWVTbG90ID0gdmFsdWVTbG90OwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgc2V0VmFsdWVTbG90KEpTVmFsdWUqIHNsb3RCYXNl
LCBKU1ZhbHVlKiogdmFsdWVTbG90LCBzaXplX3Qgb2Zmc2V0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQodmFsdWVTbG90KTsKLSAgICAgICAgICAgIG1fZ2V0VmFsdWUgPSBLSlNfVkFM
VUVfU0xPVF9NQVJLRVI7CisgICAgICAgICAgICBtX2dldFZhbHVlID0gSlNDX1ZBTFVFX1NMT1Rf
TUFSS0VSOwogICAgICAgICAgICAgbV9zbG90QmFzZSA9IHNsb3RCYXNlOwogICAgICAgICAgICAg
bV9kYXRhLnZhbHVlU2xvdCA9IHZhbHVlU2xvdDsKICAgICAgICAgICAgIG1fb2Zmc2V0ID0gb2Zm
c2V0OwpAQCAtMTE3LDcgKzExNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHNl
dFZhbHVlKEpTVmFsdWUqIHZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQodmFs
dWUpOwotICAgICAgICAgICAgbV9nZXRWYWx1ZSA9IEtKU19WQUxVRV9TTE9UX01BUktFUjsKKyAg
ICAgICAgICAgIG1fZ2V0VmFsdWUgPSBKU0NfVkFMVUVfU0xPVF9NQVJLRVI7CiAgICAgICAgICAg
ICBjbGVhckJhc2UoKTsKICAgICAgICAgICAgIG1fdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgICAg
IG1fZGF0YS52YWx1ZVNsb3QgPSAmbV92YWx1ZTsKQEAgLTEyNiw3ICsxMjYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBzZXRSZWdpc3RlclNsb3QoUmVnaXN0ZXIqIHJlZ2lzdGVy
U2xvdCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyU2xvdCk7Ci0gICAg
ICAgICAgICBtX2dldFZhbHVlID0gS0pTX1JFR0lTVEVSX1NMT1RfTUFSS0VSOworICAgICAgICAg
ICAgbV9nZXRWYWx1ZSA9IEpTQ19SRUdJU1RFUl9TTE9UX01BUktFUjsKICAgICAgICAgICAgIGNs
ZWFyQmFzZSgpOwogICAgICAgICAgICAgbV9kYXRhLnJlZ2lzdGVyU2xvdCA9IHJlZ2lzdGVyU2xv
dDsKICAgICAgICAgfQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL2xvb2t1cC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9sb29rdXAuaAkocmV2aXNpb24gMzYyNjMpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvbG9va3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NSwxNSArMjU1
LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICogbm90IG9uZSBpbiBlYWNoIGRlcml2ZWQgY2xhc3Mu
IFNvIHdlIGxpbmsgdGhlICh1bmlxdWUpIHByb3RvdHlwZXMgYmV0d2VlbiB0aGVtLgogICoKICAq
IFVzaW5nIHRob3NlIG1hY3JvcyBpcyB2ZXJ5IHNpbXBsZTogZGVmaW5lIHRoZSBoYXNodGFibGUg
KGUuZy4gIkRPTU5vZGVQcm90b3R5cGVUYWJsZSIpLCB0aGVuCi0gKiBLSlNfREVGSU5FX1BST1RP
VFlQRShET01Ob2RlUHJvdG90eXBlKQotICogS0pTX0lNUExFTUVOVF9QUk9UT1RZUEUoIkRPTU5v
ZGUiLCBET01Ob2RlUHJvdG90eXBlLCBET01Ob2RlUHJvdG90eXBlRnVuY3Rpb24pCisgKiBKU0Nf
REVGSU5FX1BST1RPVFlQRShET01Ob2RlUHJvdG90eXBlKQorICogSlNDX0lNUExFTUVOVF9QUk9U
T1RZUEUoIkRPTU5vZGUiLCBET01Ob2RlUHJvdG90eXBlLCBET01Ob2RlUHJvdG90eXBlRnVuY3Rp
b24pCiAgKiBhbmQgdXNlIERPTU5vZGVQcm90b3R5cGU6OnNlbGYoZXhlYykgYXMgcHJvdG90eXBl
IGluIHRoZSBET01Ob2RlIGNvbnN0cnVjdG9yLgogICogSWYgdGhlIHByb3RvdHlwZSBoYXMgYSAi
cGFyZW50IHByb3RvdHlwZSIsIGUuZy4gRE9NRWxlbWVudFByb3RvdHlwZSBmYWxscyBiYWNrIG9u
IERPTU5vZGVQcm90b3R5cGUsCi0gKiB0aGVuIHRoZSBmaXJzdCBsaW5lIHdpbGwgdXNlIEtKU19E
RUZJTkVfUFJPVE9UWVBFX1dJVEhfUFJPVE9UWVBFLCB3aXRoIERPTU5vZGVQcm90b3R5cGUgYXMg
dGhlIHNlY29uZCBhcmd1bWVudC4KKyAqIHRoZW4gdGhlIGZpcnN0IGxpbmUgd2lsbCB1c2UgSlND
X0RFRklORV9QUk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUsIHdpdGggRE9NTm9kZVByb3RvdHlwZSBh
cyB0aGUgc2Vjb25kIGFyZ3VtZW50LgogICovCiAKIC8vIFRoZXNlIG1hY3JvcyBhc3N1bWUgdGhh
dCBhIHByb3RvdHlwZSdzIG9ubHkgcHJvcGVydGllcyBhcmUgZnVuY3Rpb25zCi0jZGVmaW5lIEtK
U19ERUZJTkVfUFJPVE9UWVBFKENsYXNzUHJvdG90eXBlKSBcCisjZGVmaW5lIEpTQ19ERUZJTkVf
UFJPVE9UWVBFKENsYXNzUHJvdG90eXBlKSBcCiAgIGNsYXNzIENsYXNzUHJvdG90eXBlIDogcHVi
bGljIEpTQzo6SlNPYmplY3QgeyBcCiAgIHB1YmxpYzogXAogICAgIHN0YXRpYyBKU0M6OkpTT2Jq
ZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiBleGVjKTsgXApAQCAtMjc1LDcgKzI3NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIFwKICAgfTsKIAotI2RlZmluZSBLSlNfREVGSU5FX1BST1RPVFlQ
RV9XSVRIX1BST1RPVFlQRShDbGFzc1Byb3RvdHlwZSwgQ2xhc3NQcm90b3R5cGVQcm90b3R5cGUp
IFwKKyNkZWZpbmUgSlNDX0RFRklORV9QUk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUoQ2xhc3NQcm90
b3R5cGUsIENsYXNzUHJvdG90eXBlUHJvdG90eXBlKSBcCiAgICAgY2xhc3MgQ2xhc3NQcm90b3R5
cGUgOiBwdWJsaWMgSlNDOjpKU09iamVjdCB7IFwKICAgICBwdWJsaWM6IFwKICAgICAgICAgc3Rh
dGljIEpTQzo6SlNPYmplY3QqIHNlbGYoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpOyBcCkBAIC0yODcs
NyArMjg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgXAogICAgIH07CiAKLSNkZWZpbmUgS0pT
X0lNUExFTUVOVF9QUk9UT1RZUEUoQ2xhc3NOYW1lLCBDbGFzc1Byb3RvdHlwZSkgXAorI2RlZmlu
ZSBKU0NfSU1QTEVNRU5UX1BST1RPVFlQRShDbGFzc05hbWUsIENsYXNzUHJvdG90eXBlKSBcCiAg
ICAgY29uc3QgQ2xhc3NJbmZvIENsYXNzUHJvdG90eXBlOjppbmZvID0geyBDbGFzc05hbWUiUHJv
dG90eXBlIiwgMCwgJkNsYXNzUHJvdG90eXBlIyNUYWJsZSwgMCAgfTsgXAogICAgIEpTT2JqZWN0
KiBDbGFzc1Byb3RvdHlwZTo6c2VsZihFeGVjU3RhdGUqIGV4ZWMpIFwKICAgICB7IFwKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUva2pzL25vZGVzLmNwcAkocmV2aXNpb24gMzYyNjMpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMv
bm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMsNyArMTUzLDcgQEAgTm9kZTo6Tm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVAogICAgIG1fbGluZSA9IGdsb2JhbERhdGEtPmxl
eGVyLT5saW5lTm8oKTsKIH0KIAotc3RhdGljIHZvaWQgc3Vic3RpdHV0ZShVU3RyaW5nJiBzdHJp
bmcsIGNvbnN0IFVTdHJpbmcmIHN1YnN0cmluZykgS0pTX0ZBU1RfQ0FMTDsKK3N0YXRpYyB2b2lk
IHN1YnN0aXR1dGUoVVN0cmluZyYgc3RyaW5nLCBjb25zdCBVU3RyaW5nJiBzdWJzdHJpbmcpIEpT
Q19GQVNUX0NBTEw7CiBzdGF0aWMgdm9pZCBzdWJzdGl0dXRlKFVTdHJpbmcmIHN0cmluZywgY29u
c3QgVVN0cmluZyYgc3Vic3RyaW5nKQogewogICAgIGludCBwb3NpdGlvbiA9IHN0cmluZy5maW5k
KCIlcyIpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL25vZGVzLmgJKHJldmlzaW9uIDM2MjYzKQorKysgSmF2YVNjcmlw
dENvcmUva2pzL25vZGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDkgKzQyLDkgQEAKICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShYODYpICYmIENPTVBJTEVSKEdDQykK
LSNkZWZpbmUgS0pTX0ZBU1RfQ0FMTCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkKKyNkZWZp
bmUgSlNDX0ZBU1RfQ0FMTCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkKICNlbHNlCi0jZGVm
aW5lIEtKU19GQVNUX0NBTEwKKyNkZWZpbmUgSlNDX0ZBU1RfQ0FMTAogI2VuZGlmCiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMTMxLDE2ICsxMzEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBQYXJzZXJSZWZDb3VudGVkIDogTm9uY29weWFibGUgewogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgUGFyc2VyUmVmQ291bnRlZChKU0dsb2JhbERhdGEqKSBLSlNfRkFTVF9DQUxMOworICAg
ICAgICBQYXJzZXJSZWZDb3VudGVkKEpTR2xvYmFsRGF0YSopIEpTQ19GQVNUX0NBTEw7CiAKICAg
ICAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CiAKICAgICBwdWJsaWM6Ci0gICAgICAg
IHZvaWQgcmVmKCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdm9pZCBkZXJlZigpIEtKU19GQVNU
X0NBTEw7Ci0gICAgICAgIGJvb2wgaGFzT25lUmVmKCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAg
dm9pZCByZWYoKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2b2lkIGRlcmVmKCkgSlNDX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgYm9vbCBoYXNPbmVSZWYoKSBKU0NfRkFTVF9DQUxMOwogCi0gICAgICAg
IHN0YXRpYyB2b2lkIGRlbGV0ZU5ld09iamVjdHMoSlNHbG9iYWxEYXRhKikgS0pTX0ZBU1RfQ0FM
TDsKKyAgICAgICAgc3RhdGljIHZvaWQgZGVsZXRlTmV3T2JqZWN0cyhKU0dsb2JhbERhdGEqKSBK
U0NfRkFTVF9DQUxMOwogCiAgICAgICAgIHZpcnR1YWwgflBhcnNlclJlZkNvdW50ZWQoKTsKICAg
ICB9OwpAQCAtMTUxLDcgKzE1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVm
IERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBE
ZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAg
IE5vZGUoSlNHbG9iYWxEYXRhKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgTm9kZShKU0dsb2Jh
bERhdGEqKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIC8qCiAgICAgICAgICAgICBSZXR1cm4g
dmFsdWU6IFRoZSByZWdpc3RlciBob2xkaW5nIHRoZSBwcm9kdWN0aW9uJ3MgdmFsdWUuCkBAIC0x
NzUsMjUgKzE3NSwyNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGJlY2F1c2UgdGhl
IGFzc2lnbm1lbnQgbm9kZSwgInggPSIsIHBhc3NlcyByW3hdIGFzIGRzdCB0byB0aGUgbnVtYmVy
CiAgICAgICAgICAgICBub2RlLCAiMSIuCiAgICAgICAgICovCi0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCA9IDApIEtK
U19GQVNUX0NBTEwgCisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqIGRzdCA9IDApIEpTQ19GQVNUX0NBTEwgCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoMCwgIkRvbid0IGtub3cgaG93IHRvIGdl
bmVyYXRlIGNvZGUgZm9yOlxuJXNcbiIsIHRvU3RyaW5nKCkuYXNjaWkoKSk7CiAgICAgICAgICAg
ICBVTlVTRURfUEFSQU0oZHN0KTsgCiAgICAgICAgICAgICByZXR1cm4gMDsgCiAgICAgICAgIH0g
Ly8gRklYTUU6IE1ha2UgdGhpcyBwdXJlIHZpcnR1YWwuCiAKLSAgICAgICAgVVN0cmluZyB0b1N0
cmluZygpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIFVTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lOyB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUmV0
dXJuTm9kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAg
ICAvLyBTZXJpYWxpemF0aW9uLgotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNl
U3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTCA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMID0gMDsKICAgICAgICAg
dmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCA9IDA7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBuZWVkc1BhcmVuc0lmTGVmdG1vc3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgICAgICAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIE5vZGUoSlNHbG9iYWxEYXRhKiwgSlNU
eXBlKSBLSlNfRkFTVF9DQUxMOyAvLyB1c2VkIGJ5IEV4cHJlc3Npb25Ob2RlCisgICAgICAgIE5v
ZGUoSlNHbG9iYWxEYXRhKiwgSlNUeXBlKSBKU0NfRkFTVF9DQUxMOyAvLyB1c2VkIGJ5IEV4cHJl
c3Npb25Ob2RlCiAKICAgICAgICAgaW50IG1fbGluZSA6IDI4OwogICAgICAgICB1bnNpZ25lZCBt
X2V4cGVjdGVkUmV0dXJuVHlwZSA6IDM7IC8vIEpTVHlwZQpAQCAtMjAxLDIyICsyMDEsMjIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBOb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkgS0pTX0ZBU1RfQ0FMTCA6IE5vZGUoZ2xvYmFsRGF0YSkge30KLSAgICAgICAgRXhw
cmVzc2lvbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU1R5cGUgZXhwZWN0ZWRSZXR1
cm4pIEtKU19GQVNUX0NBTEwKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKSBKU0NfRkFTVF9DQUxMIDogTm9kZShnbG9iYWxEYXRhKSB7fQorICAgICAgICBF
eHByZXNzaW9uTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVHlwZSBleHBlY3RlZFJl
dHVybikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEsIGV4cGVj
dGVkUmV0dXJuKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNOdW1iZXIoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzTnVsbCgpIGNvbnN0IEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShDb2RlR2VuZXJh
dG9yJikgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfSAgICAgICAgCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IEtK
U19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzQnJh
Y2tldEFjY2Vzc29yTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICAgICAgdmlydHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBj
b25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1N0cmluZygpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAg
ICAgdmlydHVhbCBib29sIGlzTnVsbCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShDb2RlR2VuZXJhdG9yJikgY29uc3Qg
SlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfSAgICAgICAgCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0xvY2F0aW9uKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzQnJhY2tldEFjY2Vzc29y
Tm9kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmly
dHVhbCBib29sIGlzRG90QWNjZXNzb3JOb2RlKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVy
biBmYWxzZTsgfQogCi0gICAgICAgIEpTVHlwZSBleHBlY3RlZFJldHVyblR5cGUoKSBjb25zdCBL
SlNfRkFTVF9DQUxMIHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTVHlwZT4obV9leHBlY3RlZFJldHVy
blR5cGUpOyB9CisgICAgICAgIEpTVHlwZSBleHBlY3RlZFJldHVyblR5cGUoKSBjb25zdCBKU0Nf
RkFTVF9DQUxMIHsgcmV0dXJuIHN0YXRpY19jYXN0PEpTVHlwZT4obV9leHBlY3RlZFJldHVyblR5
cGUpOyB9CiAKICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBiZSBpbiBwdWJsaWMgaW4gb3JkZXIg
dG8gY29tcGlsZSB1c2luZyBHQ0MgMy54IAogICAgICAgICB0eXBlZGVmIGVudW0geyBFdmFsT3Bl
cmF0b3IsIEZ1bmN0aW9uQ2FsbCB9IENhbGxlclR5cGU7CkBAIC0yMjQsMTQgKzIyNCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBTdGF0ZW1lbnROb2RlKEpTR2xvYmFsRGF0YSopIEtKU19G
QVNUX0NBTEw7Ci0gICAgICAgIHZvaWQgc2V0TG9jKGludCBsaW5lMCwgaW50IGxpbmUxKSBLSlNf
RkFTVF9DQUxMOwotICAgICAgICBpbnQgZmlyc3RMaW5lKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBsaW5lTm8oKTsgfQotICAgICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIG1fbGFzdExpbmU7IH0KKyAgICAgICAgU3RhdGVtZW50Tm9kZShKU0ds
b2JhbERhdGEqKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2b2lkIHNldExvYyhpbnQgbGluZTAs
IGludCBsaW5lMSkgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0
IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbGluZU5vKCk7IH0KKyAgICAgICAgaW50IGxhc3RMaW5l
KCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgS0pTX0ZBU1Rf
Q0FMTCB7IG1fbGFiZWxTdGFjay5wdXNoKGlkZW50KTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBKU0NfRkFTVF9DQUxMIHsgbV9sYWJl
bFN0YWNrLnB1c2goaWRlbnQpOyB9CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRl
bmNlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFByZWNFeHByZXNzaW9u
OyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0
YXRlbWVudCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgTGFiZWxTdGFjayBtX2xhYmVsU3RhY2s7CkBAIC0yNDIsMzEgKzI0
MiwzMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51bGxOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bGxOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBOdWxsTm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUoZ2xvYmFsRGF0YSwgTnVsbFR5cGUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAg
IHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgdmlydHVhbCBib29sIGlzTnVsbCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBKU0NfRkFTVF9DQUxMOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQ
cmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUHJpbWFyeTsgfQogICAg
IH07CiAKICAgICBjbGFzcyBCb29sZWFuTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBCb29sZWFuTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGJvb2wgdmFsdWUpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgQm9vbGVhbk5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBib29sIHZhbHVlKSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEsIEJvb2xlYW5UeXBlKQogICAgICAgICAgICAgLCBt
X3ZhbHVlKHZhbHVlKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19G
QVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNQdXJlKENvZGVHZW5lcmF0b3ImKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IHRydWU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1B1cmUoQ29kZUdlbmVy
YXRvciYpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAg
ICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVj
UHJpbWFyeTsgfQogCiAgICAgcHJvdGVjdGVkOgpAQCAtMjc1LDIxICsyNzUsMjEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bWJlck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBkb3VibGUgdikgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBOdW1iZXJOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgZG91YmxlIHYpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSwgTnVtYmVyVHlwZSkKICAgICAgICAgICAgICwgbV9k
b3VibGUodikKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9D
QUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwog
ICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHNp
Z25iaXQobV9kb3VibGUpID8gUHJlY1VuYXJ5IDogUHJlY1ByaW1hcnk7IH0KIAotICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7
IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShDb2RlR2VuZXJhdG9yJikgY29uc3QgS0pT
X0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIGRvdWJsZSB2YWx1ZSgpIGNvbnN0
IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9kb3VibGU7IH0KLSAgICAgICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlKGRvdWJsZSBkKSBLSlNfRkFTVF9DQUxMIHsgbV9kb3VibGUgPSBkOyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4g
dHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKENvZGVHZW5lcmF0b3ImKSBjb25z
dCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgZG91YmxlIHZhbHVlKCkg
Y29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2RvdWJsZTsgfQorICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWUoZG91YmxlIGQpIEpTQ19GQVNUX0NBTEwgeyBtX2RvdWJsZSA9IGQ7IH0K
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgZG91YmxlIG1fZG91YmxlOwpAQCAtMjk3LDE0ICsy
OTcsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbW1lZGlhdGVOdW1iZXJOb2Rl
IDogcHVibGljIE51bWJlck5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW1tZWRpYXRlTnVt
YmVyTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEpTVmFsdWUqIHYsIGRvdWJsZSBkKSBL
SlNfRkFTVF9DQUxMCisgICAgICAgIEltbWVkaWF0ZU51bWJlck5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBKU1ZhbHVlKiB2LCBkb3VibGUgZCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAg
ICAgOiBOdW1iZXJOb2RlKGdsb2JhbERhdGEsIGQpCiAgICAgICAgICAgICAsIG1fdmFsdWUodikK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHYgPT0gSlNJbW1lZGlhdGU6OmZyb20oZCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGRvdWJsZSBkKSBL
SlNfRkFTVF9DQUxMIHsgbV9kb3VibGUgPSBkOyBtX3ZhbHVlID0gSlNJbW1lZGlhdGU6OmZyb20o
ZCk7IEFTU0VSVChtX3ZhbHVlKTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWUoZG91
YmxlIGQpIEpTQ19GQVNUX0NBTEwgeyBtX2RvdWJsZSA9IGQ7IG1fdmFsdWUgPSBKU0ltbWVkaWF0
ZTo6ZnJvbShkKTsgQVNTRVJUKG1fdmFsdWUpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBK
U1ZhbHVlKiBtX3ZhbHVlOyAvLyBUaGlzIGlzIG5ldmVyIGEgSlNDZWxsLCBvbmx5IEpTSW1tZWRp
YXRlLCB0aHVzIG5vIFByb3RlY3RlZFB0cgpAQCAtMzEyLDE4ICszMTIsMTggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBTdHJpbmdOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFN0cmluZ05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBjb25zdCBVU3RyaW5nKiB2KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFN0cmluZ05vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBVU3RyaW5nKiB2KSBKU0NfRkFTVF9DQUxMCiAg
ICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEsIFN0cmluZ1R5cGUpCiAgICAg
ICAgICAgICAsIG1fdmFsdWUoKnYpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwogICAgICAgICAK
LSAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJl
dHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmluZygpIGNvbnN0IEpTQ19G
QVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICBVU3RyaW5nJiB2YWx1ZSgpIHsgcmV0
dXJuIG1fdmFsdWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzUHVyZShDb2RlR2VuZXJhdG9y
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNQdXJlKENvZGVHZW5lcmF0b3ImKSBjb25zdCBKU0NfRkFTVF9DQUxM
IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBw
cmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1ByaW1hcnk7IH0KIAogICAgIHByaXZhdGU6
CkBAIC00MjUsMTYgKzQyNSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4
cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWdFeHBOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgY29uc3QgVVN0cmluZyYgcGF0dGVybiwgY29uc3QgVVN0cmluZyYgZmxhZ3MpIEtK
U19GQVNUX0NBTEwKKyAgICAgICAgUmVnRXhwTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IFVTdHJpbmcmIHBhdHRlcm4sIGNvbnN0IFVTdHJpbmcmIGZsYWdzKSBKU0NfRkFTVF9D
QUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAg
ICAsIG1fcGF0dGVybihwYXR0ZXJuKQogICAgICAgICAgICAgLCBtX2ZsYWdzKGZsYWdzKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2Rl
KENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1
YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1ByaW1hcnk7IH0K
IAogICAgIHByaXZhdGU6CkBAIC00NDQsMzUgKzQ0NCwzNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFRoaXNOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFRoaXNOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkgS0pTX0ZBU1RfQ0FM
TAorICAgICAgICBUaGlzTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIEpTQ19GQVNUX0NB
TEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpT
Q19GQVNUX0NBTEw7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNl
ZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNQcmltYXJ5OyB9CiAgICAgfTsK
IAogICAgIGNsYXNzIFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBzdGFydE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAorICAg
ICAgICBSZXNvbHZlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICAgICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19G
QVNUX0NBTEw7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVu
Y2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNQcmltYXJ5OyB9CiAKLSAgICAgICAg
dmlydHVhbCBib29sIGlzUHVyZShDb2RlR2VuZXJhdG9yJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
LSAgICAgICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGlzUmVzb2x2ZU5vZGUoKSBjb25z
dCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9pZGVudDsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKENvZGVHZW5lcmF0b3ImKSBjb25zdCBKU0NfRkFT
VF9DQUxMOworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEpTQ19GQVNU
X0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9k
ZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2lk
ZW50OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKQEAg
LTQ4MiwxNCArNDgyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRWxlbWVudE5v
ZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFbGVtZW50Tm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBlbGlzaW9uLCBFeHByZXNzaW9uTm9kZSogbm9kZSkg
S0pTX0ZBU1RfQ0FMTAorICAgICAgICBFbGVtZW50Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGludCBlbGlzaW9uLCBFeHByZXNzaW9uTm9kZSogbm9kZSkgSlNDX0ZBU1RfQ0FMTAogICAg
ICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fZWxpc2lvbihlbGlz
aW9uKQogICAgICAgICAgICAgLCBtX25vZGUobm9kZSkKICAgICAgICAgewogICAgICAgICB9CiAK
LSAgICAgICAgRWxlbWVudE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFbGVtZW50Tm9k
ZSogbCwgaW50IGVsaXNpb24sIEV4cHJlc3Npb25Ob2RlKiBub2RlKSBLSlNfRkFTVF9DQUxMCisg
ICAgICAgIEVsZW1lbnROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRWxlbWVudE5vZGUq
IGwsIGludCBlbGlzaW9uLCBFeHByZXNzaW9uTm9kZSogbm9kZSkgSlNDX0ZBU1RfQ0FMTAogICAg
ICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fZWxpc2lvbihlbGlz
aW9uKQogICAgICAgICAgICAgLCBtX25vZGUobm9kZSkKQEAgLTQ5OCwxMyArNDk4LDEzIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHBy
ZWNlZGVuY2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gUHJlY0V4cHJl
c3Npb247IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIGludCBlbGlzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9lbGlzaW9uOyB9CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSgp
IHsgcmV0dXJuIG1fbm9kZS5nZXQoKTsgfQogCiAgICAgICAgIEVsZW1lbnROb2RlKiBuZXh0KCkg
eyByZXR1cm4gbV9uZXh0LmdldCgpOyB9Ci0gICAgICAgIFBhc3NSZWZQdHI8RWxlbWVudE5vZGU+
IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX25leHQucmVsZWFzZSgpOyB9
CisgICAgICAgIFBhc3NSZWZQdHI8RWxlbWVudE5vZGU+IHJlbGVhc2VOZXh0KCkgSlNDX0ZBU1Rf
Q0FMTCB7IHJldHVybiBtX25leHQucmVsZWFzZSgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBMaXN0UmVmUHRyPEVsZW1lbnROb2RlPiBtX25leHQ7CkBAIC01MTQsMTQgKzUxNCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFycmF5Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcnJheU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBpbnQgZWxpc2lvbikgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBBcnJheU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgZWxpc2lvbikgSlNDX0ZBU1RfQ0FMTAogICAgICAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBtX2VsaXNp
b24oZWxpc2lvbikKICAgICAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICBBcnJheU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
bGVtZW50Tm9kZSogZWxlbWVudCkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBBcnJheU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFbGVtZW50Tm9kZSogZWxlbWVudCkgSlNDX0ZBU1RfQ0FM
TAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAg
LCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgICAgICwgbV9lbGlzaW9uKDApCkBAIC01Mjks
NyArNTI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIEFycmF5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBlbGlzaW9uLCBFbGVt
ZW50Tm9kZSogZWxlbWVudCkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBBcnJheU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqIGVsZW1lbnQpIEpT
Q19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAg
ICAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICAgICAsIG1fZWxpc2lvbihl
bGlzaW9uKQpAQCAtNTM3LDkgKzUzNyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlND
X0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFt
JikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2Vk
ZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1ByaW1hcnk7IH0KIAogICAgIHBy
aXZhdGU6CkBAIC01NTIsNyArNTUyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgog
ICAgICAgICBlbnVtIFR5cGUgeyBDb25zdGFudCwgR2V0dGVyLCBTZXR0ZXIgfTsKIAotICAgICAg
ICBQcm9wZXJ0eU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBFeHByZXNzaW9uTm9kZSogYXNzaWduLCBUeXBlIHR5cGUpIEtKU19GQVNUX0NBTEwK
KyAgICAgICAgUHJvcGVydHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGFzc2lnbiwgVHlwZSB0eXBlKSBKU0NfRkFT
VF9DQUxMCiAgICAgICAgICAgICA6IE5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9u
YW1lKG5hbWUpCiAgICAgICAgICAgICAsIG1fYXNzaWduKGFzc2lnbikKQEAgLTU2MCw3ICs1NjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFT
VF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBQcmVjRXhwcmVzc2lvbjsgfQogCiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KQEAgLTU3
NCwyNCArNTc0LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvcGVydHlMaXN0
Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByb3BlcnR5TGlzdE5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5vZGUqIG5vZGUpIEtKU19GQVNU
X0NBTEwKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IFByb3BlcnR5Tm9kZSogbm9kZSkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBOb2RlKGds
b2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
UHJvcGVydHlOb2RlKiBub2RlLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KSBLSlNfRkFTVF9DQUxM
CisgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpIEpTQ19GQVNUX0NBTEwKICAg
ICAgICAgICAgIDogTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBtX25vZGUobm9kZSkK
ICAgICAgICAgewogICAgICAgICAgICAgbGlzdC0+bV9uZXh0ID0gdGhpczsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlND
X0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRl
bmNlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFByZWNFeHByZXNzaW9u
OyB9CiAKLSAgICAgICAgUGFzc1JlZlB0cjxQcm9wZXJ0eUxpc3ROb2RlPiByZWxlYXNlTmV4dCgp
IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9uZXh0LnJlbGVhc2UoKTsgfQorICAgICAgICBQYXNz
UmVmUHRyPFByb3BlcnR5TGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkgSlNDX0ZBU1RfQ0FMTCB7IHJl
dHVybiBtX25leHQucmVsZWFzZSgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQg
Y2xhc3MgT2JqZWN0TGl0ZXJhbE5vZGU7CkBAIC02MDEsMTkgKzYwMSwxOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIE9iamVjdExpdGVyYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE9iamVjdExpdGVyYWxOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
T2JqZWN0TGl0ZXJhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBQcm9wZXJ0eUxpc3RO
b2RlKiBsaXN0KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkgSlNDX0ZBU1RfQ0FM
TAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAg
LCBtX2xpc3QobGlzdCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNf
RkFTVF9DQUxMOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29k
ZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FM
TDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVy
biBQcmVjUHJpbWFyeTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNQYXJlbnNJZkxlZnRt
b3N0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC02MjMsNyArNjIzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQnJhY2tldEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBz
dWJzY3JpcHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBCcmFja2V0QWNj
ZXNzb3JOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMp
IEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkK
ICAgICAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICAgICAsIG1fc3Vic2NyaXB0KHN1
YnNjcmlwdCkKQEAgLTYzMSwxNSArNjMxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
SlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJl
Y2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY01lbWJlcjsgfQogCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSBj
b25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG1fYmFzZS5nZXQoKTsgfQotICAgICAg
ICBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3N1
YnNjcmlwdC5nZXQoKTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0
IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9
CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBt
X2Jhc2UuZ2V0KCk7IH0KKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCgpIEpTQ19G
QVNUX0NBTEwgeyByZXR1cm4gbV9zdWJzY3JpcHQuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9iYXNlOwpAQCAtNjQ5LDIxICs2NDksMjEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIEtKU19GQVNUX0NB
TEwKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBKU0NfRkFTVF9DQUxM
CiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAs
IG1fYmFzZShiYXNlKQogICAgICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVu
Y2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNNZW1iZXI7IH0KIAotICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1
ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2Uo
KSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG1fYmFzZS5nZXQoKTsgfQotICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biBtX2lkZW50OyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0xvY2F0aW9uKCkgY29uc3QgSlND
X0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFj
Y2Vzc29yTm9kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAg
ICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9i
YXNlLmdldCgpOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25z
dCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9iYXNlOwpAQCAtNjcyLDI0ICs2NzIsMjQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmd1bWVudExpc3ROb2RlIDogcHVibGljIE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByKSBLSlNfRkFTVF9DQUxMCisgICAgICAg
IEFyZ3VtZW50TGlzdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEpCiAg
ICAgICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBBcmd1bWVudExpc3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQXJndW1lbnRMaXN0
Tm9kZSogbGlzdE5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKSBLSlNfRkFTVF9DQUxMCisgICAg
ICAgIEFyZ3VtZW50TGlzdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBBcmd1bWVudExp
c3ROb2RlKiBsaXN0Tm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwKICAg
ICAgICAgICAgIDogTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBtX2V4cHIoZXhwcikK
ICAgICAgICAgewogICAgICAgICAgICAgbGlzdE5vZGUtPm1fbmV4dCA9IHRoaXM7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJl
Y2VkZW5jZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBQcmVjRXhwcmVz
c2lvbjsgfQogCi0gICAgICAgIFBhc3NSZWZQdHI8QXJndW1lbnRMaXN0Tm9kZT4gcmVsZWFzZU5l
eHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG1fbmV4dC5yZWxlYXNlKCk7IH0KKyAgICAgICAg
UGFzc1JlZlB0cjxBcmd1bWVudExpc3ROb2RlPiByZWxlYXNlTmV4dCgpIEpTQ19GQVNUX0NBTEwg
eyByZXR1cm4gbV9uZXh0LnJlbGVhc2UoKTsgfQogCiAgICAgICAgIExpc3RSZWZQdHI8QXJndW1l
bnRMaXN0Tm9kZT4gbV9uZXh0OwogICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhw
cjsKQEAgLTY5NywxOCArNjk3LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJn
dW1lbnRzTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFyZ3VtZW50
c05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIEFy
Z3VtZW50c05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBKU0NfRkFTVF9DQUxMCiAgICAg
ICAgICAgICA6IE5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgQXJndW1lbnRzTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEFyZ3VtZW50TGlzdE5v
ZGUqIGxpc3ROb2RlKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIEFyZ3VtZW50c05vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBBcmd1bWVudExpc3ROb2RlKiBsaXN0Tm9kZSkgSlNDX0ZBU1Rf
Q0FMTAogICAgICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fbGlz
dE5vZGUobGlzdE5vZGUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FM
TDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gUHJlY0V4cHJlc3Npb247IH0KIAogICAgICAgICBSZWZQ
dHI8QXJndW1lbnRMaXN0Tm9kZT4gbV9saXN0Tm9kZTsKQEAgLTcxNiwyMiArNzE2LDIyIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTmV3RXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBOZXdFeHByTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIE5ld0V4cHJOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwKICAgICAgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9leHByKGV4
cHIpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIE5ld0V4cHJOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFy
Z3MpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgTmV3RXhwck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncykgSlNDX0ZB
U1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBKU0NfRkFTVF9DQUxMOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQ
cmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjTGVmdEhhbmRTaWRlOyB9
CiAKICAgICBwcml2YXRlOgpAQCAtNzQxLDE1ICs3NDEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2
YWxGdW5jdGlvbkNhbGxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQXJndW1lbnRzTm9k
ZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FM
TAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAg
LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
ICAgICAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkg
Y29uc3QgeyByZXR1cm4gUHJlY0NhbGw7IH0KIAogICAgIHByaXZhdGU6CkBAIC03NTgsNyArNzU4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
IEtKU19GQVNUX0NBTEwKKyAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEp
CiAgICAgICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2V4cHIoZXhwcikKQEAgLTc2Niw4ICs3NjYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBLSlNfRkFTVF9DQUxMOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZB
U1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7
IHJldHVybiBQcmVjQ2FsbDsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTc3Nyw3ICs3NzcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
IEtKU19GQVNUX0NBTEwKKyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFs
RGF0YSkKICAgICAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC03ODUs
OSArNzg1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwogCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFT
VF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2Uo
KSBjb25zdCB7IHJldHVybiBQcmVjQ2FsbDsgfQogCiAgICAgcHJvdGVjdGVkOgpAQCAtNzk5LDcg
Kzc5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwK
KyAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1l
bnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fYmFzZShiYXNl
KQpAQCAtODA4LDggKzgwOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJl
Y2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNDYWxsOyB9CiAKICAgICBwcm90ZWN0ZWQ6CkBA
IC04MjAsNyArODIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNh
bGxEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKKyAgICAg
ICAgRnVuY3Rpb25DYWxsRG90Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJn
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0
YSkKICAgICAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fYmFzZShiYXNlKQpAQCAtODI5LDgg
KzgyOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NB
TEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBK
U0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNv
bnN0IHsgcmV0dXJuIFByZWNDYWxsOyB9CiAKICAgICBwcml2YXRlOgpAQCAtODQxLDcgKzg0MSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlUG9zdFJlc29sdmVOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgUHJlUG9zdFJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFBy
ZVBvc3RSZXNvbHZlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShn
bG9iYWxEYXRhLCBOdW1iZXJUeXBlKQogICAgICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9pZGVu
dChpZGVudCkKQEAgLTg1NCwxNCArODU0LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgUG9zdGZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NB
TEwKKyAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMCiAg
ICAgICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShnbG9iYWxEYXRhLCBpZGVudCwgZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikK
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmly
dHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUG9zdGZpeDsg
fQogCiAgICAgcHJvdGVjdGVkOgpAQCAtODcwLDcgKzg3MCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgUG9zdGZpeEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UG9zdGZpeEJyYWNrZXROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNf
RkFTVF9DQUxMCisgICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBP
cGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9iYXNlKGJhc2Up
CkBAIC04NzksOCArODc5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
SlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVj
ZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1Bvc3RmaXg7IH0KIAogICAgIHByb3RlY3RlZDoK
QEAgLTg5MSw3ICs4OTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhE
b3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeERvdE5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFBvc3RmaXhEb3RO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTAogICAgICAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBUaHJvd2Fi
bGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAg
ICAgICAgICwgbV9iYXNlKGJhc2UpCkBAIC05MDAsOCArOTAwLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZp
cnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1Bvc3RmaXg7
IH0KIAogICAgIHByb3RlY3RlZDoKQEAgLTkxMiw3ICs5MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQ
b3N0Zml4RXJyb3JOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFBvc3RmaXhFcnJv
ck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bl
cmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
Z2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fZXhwcihleHByKQpA
QCAtOTIwLDggKzkyMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0K
IAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpT
Q19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2Vk
ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNQb3N0Zml4OyB9CiAKICAgICBwcml2YXRlOgpAQCAt
OTMxLDE2ICs5MzEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVSZXNv
bHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxM
CisgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NB
TEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAg
ICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJl
Y1VuYXJ5OyB9CiAKICAgICBwcml2YXRlOgpAQCAtOTQ5LDcgKzk0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRGVsZXRlQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAg
ICBEZWxldGVCcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAorICAg
ICAgICBEZWxldGVCcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTAog
ICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgICAgICwgbV9iYXNlKGJhc2UpCkBAIC05NTcsOSArOTU3LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsK
KyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAg
ICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjVW5h
cnk7IH0KIAogICAgIHByaXZhdGU6CkBAIC05NjksNyArOTY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRl
RG90Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgRGVsZXRlRG90
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fYmFzZShi
YXNlKQpAQCAtOTc3LDkgKzk3Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZB
U1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5j
ZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1VuYXJ5OyB9CiAKICAgICBwcml2YXRl
OgpAQCAtOTg5LDE1ICs5ODksMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxl
dGVWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRGVsZXRlVmFsdWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgRGVsZXRlVmFsdWVOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwKICAg
ICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9l
eHByKGV4cHIpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsK
ICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQ
cmVjVW5hcnk7IH0KIAogICAgIHByaXZhdGU6CkBAIC0xMDA2LDE1ICsxMDA2LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgVm9pZE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgVm9pZE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBFeHByZXNzaW9uTm9kZSogZXhwcikgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBWb2lkTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByKSBKU0NfRkFTVF9D
QUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAg
ICAsIG1fZXhwcihleHByKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtK
U19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNU
X0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gUHJlY1VuYXJ5OyB9CiAKICAgICBwcml2YXRlOgpAQCAtMTAyMywxOCArMTAyMywxOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVPZlJlc29sdmVOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFR5cGVPZlJlc29sdmVOb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIEtKU19G
QVNUX0NBTEwKKyAgICAgICAgVHlwZU9mUmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhLCBTdHJpbmdUeXBlKQogICAgICAgICAgICAgLCBt
X2lkZW50KGlkZW50KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19G
QVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NB
TEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1
cm4gUHJlY1VuYXJ5OyB9CiAKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9pZGVudDsgfQorICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2lk
ZW50OyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKQEAg
LTEwNDMsMTUgKzEwNDMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBUeXBlT2ZW
YWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
VHlwZU9mVmFsdWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgVHlwZU9mVmFsdWVOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwKICAgICAg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSwgU3RyaW5nVHlwZSkKICAgICAgICAg
ICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
S0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZB
U1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7
IHJldHVybiBQcmVjVW5hcnk7IH0KIAogICAgIHByaXZhdGU6CkBAIC0xMDYwLDE1ICsxMDYwLDE1
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4UmVzb2x2ZU5vZGUgOiBwdWJs
aWMgUHJlUG9zdFJlc29sdmVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeFJlc29s
dmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFByZWZpeFJlc29sdmVOb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJh
dG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9k
ZShnbG9iYWxEYXRhLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAg
ICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRD
b2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25z
dCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgp
IGNvbnN0IHsgcmV0dXJuIFByZWNVbmFyeTsgfQogCiAgICAgcHJvdGVjdGVkOgpAQCAtMTA3Nyw3
ICsxMDc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4QnJhY2tldE5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgUHJl
Zml4QnJhY2tldE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNU
X0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAg
ICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKICAgICAgICAgICAgICwgbV9iYXNlKGJhc2UpCkBAIC0xMDg2LDggKzEw
ODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBLSlNfRkFTVF9DQUxMOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNl
U3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxM
OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlND
X0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25z
dCB7IHJldHVybiBQcmVjVW5hcnk7IH0KIAogICAgIHByb3RlY3RlZDoKQEAgLTEwOTgsNyArMTA5
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4RG90Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RG90Tm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
T3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgUHJlZml4RG90Tm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgVGhyb3dhYmxlUHJlZml4
ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAg
ICAgICAgICwgbV9iYXNlKGJhc2UpCkBAIC0xMTA3LDggKzExMDcsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAg
dmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUG9zdGZp
eDsgfQogCiAgICAgcHJvdGVjdGVkOgpAQCAtMTExOSw3ICsxMTE5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBQcmVmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQ
cmVmaXhFcnJvck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgUHJlZml4RXJyb3JO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJh
dG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGds
b2JhbERhdGEpCiAgICAgICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBz
dGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2V4cHIoZXhwcikKQEAgLTEx
MjcsOCArMTEyNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19G
QVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBj
b25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNVbmFyeTsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTExNTAs
OCArMTE1MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2Rl
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCA9IDA7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsK
KyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMID0g
MDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4
cHI7CkBAIC0xMTU5LDQ5ICsxMTU5LDQ5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
VW5hcnlQbHVzTm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBVbmFyeVBsdXNOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgVW5hcnlQbHVzTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByKSBKU0NfRkFTVF9DQUxMCiAgICAgICAg
ICAgICA6IFVuYXJ5T3BOb2RlKGdsb2JhbERhdGEsIE51bWJlclR5cGUsIGV4cHIpCiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3Qg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF90b19qc251bWJlcjsgfQotICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAg
ICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJu
IG9wX3RvX2pzbnVtYmVyOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2Ug
cHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNVbmFyeTsgfQogICAgIH07CiAKICAgICBj
bGFzcyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE5lZ2F0ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBOZWdhdGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAg
IDogVW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgTnVtYmVyVHlwZSwgZXhwcikKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIG9wX25lZ2F0ZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVh
bCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX25lZ2F0
ZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
SlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBj
b25zdCB7IHJldHVybiBQcmVjVW5hcnk7IH0KICAgICB9OwogCiAgICAgY2xhc3MgQml0d2lzZU5v
dE5vZGUgOiBwdWJsaWMgVW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0d2lz
ZU5vdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcikg
S0pTX0ZBU1RfQ0FMTAorICAgICAgICBCaXR3aXNlTm90Tm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByKSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6
IFVuYXJ5T3BOb2RlKGdsb2JhbERhdGEsIE51bWJlclR5cGUsIGV4cHIpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBvcF9iaXRub3Q7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwg
T3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9iaXRub3Q7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpT
Q19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29u
c3QgeyByZXR1cm4gUHJlY1VuYXJ5OyB9CiAgICAgfTsKIAogICAgIGNsYXNzIExvZ2ljYWxOb3RO
b2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExvZ2ljYWxO
b3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEtK
U19GQVNUX0NBTEwKKyAgICAgICAgTG9naWNhbE5vdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBV
bmFyeU9wTm9kZShnbG9iYWxEYXRhLCBCb29sZWFuVHlwZSwgZXhwcikKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIG9wX25vdDsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNv
ZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX25vdDsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1Rf
Q0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJl
dHVybiBQcmVjVW5hcnk7IH0KICAgICB9OwogCkBAIC0xMjIzLDggKzEyMjMsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9D
QUxMOwotICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEtKU19GQVNUX0NB
TEwgPSAwOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgT3Bj
b2RlSUQgb3Bjb2RlKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCA9IDA7CiAKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9leHByMTsKQEAgLTEyNTAsOCArMTI1
MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29u
c3QgS0pTX0ZBU1RfQ0FMTCA9IDA7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKKyAgICAg
ICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMID0gMDsKIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHIxOwpA
QCAtMTI2MSwyNjYgKzEyNjEsMjY2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTXVs
dE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE11bHRO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FM
TAorICAgICAgICBNdWx0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEs
IE51bWJlclR5cGUsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAg
ewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBL
SlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX211bDsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVh
bCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX211bDsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlND
X0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25z
dCB7IHJldHVybiBQcmVjTXVsdGlwbGljYXRpdmU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgRGl2
Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGl2Tm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwK
KyAgICAgICAgRGl2Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
IEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIE51
bWJlclR5cGUsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNf
RkFTVF9DQUxMIHsgcmV0dXJuIG9wX2RpdjsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBP
cGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2RpdjsgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZB
U1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7
IHJldHVybiBQcmVjTXVsdGlwbGljYXRpdmU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgTW9kTm9k
ZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTW9kTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAg
ICAgICAgTW9kTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpT
Q19GQVNUX0NBTEwKICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIE51bWJl
clR5cGUsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAg
ICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIG9wX21vZDsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNv
ZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX21vZDsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1Rf
Q0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJl
dHVybiBQcmVjTXVsdGlwbGljYXRpdmU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgQWRkTm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQWRkTm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAg
ICAgQWRkTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19G
QVNUX0NBTEwKICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIGV4cHIxLCBl
eHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IG9wX2FkZDsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBj
b25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2FkZDsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAg
dmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQWRkaXRp
dmU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgU3ViTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgU3ViTm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAg
IDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBv
cGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX3N1YjsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
KyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsg
cmV0dXJuIG9wX3N1YjsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHBy
ZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQWRkaXRpdmU7IH0KICAgICB9OwogCiAgICAg
Y2xhc3MgTGVmdFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgTGVmdFNoaWZ0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgTGVmdFNoaWZ0Tm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDog
QmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIE51bWJlclR5cGUsIGV4cHIxLCBleHByMiwgcmlnaHRI
YXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBP
cGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2xzaGlmdDsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pT
X0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0Nf
RkFTVF9DQUxMIHsgcmV0dXJuIG9wX2xzaGlmdDsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVh
bCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjU2hpZnQ7IH0KICAg
ICB9OwogCiAgICAgY2xhc3MgUmlnaHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFJpZ2h0U2hpZnROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBSaWdodFNoaWZ0Tm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwK
ICAgICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIE51bWJlclR5cGUsIGV4cHIx
LCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAg
ICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0
dXJuIG9wX3JzaGlmdDsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNv
ZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX3JzaGlmdDsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsK
ICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQ
cmVjU2hpZnQ7IH0KICAgICB9OwogCiAgICAgY2xhc3MgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5zaWduZWRSaWdo
dFNoaWZ0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19G
QVNUX0NBTEwKKyAgICAgICAgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogQmlu
YXJ5T3BOb2RlKGdsb2JhbERhdGEsIE51bWJlclR5cGUsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNv
ZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX3Vyc2hpZnQ7IH0K
LSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19G
QVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgSlNDX0ZB
U1RfQ0FMTCB7IHJldHVybiBvcF91cnNoaWZ0OyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFs
IFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNTaGlmdDsgfQogICAg
IH07CiAKICAgICBjbGFzcyBMZXNzTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgTGVzc05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIExlc3NOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBCaW5h
cnlPcE5vZGUoZ2xvYmFsRGF0YSwgQm9vbGVhblR5cGUsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNv
ZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2xlc3M7IH0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgSlNDX0ZBU1Rf
Q0FMTCB7IHJldHVybiBvcF9sZXNzOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNl
ZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNSZWxhdGlvbmFsOyB9CiAgICAg
fTsKIAogICAgIGNsYXNzIEdyZWF0ZXJOb2RlIDogcHVibGljIFJldmVyc2VCaW5hcnlPcE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIEdyZWF0ZXJOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTAogICAg
ICAgICAgICAgOiBSZXZlcnNlQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIEJvb2xlYW5UeXBlLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiBvcF9sZXNzOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9w
Y29kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gb3BfbGVzczsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsK
ICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQ
cmVjUmVsYXRpb25hbDsgfQogICAgIH07CiAKICAgICBjbGFzcyBMZXNzRXFOb2RlIDogcHVibGlj
IEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMZXNzRXFOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBM
ZXNzRXFOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlNDX0ZB
U1RfQ0FMTAogICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgQm9vbGVhblR5
cGUsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9D
QUxMIHsgcmV0dXJuIG9wX2xlc3NlcTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNv
ZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2xlc3NlcTsgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZB
U1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7
IHJldHVybiBQcmVjUmVsYXRpb25hbDsgfQogICAgIH07CiAKICAgICBjbGFzcyBHcmVhdGVyRXFO
b2RlIDogcHVibGljIFJldmVyc2VCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
R3JlYXRlckVxTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtK
U19GQVNUX0NBTEwKKyAgICAgICAgR3JlYXRlckVxTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogUmV2ZXJzZUJp
bmFyeU9wTm9kZShnbG9iYWxEYXRhLCBCb29sZWFuVHlwZSwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIE9w
Y29kZUlEIG9wY29kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gb3BfbGVzc2VxOyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNf
RkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEpTQ19G
QVNUX0NBTEwgeyByZXR1cm4gb3BfbGVzc2VxOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFs
IFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNSZWxhdGlvbmFsOyB9
CiAgICAgfTsKIAogICAgIGNsYXNzIFRocm93YWJsZUJpbmFyeU9wTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBK
U1R5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBUaHJvd2Fi
bGVCaW5hcnlPcE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU1R5cGUgdHlwZSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBCaW5hcnlPcE5vZGUoZ2xv
YmFsRGF0YSwgdHlwZSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgICAg
ICB7CiAgICAgICAgIH0KLSAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBUaHJv
d2FibGVCaW5hcnlPcE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEJpbmFyeU9wTm9kZShnbG9iYWxEYXRhLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQot
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsK
ICAgICB9OwogICAgIAogICAgIGNsYXNzIEluc3RhbmNlT2ZOb2RlIDogcHVibGljIFRocm93YWJs
ZUJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbnN0YW5jZU9mTm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAg
ICAgSW5zdGFuY2VPZk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShnbG9i
YWxEYXRhLCBCb29sZWFuVHlwZSwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gb3BfaW5zdGFuY2VvZjsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
KyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsg
cmV0dXJuIG9wX2luc3RhbmNlb2Y7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2Vk
ZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1JlbGF0aW9uYWw7IH0KICAgICB9
OwogCiAgICAgY2xhc3MgSW5Ob2RlIDogcHVibGljIFRocm93YWJsZUJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIEluTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogVGhy
b3dhYmxlQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJ
RCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2luOyB9Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OworICAgICAgICB2aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwg
eyByZXR1cm4gb3BfaW47IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBw
cmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1JlbGF0aW9uYWw7IH0KICAgICB9OwogCiAg
ICAgY2xhc3MgRXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBFcXVhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIEVxdWFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogQmluYXJ5T3BO
b2RlKGdsb2JhbERhdGEsIEJvb2xlYW5UeXBlLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQg
b3Bjb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9lcTsgfQotICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
KyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsg
cmV0dXJuIG9wX2VxOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJl
Y2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNFcXVhbGl0eTsgfQogICAgIH07CiAKICAgICBj
bGFzcyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIE5vdEVxdWFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgTm90RXF1YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBCaW5h
cnlPcE5vZGUoZ2xvYmFsRGF0YSwgQm9vbGVhblR5cGUsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNv
ZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX25lcTsgfQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9D
QUxMIHsgcmV0dXJuIG9wX25lcTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRl
bmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjRXF1YWxpdHk7IH0KICAgICB9Owog
CiAgICAgY2xhc3MgU3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBTdHJpY3RFcXVhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFN0cmljdEVxdWFsTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAg
ICAgICAgICAgIDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIEJvb2xlYW5UeXBlLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biBvcF9zdHJpY3RlcTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNv
ZGUoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX3N0cmljdGVxOyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxM
OwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IFByZWNFcXVhbGl0eTsgfQogICAgIH07CiAKICAgICBjbGFzcyBOb3RTdHJpY3RFcXVhbE5vZGUg
OiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vdFN0cmljdEVx
dWFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNU
X0NBTEwKKyAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBCaW5hcnlPcE5v
ZGUoZ2xvYmFsRGF0YSwgQm9vbGVhblR5cGUsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBv
cGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX25zdHJpY3RlcTsgfQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBKU0NfRkFTVF9D
QUxMIHsgcmV0dXJuIG9wX25zdHJpY3RlcTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQ
cmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjRXF1YWxpdHk7IH0KICAg
ICB9OwogCiAgICAgY2xhc3MgQml0QW5kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgQml0QW5kTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgQml0QW5kTm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAg
IDogQmluYXJ5T3BOb2RlKGdsb2JhbERhdGEsIE51bWJlclR5cGUsIGV4cHIxLCBleHByMiwgcmln
aHRIYXNBc3NpZ25tZW50cykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVh
bCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2JpdGFu
ZDsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBPcGNvZGVJRCBvcGNvZGUoKSBjb25zdCBK
U0NfRkFTVF9DQUxMIHsgcmV0dXJuIG9wX2JpdGFuZDsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmly
dHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQml0d2lzZUFu
ZDsgfQogICAgIH07CiAKICAgICBjbGFzcyBCaXRPck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdE9yTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgQml0T3JOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykgSlNDX0ZBU1RfQ0FMTAogICAgICAg
ICAgICAgOiBCaW5hcnlPcE5vZGUoZ2xvYmFsRGF0YSwgTnVtYmVyVHlwZSwgZXhwcjEsIGV4cHIy
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2
aXJ0dWFsIE9wY29kZUlEIG9wY29kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gb3Bf
Yml0b3I7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29u
c3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9iaXRvcjsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAg
dmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQml0d2lz
ZU9yOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdFhPck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFhPck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIEJpdFhPck5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKSBKU0NfRkFTVF9DQUxMCiAg
ICAgICAgICAgICA6IEJpbmFyeU9wTm9kZShnbG9iYWxEYXRhLCBOdW1iZXJUeXBlLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2RlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVy
biBvcF9iaXR4b3I7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgT3Bjb2RlSUQgb3Bjb2Rl
KCkgY29uc3QgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBvcF9iaXR4b3I7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAg
ICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJl
Y0JpdHdpc2VYb3I7IH0KICAgICB9OwogCkBAIC0xNTI5LDcgKzE1MjksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgKi8KICAgICBjbGFzcyBMb2dpY2FsT3BOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExvZ2ljYWxPcE5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgTG9naWNhbE9wZXJhdG9yIG9wZXIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgTG9naWNhbE9w
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3Igb3BlcikgSlNDX0ZBU1RfQ0FMTAog
ICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhLCBCb29sZWFuVHlwZSkKICAg
ICAgICAgICAgICwgbV9leHByMShleHByMSkKICAgICAgICAgICAgICwgbV9leHByMihleHByMikK
QEAgLTE1MzcsOCArMTUzNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJl
Y2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIChtX29wZXJhdG9yID09IE9wTG9naWNhbEFuZCkgPyBQ
cmVjTG9naWNhbEFuZCA6IFByZWNMb2dpY2FsT3I7IH0KIAogICAgIHByaXZhdGU6CkBAIC0xNTUy
LDcgKzE1NTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgKi8KICAgICBjbGFzcyBDb25kaXRp
b25hbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Q29uZGl0aW9uYWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUq
IGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKSBL
SlNfRkFTVF9DQUxMCisgICAgICAgIENvbmRpdGlvbmFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBtX2xvZ2ljYWwobG9naWNhbCkKICAg
ICAgICAgICAgICwgbV9leHByMShleHByMSkKQEAgLTE1NjAsOCArMTU2MCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NB
TEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAg
ICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWND
b25kaXRpb25hbDsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTE1NzIsNyArMTU3Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeVJlc29sdmVOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2Rl
KiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEwKKyAgICAg
ICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1f
aWRlbnQoaWRlbnQpCkBAIC0xNTgyLDkgKzE1ODIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIEpTQ19GQVNUX0NBTEw7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFs
IFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNBc3NpZ25tZW50OyB9
CiAKICAgICBwcm90ZWN0ZWQ6CkBAIC0xNTk3LDcgKzE1OTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEFzc2lnblJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNz
aWduUmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
IEtKU19GQVNUX0NBTEwKKyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICAgICAgICAgICwgbV9yaWdodChyaWdodCkKQEAgLTE2MDUsOSArMTYwNSw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNU
X0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7
CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4g
UHJlY0Fzc2lnbm1lbnQ7IH0KIAogICAgIHByb3RlY3RlZDoKQEAgLTE2MTksNyArMTYxOSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNrZXROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRI
YXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAor
ICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Ig
b3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRz
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIFRocm93YWJsZVN1YkV4
cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAgICAg
LCBtX2Jhc2UoYmFzZSkKQEAgLTE2MzEsOSArMTYzMSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2Rl
KENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1
YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0Fzc2lnbm1lbnQ7
IH0KIAogICAgIHByb3RlY3RlZDoKQEAgLTE2NDcsNyArMTY0Nyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQXNzaWduQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBB
c3NpZ25CcmFja2V0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
IEtKU19GQVNUX0NBTEwKKyAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlw
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAgICAgLCBtX2Jh
c2UoYmFzZSkKQEAgLTE2NTgsOSArMTY1OCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
SlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJl
Y2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0Fzc2lnbm1lbnQ7IH0KIAog
ICAgIHByb3RlY3RlZDoKQEAgLTE2NzMsNyArMTY3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgQXNzaWduRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkRvdE5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBBc3NpZ25Eb3ROb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
IEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lvbk5vZGUoZ2xvYmFsRGF0YSkK
ICAgICAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fYmFzZShiYXNlKQpAQCAtMTY4Myw4ICsxNjgz
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19G
QVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3Qg
eyByZXR1cm4gUHJlY0Fzc2lnbm1lbnQ7IH0KIAogICAgIHByb3RlY3RlZDoKQEAgLTE2OTYsNyAr
MTY5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICAgICAsIG1fYmFzZShi
YXNlKQpAQCAtMTcwNyw5ICsxNzA3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAg
ICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0Nf
RkFTVF9DQUxMOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgdmlydHVhbCBQcmVjZWRl
bmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQXNzaWdubWVudDsgfQogCiAgICAg
cHJvdGVjdGVkOgpAQCAtMTcyMiw3ICsxNzIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBBc3NpZ25FcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25FcnJvck5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0
b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBB
c3NpZ25FcnJvck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSog
bGVmdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FM
TAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAg
LCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
ICAgICAgICAgICAgICwgbV9sZWZ0KGxlZnQpCkBAIC0xNzMxLDggKzE3MzEsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9D
QUxMOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3Qg
S0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKICAg
ICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVj
QXNzaWdubWVudDsgfQogCiAgICAgcHJvdGVjdGVkOgpAQCAtMTc0MywxNSArMTc0MywxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbW1hTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb21tYU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikgS0pT
X0ZBU1RfQ0FMTAorICAgICAgICBDb21tYU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikgSlNDX0ZBU1RfQ0FM
TAogICAgICAgICAgICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAg
LCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAgICAgICB2aXJ0dWFsIFByZWNl
ZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNFeHByZXNzaW9uOyB9CiAKICAg
ICBwcml2YXRlOgpAQCAtMTc2MSw3ICsxNzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAg
ICAgY2xhc3MgVmFyRGVjbENvbW1hTm9kZSA6IHB1YmxpYyBDb21tYU5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgVmFyRGVjbENvbW1hTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKSBLSlNfRkFTVF9DQUxM
CisgICAgICAgIFZhckRlY2xDb21tYU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikgSlNDX0ZBU1RfQ0FMTAog
ICAgICAgICAgICAgOiBDb21tYU5vZGUoZ2xvYmFsRGF0YSwgZXhwcjEsIGV4cHIyKQogICAgICAg
ICB7CiAgICAgICAgIH0KQEAgLTE3NzAsMzEgKzE3NzAsMzEgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBDb25zdERlY2xOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIENvbnN0RGVjbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluKSBLSlNfRkFTVF9DQUxM
OworICAgICAgICBDb25zdERlY2xOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbikgSlNDX0ZBU1RfQ0FMTDsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNl
KCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFByZWNFeHByZXNzaW9uOyB9
Ci0gICAgICAgIFBhc3NSZWZQdHI8Q29uc3REZWNsTm9kZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFT
VF9DQUxMIHsgcmV0dXJuIG1fbmV4dC5yZWxlYXNlKCk7IH0KKyAgICAgICAgUGFzc1JlZlB0cjxD
b25zdERlY2xOb2RlPiByZWxlYXNlTmV4dCgpIEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9uZXh0
LnJlbGVhc2UoKTsgfQogCiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKICAgICAgICAgTGlz
dFJlZlB0cjxDb25zdERlY2xOb2RlPiBtX25leHQ7CiAgICAgICAgIFJlZlB0cjxFeHByZXNzaW9u
Tm9kZT4gbV9pbml0OwogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOwotICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlU2luZ2xlKENvZGVHZW5lcmF0b3ImKSBL
SlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdENvZGVTaW5nbGUoQ29kZUdlbmVyYXRvciYpIEpTQ19GQVNUX0NB
TEw7CiAgICAgfTsKIAogICAgIGNsYXNzIENvbnN0U3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIENvbnN0RGVjbE5vZGUqIG5leHQpIEtKU19GQVNUX0NBTEwK
KyAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgQ29u
c3REZWNsTm9kZSogbmV4dCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fbmV4dChuZXh0KQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIAotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtK
U19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIFJlZlB0cjxDb25zdERlY2xOb2RlPiBtX25leHQ7CkBAIC0xODE5LDEwICsxODE5
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmxvY2tOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQmxvY2tOb2RlKEpTR2xvYmFsRGF0
YSosIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbikgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgQmxv
Y2tOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbikgSlNDX0ZBU1Rf
Q0FMTDsKIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIFN0YXRlbWVudFZlY3RvciYg
Y2hpbGRyZW4oKSB7IHJldHVybiBtX2NoaWxkcmVuOyB9CiAKQEAgLTE4MzIsMzkgKzE4MzIsMzkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFbXB0eVN0YXRlbWVudE5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFbXB0eVN0YXRlbWVudE5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKSBLSlNfRkFTVF9DQUxMIC8vIGRlYnVnCisgICAg
ICAgIEVtcHR5U3RhdGVtZW50Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIEpTQ19GQVNU
X0NBTEwgLy8gZGVidWcKICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRhKQog
ICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRD
b2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCBib29s
IGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19G
QVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3Qg
SlNDX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKICAgICAKICAgICBjbGFzcyBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwogCi0gICAgICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlND
X0ZBU1RfQ0FMTDsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeHByU3RhdGVtZW50Tm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByKSBLSlNfRkFT
VF9DQUxMCisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAg
ICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShD
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsK
KyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFt
VG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9leHByOwpAQCAtMTg3MiwxNSArMTg3Miwx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFZhclN0YXRlbWVudE5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBWYXJTdGF0ZW1lbnROb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIEtKU19GQVNU
X0NBTEwKKyAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEV4cHJlc3Npb25Ob2RlKiBleHByKSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IFN0YXRl
bWVudE5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAg
IHsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHI7CkBAIC0xODg4LDE1
ICsxODg4LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWZOb2RlIDogcHVibGlj
IFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSog
aWZCbG9jaykgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBJZk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2Nr
KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkK
ICAgICAgICAgICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQogICAgICAgICAgICAgLCBtX2lm
QmxvY2soaWZCbG9jaykKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNf
RkFTVF9DQUxMOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29k
ZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FM
TDsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2Nv
bmRpdGlvbjsKQEAgLTE5MDUsMTQgKzE5MDUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBJZkVsc2VOb2RlIDogcHVibGljIElmTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJ
ZkVsc2VOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGNvbmRp
dGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKSBL
SlNfRkFTVF9DQUxMCisgICAgICAgIElmRWxzZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0
ZW1lbnROb2RlKiBlbHNlQmxvY2spIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogSWZOb2Rl
KGdsb2JhbERhdGEsIGNvbmRpdGlvbiwgaWZCbG9jaykKICAgICAgICAgICAgICwgbV9lbHNlQmxv
Y2soZWxzZUJsb2NrKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19G
QVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBj
b25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2Rl
KENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxM
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFN0YXRlbWVudE5vZGU+IG1fZWxzZUJs
b2NrOwpAQCAtMTkyMCwxNSArMTkyMCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IERvV2hpbGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRG9XaGlsZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBTdGF0ZW1lbnROb2RlKiBz
dGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIERv
V2hpbGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBFeHByZXNzaW9uTm9kZSogZXhwcikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRl
bWVudCkKICAgICAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlND
X0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8U3Rh
dGVtZW50Tm9kZT4gbV9zdGF0ZW1lbnQ7CkBAIC0xOTM3LDE1ICsxOTM3LDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgV2hpbGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgV2hpbGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkgS0pTX0ZBU1Rf
Q0FMTAorICAgICAgICBXaGlsZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KSBKU0NfRkFTVF9DQUxMCiAg
ICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9l
eHByKGV4cHIpCiAgICAgICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICAgICAg
ewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4gbV9leHByOwpAQCAtMTk1NCw3ICsxOTU0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGb3JOb2RlIDogcHVibGljIFN0YXRlbWVudE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRm9yTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgYm9vbCBleHByMVdhc1Zh
ckRlY2wpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgRm9yTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgYm9vbCBleHByMVdh
c1ZhckRlY2wpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9kZShnbG9i
YWxEYXRhKQogICAgICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAgICAgLCBtX2V4
cHIyKGV4cHIyKQpAQCAtMTk2NSw4ICsxOTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBBU1NFUlQoc3RhdGVtZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZB
U1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUo
Q29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8RXhwcmVzc2lvbk5vZGU+IG1fZXhwcjE7
CkBAIC0xOTc4LDExICsxOTc4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRm9y
SW5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgRXhw
cmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKSBLSlNfRkFTVF9D
QUxMOwotICAgICAgICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSWRlbnRpZmllciYs
IEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRp
dm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpIEtKU19GQVNUX0NBTEw7CisgICAg
ICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25O
b2RlKiwgU3RhdGVtZW50Tm9kZSopIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIEZvckluTm9kZShK
U0dsb2JhbERhdGEqLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNz
aW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50
IGVuZE9mZnNldCkgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZB
U1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUo
Q29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CkBAIC0xOTk1LDE5
ICsxOTk1LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29udGludWVOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpIEpTQ19GQVNUX0NBTEwKICAgICAgICAgICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxE
YXRhKQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBDb250aW51ZU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgS0pTX0ZBU1RfQ0FM
TAorICAgICAgICBDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgIHsK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29k
ZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3Ry
ZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIElkZW50aWZpZXIgbV9pZGVudDsKQEAgLTIwMTUsMTkgKzIwMTUsMTkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCcmVha05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEJyZWFrTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpIEtKU19GQVNUX0NBTEwKKyAgICAg
ICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkgSlNDX0ZBU1RfQ0FMTAogICAg
ICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCiAgICAgICAgIHsKICAgICAgICAg
fQogCi0gICAgICAgIEJyZWFrTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIEJyZWFrTm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBKU0NfRkFTVF9DQUxM
CiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwg
bV9pZGVudChpZGVudCkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0Nf
RkFTVF9DQUxMOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwpA
QCAtMjAzNSwxNSArMjAzNSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJldHVy
bk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJldHVybk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBFeHByZXNzaW9uTm9kZSogdmFsdWUpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgUmV0
dXJuTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSkg
SlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCiAg
ICAgICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBp
c1JldHVybk5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBib29sIGlz
UmV0dXJuTm9kZSgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX3ZhbHVlOwpAQCAtMjA1
MSw3ICsyMDUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBXaXRoTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdpdGhOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpIEtK
U19GQVNUX0NBTEwKKyAgICAgICAgV2l0aE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBk
aXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fZXhwcihleHBy
KQogICAgICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCkBAIC0yMDYwLDggKzIwNjAs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBLSlNfRkFTVF9DQUxMOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZB
U1RfQ0FMTDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxFeHByZXNzaW9uTm9kZT4g
bV9leHByOwpAQCAtMjA3MiwxNiArMjA3MiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIExhYmVsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGFiZWxOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgbGFiZWwsIFN0YXRlbWVudE5vZGUqIHN0
YXRlbWVudCkgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBMYWJlbE5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBsYWJlbCwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xvYmFsRGF0
YSkKICAgICAgICAgICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAgICAgICAgICwgbV9zdGF0ZW1l
bnQoc3RhdGVtZW50KQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19G
QVNUX0NBTEw7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBj
b25zdCBLSlNfRkFTVF9DQUxMOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHVzaExhYmVsKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KSBLSlNfRkFTVF9DQUxMIHsgbV9zdGF0ZW1lbnQtPnB1c2hMYWJl
bChpZGVudCk7IH0KKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgSlNDX0ZBU1RfQ0FMTDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHB1c2hMYWJlbChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgSlNDX0ZB
U1RfQ0FMTCB7IG1fc3RhdGVtZW50LT5wdXNoTGFiZWwoaWRlbnQpOyB9CiAKICAgICBwcml2YXRl
OgogICAgICAgICBJZGVudGlmaWVyIG1fbGFiZWw7CkBAIC0yMDkwLDE0ICsyMDkwLDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVGhyb3dOb2RlIDogcHVibGljIFN0YXRlbWVudE5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAg
ICBUaHJvd05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhw
cikgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBUaHJvd05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fZXhwcihleHByKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2Rl
KENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUmVmUHRyPEV4cHJlc3Npb25Ob2RlPiBtX2V4cHI7CkBAIC0yMTA1LDcgKzIxMDUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRyeU5vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUcnlOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2Vw
dGlvbklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5h
bGx5QmxvY2spIEtKU19GQVNUX0NBTEwKKyAgICAgICAgVHJ5Tm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNl
cHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmlu
YWxseUJsb2NrKSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IFN0YXRlbWVudE5vZGUoZ2xv
YmFsRGF0YSkKICAgICAgICAgICAgICwgbV90cnlCbG9jayh0cnlCbG9jaykKICAgICAgICAgICAg
ICwgbV9leGNlcHRpb25JZGVudChleGNlcHRpb25JZGVudCkKQEAgLTIxMTQsOSArMjExNCw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NB
TEw7CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogZHN0ID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZHN0ID0gMCkg
SlNDX0ZBU1RfQ0FMTDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxTdGF0ZW1lbnRO
b2RlPiBtX3RyeUJsb2NrOwpAQCAtMjEyNywyMyArMjEyNywyMyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFBhcmFtZXRlck5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBQYXJhbWV0ZXJOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgUGFyYW1ldGVyTm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSBKU0NfRkFTVF9D
QUxMCiAgICAgICAgICAgICA6IE5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9pZGVu
dChpZGVudCkKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUGFyYW1ldGVyTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFBhcmFtZXRlck5vZGUqIGwsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50KSBLSlNfRkFTVF9DQUxMCisgICAgICAgIFBhcmFtZXRlck5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBQYXJhbWV0ZXJOb2RlKiBsLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEpCiAgICAgICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgIHsKICAgICAgICAgICAgIGwtPm1fbmV4dCA9
IHRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBJZGVudGlmaWVyIGlkZW50KCkgS0pTX0ZBU1Rf
Q0FMTCB7IHJldHVybiBtX2lkZW50OyB9Ci0gICAgICAgIFBhcmFtZXRlck5vZGUgKm5leHRQYXJh
bSgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwotICAg
ICAgICBQYXNzUmVmUHRyPFBhcmFtZXRlck5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FM
TCB7IHJldHVybiBtX25leHQucmVsZWFzZSgpOyB9CisgICAgICAgIElkZW50aWZpZXIgaWRlbnQo
KSBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG1faWRlbnQ7IH0KKyAgICAgICAgUGFyYW1ldGVyTm9k
ZSAqbmV4dFBhcmFtKCkgSlNDX0ZBU1RfQ0FMTCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNU
X0NBTEw7CisgICAgICAgIFBhc3NSZWZQdHI8UGFyYW1ldGVyTm9kZT4gcmVsZWFzZU5leHQoKSBK
U0NfRkFTVF9DQUxMIHsgcmV0dXJuIG1fbmV4dC5yZWxlYXNlKCk7IH0KICAgICAgICAgdmlydHVh
bCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gUHJlY0V4cHJlc3Npb247IH0KIAogICAgIHByaXZhdGU6CkBAIC0yMTU1LDExICsyMTU1
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU2NvcGVOb2RlIDogcHVibGljIEJs
b2NrTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwg
U291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBib29sIHVzZXNFdmFs
LCBib29sIG5lZWRzQ2xvc3VyZSwgaW50IG51bUNvbnN0YW50cykgS0pTX0ZBU1RfQ0FMTDsKKyAg
ICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBu
dW1Db25zdGFudHMpIEpTQ19GQVNUX0NBTEw7CiAKLSAgICAgICAgaW50IHNvdXJjZUlkKCkgY29u
c3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX3NvdXJjZUlkOyB9Ci0gICAgICAgIGNvbnN0IFVT
dHJpbmcmIHNvdXJjZVVSTCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9zb3VyY2VV
Ukw7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7CisgICAgICAgIGludCBzb3VyY2VJZCgpIGNvbnN0IEpTQ19GQVNUX0NB
TEwgeyByZXR1cm4gbV9zb3VyY2VJZDsgfQorICAgICAgICBjb25zdCBVU3RyaW5nJiBzb3VyY2VV
UkwoKSBjb25zdCBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxM
OwogICAgICAgICAKICAgICAgICAgYm9vbCB1c2VzRXZhbCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNl
c0V2YWw7IH0KICAgICAgICAgYm9vbCBuZWVkc0Nsb3N1cmUoKSBjb25zdCB7IHJldHVybiBtX25l
ZWRzQ2xvc3VyZTsgfQpAQCAtMjE4OCw5ICsyMTg4LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgc3RhdGljIFByb2dyYW1Ob2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBTb3VyY2VQcm92aWRlciosIGJvb2wg
dXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKSBLSlNfRkFTVF9D
QUxMOworICAgICAgICBzdGF0aWMgUHJvZ3JhbU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBT
b3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3ZpZGVy
KiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMpIEpT
Q19GQVNUX0NBTEw7CiAKLSAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgYnl0ZUNvZGUoU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4pIEtKU19GQVNUX0NBTEwKKyAgICAgICAgUHJvZ3JhbUNvZGVC
bG9jayYgYnl0ZUNvZGUoU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIEpTQ19GQVNUX0NBTEwK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NvZGUpCiAgICAgICAgICAgICAgICAgZ2Vu
ZXJhdGVDb2RlKHNjb3BlQ2hhaW4pOwpAQCAtMjE5OCwxMCArMjE5OCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUHJvZ3JhbU5vZGUoSlNH
bG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBT
b3VyY2VQcm92aWRlciosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVt
Q29uc3RhbnRzKSBLSlNfRkFTVF9DQUxMOworICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERh
dGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVBy
b3ZpZGVyKiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFu
dHMpIEpTQ19GQVNUX0NBTEw7CiAKLSAgICAgICAgdm9pZCBnZW5lcmF0ZUNvZGUoU2NvcGVDaGFp
bk5vZGUqKSBLSlNfRkFTVF9DQUxMOwotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRD
b2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAg
ICAgIHZvaWQgZ2VuZXJhdGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKikgSlNDX0ZBU1RfQ0FMTDsKKyAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIFZlY3RvcjxzaXplX3Q+IG1fdmFy
SW5kZXhlczsgLy8gU3RvcmFnZSBpbmRleGVzIGJlbG9uZ2luZyB0byB0aGUgbm9kZXMgaW4gbV92
YXJTdGFjay4gKFJlY29yZGVkIHRvIGF2b2lkIGRvdWJsZSBsb29rdXAuKQogICAgICAgICBWZWN0
b3I8c2l6ZV90PiBtX2Z1bmN0aW9uSW5kZXhlczsgLy8gU3RvcmFnZSBpbmRleGVzIGJlbG9uZ2lu
ZyB0byB0aGUgbm9kZXMgaW4gbV9mdW5jdGlvblN0YWNrLiAoUmVjb3JkZWQgdG8gYXZvaWQgZG91
YmxlIGxvb2t1cC4pCkBAIC0yMjEzLDkgKzIyMTMsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgRXZhbE5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9vbCB1c2VzRXZh
bCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMpIEtKU19GQVNUX0NBTEw7Cisg
ICAgICAgIHN0YXRpYyBFdmFsTm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1l
bnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNlUHJvdmlkZXIqLCBib29sIHVz
ZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgaW50IG51bUNvbnN0YW50cykgSlNDX0ZBU1RfQ0FM
TDsKIAotICAgICAgICBFdmFsQ29kZUJsb2NrJiBieXRlQ29kZShTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbikgS0pTX0ZBU1RfQ0FMTAorICAgICAgICBFdmFsQ29kZUJsb2NrJiBieXRlQ29kZShT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoIW1fY29kZSkKICAgICAgICAgICAgICAgICBnZW5lcmF0ZUNvZGUoc2NvcGVD
aGFpbik7CkBAIC0yMjIzLDEwICsyMjIzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIFNvdXJjZVByb3ZpZGVyKiwgYm9v
bCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMpIEtKU19GQVNU
X0NBTEw7CisgICAgICAgIEV2YWxOb2RlKEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwg
VmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNlUHJvdmlkZXIqLCBib29sIHVzZXNFdmFs
LCBib29sIG5lZWRzQ2xvc3VyZSwgaW50IG51bUNvbnN0YW50cykgSlNDX0ZBU1RfQ0FMTDsKIAot
ICAgICAgICB2b2lkIGdlbmVyYXRlQ29kZShTY29wZUNoYWluTm9kZSopIEtKU19GQVNUX0NBTEw7
Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdm9pZCBnZW5lcmF0ZUNvZGUo
U2NvcGVDaGFpbk5vZGUqKSBKU0NfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NB
TEw7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlUHJv
dmlkZXI7CiAKQEAgLTIyMzUsMTcgKzIyMzUsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIFNv
dXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNlUHJvdmlkZXIq
LCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgaW50IG51bUNvbnN0YW50cykgS0pT
X0ZBU1RfQ0FMTDsKLSAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0ds
b2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIGJv
b2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRzKSBLSlNfRkFT
VF9DQUxMOworICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFs
RGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgU291cmNl
UHJvdmlkZXIqLCBib29sIHVzZXNFdmFsLCBib29sIG5lZWRzQ2xvc3VyZSwgaW50IG51bUNvbnN0
YW50cykgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNy
ZWF0ZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25T
dGFjayosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBpbnQgbnVtQ29uc3RhbnRz
KSBKU0NfRkFTVF9DQUxMOwogCi0gICAgICAgIFZlY3RvcjxJZGVudGlmaWVyPiYgcGFyYW1ldGVy
cygpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9Ci0gICAgICAgIFVTdHJp
bmcgcGFyYW1TdHJpbmcoKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgICBWZWN0b3I8SWRl
bnRpZmllcj4mIHBhcmFtZXRlcnMoKSBKU0NfRkFTVF9DQUxMIHsgcmV0dXJuIG1fcGFyYW1ldGVy
czsgfQorICAgICAgICBVU3RyaW5nIHBhcmFtU3RyaW5nKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTDsK
IAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FM
TDsKICAgICAgICAgCiAgICAgICAgIFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSgpIHsgcmV0dXJu
IG1fc3ltYm9sVGFibGU7IH0gLy8gRklYTUU6IFJlbW92ZSB0aGlzCiAgICAgICAgIAotICAgICAg
ICBDb2RlQmxvY2smIGJ5dGVDb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSBLSlNfRkFT
VF9DQUxMCisgICAgICAgIENvZGVCbG9jayYgYnl0ZUNvZGUoU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW4pIEpTQ19GQVNUX0NBTEwKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHNjb3Bl
Q2hhaW4pOwogICAgICAgICAgICAgaWYgKCFtX2NvZGUpCkBAIC0yMjUzLDcgKzIyNTMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqbV9jb2RlOwogICAgICAgICB9CiAK
LSAgICAgICAgQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlQ29kZSgpIEtKU19GQVNUX0NBTEwKKyAg
ICAgICAgQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlQ29kZSgpIEpTQ19GQVNUX0NBTEwKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKG1fY29kZSk7CiAgICAgICAgICAgICByZXR1cm4gKm1f
Y29kZTsKQEAgLTIyNjIsMTIgKzIyNjIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgbWFyaygpOwogCiAgICAgICAgIHZvaWQgc2V0U291cmNlKGNvbnN0IFNvdXJjZVJhbmdlJiBz
b3VyY2UpIHsgbV9zb3VyY2UgPSBzb3VyY2U7IH0gCi0gICAgICAgIFVTdHJpbmcgdG9Tb3VyY2VT
dHJpbmcoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIFVTdHJpbmcoInsiKSArIG1fc291
cmNlLnRvU3RyaW5nKCkgKyBVU3RyaW5nKCJ9Iik7IH0KKyAgICAgICAgVVN0cmluZyB0b1NvdXJj
ZVN0cmluZygpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gVVN0cmluZygieyIpICsgbV9z
b3VyY2UudG9TdHJpbmcoKSArIFVTdHJpbmcoIn0iKTsgfQogICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0
YWNrKiwgRnVuY3Rpb25TdGFjayosIGJvb2wgdXNlc0V2YWwsIGJvb2wgbmVlZHNDbG9zdXJlLCBp
bnQgbnVtQ29uc3RhbnRzKSBLSlNfRkFTVF9DQUxMOworICAgICAgICBGdW5jdGlvbkJvZHlOb2Rl
KEpTR2xvYmFsRGF0YSosIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNr
KiwgYm9vbCB1c2VzRXZhbCwgYm9vbCBuZWVkc0Nsb3N1cmUsIGludCBudW1Db25zdGFudHMpIEpT
Q19GQVNUX0NBTEw7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGdlbmVyYXRlQ29kZShT
Y29wZUNoYWluTm9kZSopIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZvaWQgZ2VuZXJhdGVDb2Rl
KFNjb3BlQ2hhaW5Ob2RlKikgSlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgCiAgICAgICAgIFZlY3Rv
cjxJZGVudGlmaWVyPiBtX3BhcmFtZXRlcnM7CiAgICAgICAgIFN5bWJvbFRhYmxlIG1fc3ltYm9s
VGFibGU7CkBAIC0yMjc3LDcgKzIyNzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBGdW5jRXhwck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlUmFuZ2UmIHNv
dXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyID0gMCkgS0pTX0ZBU1RfQ0FMTAorICAgICAg
ICBGdW5jRXhwck5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlUmFuZ2UmIHNvdXJj
ZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyID0gMCkgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBtX2lkZW50KGlk
ZW50KQogICAgICAgICAgICAgLCBtX3BhcmFtZXRlcihwYXJhbWV0ZXIpCkBAIC0yMjg3LDE2ICsy
Mjg3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9ib2R5LT5zZXRTb3VyY2Uo
c291cmNlKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdENv
ZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgS0pTX0ZBU1RfQ0FMTDsKLSAgICAg
ICAgSlNGdW5jdGlvbiogbWFrZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikg
S0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZBU1RfQ0FMTDsKKyAg
ICAgICAgSlNGdW5jdGlvbiogbWFrZUZ1bmN0aW9uKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2Rl
KikgSlNDX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBw
cmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY01lbWJlcjsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgbmVlZHNQYXJlbnNJZkxlZnRtb3N0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHkuZ2V0KCk7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgYWRkUGFyYW1zKCkgS0pTX0ZBU1RfQ0FMTDsK
KyAgICAgICAgdm9pZCBhZGRQYXJhbXMoKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIC8vIFVz
ZWQgZm9yIHN0cmVhbVRvCiAgICAgICAgIGZyaWVuZCBjbGFzcyBQcm9wZXJ0eU5vZGU7CkBAIC0y
MzA3LDcgKzIzMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNEZWNsTm9k
ZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNEZWNs
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBG
dW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VSYW5nZSYgc291cmNlLCBQYXJhbWV0
ZXJOb2RlKiBwYXJhbWV0ZXIgPSAwKSBLSlNfRkFTVF9DQUxMCisgICAgICAgIEZ1bmNEZWNsTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VSYW5nZSYgc291cmNlLCBQYXJhbWV0ZXJO
b2RlKiBwYXJhbWV0ZXIgPSAwKSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IFN0YXRlbWVu
dE5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAg
ICAgICwgbV9wYXJhbWV0ZXIocGFyYW1ldGVyKQpAQCAtMjMxNywxNyArMjMxNywxNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fYm9keS0+c2V0U291cmNlKHNvdXJjZSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdENvZGUoQ29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgSlNDX0ZB
U1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikg
Y29uc3QgS0pTX0ZBU1RfQ0FMTDsKLSAgICAgICAgSlNGdW5jdGlvbiogbWFrZUZ1bmN0aW9uKEV4
ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CisgICAg
ICAgIEpTRnVuY3Rpb24qIG1ha2VGdW5jdGlvbihFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSop
IEpTQ19GQVNUX0NBTEw7CiAKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogCiAgICAgICAg
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHkuZ2V0KCk7IH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZvaWQgYWRkUGFyYW1zKCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICAg
ICAgdm9pZCBhZGRQYXJhbXMoKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIFJlZlB0cjxQYXJh
bWV0ZXJOb2RlPiBtX3BhcmFtZXRlcjsKICAgICAgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+
IG1fYm9keTsKQEAgLTIzMzUsMTMgKzIzMzUsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBDYXNlQ2xhdXNlTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IENhc2VDbGF1c2VOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAgQ2FzZUNsYXVzZU5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwcikgSlNDX0ZBU1RfQ0FMTAogICAgICAg
ICAgICAgOiBOb2RlKGdsb2JhbERhdGEpCiAgICAgICAgICAgICAsIG1fZXhwcihleHByKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICBDYXNlQ2xhdXNlTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTb3VyY2VFbGVtZW50cyogY2hpbGRy
ZW4pIEtKU19GQVNUX0NBTEwKKyAgICAgICAgQ2FzZUNsYXVzZU5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
KSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IE5vZGUoZ2xvYmFsRGF0YSkKICAgICAgICAg
ICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgIHsKQEAgLTIzNDksNyArMjM0OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGNoaWxkcmVuLT5yZWxlYXNlQ29udGVudHNJbnRv
VmVjdG9yKG1fY2hpbGRyZW4pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogICAg
ICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IHJldHVybiBQcmVjRXhwcmVzc2lvbjsgfQogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBleHByKCkgY29uc3QgeyByZXR1cm4gbV9leHByLmdldCgpOyB9CkBAIC0yMzYyLDIzICsy
MzYyLDIzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ2xhdXNlTGlzdE5vZGUgOiBw
dWJsaWMgTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDbGF1c2VMaXN0Tm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIEtKU19GQVNUX0NBTEwK
KyAgICAgICAgQ2xhdXNlTGlzdE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBDYXNlQ2xh
dXNlTm9kZSogY2xhdXNlKSBKU0NfRkFTVF9DQUxMCiAgICAgICAgICAgICA6IE5vZGUoZ2xvYmFs
RGF0YSkKICAgICAgICAgICAgICwgbV9jbGF1c2UoY2xhdXNlKQogICAgICAgICB7CiAgICAgICAg
IH0KIAotICAgICAgICBDbGF1c2VMaXN0Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENs
YXVzZUxpc3ROb2RlKiBjbGF1c2VMaXN0LCBDYXNlQ2xhdXNlTm9kZSogY2xhdXNlKSBLSlNfRkFT
VF9DQUxMCisgICAgICAgIENsYXVzZUxpc3ROb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Q2xhdXNlTGlzdE5vZGUqIGNsYXVzZUxpc3QsIENhc2VDbGF1c2VOb2RlKiBjbGF1c2UpIEpTQ19G
QVNUX0NBTEwKICAgICAgICAgICAgIDogTm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBt
X2NsYXVzZShjbGF1c2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNsYXVzZUxpc3QtPm1fbmV4
dCA9IHRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICBDYXNlQ2xhdXNlTm9kZSogZ2V0Q2xhdXNl
KCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBtX2NsYXVzZS5nZXQoKTsgfQotICAgICAg
ICBDbGF1c2VMaXN0Tm9kZSogZ2V0TmV4dCgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
bV9uZXh0LmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwotICAgICAgICBQYXNzUmVmUHRyPENsYXVzZUxpc3RO
b2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbV9uZXh0LnJlbGVhc2Uo
KTsgfQorICAgICAgICBDYXNlQ2xhdXNlTm9kZSogZ2V0Q2xhdXNlKCkgY29uc3QgSlNDX0ZBU1Rf
Q0FMTCB7IHJldHVybiBtX2NsYXVzZS5nZXQoKTsgfQorICAgICAgICBDbGF1c2VMaXN0Tm9kZSog
Z2V0TmV4dCgpIGNvbnN0IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9uZXh0LmdldCgpOyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBKU0NfRkFT
VF9DQUxMOworICAgICAgICBQYXNzUmVmUHRyPENsYXVzZUxpc3ROb2RlPiByZWxlYXNlTmV4dCgp
IEpTQ19GQVNUX0NBTEwgeyByZXR1cm4gbV9uZXh0LnJlbGVhc2UoKTsgfQogICAgICAgICB2aXJ0
dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBQcmVjRXhwcmVzc2lvbjsgfQogCiAgICAgcHJpdmF0ZToKQEAgLTIzODksNyArMjM4
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ2FzZUJsb2NrTm9kZSA6IHB1Ymxp
YyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhc2VCbG9ja05vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBDbGF1c2VMaXN0Tm9kZSogbGlzdDEsIENhc2VDbGF1c2VOb2RlKiBkZWZh
dWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogbGlzdDIpIEtKU19GQVNUX0NBTEwKKyAgICAgICAg
Q2FzZUJsb2NrTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIENsYXVzZUxpc3ROb2RlKiBs
aXN0MSwgQ2FzZUNsYXVzZU5vZGUqIGRlZmF1bHRDbGF1c2UsIENsYXVzZUxpc3ROb2RlKiBsaXN0
MikgSlNDX0ZBU1RfQ0FMTAogICAgICAgICAgICAgOiBOb2RlKGdsb2JhbERhdGEpCiAgICAgICAg
ICAgICAsIG1fbGlzdDEobGlzdDEpCiAgICAgICAgICAgICAsIG1fZGVmYXVsdENsYXVzZShkZWZh
dWx0Q2xhdXNlKQpAQCAtMjM5Nyw5ICsyMzk3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgfQogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRDb2RlRm9yQmxvY2soQ29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGlucHV0LCBSZWdpc3RlcklEKiBkc3QgPSAwKSBLSlNf
RkFTVF9DQUxMOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Q29kZUZvckJsb2NrKENvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiBpbnB1dCwgUmVnaXN0ZXJJRCogZHN0ID0gMCkgSlNDX0ZBU1Rf
Q0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29u
c3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBw
cmVjZWRlbmNlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFByZWNFeHBy
ZXNzaW9uOyB9CiAKICAgICBwcml2YXRlOgpAQCAtMjQxMSwxNiArMjQxMSwxNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFN3aXRjaE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBTd2l0Y2hOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENhc2VCbG9ja05vZGUqIGJsb2NrKSBLSlNfRkFTVF9D
QUxMCisgICAgICAgIFN3aXRjaE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spIEpTQ19GQVNUX0NBTEwKICAgICAg
ICAgICAgIDogU3RhdGVtZW50Tm9kZShnbG9iYWxEYXRhKQogICAgICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Q29kZShDb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBLSlNfRkFTVF9DQUxMOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRDb2RlKENvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NB
TEw7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7CisgICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBKU0NfRkFTVF9DQUxMOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRy
PEV4cHJlc3Npb25Ob2RlPiBtX2V4cHI7CkBAIC0yNDI5LDkgKzI0MjksOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEJyZWFrcG9pbnRDaGVja1N0YXRlbWVudCA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJyZWFrcG9pbnRDaGVja1N0YXRlbWVu
dChKU0dsb2JhbERhdGEqLCBQYXNzUmVmUHRyPFN0YXRlbWVudE5vZGU+KSBLSlNfRkFTVF9DQUxM
OworICAgICAgICBCcmVha3BvaW50Q2hlY2tTdGF0ZW1lbnQoSlNHbG9iYWxEYXRhKiwgUGFzc1Jl
ZlB0cjxTdGF0ZW1lbnROb2RlPikgSlNDX0ZBU1RfQ0FMTDsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEpTQ19GQVNUX0NBTEw7
CiAKICAgICBwcml2YXRlOgogICAgICAgICBSZWZQdHI8U3RhdGVtZW50Tm9kZT4gbV9zdGF0ZW1l
bnQ7CkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gMzYyNjMpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDA4LTA5LTA3ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJp
Y2hAdXdhdGVybG9vLmNhPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZSB0aGUgS0pTIHByZWZpeCBvbiBwcmVwcm9jZXNzb3IgbWFjcm9zIHRv
IEpTQy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmg6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5oOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorCiAyMDA4LTA5LTA3ICBDYW1lcm9uIFp3YXJp
Y2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2ll
aiBTdGFjaG93aWFrLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0QmFz
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2Uu
aAkocmV2aXNpb24gMzYyNjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRC
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw4ICsxMDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIH0KICAgICB9OwogCi0gICAgLy8gVGhpcyBjbGFzcyBpcyBhIG1vZGlmaWVk
IHZlcnNpb24gb2YgdGhlIGNvZGUgdGhlIEtKU19ERUZJTkVfUFJPVE9UWVBFX1dJVEhfUFJPVE9U
WVBFCi0gICAgLy8gYW5kIEtKU19JTVBMRU1FTlRfUFJPVE9UWVBFIG1hY3JvcyBwcm9kdWNlIC0g
dGhlIGlkZWEgaXMgdGhhdCBjbGFzc2VzIGxpa2UgSlNFdmVudFRhcmdldE5vZGUKKyAgICAvLyBU
aGlzIGNsYXNzIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgY29kZSB0aGUgSlNDX0RFRklO
RV9QUk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUKKyAgICAvLyBhbmQgSlNDX0lNUExFTUVOVF9QUk9U
T1RZUEUgbWFjcm9zIHByb2R1Y2UgLSB0aGUgaWRlYSBpcyB0aGF0IGNsYXNzZXMgbGlrZSBKU0V2
ZW50VGFyZ2V0Tm9kZQogICAgIC8vIGFuZCBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
IGNhbiBzaGFyZSBhIHNpbmdsZSBwcm90b3R5cGUganVzdCBkaWZmZXJpbmcgaW4gdGhlCiAgICAg
Ly8gbmFtaW5nICJFdmVudFRhcmdldE5vZGVQcm90b3R5cGUiIHZzICJFdmVudFRhcmdldFNWR0Vs
ZW1lbnRJbnN0YW5jZVByb3RvdHlwZSIuIEFib3ZlIG1lbnRpb25lZAogICAgIC8vIG1hY3JvcyBm
b3JjZSB0aGUgZXhpc3RhbmNlIG9mIHNldmVyYWwgcHJvdG90eXBlIHRhYmxlcyBmb3IgZWFjaCBv
ZiB0aGUgY2xhc3NlcyAtIGF2b2lkIHRoYXQuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SFRNTElucHV0RWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDM2MjYzKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBAZW5kCiAqLwogCi1LSlNfSU1Q
TEVNRU5UX1BST1RPVFlQRSgiSFRNTElucHV0RWxlbWVudEJhc2UiLCBKU0hUTUxJbnB1dEVsZW1l
bnRCYXNlUHJvdG90eXBlKQorSlNDX0lNUExFTUVOVF9QUk9UT1RZUEUoIkhUTUxJbnB1dEVsZW1l
bnRCYXNlIiwgSlNIVE1MSW5wdXRFbGVtZW50QmFzZVByb3RvdHlwZSkKIAogLy8gU2V0U2VsZWN0
aW9uUmFuZ2UgaXMgaW1wbGVtZW50ZWQgb24gdGhlIGNsYXNzIGluc3RlYWQgb2Ygb24gdGhlIHBy
b3RvdHlwZQogLy8gdG8gbWFrZSBpdCBlYXNpZXIgdG8gZW5hYmxlL2Rpc2FibGUgbG9va3VwIG9m
IHRoZSBmdW5jdGlvbiBiYXNlZCBvbiBpbnB1dCB0eXBlLgpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmgJKHJldmlzaW9uIDM2MjYzKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDcgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSFRNTElu
cHV0RWxlbWVudDsKIAotICAgIEtKU19ERUZJTkVfUFJPVE9UWVBFX1dJVEhfUFJPVE9UWVBFKEpT
SFRNTElucHV0RWxlbWVudEJhc2VQcm90b3R5cGUsIEpTSFRNTEVsZW1lbnRQcm90b3R5cGUpCisg
ICAgSlNDX0RFRklORV9QUk9UT1RZUEVfV0lUSF9QUk9UT1RZUEUoSlNIVE1MSW5wdXRFbGVtZW50
QmFzZVByb3RvdHlwZSwgSlNIVE1MRWxlbWVudFByb3RvdHlwZSkKIAogICAgIGNsYXNzIEpTSFRN
TElucHV0RWxlbWVudEJhc2UgOiBwdWJsaWMgSlNIVE1MRWxlbWVudCB7CiAgICAgcHVibGljOgpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZp
c2lvbiAzNjI2MykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3ICs2MzYsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIK
ICAgICB9CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIlxuIik7CiAKLSAgICAjIEFkZCBwcm90
b3R5cGUgZGVjbGFyYXRpb24gLS0gY29kZSBhZG9wdGVkIGZyb20gdGhlIEtKU19ERUZJTkVfUFJP
VE9UWVBFIGFuZCBLSlNfREVGSU5FX1BST1RPVFlQRV9XSVRIX1BST1RPVFlQRSBtYWNyb3MKKyAg
ICAjIEFkZCBwcm90b3R5cGUgZGVjbGFyYXRpb24gLS0gY29kZSBhZG9wdGVkIGZyb20gdGhlIEpT
Q19ERUZJTkVfUFJPVE9UWVBFIGFuZCBKU0NfREVGSU5FX1BST1RPVFlQRV9XSVRIX1BST1RPVFlQ
RSBtYWNyb3MKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiY2xhc3MgJHtjbGFzc05hbWV9UHJv
dG90eXBlIDogcHVibGljIEpTQzo6SlNPYmplY3Qge1xuIik7CiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgInB1YmxpYzpcbiIpOwogICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93
Iikgewo=
</data>
<flag name="review"
          id="10352"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>