<?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>88477</bug_id>
          
          <creation_ts>2012-06-06 18:13:28 -0700</creation_ts>
          <short_desc>PredictedType should be called SpeculatedType</short_desc>
          <delta_ts>2012-06-06 18:36:38 -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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>643034</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-06 18:13:28 -0700</bug_when>
    <thetext>Justification: it&apos;s used for more than just predictions.  It&apos;s also used for type proofs in the CFA and DFG backend.

The only thing in common between all uses of the types in PredictedType is that they are all used for creating and optimizing speculations, even though sometimes they mean predictions and other times they mean proofs.

Already rubber stamped by Gavin Barraclough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643039</commentid>
    <comment_count>1</comment_count>
      <attachid>146169</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-06 18:15:10 -0700</bug_when>
    <thetext>Created attachment 146169
the patch

Putting up for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643043</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-06 18:18:29 -0700</bug_when>
    <thetext>Attachment 146169 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/bytecode/LazyOperandValueProfile.h:177:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643045</commentid>
    <comment_count>3</comment_count>
      <attachid>146170</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-06 18:20:09 -0700</bug_when>
    <thetext>Created attachment 146170
improved patch

Found places where my rename was a bit overzealous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643047</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-06 18:22:11 -0700</bug_when>
    <thetext>Attachment 146170 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/bytecode/LazyOperandValueProfile.h:177:  The parameter name &quot;key&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>643063</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-06 18:36:38 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/119660</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146169</attachid>
            <date>2012-06-06 18:15:10 -0700</date>
            <delta_ts>2012-06-06 18:20:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>spectype_patch_1.diff</filename>
            <type>text/plain</type>
            <size>401398</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5NjU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1OCBA
QAorMjAxMi0wNi0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFByZWRpY3RlZFR5cGUgc2hvdWxkIGJlIGNhbGxlZCBTcGVjdWxhdGVkVHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NzcKKworICAgICAgICBS
dWJiZXIgc3RhbXBlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJl
ZGljdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDoK
KyAgICAgICAgKExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKToKKyAgICAgICAgKiBieXRl
Y29kZS9QcmVkaWN0ZWRUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QcmVk
aWN0ZWRUeXBlLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVk
VHlwZS5jcHAuCisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uVG9TdHJpbmcpOgorICAgICAgICAo
SlNDOjpzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpzcGVj
dWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DZWxsKToKKyAgICAgICAgKEpT
Qzo6c3BlY3VsYXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0
ZWRUeXBlLmguCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjppc0FueVNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6aXNDZWxsU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc09i
amVjdFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNGaW5hbE9iamVjdFNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6aXNGaW5hbE9iamVjdE9yT3RoZXJTcGVjdWxhdGlvbik6CisgICAg
ICAgIChKU0M6OmlzRml4ZWRJbmRleGVkU3RvcmFnZU9iamVjdFNwZWN1bGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6aXNTdHJpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQXJyYXlTcGVj
dWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25TcGVjdWxhdGlvbik6CisgICAgICAg
IChKU0M6OmlzSW50OEFycmF5U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0ludDE2QXJy
YXlTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSW50MzJBcnJheVNwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNVaW50OEFycmF5U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpp
c1VpbnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc1VpbnQxNkFy
cmF5U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc1VpbnQzMkFycmF5U3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjppc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6aXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQXJndW1lbnRz
U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5
U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJh
eVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5U3Bl
Y3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6
OmlzTXlBcmd1bWVudHNTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSW50MzJTcGVjdWxh
dGlvbik6CisgICAgICAgIChKU0M6OmlzRG91YmxlUmVhbFNwZWN1bGF0aW9uKToKKyAgICAgICAg
KEpTQzo6aXNEb3VibGVTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzTnVtYmVyU3BlY3Vs
YXRpb24pOgorICAgICAgICAoSlNDOjppc0Jvb2xlYW5TcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OmlzT3RoZXJTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzRW1wdHlTcGVjdWxhdGlv
bik6CisgICAgICAgIChKU0M6Om1lcmdlU3BlY3VsYXRpb25zKToKKyAgICAgICAgKEpTQzo6bWVy
Z2VTcGVjdWxhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU2V0Lmg6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVNldDo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmls
ZUJhc2U6OlZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNl
OjpkdW1wKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKToKKyAgICAgICAgKFZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpp
bml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OnNwZWN1bGF0ZUludDMyVW5hcnkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OnNwZWN1bGF0ZU51bWJlclVuYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdFN0YXRlOjpzcGVjdWxhdGVCb29sZWFuVW5hcnkpOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0U3RhdGU6OnNwZWN1bGF0ZUludDMyQmluYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFN0YXRlOjpzcGVjdWxhdGVOdW1iZXJCaW5hcnkpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpz
cGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjpBYnN0cmFjdFZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpj
bGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6aXNDbGVhcik6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWFrZVRvcCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6Y2xvYmJlclN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0VmFsdWU6OmlzVG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVl
OjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om1lcmdlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0VmFsdWU6OnZhbGlkYXRlSWdub3JpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFs
dWU6OmR1bXApOgorICAgICAgICAoQWJzdHJhY3RWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fy
Z3VtZW50UG9zaXRpb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0aW9uOjpB
cmd1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0aW9uOjpt
ZXJnZUFyZ3VtZW50QXdhcmVuZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0
aW9uOjpwcmVkaWN0aW9uKToKKyAgICAgICAgKEFyZ3VtZW50UG9zaXRpb24pOgorICAgICAgICAq
IGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmluamVjdExhenlPcGVyYW5kU3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRMb2NhbCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmdldFNwZWN1bGF0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRTcGVjdWxhdGlvbik6CisgICAgICAgIChJbmxpbmVTdGFj
a0VudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6Zml4VmFyaWFibGVBY2Nlc3NTcGVjdWxhdGlvbnMpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogZGZnL0RG
R0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0SW5kZXhlZFBy
b3BlcnR5U3RvcmFnZUxvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhh
c2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeERv
dWJsZUVkZ2UpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6Om5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0QXJndW1lbnRU
eXBlcyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmdldEpTQ29uc3RhbnRTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmlzUHJlZGljdGVkTnVtZXJpY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YnlWYWxJ
c1B1cmUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpnZXRTcGVjdWxhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpnZXRIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cHJlZGlj
dEhlYXApOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnByZWRpY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OnByZWRpY3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1
bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVt
YmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVCb29sZWFuKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVy
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVBcnJheSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpzaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6c2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpzaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNob3VsZFNwZWN1bGF0ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlOjpzZXRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6bWVyZ2VQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6ZG9Sb3VuZE9mRG91YmxlVm90aW5n
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkRGRzo6R1BSVGVtcG9y
YXJ5OjpHUFJUZW1wb3JhcnkpOgorICAgICAgICAoSlNDOjpERkc6OkZQUlRlbXBvcmFyeTo6RlBS
VGVtcG9yYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBl
ZXBIb2xlRG91YmxlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldENoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlRG91YmxlQXNJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhNb2QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVl
U291cmNlOjpmb3JTcGVjdWxhdGlvbik6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAg
ICAgIChHUFJUZW1wb3JhcnkpOgorICAgICAgICAoRlBSVGVtcG9yYXJ5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjRG91YmxlT3BlcmFuZDo6U3BlY0RvdWJsZU9wZXJhbmQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWNEb3VibGVPcGVyYW5kOjp+U3BlY0RvdWJsZU9wZXJhbmQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWNEb3VibGVPcGVyYW5kOjpmcHIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWNDZWxsT3BlcmFuZDo6U3BlY0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjQ2VsbE9wZXJhbmQ6On5TcGVjQ2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWNDZWxsT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjQm9vbGVhbk9wZXJh
bmQ6OlNwZWNCb29sZWFuT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY0Jvb2xlYW5P
cGVyYW5kOjp+U3BlY0Jvb2xlYW5PcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjQm9v
bGVhbk9wZXJhbmQ6Omdwcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY0Rv
dWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjQ2VsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjQm9vbGVhbik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVj
dE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUNvbXBhcmUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnRJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWND
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWNCb29sZWFu
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRv
T2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlQ29tcGFyZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OlZh
cmlhYmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRh
OjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6Om5vblVu
aWZpZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6
OnByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6YXJn
dW1lbnRBd2FyZVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNz
RGF0YTo6bWVyZ2VBcmd1bWVudEF3YXJlUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6
VmFyaWFibGVBY2Nlc3NEYXRhOjpzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRpbmdUb1ZvdGUp
OgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bWFrZVByZWRpY3Rpb25G
b3JEb3VibGVGb3JtYXQpOgorICAgICAgICAoVmFyaWFibGVBY2Nlc3NEYXRhKToKKwogMjAxMi0w
Ni0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdsb2JhbCBv
YmplY3QgdmFyaWFibGUgYWNjZXNzZXMgc2hvdWxkIG5vdCByZXF1aXJlIGFuIGV4dHJhIGxvYWQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExOTYwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvT3Bjb2RlLmNw
cAogICAgIGJ5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwCi0gICAgYnl0ZWNvZGUv
UHJlZGljdGVkVHlwZS5jcHAKKyAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKICAgICBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAK
ICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTIw
LDggKzEyMCw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAgXAogICAgIGJ5dGVjb2RlL09wY29kZS5jcHAgXAogICAgIGJ5dGVjb2RlL1BvbHltb3Jw
aGljUHV0QnlJZExpc3QuY3BwIFwKLSAgICBieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcCBcCisg
ICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIFwKICAgICBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcCBcCiAgICAgYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcCBcCiAgICAgYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMTk2MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTYzMCwxMSArMTYz
MCwxMSBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxieXRlY29kZVxQcmVkaWN0ZWRUeXBlLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGJ5dGVjb2RlXFNwZWN1bGF0ZWRUeXBlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcUHJlZGljdGVkVHlwZS5oIgorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcU3BlY3VsYXRlZFR5cGUuaCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDExOTYwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsMTAgKzE4MCwx
MCBAQAogCQkwRkQ4MUFEMzE1NEZCNEYwMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODFBRDAxNTRGQjRF
QjAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2Fw
YWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovOyB9
OwogCQkwRkQ4MkUzOTE0MUFCMTREMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTM3MTQxQUIx
NDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5NCAvKiBQ
cmVkaWN0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRDgyRTU0MTQxREFF
RUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNwZWN1bGF0
ZWRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZEODJFNTYxNDFEQUYwODAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTUyMTQxREFFREUwMDE3
OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi87IH07CiAJCTBGRDgyRTU3MTQxREFGMTAwMDE3OUM5
NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZEODJFODYxNDFG
M0ZGMTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRp
Y3RlZFR5cGUuY3BwICovOyB9OworCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3Vs
YXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLzsgfTsK
IAkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAv
KiBPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2
QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwICovOyB9OwpAQCAtODc1LDEwICs4NzUsMTAgQEAKIAkJMEZEODJFMUUxNDE3
MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdDYXBhYmlsaXRpZXMuY3BwOyBwYXRoID0gZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTFGMTQxNzJD
MkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQ2FwYWJpbGl0aWVzLmg7IHBhdGggPSBkZmcvREZHQ2FwYWJpbGl0aWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAv
KiBDb21wYWN0SklUQ29kZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b21wYWN0SklUQ29kZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkQ4MkU0
RjE0MURBRUExMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcmVkaWN0ZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVjdWxhdGVkVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50cnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRW50cnkuY3Bw
OyBwYXRoID0gZGZnL0RGR09TUkVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkVudHJ5Lmg7IHBhdGggPSBkZmcvREZHT1NSRW50
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5
Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJlZGljdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdWxhdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKQEAgLTIyNzUsOCArMjI3NSw4IEBACiAJCQkJQkNGRDhDOTEwRUVC
MkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovLAogCQkJCTk2OUEwNzk0MEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuY3BwICovLAogCQkJCTk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBP
cGNvZGUuaCAqLywKLQkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogUHJlZGljdGVkVHlw
ZS5jcHAgKi8sCi0JCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUu
aCAqLywKKwkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3Bw
ICovLAorCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oICov
LAogCQkJCTE0MjlEODgzMEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwICovLAog
CQkJCTE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCAqLywKIAkJCQlC
Q0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3BwICovLApAQCAt
MjUwNiw3ICsyNTA2LDcgQEAKIAkJCQlCQzE4QzQ0QjBFMTZGNUNEMDBCMzQ0NjAgLyogUGFyc2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA1MkMzNTBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2Vy
QXJlbmEuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MzAzRDY0MTQ0N0I5RTEwMEQzRjkwNCAvKiBQ
YXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5
NCAvKiBQcmVkaWN0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQ4MkU1NDE0MURBRUVF
MDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDUw
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1
MTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDUyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MTQ3LDcgKzMxNDcsNyBAQAogCQkJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUJDMTA3RUM1NEQwMDQyRUMyQyAvKiBQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwNTJDMzQwRkI3OTIxOTAwNDhGREMzIC8qIFBh
cnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5
NCAvKiBQcmVkaWN0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRDgyRTg2MTQxRjNG
RjEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NTc0
MkY2NTBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NUNENDU3NjBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NjAsNyArMjU2MCw3IEBA
IGJvb2wgQ29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxl
LT5tX3ByZWRpY3Rpb24gIT0gUHJlZGljdE5vbmUpCisgICAgICAgIGlmIChwcm9maWxlLT5udW1i
ZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLT5tX3ByZWRpY3Rpb24gIT0gU3BlY05vbmUpCiAgICAg
ICAgICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAg
cHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfQpAQCAtMjYxNCw3ICsy
NjE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgIGFyZyA9ICV1OiAiLCBpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBkYXRhTG9nKCIgICBiYyA9ICVkOiAiLCBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0KTsKLSAg
ICAgICAgaWYgKCFwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSAmJiBwcm9maWxlLT5tX3ByZWRp
Y3Rpb24gPT0gUHJlZGljdE5vbmUpIHsKKyAgICAgICAgaWYgKCFwcm9maWxlLT5udW1iZXJPZlNh
bXBsZXMoKSAmJiBwcm9maWxlLT5tX3ByZWRpY3Rpb24gPT0gU3BlY05vbmUpIHsKICAgICAgICAg
ICAgIGRhdGFMb2coIjxlbXB0eT5cbiIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJl
dmlzaW9uIDExOTYwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNTc2LDcgKzU3Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkp
IC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9Ci0gICAgICAgIFByZWRpY3RlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZv
ckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgU3BlY3VsYXRlZFR5
cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9m
ZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsMTIgKzg0LDEyIEBAIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlKiBMYXp5T3BlcmFuZFZhbHUKICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwogfQogCi1QcmVk
aWN0ZWRUeXBlIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpwcmVkaWN0aW9uKAorU3Bl
Y3VsYXRlZFR5cGUgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OnByZWRpY3Rpb24oCiAg
ICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKIHsKICAgICBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldElmUHJlc2VudChrZXkpOwogICAg
IGlmICghcHJvZmlsZSkKLSAgICAgICAgcmV0dXJuIFByZWRpY3ROb25lOworICAgICAgICByZXR1
cm4gU3BlY05vbmU7CiAgICAgCiAgICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDExOTYwNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlKiBnZXRJZlByZXNlbnQoCiAgICAgICAgIGNvbnN0IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0OwogICAgIAotICAgIFByZWRpY3RlZFR5cGUgcHJl
ZGljdGlvbihjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdDsKKyAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5JiBrZXkpIGNvbnN0OwogcHJpdmF0ZToKICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXImIG1faG9sZGVyOwogICAgIEhhc2hNYXA8TGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVLZXksIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKj4gbV9tYXA7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwCShyZXZpc2lv
biAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQcmVkaWN0ZWRUeXBlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVu
dHMuaCIKLSNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgotI2luY2x1ZGUgPHd0Zi9Cb3VuZHNDaGVja2VkUG9pbnRl
ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgY2hhciogcHJlZGljdGlvblRvU3RyaW5n
KFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09IFByZWRpY3ROb25lKQot
ICAgICAgICByZXR1cm4gIk5vbmUiOwotICAgIAotICAgIHN0YXRpYyBjb25zdCBpbnQgc2l6ZSA9
IDI1NjsKLSAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXplXTsKLSAgICBCb3VuZHNDaGVj
a2VkUG9pbnRlcjxjaGFyPiBwdHIoZGVzY3JpcHRpb24sIHNpemUpOwotICAgIAotICAgIGJvb2wg
aXNUb3AgPSB0cnVlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RDZWxsT3RoZXIpCi0g
ICAgICAgIHB0ci5zdHJjYXQoIk90aGVyY2VsbCIpOwotICAgIGVsc2UKLSAgICAgICAgaXNUb3Ag
PSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0T2JqZWN0T3RoZXIpCi0gICAg
ICAgIHB0ci5zdHJjYXQoIk90aGVyb2JqIik7Ci0gICAgZWxzZQotICAgICAgICBpc1RvcCA9IGZh
bHNlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RGaW5hbE9iamVjdCkKLSAgICAgICAg
cHRyLnN0cmNhdCgiRmluYWwiKTsKLSAgICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0K
LSAgICBpZiAodmFsdWUgJiBQcmVkaWN0QXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkFycmF5
Iik7Ci0gICAgZWxzZQotICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgIAotICAgIGlmICh2YWx1
ZSAmIFByZWRpY3RJbnQ4QXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkludDhhcnJheSIpOwot
ICAgIGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQ
cmVkaWN0SW50MTZBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiSW50MTZhcnJheSIpOwotICAg
IGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVk
aWN0SW50MzJBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiSW50MzJhcnJheSIpOwotICAgIGVs
c2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0
VWludDhBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiVWludDhhcnJheSIpOwotICAgIGVsc2UK
LSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLQotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RVaW50OENs
YW1wZWRBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiVWludDhjbGFtcGVkYXJyYXkiKTsKLSAg
ICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKHZhbHVlICYgUHJl
ZGljdFVpbnQxNkFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJVaW50MTZhcnJheSIpOwotICAg
IGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVk
aWN0VWludDMyQXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIlVpbnQzMmFycmF5Iik7Ci0gICAg
ZWxzZQotICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRp
Y3RGbG9hdDMyQXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkZsb2F0MzJhcnJheSIpOwotICAg
IGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVk
aWN0RmxvYXQ2NEFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJGbG9hdDY0YXJyYXkiKTsKLSAg
ICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKHZhbHVlICYgUHJl
ZGljdEZ1bmN0aW9uKQotICAgICAgICBwdHIuc3RyY2F0KCJGdW5jdGlvbiIpOwotICAgIGVsc2UK
LSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0TXlB
cmd1bWVudHMpCi0gICAgICAgIHB0ci5zdHJjYXQoIk15YXJndW1lbnRzIik7Ci0gICAgZWxzZQot
ICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RGb3Jl
aWduQXJndW1lbnRzKQotICAgICAgICBwdHIuc3RyY2F0KCJGb3JlaWduYXJndW1lbnRzIik7Ci0g
ICAgZWxzZQotICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RTdHJpbmcpCi0gICAgICAgIHB0ci5zdHJjYXQoIlN0cmluZyIpOwotICAgIGVsc2UKLSAg
ICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0SW50MzIp
Ci0gICAgICAgIHB0ci5zdHJjYXQoIkludCIpOwotICAgIGVsc2UKLSAgICAgICAgaXNUb3AgPSBm
YWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0RG91YmxlUmVhbCkKLSAgICAgICAg
cHRyLnN0cmNhdCgiRG91YmxlcmVhbCIpOwotICAgIGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0RG91YmxlTmFOKQotICAgICAgICBwdHIu
c3RyY2F0KCJEb3VibGVuYW4iKTsKLSAgICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0g
ICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdEJvb2xlYW4pCi0gICAgICAgIHB0ci5zdHJjYXQo
IkJvb2wiKTsKLSAgICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0gICAgCi0gICAgaWYg
KHZhbHVlICYgUHJlZGljdE90aGVyKQotICAgICAgICBwdHIuc3RyY2F0KCJPdGhlciIpOwotICAg
IGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAoaXNUb3ApIHsKLSAg
ICAgICAgcHRyID0gZGVzY3JpcHRpb247Ci0gICAgICAgIHB0ci5zdHJjYXQoIlRvcCIpOwotICAg
IH0KLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0RW1wdHkpCi0gICAgICAgIHB0ci5zdHJj
YXQoIkVtcHR5Iik7Ci0gICAgCi0gICAgKnB0cisrID0gMDsKLSAgICAKLSAgICByZXR1cm4gZGVz
Y3JpcHRpb247Ci19Ci0KLWNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5n
KFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbikKLXsKLSAgICBpZiAoaXNGaW5hbE9iamVjdFByZWRp
Y3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPEZpbmFsPiI7Ci0gICAgaWYgKGlz
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxBcnJheT4iOwot
ICAgIGlmIChpc1N0cmluZ1ByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAi
PFN0cmluZz4iOwotICAgIGlmIChpc0Z1bmN0aW9uUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAg
ICAgICAgcmV0dXJuICI8RnVuY3Rpb24+IjsKLSAgICBpZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9u
KHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxJbnQ4YXJyYXk+IjsKLSAgICBpZiAoaXNJ
bnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgcmV0dXJuICI8SW50MTZh
cnJheT4iOwotICAgIGlmIChpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAg
ICAgICByZXR1cm4gIjxJbnQzMmFycmF5PiI7Ci0gICAgaWYgKGlzVWludDhBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPFVpbnQ4YXJyYXk+IjsKLSAgICBpZiAo
aXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPFVp
bnQxNmFycmF5PiI7Ci0gICAgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQotICAgICAgICByZXR1cm4gIjxVaW50MzJhcnJheT4iOwotICAgIGlmIChpc0Zsb2F0MzJBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPEZsb2F0MzJhcnJheT4i
OwotICAgIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAg
IHJldHVybiAiPEZsb2F0NjRhcnJheT4iOwotICAgIGlmIChpc015QXJndW1lbnRzUHJlZGljdGlv
bihwcmVkaWN0aW9uKSkKLSAgICAgICAgcmV0dXJuICI8TXlhcmd1bWVudHM+IjsKLSAgICBpZiAo
aXNBcmd1bWVudHNQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxBcmd1
bWVudHM+IjsKLSAgICBpZiAoaXNPYmplY3RQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAg
ICByZXR1cm4gIjxPYmplY3Q+IjsKLSAgICBpZiAoaXNDZWxsUHJlZGljdGlvbihwcmVkaWN0aW9u
KSkKLSAgICAgICAgcmV0dXJuICI8Q2VsbD4iOwotICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihw
cmVkaWN0aW9uKSkKLSAgICAgICAgcmV0dXJuICI8SW50MzI+IjsKLSAgICBpZiAoaXNEb3VibGVQ
cmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxEb3VibGU+IjsKLSAgICBp
ZiAoaXNOdW1iZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxOdW1i
ZXI+IjsKLSAgICBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAg
cmV0dXJuICI8Qm9vbGVhbj4iOwotICAgIGlmIChpc090aGVyUHJlZGljdGlvbihwcmVkaWN0aW9u
KSkKLSAgICAgICAgcmV0dXJuICI8T3RoZXI+IjsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLVByZWRp
Y3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8pCi17Ci0gICAgaWYgKGNsYXNzSW5mbyA9PSAmSlNGaW5hbE9iamVjdDo6c19pbmZvKQotICAg
ICAgICByZXR1cm4gUHJlZGljdEZpbmFsT2JqZWN0OwotICAgIAotICAgIGlmIChjbGFzc0luZm8g
PT0gJkpTQXJyYXk6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIFByZWRpY3RBcnJheTsKLSAgICAK
LSAgICBpZiAoY2xhc3NJbmZvID09ICZKU1N0cmluZzo6c19pbmZvKQotICAgICAgICByZXR1cm4g
UHJlZGljdFN0cmluZzsKLSAgICAKLSAgICBpZiAoY2xhc3NJbmZvID09ICZBcmd1bWVudHM6OnNf
aW5mbykKLSAgICAgICAgcmV0dXJuIFByZWRpY3RBcmd1bWVudHM7IC8vIENhbm5vdCBkaXN0aW5n
dWlzaCBiZXR3ZWVuIE15QXJndW1lbnRzIGFuZCBGb3JlaWduQXJndW1lbnRzIGF0IHRoaXMgc3Rh
Z2UuIFRoYXQgaGFwcGVucyBpbiB0aGUgZmxvdyBhbmFseXNpcy4KLSAgICAKLSAgICBpZiAoY2xh
c3NJbmZvLT5pc1N1YkNsYXNzT2YoJkpTRnVuY3Rpb246OnNfaW5mbykpCi0gICAgICAgIHJldHVy
biBQcmVkaWN0RnVuY3Rpb247Ci0KLSAgICAKLSAgICBpZiAoY2xhc3NJbmZvLT50eXBlZEFycmF5
U3RvcmFnZVR5cGUgIT0gVHlwZWRBcnJheU5vbmUpIHsKLSAgICAgICAgc3dpdGNoIChjbGFzc0lu
Zm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewotICAgICAgICBjYXNlIFR5cGVkQXJyYXlJbnQ4
OgotICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RJbnQ4QXJyYXk7Ci0gICAgICAgIGNhc2UgVHlw
ZWRBcnJheUludDE2OgotICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RJbnQxNkFycmF5OwotICAg
ICAgICBjYXNlIFR5cGVkQXJyYXlJbnQzMjoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0SW50
MzJBcnJheTsKLSAgICAgICAgY2FzZSBUeXBlZEFycmF5VWludDg6Ci0gICAgICAgICAgICByZXR1
cm4gUHJlZGljdFVpbnQ4QXJyYXk7Ci0gICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQ4Q2xhbXBl
ZDoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0VWludDhDbGFtcGVkQXJyYXk7Ci0gICAgICAg
IGNhc2UgVHlwZWRBcnJheVVpbnQxNjoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0VWludDE2
QXJyYXk7Ci0gICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQzMjoKLSAgICAgICAgICAgIHJldHVy
biBQcmVkaWN0VWludDMyQXJyYXk7Ci0gICAgICAgIGNhc2UgVHlwZWRBcnJheUZsb2F0MzI6Ci0g
ICAgICAgICAgICByZXR1cm4gUHJlZGljdEZsb2F0MzJBcnJheTsKLSAgICAgICAgY2FzZSBUeXBl
ZEFycmF5RmxvYXQ2NDoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0RmxvYXQ2NEFycmF5Owot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKCZKU09iamVjdDo6c19pbmZvKSkK
LSAgICAgICAgcmV0dXJuIFByZWRpY3RPYmplY3RPdGhlcjsKLSAgICAKLSAgICByZXR1cm4gUHJl
ZGljdENlbGxPdGhlcjsKLX0KLQotUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbVN0cnVjdHVy
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICByZXR1cm4gcHJlZGljdGlvbkZyb21DbGFz
c0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7Ci19Ci0KLVByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbkZyb21DZWxsKEpTQ2VsbCogY2VsbCkKLXsKLSAgICByZXR1cm4gcHJlZGljdGlvbkZyb21T
dHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkpOwotfQotCi1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gUHJlZGljdEVtcHR5OwotICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0g
ICAgICAgIHJldHVybiBQcmVkaWN0SW50MzI7Ci0gICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsK
LSAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChu
dW1iZXIgPT0gbnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuIFByZWRpY3REb3VibGVSZWFsOwot
ICAgICAgICByZXR1cm4gUHJlZGljdERvdWJsZU5hTjsKLSAgICB9Ci0gICAgaWYgKHZhbHVlLmlz
Q2VsbCgpKQotICAgICAgICByZXR1cm4gcHJlZGljdGlvbkZyb21DZWxsKHZhbHVlLmFzQ2VsbCgp
KTsKLSAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCi0gICAgICAgIHJldHVybiBQcmVkaWN0Qm9v
bGVhbjsKLSAgICBBU1NFUlQodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAgcmV0dXJu
IFByZWRpY3RPdGhlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAkocmV2aXNpb24gMTE5
NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSwyNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcmVkaWN0ZWRU
eXBlX2gKLSNkZWZpbmUgUHJlZGljdGVkVHlwZV9oCi0KLSNpbmNsdWRlICJKU1ZhbHVlLmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdHJ1Y3R1cmU7Ci0KLXR5cGVkZWYgdWludDMyX3Qg
UHJlZGljdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3ROb25lICAg
ICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0IGtub3cgYW55dGhpbmcgeWV0Lgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEZpbmFsT2JqZWN0ICAgICAgID0gMHgw
MDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KLXN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RBcnJheSAgICAgICAgICAgICA9IDB4MDAwMDAwMDI7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0RnVuY3Rpb24gICAgICAgICAgPSAweDAwMDAwMDA4OyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBQcmVk
aWN0ZWRUeXBlIFByZWRpY3RJbnQ4QXJyYXkgICAgICAgICA9IDB4MDAwMDAwMTA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEludDE2QXJyYXkgICAgICAgID0gMHgwMDAwMDAy
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFz
c2VzLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEludDMyQXJyYXkgICAgICAg
ID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJyYXkgb3Igb25lIG9m
IGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdFVpbnQ4
QXJyYXkgICAgICAgID0gMHgwMDAwMDA4MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQ4QXJy
YXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
UHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBj
b25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RVaW50MTZBcnJheSAgICAgICA9IDB4MDAwMDAyMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0VWludDMyQXJyYXkgICAgICAg
PSAweDAwMDAwNDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDMyQXJyYXkgb3Igb25lIG9m
IGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEZsb2F0
MzJBcnJheSAgICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFy
cmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBl
IFByZWRpY3RGbG9hdDY0QXJyYXkgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3Qg
UHJlZGljdGVkVHlwZSBQcmVkaWN0TXlBcmd1bWVudHMgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gQXJndW1lbnRzIG9iamVjdCwgYW5kIGl0J3MgZGVmaW5pdGVseSB0
aGUgb25lIGZvciBteSBjdXJyZW50IGZyYW1lLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
UHJlZGljdEZvcmVpZ25Bcmd1bWVudHMgID0gMHgwMDAwNDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIEFyZ3VtZW50cyBvYmplY3QsIGFuZCBpdCdzIGRlZmluaXRlbHkgbm90IG1pbmUuCi1zdGF0
aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0QXJndW1lbnRzICAgICAgICAgPSAweDAwMDA2
MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJndW1lbnRzIG9iamVjdC4KLXN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RPYmplY3RPdGhlciAgICAgICA9IDB4MDAwMDgwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBKU0FycmF5
LCBvciBKU0Z1bmN0aW9uLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE9iamVj
dE1hc2sgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZv
ciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRU
eXBlIFByZWRpY3RTdHJpbmcgICAgICAgICAgICA9IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIEpTU3RyaW5nLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdENlbGxP
dGhlciAgICAgICAgID0gMHgwMDAyMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsIGJ1
dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5pdGVseSBub3QgYSBKU1N0cmlu
Zy4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RDZWxsICAgICAgICAgICAgICA9
IDB4MDAwM2ZmZmY7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBjb25zdCBQ
cmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQzMiAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBJbnQzMi4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRp
Y3REb3VibGVSZWFsICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIG5v
bi1OYU4gZG91YmxlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdERvdWJsZU5h
TiAgICAgICAgID0gMHgwMjAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdERvdWJsZSAgICAgICAgICAgID0gMHgwMzAwMDAw
MDsgLy8gSXQncyBlaXRoZXIgYSBub24tTmFOIG9yIGEgTmFOIGRvdWJsZS4KLXN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3ROdW1iZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8v
IEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFByZWRpY3Rl
ZFR5cGUgUHJlZGljdEJvb2xlYW4gICAgICAgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgQm9vbGVhbi4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RPdGhl
ciAgICAgICAgICAgICA9IDB4MDgwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBub25lIG9mIHRo
ZSBhYm92ZS4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RUb3AgICAgICAgICAg
ICAgICA9IDB4MGZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEVtcHR5ICAgICAgICAgICAgID0gMHgxMDAwMDAw
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RFbXB0eU9yVG9wICAgICAgICA9IDB4MWZmZmZmZmY7IC8v
IEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
Rml4ZWRJbmRleGVkU3RvcmFnZU1hc2sgPSBQcmVkaWN0SW50OEFycmF5IHwgUHJlZGljdEludDE2
QXJyYXkgfCBQcmVkaWN0SW50MzJBcnJheSB8IFByZWRpY3RVaW50OEFycmF5IHwgUHJlZGljdFVp
bnQ4Q2xhbXBlZEFycmF5IHwgUHJlZGljdFVpbnQxNkFycmF5IHwgUHJlZGljdFVpbnQzMkFycmF5
IHwgUHJlZGljdEZsb2F0MzJBcnJheSB8IFByZWRpY3RGbG9hdDY0QXJyYXk7Ci0KLXR5cGVkZWYg
Ym9vbCAoKlByZWRpY3Rpb25DaGVja2VyKShQcmVkaWN0ZWRUeXBlKTsKLQotLy8gRHVtbXkgcHJl
ZGljdGlvbiBjaGVja2VyLCBvbmx5IHVzZWZ1bCBpZiBzb21lb25lIGluc2lzdHMgb24gcmVxdWly
aW5nIGEgcHJlZGljdGlvbiBjaGVja2VyLgotaW5saW5lIGJvb2wgaXNBbnlQcmVkaWN0aW9uKFBy
ZWRpY3RlZFR5cGUpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIGlzQ2Vs
bFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISEodmFsdWUg
JiBQcmVkaWN0Q2VsbCkgJiYgISh2YWx1ZSAmIH5QcmVkaWN0Q2VsbCk7Ci19Ci0KLWlubGluZSBi
b29sIGlzT2JqZWN0UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVy
biAhISh2YWx1ZSAmIFByZWRpY3RPYmplY3RNYXNrKSAmJiAhKHZhbHVlICYgflByZWRpY3RPYmpl
Y3RNYXNrKTsKLX0KLQotaW5saW5lIGJvb2wgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24oUHJlZGlj
dGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEZpbmFsT2JqZWN0
OwotfQotCi1pbmxpbmUgYm9vbCBpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24oUHJlZGlj
dGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISEodmFsdWUgJiAoUHJlZGljdEZpbmFsT2Jq
ZWN0IHwgUHJlZGljdE90aGVyKSkgJiYgISh2YWx1ZSAmIH4oUHJlZGljdEZpbmFsT2JqZWN0IHwg
UHJlZGljdE90aGVyKSk7Ci19Ci0KLWlubGluZSBib29sIGlzRml4ZWRJbmRleGVkU3RvcmFnZU9i
amVjdFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISF2YWx1
ZSAmJiAodmFsdWUgJiBGaXhlZEluZGV4ZWRTdG9yYWdlTWFzaykgPT0gdmFsdWU7Ci19Ci0KLWlu
bGluZSBib29sIGlzU3RyaW5nUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAg
IHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0U3RyaW5nOwotfQotCi1pbmxpbmUgYm9vbCBpc0FycmF5
UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQ
cmVkaWN0QXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlzRnVuY3Rpb25QcmVkaWN0aW9uKFByZWRp
Y3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RGdW5jdGlvbjsK
LX0KLQotaW5saW5lIGJvb2wgaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQ4QXJyYXk7Ci19Ci0KLWlubGlu
ZSBib29sIGlzSW50MTZBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAg
ICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEludDE2QXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlz
SW50MzJBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
dmFsdWUgPT0gUHJlZGljdEludDMyQXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlzVWludDhBcnJh
eVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0g
UHJlZGljdFVpbnQ4QXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlzVWludDhDbGFtcGVkQXJyYXlQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFBy
ZWRpY3RVaW50OENsYW1wZWRBcnJheTsKLX0KLQotaW5saW5lIGJvb2wgaXNVaW50MTZBcnJheVBy
ZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJl
ZGljdFVpbnQxNkFycmF5OwotfQotCi1pbmxpbmUgYm9vbCBpc1VpbnQzMkFycmF5UHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0VWlu
dDMyQXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihQcmVk
aWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQzMkFy
cmF5OwotfQotCi1pbmxpbmUgYm9vbCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24oUHJlZGljdGVk
VHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEZsb2F0NjRBcnJheTsK
LX0KLQotaW5saW5lIGJvb2wgaXNBcmd1bWVudHNQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCi17Ci0gICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgUHJlZGljdEFyZ3VtZW50cykg
PT0gdmFsdWU7Ci19Ci0KLWlubGluZSBib29sIGlzQWN0aW9uYWJsZUludE11dGFibGVBcnJheVBy
ZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gaXNJbnQ4QXJyYXlQ
cmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHZhbHVl
KQotICAgICAgICB8fCBpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBp
c1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc1VpbnQ4Q2xhbXBlZEFy
cmF5UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNVaW50MTZBcnJheVByZWRpY3Rpb24o
dmFsdWUpCi0gICAgICAgIHx8IGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKLX0KLQot
aW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRp
Y3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbih2
YWx1ZSkKLSAgICAgICAgfHwgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKLX0KLQot
aW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRp
Y3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGlzQWN0aW9uYWJsZUludE11dGFibGVBcnJh
eVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFy
cmF5UHJlZGljdGlvbih2YWx1ZSk7Ci19Ci0KLWlubGluZSBib29sIGlzQWN0aW9uYWJsZU11dGFi
bGVBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gaXNB
cnJheVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzQXJndW1lbnRzUHJlZGljdGlvbih2
YWx1ZSkKLSAgICAgICAgfHwgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYXlQcmVkaWN0aW9u
KHZhbHVlKTsKLX0KLQotaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKFBy
ZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGlzU3RyaW5nUHJlZGljdGlvbih2YWx1
ZSkKLSAgICAgICAgfHwgaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbih2YWx1ZSk7
Ci19Ci0KLWlubGluZSBib29sIGlzQXJyYXlPck90aGVyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQotewotICAgIHJldHVybiAhISh2YWx1ZSAmIChQcmVkaWN0QXJyYXkgfCBQcmVkaWN0
T3RoZXIpKSAmJiAhKHZhbHVlICYgfihQcmVkaWN0QXJyYXkgfCBQcmVkaWN0T3RoZXIpKTsKLX0K
LQotaW5saW5lIGJvb2wgaXNNeUFyZ3VtZW50c1ByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdE15QXJndW1lbnRzOwotfQotCi1pbmxp
bmUgYm9vbCBpc0ludDMyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJl
dHVybiB2YWx1ZSA9PSBQcmVkaWN0SW50MzI7Ci19Ci0KLWlubGluZSBib29sIGlzRG91YmxlUmVh
bFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0g
UHJlZGljdERvdWJsZVJlYWw7Ci19Ci0KLWlubGluZSBib29sIGlzRG91YmxlUHJlZGljdGlvbihQ
cmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFBy
ZWRpY3REb3VibGUpID09IHZhbHVlOwotfQotCi1pbmxpbmUgYm9vbCBpc051bWJlclByZWRpY3Rp
b24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISEodmFsdWUgJiBQcmVkaWN0
TnVtYmVyKSAmJiAhKHZhbHVlICYgflByZWRpY3ROdW1iZXIpOwotfQotCi1pbmxpbmUgYm9vbCBp
c0Jvb2xlYW5QcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZh
bHVlID09IFByZWRpY3RCb29sZWFuOwotfQotCi1pbmxpbmUgYm9vbCBpc090aGVyUHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0T3Ro
ZXI7Ci19Ci0KLWlubGluZSBib29sIGlzRW1wdHlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RFbXB0eTsKLX0KLQotY29uc3QgY2hh
ciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZFR5cGUgdmFsdWUpOwotY29uc3QgY2hhciog
cHJlZGljdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcoUHJlZGljdGVkVHlwZSB2YWx1ZSk7Ci0KLS8v
IE1lcmdlIHR3byBwcmVkaWN0aW9ucy4gTm90ZSB0aGF0IGN1cnJlbnRseSB0aGlzIGp1c3QgZG9l
cyBsZWZ0IHwgcmlnaHQuIEl0IG1heQotLy8gc2VlbSB0ZW1wdGluZyB0byBkbyBzbyBkaXJlY3Rs
eSwgYnV0IHlvdSB3b3VsZCBiZSBkb2luZyBzbyBhdCB5b3VyIG93biBwZXJpbCwKLS8vIHNpbmNl
IHRoZSBtZXJnaW5nIHByb3RvY29sIFByZWRpY3RlZFR5cGUgbWF5IGNoYW5nZSBhdCBhbnkgdGlt
ZSAoYW5kIGhhcyBhbHJlYWR5Ci0vLyBjaGFuZ2VkIHNldmVyYWwgdGltZXMgaW4gaXRzIGhpc3Rv
cnkpLgotaW5saW5lIFByZWRpY3RlZFR5cGUgbWVyZ2VQcmVkaWN0aW9ucyhQcmVkaWN0ZWRUeXBl
IGxlZnQsIFByZWRpY3RlZFR5cGUgcmlnaHQpCi17Ci0gICAgcmV0dXJuIGxlZnQgfCByaWdodDsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIG1lcmdlUHJlZGljdGlvbihU
JiBsZWZ0LCBQcmVkaWN0ZWRUeXBlIHJpZ2h0KQotewotICAgIFByZWRpY3RlZFR5cGUgbmV3UHJl
ZGljdGlvbiA9IHN0YXRpY19jYXN0PFQ+KG1lcmdlUHJlZGljdGlvbnMoc3RhdGljX2Nhc3Q8UHJl
ZGljdGVkVHlwZT4obGVmdCksIHJpZ2h0KSk7Ci0gICAgYm9vbCByZXN1bHQgPSBuZXdQcmVkaWN0
aW9uICE9IHN0YXRpY19jYXN0PFByZWRpY3RlZFR5cGU+KGxlZnQpOwotICAgIGxlZnQgPSBuZXdQ
cmVkaWN0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKik7Ci1QcmVkaWN0ZWRUeXBlIHByZWRp
Y3Rpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSopOwotUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
RnJvbUNlbGwoSlNDZWxsKik7Ci1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tVmFsdWUoSlNW
YWx1ZSk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gUHJlZGljdGVkVHlwZV9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5jcHAJKHJldmlzaW9uIDExOTYwNCkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwOjExOTYwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcmVkaWN0ZWRUeXBl
LmgiCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUg
PHd0Zi9Cb3VuZHNDaGVja2VkUG9pbnRlci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Y2hhciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgaWYg
KHZhbHVlID09IFByZWRpY3ROb25lKQorICAgICAgICByZXR1cm4gIk5vbmUiOworICAgIAorICAg
IHN0YXRpYyBjb25zdCBpbnQgc2l6ZSA9IDI1NjsKKyAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlv
bltzaXplXTsKKyAgICBCb3VuZHNDaGVja2VkUG9pbnRlcjxjaGFyPiBwdHIoZGVzY3JpcHRpb24s
IHNpemUpOworICAgIAorICAgIGJvb2wgaXNUb3AgPSB0cnVlOworICAgIAorICAgIGlmICh2YWx1
ZSAmIFByZWRpY3RDZWxsT3RoZXIpCisgICAgICAgIHB0ci5zdHJjYXQoIk90aGVyY2VsbCIpOwor
ICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAodmFsdWUgJiBQ
cmVkaWN0T2JqZWN0T3RoZXIpCisgICAgICAgIHB0ci5zdHJjYXQoIk90aGVyb2JqIik7CisgICAg
ZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAorICAgIGlmICh2YWx1ZSAmIFByZWRp
Y3RGaW5hbE9iamVjdCkKKyAgICAgICAgcHRyLnN0cmNhdCgiRmluYWwiKTsKKyAgICBlbHNlCisg
ICAgICAgIGlzVG9wID0gZmFsc2U7CisKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0QXJyYXkpCisg
ICAgICAgIHB0ci5zdHJjYXQoIkFycmF5Iik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZh
bHNlOworICAgIAorICAgIGlmICh2YWx1ZSAmIFByZWRpY3RJbnQ4QXJyYXkpCisgICAgICAgIHB0
ci5zdHJjYXQoIkludDhhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsK
KyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0SW50MTZBcnJheSkKKyAgICAgICAgcHRyLnN0
cmNhdCgiSW50MTZhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0SW50MzJBcnJheSkKKyAgICAgICAgcHRyLnN0cmNh
dCgiSW50MzJhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAK
KyAgICBpZiAodmFsdWUgJiBQcmVkaWN0VWludDhBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgi
VWludDhhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgIGlm
ICh2YWx1ZSAmIFByZWRpY3RVaW50OENsYW1wZWRBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgi
VWludDhjbGFtcGVkYXJyYXkiKTsKKyAgICBlbHNlCisgICAgICAgIGlzVG9wID0gZmFsc2U7Cisg
ICAgCisgICAgaWYgKHZhbHVlICYgUHJlZGljdFVpbnQxNkFycmF5KQorICAgICAgICBwdHIuc3Ry
Y2F0KCJVaW50MTZhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0VWludDMyQXJyYXkpCisgICAgICAgIHB0ci5zdHJj
YXQoIlVpbnQzMmFycmF5Iik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAg
IAorICAgIGlmICh2YWx1ZSAmIFByZWRpY3RGbG9hdDMyQXJyYXkpCisgICAgICAgIHB0ci5zdHJj
YXQoIkZsb2F0MzJhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0RmxvYXQ2NEFycmF5KQorICAgICAgICBwdHIuc3Ry
Y2F0KCJGbG9hdDY0YXJyYXkiKTsKKyAgICBlbHNlCisgICAgICAgIGlzVG9wID0gZmFsc2U7Cisg
ICAgCisgICAgaWYgKHZhbHVlICYgUHJlZGljdEZ1bmN0aW9uKQorICAgICAgICBwdHIuc3RyY2F0
KCJGdW5jdGlvbiIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAg
ICBpZiAodmFsdWUgJiBQcmVkaWN0TXlBcmd1bWVudHMpCisgICAgICAgIHB0ci5zdHJjYXQoIk15
YXJndW1lbnRzIik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAorICAg
IGlmICh2YWx1ZSAmIFByZWRpY3RGb3JlaWduQXJndW1lbnRzKQorICAgICAgICBwdHIuc3RyY2F0
KCJGb3JlaWduYXJndW1lbnRzIik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOwor
ICAgIAorICAgIGlmICh2YWx1ZSAmIFByZWRpY3RTdHJpbmcpCisgICAgICAgIHB0ci5zdHJjYXQo
IlN0cmluZyIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBp
ZiAodmFsdWUgJiBQcmVkaWN0SW50MzIpCisgICAgICAgIHB0ci5zdHJjYXQoIkludCIpOworICAg
IGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVk
aWN0RG91YmxlUmVhbCkKKyAgICAgICAgcHRyLnN0cmNhdCgiRG91YmxlcmVhbCIpOworICAgIGVs
c2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0
RG91YmxlTmFOKQorICAgICAgICBwdHIuc3RyY2F0KCJEb3VibGVuYW4iKTsKKyAgICBlbHNlCisg
ICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgCisgICAgaWYgKHZhbHVlICYgUHJlZGljdEJvb2xl
YW4pCisgICAgICAgIHB0ci5zdHJjYXQoIkJvb2wiKTsKKyAgICBlbHNlCisgICAgICAgIGlzVG9w
ID0gZmFsc2U7CisgICAgCisgICAgaWYgKHZhbHVlICYgUHJlZGljdE90aGVyKQorICAgICAgICBw
dHIuc3RyY2F0KCJPdGhlciIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAoaXNUb3ApIHsKKyAgICAgICAgcHRyID0gZGVzY3JpcHRpb247CisgICAgICAg
IHB0ci5zdHJjYXQoIlRvcCIpOworICAgIH0KKyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0
RW1wdHkpCisgICAgICAgIHB0ci5zdHJjYXQoIkVtcHR5Iik7CisgICAgCisgICAgKnB0cisrID0g
MDsKKyAgICAKKyAgICByZXR1cm4gZGVzY3JpcHRpb247Cit9CisKK2NvbnN0IGNoYXIqIHByZWRp
Y3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbikKK3sKKyAg
ICBpZiAoaXNGaW5hbE9iamVjdFByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVy
biAiPEZpbmFsPiI7CisgICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAg
ICAgICByZXR1cm4gIjxBcnJheT4iOworICAgIGlmIChpc1N0cmluZ1ByZWRpY3Rpb24ocHJlZGlj
dGlvbikpCisgICAgICAgIHJldHVybiAiPFN0cmluZz4iOworICAgIGlmIChpc0Z1bmN0aW9uUHJl
ZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8RnVuY3Rpb24+IjsKKyAgICBp
ZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxJ
bnQ4YXJyYXk+IjsKKyAgICBpZiAoaXNJbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkK
KyAgICAgICAgcmV0dXJuICI8SW50MTZhcnJheT4iOworICAgIGlmIChpc0ludDMyQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxJbnQzMmFycmF5PiI7CisgICAg
aWYgKGlzVWludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAi
PFVpbnQ4YXJyYXk+IjsKKyAgICBpZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGlv
bikpCisgICAgICAgIHJldHVybiAiPFVpbnQxNmFycmF5PiI7CisgICAgaWYgKGlzVWludDMyQXJy
YXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxVaW50MzJhcnJheT4i
OworICAgIGlmIChpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAg
IHJldHVybiAiPEZsb2F0MzJhcnJheT4iOworICAgIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPEZsb2F0NjRhcnJheT4iOworICAgIGlm
IChpc015QXJndW1lbnRzUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8
TXlhcmd1bWVudHM+IjsKKyAgICBpZiAoaXNBcmd1bWVudHNQcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQorICAgICAgICByZXR1cm4gIjxBcmd1bWVudHM+IjsKKyAgICBpZiAoaXNPYmplY3RQcmVkaWN0
aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxPYmplY3Q+IjsKKyAgICBpZiAoaXND
ZWxsUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8Q2VsbD4iOworICAg
IGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8SW50
MzI+IjsKKyAgICBpZiAoaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICBy
ZXR1cm4gIjxEb3VibGU+IjsKKyAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQorICAgICAgICByZXR1cm4gIjxOdW1iZXI+IjsKKyAgICBpZiAoaXNCb29sZWFuUHJlZGljdGlv
bihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8Qm9vbGVhbj4iOworICAgIGlmIChpc090
aGVyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8T3RoZXI+IjsKKyAg
ICByZXR1cm4gIiI7Cit9CisKK1ByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8o
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCit7CisgICAgaWYgKGNsYXNzSW5mbyA9PSAmSlNG
aW5hbE9iamVjdDo6c19pbmZvKQorICAgICAgICByZXR1cm4gUHJlZGljdEZpbmFsT2JqZWN0Owor
ICAgIAorICAgIGlmIChjbGFzc0luZm8gPT0gJkpTQXJyYXk6OnNfaW5mbykKKyAgICAgICAgcmV0
dXJuIFByZWRpY3RBcnJheTsKKyAgICAKKyAgICBpZiAoY2xhc3NJbmZvID09ICZKU1N0cmluZzo6
c19pbmZvKQorICAgICAgICByZXR1cm4gUHJlZGljdFN0cmluZzsKKyAgICAKKyAgICBpZiAoY2xh
c3NJbmZvID09ICZBcmd1bWVudHM6OnNfaW5mbykKKyAgICAgICAgcmV0dXJuIFByZWRpY3RBcmd1
bWVudHM7IC8vIENhbm5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIE15QXJndW1lbnRzIGFuZCBGb3Jl
aWduQXJndW1lbnRzIGF0IHRoaXMgc3RhZ2UuIFRoYXQgaGFwcGVucyBpbiB0aGUgZmxvdyBhbmFs
eXNpcy4KKyAgICAKKyAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoJkpTRnVuY3Rpb246
OnNfaW5mbykpCisgICAgICAgIHJldHVybiBQcmVkaWN0RnVuY3Rpb247CisKKyAgICAKKyAgICBp
ZiAoY2xhc3NJbmZvLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgIT0gVHlwZWRBcnJheU5vbmUpIHsK
KyAgICAgICAgc3dpdGNoIChjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgeworICAg
ICAgICBjYXNlIFR5cGVkQXJyYXlJbnQ4OgorICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RJbnQ4
QXJyYXk7CisgICAgICAgIGNhc2UgVHlwZWRBcnJheUludDE2OgorICAgICAgICAgICAgcmV0dXJu
IFByZWRpY3RJbnQxNkFycmF5OworICAgICAgICBjYXNlIFR5cGVkQXJyYXlJbnQzMjoKKyAgICAg
ICAgICAgIHJldHVybiBQcmVkaWN0SW50MzJBcnJheTsKKyAgICAgICAgY2FzZSBUeXBlZEFycmF5
VWludDg6CisgICAgICAgICAgICByZXR1cm4gUHJlZGljdFVpbnQ4QXJyYXk7CisgICAgICAgIGNh
c2UgVHlwZWRBcnJheVVpbnQ4Q2xhbXBlZDoKKyAgICAgICAgICAgIHJldHVybiBQcmVkaWN0VWlu
dDhDbGFtcGVkQXJyYXk7CisgICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQxNjoKKyAgICAgICAg
ICAgIHJldHVybiBQcmVkaWN0VWludDE2QXJyYXk7CisgICAgICAgIGNhc2UgVHlwZWRBcnJheVVp
bnQzMjoKKyAgICAgICAgICAgIHJldHVybiBQcmVkaWN0VWludDMyQXJyYXk7CisgICAgICAgIGNh
c2UgVHlwZWRBcnJheUZsb2F0MzI6CisgICAgICAgICAgICByZXR1cm4gUHJlZGljdEZsb2F0MzJB
cnJheTsKKyAgICAgICAgY2FzZSBUeXBlZEFycmF5RmxvYXQ2NDoKKyAgICAgICAgICAgIHJldHVy
biBQcmVkaWN0RmxvYXQ2NEFycmF5OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFz
c09mKCZKU09iamVjdDo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIFByZWRpY3RPYmplY3RPdGhl
cjsKKyAgICAKKyAgICByZXR1cm4gUHJlZGljdENlbGxPdGhlcjsKK30KKworUHJlZGljdGVkVHlw
ZSBwcmVkaWN0aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBy
ZXR1cm4gcHJlZGljdGlvbkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7Cit9
CisKK1ByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DZWxsKEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICByZXR1cm4gcHJlZGljdGlvbkZyb21TdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkpOworfQor
CitQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gUHJlZGljdEVtcHR5OworICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBQcmVkaWN0SW50MzI7CisgICAg
aWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFz
TnVtYmVyKCk7CisgICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0
dXJuIFByZWRpY3REb3VibGVSZWFsOworICAgICAgICByZXR1cm4gUHJlZGljdERvdWJsZU5hTjsK
KyAgICB9CisgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gcHJlZGljdGlv
bkZyb21DZWxsKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCisg
ICAgICAgIHJldHVybiBQcmVkaWN0Qm9vbGVhbjsKKyAgICBBU1NFUlQodmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSk7CisgICAgcmV0dXJuIFByZWRpY3RPdGhlcjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQcmVkaWN0ZWRU
eXBlLmgiCisjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTM3LDkgKzM3LDkgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZh
bHVlKQorY29uc3QgY2hhciogc3BlY3VsYXRpb25Ub1N0cmluZyhTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gUHJlZGljdE5vbmUpCisgICAgaWYgKHZhbHVlID09IFNw
ZWNOb25lKQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBp
bnQgc2l6ZSA9IDI1NjsKQEAgLTQ4LDExMiArNDgsMTEyIEBAIGNvbnN0IGNoYXIqIHByZWRpY3Rp
b25Ub1N0cmluZyhQcmVkaWN0ZWQKICAgICAKICAgICBib29sIGlzVG9wID0gdHJ1ZTsKICAgICAK
LSAgICBpZiAodmFsdWUgJiBQcmVkaWN0Q2VsbE90aGVyKQorICAgIGlmICh2YWx1ZSAmIFNwZWND
ZWxsT3RoZXIpCiAgICAgICAgIHB0ci5zdHJjYXQoIk90aGVyY2VsbCIpOwogICAgIGVsc2UKICAg
ICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0T2JqZWN0
T3RoZXIpCisgICAgaWYgKHZhbHVlICYgU3BlY09iamVjdE90aGVyKQogICAgICAgICBwdHIuc3Ry
Y2F0KCJPdGhlcm9iaiIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAK
LSAgICBpZiAodmFsdWUgJiBQcmVkaWN0RmluYWxPYmplY3QpCisgICAgaWYgKHZhbHVlICYgU3Bl
Y0ZpbmFsT2JqZWN0KQogICAgICAgICBwdHIuc3RyY2F0KCJGaW5hbCIpOwogICAgIGVsc2UKICAg
ICAgICAgaXNUb3AgPSBmYWxzZTsKIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RBcnJheSkKKyAg
ICBpZiAodmFsdWUgJiBTcGVjQXJyYXkpCiAgICAgICAgIHB0ci5zdHJjYXQoIkFycmF5Iik7CiAg
ICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RJbnQ4QXJyYXkpCisgICAgaWYgKHZhbHVlICYgU3BlY0ludDhBcnJheSkKICAgICAgICAg
cHRyLnN0cmNhdCgiSW50OGFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNl
OwogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RJbnQxNkFycmF5KQorICAgIGlmICh2YWx1
ZSAmIFNwZWNJbnQxNkFycmF5KQogICAgICAgICBwdHIuc3RyY2F0KCJJbnQxNmFycmF5Iik7CiAg
ICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RJbnQzMkFycmF5KQorICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQzMkFycmF5KQogICAgICAg
ICBwdHIuc3RyY2F0KCJJbnQzMmFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZh
bHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RVaW50OEFycmF5KQorICAgIGlmICh2
YWx1ZSAmIFNwZWNVaW50OEFycmF5KQogICAgICAgICBwdHIuc3RyY2F0KCJVaW50OGFycmF5Iik7
CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogCi0gICAgaWYgKHZhbHVlICYgUHJl
ZGljdFVpbnQ4Q2xhbXBlZEFycmF5KQorICAgIGlmICh2YWx1ZSAmIFNwZWNVaW50OENsYW1wZWRB
cnJheSkKICAgICAgICAgcHRyLnN0cmNhdCgiVWludDhjbGFtcGVkYXJyYXkiKTsKICAgICBlbHNl
CiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdFVp
bnQxNkFycmF5KQorICAgIGlmICh2YWx1ZSAmIFNwZWNVaW50MTZBcnJheSkKICAgICAgICAgcHRy
LnN0cmNhdCgiVWludDE2YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7
CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdFVpbnQzMkFycmF5KQorICAgIGlmICh2YWx1
ZSAmIFNwZWNVaW50MzJBcnJheSkKICAgICAgICAgcHRyLnN0cmNhdCgiVWludDMyYXJyYXkiKTsK
ICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlICYg
UHJlZGljdEZsb2F0MzJBcnJheSkKKyAgICBpZiAodmFsdWUgJiBTcGVjRmxvYXQzMkFycmF5KQog
ICAgICAgICBwdHIuc3RyY2F0KCJGbG9hdDMyYXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlz
VG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdEZsb2F0NjRBcnJheSkK
KyAgICBpZiAodmFsdWUgJiBTcGVjRmxvYXQ2NEFycmF5KQogICAgICAgICBwdHIuc3RyY2F0KCJG
bG9hdDY0YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0g
ICAgaWYgKHZhbHVlICYgUHJlZGljdEZ1bmN0aW9uKQorICAgIGlmICh2YWx1ZSAmIFNwZWNGdW5j
dGlvbikKICAgICAgICAgcHRyLnN0cmNhdCgiRnVuY3Rpb24iKTsKICAgICBlbHNlCiAgICAgICAg
IGlzVG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdE15QXJndW1lbnRz
KQorICAgIGlmICh2YWx1ZSAmIFNwZWNNeUFyZ3VtZW50cykKICAgICAgICAgcHRyLnN0cmNhdCgi
TXlhcmd1bWVudHMiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0g
ICAgaWYgKHZhbHVlICYgUHJlZGljdEZvcmVpZ25Bcmd1bWVudHMpCisgICAgaWYgKHZhbHVlICYg
U3BlY0ZvcmVpZ25Bcmd1bWVudHMpCiAgICAgICAgIHB0ci5zdHJjYXQoIkZvcmVpZ25hcmd1bWVu
dHMiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZh
bHVlICYgUHJlZGljdFN0cmluZykKKyAgICBpZiAodmFsdWUgJiBTcGVjU3RyaW5nKQogICAgICAg
ICBwdHIuc3RyY2F0KCJTdHJpbmciKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7
CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdEludDMyKQorICAgIGlmICh2YWx1ZSAmIFNw
ZWNJbnQzMikKICAgICAgICAgcHRyLnN0cmNhdCgiSW50Iik7CiAgICAgZWxzZQogICAgICAgICBp
c1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3REb3VibGVSZWFsKQor
ICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVSZWFsKQogICAgICAgICBwdHIuc3RyY2F0KCJEb3Vi
bGVyZWFsIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlm
ICh2YWx1ZSAmIFByZWRpY3REb3VibGVOYU4pCisgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5h
TikKICAgICAgICAgcHRyLnN0cmNhdCgiRG91YmxlbmFuIik7CiAgICAgZWxzZQogICAgICAgICBp
c1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RCb29sZWFuKQorICAg
IGlmICh2YWx1ZSAmIFNwZWNCb29sZWFuKQogICAgICAgICBwdHIuc3RyY2F0KCJCb29sIik7CiAg
ICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RPdGhlcikKKyAgICBpZiAodmFsdWUgJiBTcGVjT3RoZXIpCiAgICAgICAgIHB0ci5zdHJj
YXQoIk90aGVyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwpAQCAtMTYzLDcg
KzE2Myw3IEBAIGNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWQKICAgICAg
ICAgcHRyLnN0cmNhdCgiVG9wIik7CiAgICAgfQogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRp
Y3RFbXB0eSkKKyAgICBpZiAodmFsdWUgJiBTcGVjRW1wdHkpCiAgICAgICAgIHB0ci5zdHJjYXQo
IkVtcHR5Iik7CiAgICAgCiAgICAgKnB0cisrID0gMDsKQEAgLTE3MSwxMzAgKzE3MSwxMzAgQEAg
Y29uc3QgY2hhciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZAogICAgIHJldHVybiBkZXNj
cmlwdGlvbjsKIH0KIAotY29uc3QgY2hhciogcHJlZGljdGlvblRvQWJicmV2aWF0ZWRTdHJpbmco
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKQorY29uc3QgY2hhciogc3BlY3VsYXRpb25Ub0FiYnJl
dmlhdGVkU3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7Ci0gICAgaWYgKGlzRmlu
YWxPYmplY3RQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc0ZpbmFsT2JqZWN0U3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEZpbmFsPiI7Ci0gICAgaWYg
KGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc0FycmF5U3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEFycmF5PiI7Ci0gICAgaWYgKGlzU3Ry
aW5nUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNTdHJpbmdTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8U3RyaW5nPiI7Ci0gICAgaWYgKGlzRnVuY3Rp
b25QcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc0Z1bmN0aW9uU3BlY3VsYXRpb24o
cHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEZ1bmN0aW9uPiI7Ci0gICAgaWYgKGlzSW50
OEFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNJbnQ4QXJyYXlTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8SW50OGFycmF5PiI7Ci0gICAgaWYg
KGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlzSW50MTZBcnJh
eVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxJbnQxNmFycmF5PiI7
Ci0gICAgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlz
SW50MzJBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxJbnQz
MmFycmF5PiI7Ci0gICAgaWYgKGlzVWludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisg
ICAgaWYgKGlzVWludDhBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1
cm4gIjxVaW50OGFycmF5PiI7Ci0gICAgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3Rpb24pKQorICAgIGlmIChpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAg
ICAgICAgIHJldHVybiAiPFVpbnQxNmFycmF5PiI7Ci0gICAgaWYgKGlzVWludDMyQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24ocHJl
ZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPFVpbnQzMmFycmF5PiI7Ci0gICAgaWYgKGlzRmxv
YXQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNGbG9hdDMyQXJyYXlT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RmxvYXQzMmFycmF5PiI7
Ci0gICAgaWYgKGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAo
aXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8
RmxvYXQ2NGFycmF5PiI7Ci0gICAgaWYgKGlzTXlBcmd1bWVudHNQcmVkaWN0aW9uKHByZWRpY3Rp
b24pKQorICAgIGlmIChpc015QXJndW1lbnRzU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAg
ICAgIHJldHVybiAiPE15YXJndW1lbnRzPiI7Ci0gICAgaWYgKGlzQXJndW1lbnRzUHJlZGljdGlv
bihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNBcmd1bWVudHNTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKICAgICAgICAgcmV0dXJuICI8QXJndW1lbnRzPiI7Ci0gICAgaWYgKGlzT2JqZWN0UHJlZGlj
dGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNPYmplY3RTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKICAgICAgICAgcmV0dXJuICI8T2JqZWN0PiI7Ci0gICAgaWYgKGlzQ2VsbFByZWRpY3Rpb24o
cHJlZGljdGlvbikpCisgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAg
ICAgICByZXR1cm4gIjxDZWxsPiI7Ci0gICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3Rp
b24pKQorICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJl
dHVybiAiPEludDMyPiI7Ci0gICAgaWYgKGlzRG91YmxlUHJlZGljdGlvbihwcmVkaWN0aW9uKSkK
KyAgICBpZiAoaXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJu
ICI8RG91YmxlPiI7Ci0gICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAg
ICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8
TnVtYmVyPiI7Ci0gICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAg
aWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxC
b29sZWFuPiI7Ci0gICAgaWYgKGlzT3RoZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlm
IChpc090aGVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPE90aGVy
PiI7CiAgICAgcmV0dXJuICIiOwogfQogCi1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2xh
c3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQorU3BlY3VsYXRlZFR5cGUgc3BlY3Vs
YXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogewogICAgIGlm
IChjbGFzc0luZm8gPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIFBy
ZWRpY3RGaW5hbE9iamVjdDsKKyAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9iamVjdDsKICAgICAK
ICAgICBpZiAoY2xhc3NJbmZvID09ICZKU0FycmF5OjpzX2luZm8pCi0gICAgICAgIHJldHVybiBQ
cmVkaWN0QXJyYXk7CisgICAgICAgIHJldHVybiBTcGVjQXJyYXk7CiAgICAgCiAgICAgaWYgKGNs
YXNzSW5mbyA9PSAmSlNTdHJpbmc6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIFByZWRpY3RTdHJp
bmc7CisgICAgICAgIHJldHVybiBTcGVjU3RyaW5nOwogICAgIAogICAgIGlmIChjbGFzc0luZm8g
PT0gJkFyZ3VtZW50czo6c19pbmZvKQotICAgICAgICByZXR1cm4gUHJlZGljdEFyZ3VtZW50czsg
Ly8gQ2Fubm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gTXlBcmd1bWVudHMgYW5kIEZvcmVpZ25Bcmd1
bWVudHMgYXQgdGhpcyBzdGFnZS4gVGhhdCBoYXBwZW5zIGluIHRoZSBmbG93IGFuYWx5c2lzLgor
ICAgICAgICByZXR1cm4gU3BlY0FyZ3VtZW50czsgLy8gQ2Fubm90IGRpc3Rpbmd1aXNoIGJldHdl
ZW4gTXlBcmd1bWVudHMgYW5kIEZvcmVpZ25Bcmd1bWVudHMgYXQgdGhpcyBzdGFnZS4gVGhhdCBo
YXBwZW5zIGluIHRoZSBmbG93IGFuYWx5c2lzLgogICAgIAogICAgIGlmIChjbGFzc0luZm8tPmlz
U3ViQ2xhc3NPZigmSlNGdW5jdGlvbjo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIFByZWRpY3RG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIFNwZWNGdW5jdGlvbjsKIAogICAgIAogICAgIGlmIChj
bGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSAhPSBUeXBlZEFycmF5Tm9uZSkgewogICAg
ICAgICBzd2l0Y2ggKGNsYXNzSW5mby0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSB7CiAgICAgICAg
IGNhc2UgVHlwZWRBcnJheUludDg6Ci0gICAgICAgICAgICByZXR1cm4gUHJlZGljdEludDhBcnJh
eTsKKyAgICAgICAgICAgIHJldHVybiBTcGVjSW50OEFycmF5OwogICAgICAgICBjYXNlIFR5cGVk
QXJyYXlJbnQxNjoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0SW50MTZBcnJheTsKKyAgICAg
ICAgICAgIHJldHVybiBTcGVjSW50MTZBcnJheTsKICAgICAgICAgY2FzZSBUeXBlZEFycmF5SW50
MzI6Ci0gICAgICAgICAgICByZXR1cm4gUHJlZGljdEludDMyQXJyYXk7CisgICAgICAgICAgICBy
ZXR1cm4gU3BlY0ludDMyQXJyYXk7CiAgICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQ4OgotICAg
ICAgICAgICAgcmV0dXJuIFByZWRpY3RVaW50OEFycmF5OworICAgICAgICAgICAgcmV0dXJuIFNw
ZWNVaW50OEFycmF5OwogICAgICAgICBjYXNlIFR5cGVkQXJyYXlVaW50OENsYW1wZWQ6Ci0gICAg
ICAgICAgICByZXR1cm4gUHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5OworICAgICAgICAgICAgcmV0
dXJuIFNwZWNVaW50OENsYW1wZWRBcnJheTsKICAgICAgICAgY2FzZSBUeXBlZEFycmF5VWludDE2
OgotICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RVaW50MTZBcnJheTsKKyAgICAgICAgICAgIHJl
dHVybiBTcGVjVWludDE2QXJyYXk7CiAgICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQzMjoKLSAg
ICAgICAgICAgIHJldHVybiBQcmVkaWN0VWludDMyQXJyYXk7CisgICAgICAgICAgICByZXR1cm4g
U3BlY1VpbnQzMkFycmF5OwogICAgICAgICBjYXNlIFR5cGVkQXJyYXlGbG9hdDMyOgotICAgICAg
ICAgICAgcmV0dXJuIFByZWRpY3RGbG9hdDMyQXJyYXk7CisgICAgICAgICAgICByZXR1cm4gU3Bl
Y0Zsb2F0MzJBcnJheTsKICAgICAgICAgY2FzZSBUeXBlZEFycmF5RmxvYXQ2NDoKLSAgICAgICAg
ICAgIHJldHVybiBQcmVkaWN0RmxvYXQ2NEFycmF5OworICAgICAgICAgICAgcmV0dXJuIFNwZWNG
bG9hdDY0QXJyYXk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KICAgICAKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoJkpTT2Jq
ZWN0OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gUHJlZGljdE9iamVjdE90aGVyOworICAgICAg
ICByZXR1cm4gU3BlY09iamVjdE90aGVyOwogICAgIAotICAgIHJldHVybiBQcmVkaWN0Q2VsbE90
aGVyOworICAgIHJldHVybiBTcGVjQ2VsbE90aGVyOwogfQogCi1QcmVkaWN0ZWRUeXBlIHByZWRp
Y3Rpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3BlY3VsYXRlZFR5cGUg
c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJl
dHVybiBwcmVkaWN0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKTsKKyAg
ICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkp
OwogfQogCi1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2VsbChKU0NlbGwqIGNlbGwpCitT
cGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DZWxsKEpTQ2VsbCogY2VsbCkKIHsKLSAgICBy
ZXR1cm4gcHJlZGljdGlvbkZyb21TdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkpOworICAgIHJl
dHVybiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkpOwogfQogCi1Q
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK1NwZWN1bGF0
ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFByZWRpY3RFbXB0eTsKKyAgICAgICAgcmV0
dXJuIFNwZWNFbXB0eTsKICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICByZXR1cm4g
UHJlZGljdEludDMyOworICAgICAgICByZXR1cm4gU3BlY0ludDMyOwogICAgIGlmICh2YWx1ZS5p
c0RvdWJsZSgpKSB7CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1ZS5hc051bWJlcigpOwog
ICAgICAgICBpZiAobnVtYmVyID09IG51bWJlcikKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0
RG91YmxlUmVhbDsKLSAgICAgICAgcmV0dXJuIFByZWRpY3REb3VibGVOYU47CisgICAgICAgICAg
ICByZXR1cm4gU3BlY0RvdWJsZVJlYWw7CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOwog
ICAgIH0KICAgICBpZiAodmFsdWUuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBwcmVkaWN0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9t
Q2VsbCh2YWx1ZS5hc0NlbGwoKSk7CiAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQotICAgICAg
ICByZXR1cm4gUHJlZGljdEJvb2xlYW47CisgICAgICAgIHJldHVybiBTcGVjQm9vbGVhbjsKICAg
ICBBU1NFUlQodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAgcmV0dXJuIFByZWRpY3RP
dGhlcjsKKyAgICByZXR1cm4gU3BlY090aGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CShyZXZpc2lvbiAxMTk2MDQpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVkaWN0ZWRUeXBlLmg6MTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUHJlZGljdGVkVHlwZV9oCisjZGVmaW5lIFByZWRpY3RlZFR5cGVfaAorCisjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RydWN0dXJlOwor
Cit0eXBlZGVmIHVpbnQzMl90IFByZWRpY3RlZFR5cGU7CitzdGF0aWMgY29uc3QgUHJlZGljdGVk
VHlwZSBQcmVkaWN0Tm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBr
bm93IGFueXRoaW5nIHlldC4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RGaW5h
bE9iamVjdCAgICAgICA9IDB4MDAwMDAwMDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRmluYWxP
YmplY3QuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0QXJyYXkgICAgICAgICAg
ICAgPSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNv
bnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEZ1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
CitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50OEFycmF5ICAgICAgICAgPSAw
eDAwMDAwMDEwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50OEFycmF5IG9yIG9uZSBvZiBpdHMg
c3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQxNkFycmF5
ICAgICAgICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9y
IG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRp
Y3RJbnQzMkFycmF5ICAgICAgICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJ
bnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0
ZWRUeXBlIFByZWRpY3RVaW50OEFycmF5ICAgICAgICA9IDB4MDAwMDAwODA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50OEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBj
b25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RVaW50OENsYW1wZWRBcnJheSA9IDB4MDAwMDAxMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0VWludDE2QXJyYXkg
ICAgICAgPSAweDAwMDAwMjAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Ig
b25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGlj
dFVpbnQzMkFycmF5ICAgICAgID0gMHgwMDAwMDQwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVp
bnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0
ZWRUeXBlIFByZWRpY3RGbG9hdDMyQXJyYXkgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMg
Y29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RmxvYXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFz
c2VzLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE15QXJndW1lbnRzICAgICAg
ID0gMHgwMDAwMjAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QsIGFu
ZCBpdCdzIGRlZmluaXRlbHkgdGhlIG9uZSBmb3IgbXkgY3VycmVudCBmcmFtZS4KK3N0YXRpYyBj
b25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RGb3JlaWduQXJndW1lbnRzICA9IDB4MDAwMDQwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0LCBhbmQgaXQncyBkZWZpbml0
ZWx5IG5vdCBtaW5lLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEFyZ3VtZW50
cyAgICAgICAgID0gMHgwMDAwNjAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBv
YmplY3QuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0T2JqZWN0T3RoZXIgICAg
ICAgPSAweDAwMDA4MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNG
aW5hbE9iamVjdCwgSlNBcnJheSwgb3IgSlNGdW5jdGlvbi4KK3N0YXRpYyBjb25zdCBQcmVkaWN0
ZWRUeXBlIFByZWRpY3RPYmplY3RNYXNrICAgICAgICA9IDB4MDAwMGZmZmY7IC8vIEJpdG1hc2sg
dXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCitzdGF0
aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0U3RyaW5nICAgICAgICAgICAgPSAweDAwMDEw
MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0
ZWRUeXBlIFByZWRpY3RDZWxsT3RoZXIgICAgICAgICA9IDB4MDAwMjAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTQ2VsbCBidXQgbm90IGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QgYW5kIGRlZmlu
aXRlbHkgbm90IGEgSlNTdHJpbmcuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0
Q2VsbCAgICAgICAgICAgICAgPSAweDAwMDNmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MzIgICAgICAgICAgICAg
PSAweDAwODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzIuCitzdGF0aWMgY29uc3Qg
UHJlZGljdGVkVHlwZSBQcmVkaWN0RG91YmxlUmVhbCAgICAgICAgPSAweDAxMDAwMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRU
eXBlIFByZWRpY3REb3VibGVOYU4gICAgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIE5hTi4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3REb3VibGUgICAg
ICAgICAgICA9IDB4MDMwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBk
b3VibGUuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0TnVtYmVyICAgICAgICAg
ICAgPSAweDAzODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBhIERvdWJsZS4KK3N0
YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RCb29sZWFuICAgICAgICAgICA9IDB4MDQw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgUHJlZGlj
dGVkVHlwZSBQcmVkaWN0T3RoZXIgICAgICAgICAgICAgPSAweDA4MDAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgbm9uZSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0VG9wICAgICAgICAgICAgICAgPSAweDBmZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9m
IHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RFbXB0eSAgICAg
ICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBt
YXJrZXIuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RW1wdHlPclRvcCAgICAg
ICAgPSAweDFmZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBj
b25zdCBQcmVkaWN0ZWRUeXBlIEZpeGVkSW5kZXhlZFN0b3JhZ2VNYXNrID0gUHJlZGljdEludDhB
cnJheSB8IFByZWRpY3RJbnQxNkFycmF5IHwgUHJlZGljdEludDMyQXJyYXkgfCBQcmVkaWN0VWlu
dDhBcnJheSB8IFByZWRpY3RVaW50OENsYW1wZWRBcnJheSB8IFByZWRpY3RVaW50MTZBcnJheSB8
IFByZWRpY3RVaW50MzJBcnJheSB8IFByZWRpY3RGbG9hdDMyQXJyYXkgfCBQcmVkaWN0RmxvYXQ2
NEFycmF5OworCit0eXBlZGVmIGJvb2wgKCpQcmVkaWN0aW9uQ2hlY2tlcikoUHJlZGljdGVkVHlw
ZSk7CisKKy8vIER1bW15IHByZWRpY3Rpb24gY2hlY2tlciwgb25seSB1c2VmdWwgaWYgc29tZW9u
ZSBpbnNpc3RzIG9uIHJlcXVpcmluZyBhIHByZWRpY3Rpb24gY2hlY2tlci4KK2lubGluZSBib29s
IGlzQW55UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlKQoreworICAgIHJldHVybiB0cnVlOworfQor
CitpbmxpbmUgYm9vbCBpc0NlbGxQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuICEhKHZhbHVlICYgUHJlZGljdENlbGwpICYmICEodmFsdWUgJiB+UHJlZGljdENl
bGwpOworfQorCitpbmxpbmUgYm9vbCBpc09iamVjdFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBQcmVkaWN0T2JqZWN0TWFzaykgJiYgISh2
YWx1ZSAmIH5QcmVkaWN0T2JqZWN0TWFzayk7Cit9CisKK2lubGluZSBib29sIGlzRmluYWxPYmpl
Y3RQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09
IFByZWRpY3RGaW5hbE9iamVjdDsKK30KKworaW5saW5lIGJvb2wgaXNGaW5hbE9iamVjdE9yT3Ro
ZXJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuICEhKHZhbHVl
ICYgKFByZWRpY3RGaW5hbE9iamVjdCB8IFByZWRpY3RPdGhlcikpICYmICEodmFsdWUgJiB+KFBy
ZWRpY3RGaW5hbE9iamVjdCB8IFByZWRpY3RPdGhlcikpOworfQorCitpbmxpbmUgYm9vbCBpc0Zp
eGVkSW5kZXhlZFN0b3JhZ2VPYmplY3RQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7
CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgRml4ZWRJbmRleGVkU3RvcmFnZU1hc2sp
ID09IHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBpc1N0cmluZ1ByZWRpY3Rpb24oUHJlZGljdGVk
VHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdFN0cmluZzsKK30KKwor
aW5saW5lIGJvb2wgaXNBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEFycmF5OworfQorCitpbmxpbmUgYm9vbCBpc0Z1bmN0
aW9uUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9
PSBQcmVkaWN0RnVuY3Rpb247Cit9CisKK2lubGluZSBib29sIGlzSW50OEFycmF5UHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0SW50
OEFycmF5OworfQorCitpbmxpbmUgYm9vbCBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKFByZWRpY3Rl
ZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQxNkFycmF5Owor
fQorCitpbmxpbmUgYm9vbCBpc0ludDMyQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQzMkFycmF5OworfQorCitpbmxp
bmUgYm9vbCBpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RVaW50OEFycmF5OworfQorCitpbmxpbmUgYm9vbCBp
c1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAg
IHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0VWludDhDbGFtcGVkQXJyYXk7Cit9CisKK2lubGluZSBi
b29sIGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAg
cmV0dXJuIHZhbHVlID09IFByZWRpY3RVaW50MTZBcnJheTsKK30KKworaW5saW5lIGJvb2wgaXNV
aW50MzJBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
dmFsdWUgPT0gUHJlZGljdFVpbnQzMkFycmF5OworfQorCitpbmxpbmUgYm9vbCBpc0Zsb2F0MzJB
cnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUg
PT0gUHJlZGljdEZsb2F0MzJBcnJheTsKK30KKworaW5saW5lIGJvb2wgaXNGbG9hdDY0QXJyYXlQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFBy
ZWRpY3RGbG9hdDY0QXJyYXk7Cit9CisKK2lubGluZSBib29sIGlzQXJndW1lbnRzUHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAm
IFByZWRpY3RBcmd1bWVudHMpID09IHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFi
bGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAg
cmV0dXJuIGlzSW50OEFycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNJbnQxNkFy
cmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNJbnQzMkFycmF5UHJlZGljdGlvbih2
YWx1ZSkKKyAgICAgICAgfHwgaXNVaW50OEFycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAg
fHwgaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzVWlu
dDE2QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc1VpbnQzMkFycmF5UHJlZGlj
dGlvbih2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFy
cmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc0Zsb2F0
MzJBcnJheVByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzRmxvYXQ2NEFycmF5UHJlZGlj
dGlvbih2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFy
cmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc0FjdGlv
bmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlv
bmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24odmFsdWUpOworfQorCitpbmxpbmUgYm9v
bCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuIGlzQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0Fy
Z3VtZW50c1ByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzQWN0aW9uYWJsZVR5cGVkTXV0
YWJsZUFycmF5UHJlZGljdGlvbih2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlzQWN0aW9uYWJs
ZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc1N0
cmluZ1ByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzQWN0aW9uYWJsZU11dGFibGVBcnJh
eVByZWRpY3Rpb24odmFsdWUpOworfQorCitpbmxpbmUgYm9vbCBpc0FycmF5T3JPdGhlclByZWRp
Y3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiAoUHJl
ZGljdEFycmF5IHwgUHJlZGljdE90aGVyKSkgJiYgISh2YWx1ZSAmIH4oUHJlZGljdEFycmF5IHwg
UHJlZGljdE90aGVyKSk7Cit9CisKK2lubGluZSBib29sIGlzTXlBcmd1bWVudHNQcmVkaWN0aW9u
KFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RNeUFy
Z3VtZW50czsKK30KKworaW5saW5lIGJvb2wgaXNJbnQzMlByZWRpY3Rpb24oUHJlZGljdGVkVHlw
ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEludDMyOworfQorCitpbmxp
bmUgYm9vbCBpc0RvdWJsZVJlYWxQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3REb3VibGVSZWFsOworfQorCitpbmxpbmUgYm9vbCBp
c0RvdWJsZVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISF2
YWx1ZSAmJiAodmFsdWUgJiBQcmVkaWN0RG91YmxlKSA9PSB2YWx1ZTsKK30KKworaW5saW5lIGJv
b2wgaXNOdW1iZXJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJu
ICEhKHZhbHVlICYgUHJlZGljdE51bWJlcikgJiYgISh2YWx1ZSAmIH5QcmVkaWN0TnVtYmVyKTsK
K30KKworaW5saW5lIGJvb2wgaXNCb29sZWFuUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVl
KQoreworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0Qm9vbGVhbjsKK30KKworaW5saW5lIGJv
b2wgaXNPdGhlclByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
dmFsdWUgPT0gUHJlZGljdE90aGVyOworfQorCitpbmxpbmUgYm9vbCBpc0VtcHR5UHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RW1w
dHk7Cit9CisKK2NvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZh
bHVlKTsKK2NvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKFByZWRpY3Rl
ZFR5cGUgdmFsdWUpOworCisvLyBNZXJnZSB0d28gcHJlZGljdGlvbnMuIE5vdGUgdGhhdCBjdXJy
ZW50bHkgdGhpcyBqdXN0IGRvZXMgbGVmdCB8IHJpZ2h0LiBJdCBtYXkKKy8vIHNlZW0gdGVtcHRp
bmcgdG8gZG8gc28gZGlyZWN0bHksIGJ1dCB5b3Ugd291bGQgYmUgZG9pbmcgc28gYXQgeW91ciBv
d24gcGVyaWwsCisvLyBzaW5jZSB0aGUgbWVyZ2luZyBwcm90b2NvbCBQcmVkaWN0ZWRUeXBlIG1h
eSBjaGFuZ2UgYXQgYW55IHRpbWUgKGFuZCBoYXMgYWxyZWFkeQorLy8gY2hhbmdlZCBzZXZlcmFs
IHRpbWVzIGluIGl0cyBoaXN0b3J5KS4KK2lubGluZSBQcmVkaWN0ZWRUeXBlIG1lcmdlUHJlZGlj
dGlvbnMoUHJlZGljdGVkVHlwZSBsZWZ0LCBQcmVkaWN0ZWRUeXBlIHJpZ2h0KQoreworICAgIHJl
dHVybiBsZWZ0IHwgcmlnaHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgYm9v
bCBtZXJnZVByZWRpY3Rpb24oVCYgbGVmdCwgUHJlZGljdGVkVHlwZSByaWdodCkKK3sKKyAgICBQ
cmVkaWN0ZWRUeXBlIG5ld1ByZWRpY3Rpb24gPSBzdGF0aWNfY2FzdDxUPihtZXJnZVByZWRpY3Rp
b25zKHN0YXRpY19jYXN0PFByZWRpY3RlZFR5cGU+KGxlZnQpLCByaWdodCkpOworICAgIGJvb2wg
cmVzdWx0ID0gbmV3UHJlZGljdGlvbiAhPSBzdGF0aWNfY2FzdDxQcmVkaWN0ZWRUeXBlPihsZWZ0
KTsKKyAgICBsZWZ0ID0gbmV3UHJlZGljdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQ
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyopOwor
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqKTsKK1ByZWRp
Y3RlZFR5cGUgcHJlZGljdGlvbkZyb21DZWxsKEpTQ2VsbCopOworUHJlZGljdGVkVHlwZSBwcmVk
aWN0aW9uRnJvbVZhbHVlKEpTVmFsdWUpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIFByZWRpY3RlZFR5cGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDExOTYwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw4IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUHJlZGljdGVkVHlwZV9o
Ci0jZGVmaW5lIFByZWRpY3RlZFR5cGVfaAorI2lmbmRlZiBTcGVjdWxhdGVkVHlwZV9oCisjZGVm
aW5lIFNwZWN1bGF0ZWRUeXBlX2gKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKIApAQCAtMzUsMjQ1
ICszNSwyNDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFN0cnVjdHVyZTsKIAotdHlwZWRl
ZiB1aW50MzJfdCBQcmVkaWN0ZWRUeXBlOwotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJl
ZGljdE5vbmUgICAgICAgICAgICAgID0gMHgwMDAwMDAwMDsgLy8gV2UgZG9uJ3Qga25vdyBhbnl0
aGluZyB5ZXQuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RmluYWxPYmplY3Qg
ICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0Lgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEFycmF5ICAgICAgICAgICAgID0gMHgw
MDAwMDAwMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4KLXN0YXRpYyBjb25zdCBQcmVk
aWN0ZWRUeXBlIFByZWRpY3RGdW5jdGlvbiAgICAgICAgICA9IDB4MDAwMDAwMDg7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAx
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MTZBcnJheSAgICAgICAg
PSAweDAwMDAwMDIwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MTZBcnJheSBvciBvbmUgb2Yg
aXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MzJB
cnJheSAgICAgICAgPSAweDAwMDAwMDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzJBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0VWludDhBcnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgUHJl
ZGljdGVkVHlwZSBQcmVkaWN0VWludDhDbGFtcGVkQXJyYXkgPSAweDAwMDAwMTAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYW4gVWludDhDbGFtcGVkQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdFVpbnQxNkFycmF5ICAgICAgID0g
MHgwMDAwMDIwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBp
dHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RVaW50MzJB
cnJheSAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0RmxvYXQzMkFycmF5ICAgICAgPSAweDAwMDAwODAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFBy
ZWRpY3RlZFR5cGUgUHJlZGljdEZsb2F0NjRBcnJheSAgICAgID0gMHgwMDAwMTAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0
YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RNeUFyZ3VtZW50cyAgICAgICA9IDB4MDAw
MDIwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0LCBhbmQgaXQncyBk
ZWZpbml0ZWx5IHRoZSBvbmUgZm9yIG15IGN1cnJlbnQgZnJhbWUuCi1zdGF0aWMgY29uc3QgUHJl
ZGljdGVkVHlwZSBQcmVkaWN0Rm9yZWlnbkFyZ3VtZW50cyAgPSAweDAwMDA0MDAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYW4gQXJndW1lbnRzIG9iamVjdCwgYW5kIGl0J3MgZGVmaW5pdGVseSBub3Qg
bWluZS4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RBcmd1bWVudHMgICAgICAg
ICA9IDB4MDAwMDYwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0Lgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE9iamVjdE90aGVyICAgICAgID0gMHgw
MDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmpl
Y3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0T2JqZWN0TWFzayAgICAgICAgPSAweDAwMDBmZmZmOyAvLyBCaXRtYXNrIHVzZWQgZm9y
IHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgotc3RhdGljIGNvbnN0
IFByZWRpY3RlZFR5cGUgUHJlZGljdFN0cmluZyAgICAgICAgICAgID0gMHgwMDAxMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0Q2VsbE90aGVyICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5v
dCBhIEpTU3RyaW5nLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdENlbGwgICAg
ICAgICAgICAgID0gMHgwMDAzZmZmZjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgotc3Rh
dGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEludDMyICAgICAgICAgICAgID0gMHgwMDgw
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFByZWRpY3Rl
ZFR5cGUgUHJlZGljdERvdWJsZVJlYWwgICAgICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVk
aWN0RG91YmxlTmFOICAgICAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBO
YU4uCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RG91YmxlICAgICAgICAgICAg
PSAweDAzMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE51bWJlciAgICAgICAgICAgID0gMHgw
MzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUuCi1zdGF0aWMgY29u
c3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0Qm9vbGVhbiAgICAgICAgICAgPSAweDA0MDAwMDAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
UHJlZGljdE90aGVyICAgICAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IG5vbmUgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdFRv
cCAgICAgICAgICAgICAgID0gMHgwZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RW1wdHkgICAgICAgICAgICAg
PSAweDEwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEVtcHR5T3JUb3AgICAgICAgID0gMHgx
ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgUHJl
ZGljdGVkVHlwZSBGaXhlZEluZGV4ZWRTdG9yYWdlTWFzayA9IFByZWRpY3RJbnQ4QXJyYXkgfCBQ
cmVkaWN0SW50MTZBcnJheSB8IFByZWRpY3RJbnQzMkFycmF5IHwgUHJlZGljdFVpbnQ4QXJyYXkg
fCBQcmVkaWN0VWludDhDbGFtcGVkQXJyYXkgfCBQcmVkaWN0VWludDE2QXJyYXkgfCBQcmVkaWN0
VWludDMyQXJyYXkgfCBQcmVkaWN0RmxvYXQzMkFycmF5IHwgUHJlZGljdEZsb2F0NjRBcnJheTsK
K3R5cGVkZWYgdWludDMyX3QgU3BlY3VsYXRlZFR5cGU7CitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgID0gMHgwMDAwMDAwMDsgLy8gV2UgZG9uJ3Qga25v
dyBhbnl0aGluZyB5ZXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ZpbmFsT2Jq
ZWN0ICAgICAgID0gMHgwMDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVj
dC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgICAgICAgICAgICAgPSAw
eDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICA9IDB4MDAwMDAwMDg7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ4QXJyYXkgICAgICAgICA9IDB4MDAwMDAwMTA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQxNkFycmF5ICAgICAgICA9IDB4
MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMg
c3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MzJBcnJheSAg
ICAgICAgPSAweDAwMDAwMDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzJBcnJheSBvciBv
bmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1Vp
bnQ4QXJyYXkgICAgICAgID0gMHgwMDAwMDA4MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQ4
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNVaW50OENsYW1wZWRBcnJheSA9IDB4MDAwMDAxMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgID0gMHgwMDAwMDIwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nl
cy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDMyQXJyYXkgICAgICAgPSAw
eDAwMDAwNDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDMyQXJyYXkgb3Igb25lIG9mIGl0
cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGbG9hdDMyQXJy
YXkgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBv
ciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Zsb2F0NjRBcnJheSAgICAgID0gMHgwMDAwMTAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVp
bnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjTXlBcmd1bWVudHMgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYW4gQXJndW1lbnRzIG9iamVjdCwgYW5kIGl0J3MgZGVmaW5pdGVseSB0aGUgb25lIGZv
ciBteSBjdXJyZW50IGZyYW1lLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGb3Jl
aWduQXJndW1lbnRzICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVu
dHMgb2JqZWN0LCBhbmQgaXQncyBkZWZpbml0ZWx5IG5vdCBtaW5lLgorc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNBcmd1bWVudHMgICAgICAgICA9IDB4MDAwMDYwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNPYmplY3RPdGhlciAgICAgICA9IDB4MDAwMDgwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9u
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3RNYXNrICAgICAgICA9IDB4
MDAwMGZmZmY7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2Jq
ZWN0IHByZWRpY3Rpb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAg
ICAgICAgICAgID0gMHgwMDAxMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCitz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDAy
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBK
U09iamVjdCBhbmQgZGVmaW5pdGVseSBub3QgYSBKU1N0cmluZy4KK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgPSAweDAwMDNmZmZmOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMy
ICAgICAgICAgICAgID0gMHgwMDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgor
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICA9IDB4MDEw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIG5vbi1OYU4gZG91YmxlLgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVOYU4gICAgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIE5hTi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91
YmxlICAgICAgICAgICAgPSAweDAzMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3Ig
YSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAg
ICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4
MDQwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IG5vbmUgb2YgdGhlIGFib3ZlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNUb3AgICAgICAgICAgICAgICA9IDB4MGZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2Yg
dGhlIGFib3ZlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAg
ICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJr
ZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0VtcHR5T3JUb3AgICAgICAgID0g
MHgxZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgRml4ZWRJbmRleGVkU3RvcmFnZU1hc2sgICAgPSBTcGVjSW50OEFycmF5
IHwgU3BlY0ludDE2QXJyYXkgfCBTcGVjSW50MzJBcnJheSB8IFNwZWNVaW50OEFycmF5IHwgU3Bl
Y1VpbnQ4Q2xhbXBlZEFycmF5IHwgU3BlY1VpbnQxNkFycmF5IHwgU3BlY1VpbnQzMkFycmF5IHwg
U3BlY0Zsb2F0MzJBcnJheSB8IFNwZWNGbG9hdDY0QXJyYXk7CiAKLXR5cGVkZWYgYm9vbCAoKlBy
ZWRpY3Rpb25DaGVja2VyKShQcmVkaWN0ZWRUeXBlKTsKK3R5cGVkZWYgYm9vbCAoKlNwZWN1bGF0
ZWRUeXBlQ2hlY2tlcikoU3BlY3VsYXRlZFR5cGUpOwogCiAvLyBEdW1teSBwcmVkaWN0aW9uIGNo
ZWNrZXIsIG9ubHkgdXNlZnVsIGlmIHNvbWVvbmUgaW5zaXN0cyBvbiByZXF1aXJpbmcgYSBwcmVk
aWN0aW9uIGNoZWNrZXIuCi1pbmxpbmUgYm9vbCBpc0FueVByZWRpY3Rpb24oUHJlZGljdGVkVHlw
ZSkKK2lubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBib29sIGlzQ2VsbFByZWRpY3Rpb24oUHJlZGljdGVk
VHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQogewotICAgIHJldHVybiAhISh2YWx1ZSAmIFByZWRpY3RDZWxsKSAmJiAhKHZhbHVl
ICYgflByZWRpY3RDZWxsKTsKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQ2VsbCkgJiYgISh2
YWx1ZSAmIH5TcGVjQ2VsbCk7CiB9CiAKLWlubGluZSBib29sIGlzT2JqZWN0UHJlZGljdGlvbihQ
cmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNPYmplY3RTcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISEodmFsdWUgJiBQcmVkaWN0T2JqZWN0
TWFzaykgJiYgISh2YWx1ZSAmIH5QcmVkaWN0T2JqZWN0TWFzayk7CisgICAgcmV0dXJuICEhKHZh
bHVlICYgU3BlY09iamVjdE1hc2spICYmICEodmFsdWUgJiB+U3BlY09iamVjdE1hc2spOwogfQog
Ci1pbmxpbmUgYm9vbCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVl
KQoraW5saW5lIGJvb2wgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RmluYWxPYmplY3Q7CisgICAgcmV0
dXJuIHZhbHVlID09IFNwZWNGaW5hbE9iamVjdDsKIH0KIAotaW5saW5lIGJvb2wgaXNGaW5hbE9i
amVjdE9yT3RoZXJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBp
c0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewot
ICAgIHJldHVybiAhISh2YWx1ZSAmIChQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIp
KSAmJiAhKHZhbHVlICYgfihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIpKTsKKyAg
ICByZXR1cm4gISEodmFsdWUgJiAoU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY090aGVyKSkgJiYgISh2
YWx1ZSAmIH4oU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY090aGVyKSk7CiB9CiAKLWlubGluZSBib29s
IGlzRml4ZWRJbmRleGVkU3RvcmFnZU9iamVjdFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKK2lubGluZSBib29sIGlzRml4ZWRJbmRleGVkU3RvcmFnZU9iamVjdFNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIEZp
eGVkSW5kZXhlZFN0b3JhZ2VNYXNrKSA9PSB2YWx1ZTsKIH0KIAotaW5saW5lIGJvb2wgaXNTdHJp
bmdQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc1N0cmluZ1Nw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQ
cmVkaWN0U3RyaW5nOworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjU3RyaW5nOwogfQogCi1pbmxp
bmUgYm9vbCBpc0FycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJv
b2wgaXNBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVy
biB2YWx1ZSA9PSBQcmVkaWN0QXJyYXk7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNBcnJheTsK
IH0KIAotaW5saW5lIGJvb2wgaXNGdW5jdGlvblByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKK2lubGluZSBib29sIGlzRnVuY3Rpb25TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEZ1bmN0aW9uOworICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjRnVuY3Rpb247CiB9CiAKLWlubGluZSBib29sIGlzSW50OEFycmF5UHJlZGlj
dGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNJbnQ4QXJyYXlTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGlj
dEludDhBcnJheTsKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0ludDhBcnJheTsKIH0KIAotaW5s
aW5lIGJvb2wgaXNJbnQxNkFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5s
aW5lIGJvb2wgaXNJbnQxNkFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQxNkFycmF5OworICAgIHJldHVybiB2YWx1
ZSA9PSBTcGVjSW50MTZBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgaXNJbnQzMkFycmF5UHJlZGlj
dGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNJbnQzMkFycmF5U3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRp
Y3RJbnQzMkFycmF5OworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSW50MzJBcnJheTsKIH0KIAot
aW5saW5lIGJvb2wgaXNVaW50OEFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQor
aW5saW5lIGJvb2wgaXNVaW50OEFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RVaW50OEFycmF5OworICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjVWludDhBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgaXNVaW50OENsYW1wZWRB
cnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzVWludDhD
bGFtcGVkQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gdmFsdWUgPT0gUHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5OworICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjVWludDhDbGFtcGVkQXJyYXk7CiB9CiAKLWlubGluZSBib29sIGlzVWludDE2QXJyYXlQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc1VpbnQxNkFycmF5
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09
IFByZWRpY3RVaW50MTZBcnJheTsKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1VpbnQxNkFycmF5
OwogfQogCi1pbmxpbmUgYm9vbCBpc1VpbnQzMkFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQoraW5saW5lIGJvb2wgaXNVaW50MzJBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0VWludDMyQXJyYXk7Cisg
ICAgcmV0dXJuIHZhbHVlID09IFNwZWNVaW50MzJBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgaXNG
bG9hdDMyQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBp
c0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJl
dHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQzMkFycmF5OworICAgIHJldHVybiB2YWx1ZSA9PSBT
cGVjRmxvYXQzMkFycmF5OwogfQogCi1pbmxpbmUgYm9vbCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzRmxvYXQ2NEFycmF5U3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRp
Y3RGbG9hdDY0QXJyYXk7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNGbG9hdDY0QXJyYXk7CiB9
CiAKLWlubGluZSBib29sIGlzQXJndW1lbnRzUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVl
KQoraW5saW5lIGJvb2wgaXNBcmd1bWVudHNTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBQcmVkaWN0QXJndW1lbnRzKSA9
PSB2YWx1ZTsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjQXJndW1lbnRzKSA9
PSB2YWx1ZTsKIH0KIAotaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5UHJl
ZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlSW50
TXV0YWJsZUFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGlzSW50OEFycmF5UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNJbnQxNkFycmF5
UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNJbnQzMkFycmF5UHJlZGljdGlvbih2YWx1
ZSkKLSAgICAgICAgfHwgaXNVaW50OEFycmF5UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwg
aXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzVWludDE2
QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc1VpbnQzMkFycmF5UHJlZGljdGlv
bih2YWx1ZSk7CisgICAgcmV0dXJuIGlzSW50OEFycmF5U3BlY3VsYXRpb24odmFsdWUpCisgICAg
ICAgIHx8IGlzSW50MTZBcnJheVNwZWN1bGF0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0ludDMy
QXJyYXlTcGVjdWxhdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNVaW50OEFycmF5U3BlY3VsYXRp
b24odmFsdWUpCisgICAgICAgIHx8IGlzVWludDhDbGFtcGVkQXJyYXlTcGVjdWxhdGlvbih2YWx1
ZSkKKyAgICAgICAgfHwgaXNVaW50MTZBcnJheVNwZWN1bGF0aW9uKHZhbHVlKQorICAgICAgICB8
fCBpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24odmFsdWUpOwogfQogCi1pbmxpbmUgYm9vbCBpc0Fj
dGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkK
K2lubGluZSBib29sIGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5U3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGlzRmxvYXQzMkFycmF5UHJlZGljdGlv
bih2YWx1ZSkKLSAgICAgICAgfHwgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKKyAg
ICByZXR1cm4gaXNGbG9hdDMyQXJyYXlTcGVjdWxhdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNG
bG9hdDY0QXJyYXlTcGVjdWxhdGlvbih2YWx1ZSk7CiB9CiAKLWlubGluZSBib29sIGlzQWN0aW9u
YWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5s
aW5lIGJvb2wgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5
UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJy
YXlQcmVkaWN0aW9uKHZhbHVlKTsKKyAgICByZXR1cm4gaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFy
cmF5U3BlY3VsYXRpb24odmFsdWUpCisgICAgICAgIHx8IGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJs
ZUFycmF5U3BlY3VsYXRpb24odmFsdWUpOwogfQogCi1pbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVN
dXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBp
c0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gaXNBcnJheVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzQXJn
dW1lbnRzUHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNBY3Rpb25hYmxlVHlwZWRNdXRh
YmxlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKKyAgICByZXR1cm4gaXNBcnJheVNwZWN1bGF0aW9u
KHZhbHVlKQorICAgICAgICB8fCBpc0FyZ3VtZW50c1NwZWN1bGF0aW9uKHZhbHVlKQorICAgICAg
ICB8fCBpc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJheVNwZWN1bGF0aW9uKHZhbHVlKTsKIH0K
IAotaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUg
dmFsdWUpCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiBpc1N0cmluZ1ByZWRpY3Rpb24odmFsdWUpCi0g
ICAgICAgIHx8IGlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24odmFsdWUpOworICAg
IHJldHVybiBpc1N0cmluZ1NwZWN1bGF0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFi
bGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbih2YWx1ZSk7CiB9CiAKLWlubGluZSBib29sIGlzQXJy
YXlPck90aGVyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNB
cnJheU9yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gISEodmFsdWUgJiAoUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKSkgJiYgISh2YWx1ZSAm
IH4oUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKSk7CisgICAgcmV0dXJuICEhKHZhbHVlICYg
KFNwZWNBcnJheSB8IFNwZWNPdGhlcikpICYmICEodmFsdWUgJiB+KFNwZWNBcnJheSB8IFNwZWNP
dGhlcikpOwogfQogCi1pbmxpbmUgYm9vbCBpc015QXJndW1lbnRzUHJlZGljdGlvbihQcmVkaWN0
ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNNeUFyZ3VtZW50c1NwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0TXlBcmd1bWVu
dHM7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNNeUFyZ3VtZW50czsKIH0KIAotaW5saW5lIGJv
b2wgaXNJbnQzMlByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlz
SW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFs
dWUgPT0gUHJlZGljdEludDMyOworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSW50MzI7CiB9CiAK
LWlubGluZSBib29sIGlzRG91YmxlUmVhbFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkK
K2lubGluZSBib29sIGlzRG91YmxlUmVhbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RG91YmxlUmVhbDsKKyAgICByZXR1cm4g
dmFsdWUgPT0gU3BlY0RvdWJsZVJlYWw7CiB9CiAKLWlubGluZSBib29sIGlzRG91YmxlUHJlZGlj
dGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNEb3VibGVTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUg
JiBQcmVkaWN0RG91YmxlKSA9PSB2YWx1ZTsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUg
JiBTcGVjRG91YmxlKSA9PSB2YWx1ZTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1iZXJQcmVkaWN0
aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc051bWJlclNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiAhISh2YWx1ZSAmIFByZWRpY3RO
dW1iZXIpICYmICEodmFsdWUgJiB+UHJlZGljdE51bWJlcik7CisgICAgcmV0dXJuICEhKHZhbHVl
ICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAmIH5TcGVjTnVtYmVyKTsKIH0KIAotaW5saW5lIGJv
b2wgaXNCb29sZWFuUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wg
aXNCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IHZhbHVlID09IFByZWRpY3RCb29sZWFuOworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVh
bjsKIH0KIAotaW5saW5lIGJvb2wgaXNPdGhlclByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKK2lubGluZSBib29sIGlzT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdE90aGVyOworICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjT3RoZXI7CiB9CiAKLWlubGluZSBib29sIGlzRW1wdHlQcmVkaWN0aW9uKFByZWRpY3Rl
ZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0VtcHR5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RFbXB0eTsKKyAgICByZXR1
cm4gdmFsdWUgPT0gU3BlY0VtcHR5OwogfQogCi1jb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJp
bmcoUHJlZGljdGVkVHlwZSB2YWx1ZSk7Ci1jb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9BYmJyZXZp
YXRlZFN0cmluZyhQcmVkaWN0ZWRUeXBlIHZhbHVlKTsKK2NvbnN0IGNoYXIqIHNwZWN1bGF0aW9u
VG9TdHJpbmcoU3BlY3VsYXRlZFR5cGUgdmFsdWUpOworY29uc3QgY2hhciogc3BlY3VsYXRpb25U
b0FiYnJldmlhdGVkU3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKTsKIAogLy8gTWVyZ2UgdHdv
IHByZWRpY3Rpb25zLiBOb3RlIHRoYXQgY3VycmVudGx5IHRoaXMganVzdCBkb2VzIGxlZnQgfCBy
aWdodC4gSXQgbWF5CiAvLyBzZWVtIHRlbXB0aW5nIHRvIGRvIHNvIGRpcmVjdGx5LCBidXQgeW91
IHdvdWxkIGJlIGRvaW5nIHNvIGF0IHlvdXIgb3duIHBlcmlsLAotLy8gc2luY2UgdGhlIG1lcmdp
bmcgcHJvdG9jb2wgUHJlZGljdGVkVHlwZSBtYXkgY2hhbmdlIGF0IGFueSB0aW1lIChhbmQgaGFz
IGFscmVhZHkKKy8vIHNpbmNlIHRoZSBtZXJnaW5nIHByb3RvY29sIFNwZWN1bGF0ZWRUeXBlIG1h
eSBjaGFuZ2UgYXQgYW55IHRpbWUgKGFuZCBoYXMgYWxyZWFkeQogLy8gY2hhbmdlZCBzZXZlcmFs
IHRpbWVzIGluIGl0cyBoaXN0b3J5KS4KLWlubGluZSBQcmVkaWN0ZWRUeXBlIG1lcmdlUHJlZGlj
dGlvbnMoUHJlZGljdGVkVHlwZSBsZWZ0LCBQcmVkaWN0ZWRUeXBlIHJpZ2h0KQoraW5saW5lIFNw
ZWN1bGF0ZWRUeXBlIG1lcmdlU3BlY3VsYXRpb25zKFNwZWN1bGF0ZWRUeXBlIGxlZnQsIFNwZWN1
bGF0ZWRUeXBlIHJpZ2h0KQogewogICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCBtZXJnZVByZWRpY3Rpb24oVCYgbGVmdCwgUHJl
ZGljdGVkVHlwZSByaWdodCkKK2lubGluZSBib29sIG1lcmdlU3BlY3VsYXRpb24oVCYgbGVmdCwg
U3BlY3VsYXRlZFR5cGUgcmlnaHQpCiB7Ci0gICAgUHJlZGljdGVkVHlwZSBuZXdQcmVkaWN0aW9u
ID0gc3RhdGljX2Nhc3Q8VD4obWVyZ2VQcmVkaWN0aW9ucyhzdGF0aWNfY2FzdDxQcmVkaWN0ZWRU
eXBlPihsZWZ0KSwgcmlnaHQpKTsKLSAgICBib29sIHJlc3VsdCA9IG5ld1ByZWRpY3Rpb24gIT0g
c3RhdGljX2Nhc3Q8UHJlZGljdGVkVHlwZT4obGVmdCk7Ci0gICAgbGVmdCA9IG5ld1ByZWRpY3Rp
b247CisgICAgU3BlY3VsYXRlZFR5cGUgbmV3U3BlY3VsYXRpb24gPSBzdGF0aWNfY2FzdDxUPiht
ZXJnZVNwZWN1bGF0aW9ucyhzdGF0aWNfY2FzdDxTcGVjdWxhdGVkVHlwZT4obGVmdCksIHJpZ2h0
KSk7CisgICAgYm9vbCByZXN1bHQgPSBuZXdTcGVjdWxhdGlvbiAhPSBzdGF0aWNfY2FzdDxTcGVj
dWxhdGVkVHlwZT4obGVmdCk7CisgICAgbGVmdCA9IG5ld1NwZWN1bGF0aW9uOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLVByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8oY29u
c3QgQ2xhc3NJbmZvKik7Ci1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tU3RydWN0dXJlKFN0
cnVjdHVyZSopOwotUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbUNlbGwoSlNDZWxsKik7Ci1Q
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tVmFsdWUoSlNWYWx1ZSk7CitTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKik7CitTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoU3RydWN0dXJlKik7CitTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21DZWxsKEpTQ2VsbCopOworU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRp
b25Gcm9tVmFsdWUoSlNWYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8g
UHJlZGljdGVkVHlwZV9oCisjZW5kaWYgLy8gU3BlY3VsYXRlZFR5cGVfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMTE5
NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFN0cnVjdHVyZVNldF9oCiAj
ZGVmaW5lIFN0cnVjdHVyZVNldF9oCiAKLSNpbmNsdWRlICJQcmVkaWN0ZWRUeXBlLmgiCisjaW5j
bHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRl
IDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEyMSwxMiArMTIxLDEyIEBA
IHB1YmxpYzoKICAgICAKICAgICBTdHJ1Y3R1cmUqIGxhc3QoKSBjb25zdCB7IHJldHVybiBtX3N0
cnVjdHVyZXMubGFzdCgpOyB9CiAKLSAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tU3Ry
dWN0dXJlcygpIGNvbnN0CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0
dXJlcygpIGNvbnN0CiAgICAgewotICAgICAgICBQcmVkaWN0ZWRUeXBlIHJlc3VsdCA9IFByZWRp
Y3ROb25lOworICAgICAgICBTcGVjdWxhdGVkVHlwZSByZXN1bHQgPSBTcGVjTm9uZTsKICAgICAg
ICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsg
KytpKQotICAgICAgICAgICAgbWVyZ2VQcmVkaWN0aW9uKHJlc3VsdCwgcHJlZGljdGlvbkZyb21T
dHJ1Y3R1cmUobV9zdHJ1Y3R1cmVzW2ldKSk7CisgICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9u
KHJlc3VsdCwgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKG1fc3RydWN0dXJlc1tpXSkpOwogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAxMTk2MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCi0jaW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgorI2luY2x1ZGUgIlNwZWN1bGF0
ZWRUeXBlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVy
LmgiCiAKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIAog
ICAgIFZhbHVlUHJvZmlsZUJhc2UoKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoLTEpCi0g
ICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQorICAgICAgICAsIG1fcHJlZGljdGlv
bihTcGVjTm9uZSkKICAgICAgICAgLCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbigwKQog
ICAgICAgICAsIG1fc2luZ2xldG9uVmFsdWVJc1RvcChmYWxzZSkKICAgICB7CkBAIC02MCw3ICs2
MCw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICBWYWx1ZVByb2ZpbGVC
YXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KQotICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKKyAgICAgICAg
LCBtX3ByZWRpY3Rpb24oU3BlY05vbmUpCiAgICAgICAgICwgbV9udW1iZXJPZlNhbXBsZXNJblBy
ZWRpY3Rpb24oMCkKICAgICAgICAgLCBtX3NpbmdsZXRvblZhbHVlSXNUb3AoZmFsc2UpCiAgICAg
ewpAQCAtMTE0LDcgKzExNCw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAg
ZnByaW50ZihvdXQsCiAgICAgICAgICAgICAgICAgInNhbXBsZXMgPSAldSwgcHJlZGljdGlvbiA9
ICVzIiwKICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mU2FtcGxlcygpLAotICAgICAgICAg
ICAgICAgIHByZWRpY3Rpb25Ub1N0cmluZyhtX3ByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvblRvU3RyaW5nKG1fcHJlZGljdGlvbikpOwogICAgICAgICBmcHJpbnRmKG91
dCwgIiwgdmFsdWUgPSAiKTsKICAgICAgICAgaWYgKG1fc2luZ2xldG9uVmFsdWVJc1RvcCkKICAg
ICAgICAgICAgIGZwcmludGYob3V0LCAiVE9QIik7CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RydWN0
IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIH0KICAgICAKICAgICAvLyBVcGRhdGVzIHRoZSBwcmVk
aWN0aW9uIGFuZCByZXR1cm5zIHRoZSBuZXcgb25lLgotICAgIFByZWRpY3RlZFR5cGUgY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uID0gTm9PcGVy
YXRpb24pCisgICAgU3BlY3VsYXRlZFR5cGUgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKE9wZXJh
dGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uID0gTm9PcGVyYXRpb24pCiAgICAgewogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkgewogICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOwpA
QCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9udW1iZXJPZlNhbXBs
ZXNJblByZWRpY3Rpb24rKzsKLSAgICAgICAgICAgIG1lcmdlUHJlZGljdGlvbihtX3ByZWRpY3Rp
b24sIHByZWRpY3Rpb25Gcm9tVmFsdWUodmFsdWUpKTsKKyAgICAgICAgICAgIG1lcmdlU3BlY3Vs
YXRpb24obV9wcmVkaWN0aW9uLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fc2luZ2xldG9uVmFsdWVJc1RvcCAmJiAhIXZhbHVl
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3NpbmdsZXRvblZhbHVlKQpAQCAtMTY3LDcgKzE2
Nyw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICBpbnQgbV9ieXRlY29k
ZU9mZnNldDsgLy8gLTEgZm9yIHByb2xvZ3VlCiAgICAgCi0gICAgUHJlZGljdGVkVHlwZSBtX3By
ZWRpY3Rpb247CisgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uOwogICAgIHVuc2lnbmVk
IG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uOwogICAgIAogICAgIGJvb2wgbV9zaW5nbGV0
b25WYWx1ZUlzVG9wOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwzMSArOTks
MzEgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFByZWRpY3RlZFR5cGUg
cHJlZGljdGlvbiA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKTsKLSAg
ICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0SW50MzIpOwotICAgICAgICBl
bHNlIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEFycmF5KTsKLSAgICAgICAgZWxz
ZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEJvb2xlYW4pOwotICAgICAgICBl
bHNlIGlmIChpc0ludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICBy
b290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RJbnQ4QXJyYXkpOwotICAg
ICAgICBlbHNlIGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0SW50MTZBcnJh
eSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikp
Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RJ
bnQzMkFycmF5KTsKLSAgICAgICAgZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVk
aWN0aW9uKSkKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQo
UHJlZGljdFVpbnQ4QXJyYXkpOwotICAgICAgICBlbHNlIGlmIChpc1VpbnQ4Q2xhbXBlZEFycmF5
UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5zZXQoUHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5KTsKLSAgICAgICAgZWxzZSBp
ZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RVaW50MTZBcnJheSk7Ci0gICAg
ICAgIGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0VWludDMyQXJy
YXkpOwotICAgICAgICBlbHNlIGlmIChpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlv
bikpCi0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRp
Y3RGbG9hdDMyQXJyYXkpOwotICAgICAgICBlbHNlIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
aSkuc2V0KFByZWRpY3RGbG9hdDY0QXJyYXkpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpOworICAgICAg
ICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjSW50MzIpOworICAgICAgICBlbHNlIGlm
IChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFNwZWNBcnJheSk7CisgICAgICAgIGVsc2UgaWYgKGlz
Qm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjQm9vbGVhbik7CisgICAgICAgIGVsc2UgaWYgKGlz
SW50OEFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFNwZWNJbnQ4QXJyYXkpOworICAgICAgICBlbHNlIGlm
IChpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY0ludDE2QXJyYXkpOworICAgICAgICBl
bHNlIGlmIChpc0ludDMyQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAg
IHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY0ludDMyQXJyYXkpOworICAg
ICAgICBlbHNlIGlmIChpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAg
ICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY1VpbnQ4QXJyYXkp
OworICAgICAgICBlbHNlIGlmIChpc1VpbnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRpb24ocHJlZGlj
dGlvbikpCisgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFNw
ZWNVaW50OENsYW1wZWRBcnJheSk7CisgICAgICAgIGVsc2UgaWYgKGlzVWludDE2QXJyYXlTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXQoU3BlY1VpbnQxNkFycmF5KTsKKyAgICAgICAgZWxzZSBpZiAoaXNVaW50MzJB
cnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjVWludDMyQXJyYXkpOworICAgICAgICBlbHNlIGlmIChp
c0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjRmxvYXQzMkFycmF5KTsKKyAgICAgICAg
ZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAg
ICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY0Zsb2F0NjRBcnJheSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5tYWtlVG9wKCk7CiAgICAgICAgIApAQCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgQWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICBjYXNlIEdldExvY2FsOiB7CiAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgYm9vbCBjYW5FeGl0ID0gZmFsc2U7Ci0gICAgICAgIGNhbkV4
aXQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdE5vbmU7Cisg
ICAgICAgIGNhbkV4aXQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCkgPT0gU3Bl
Y05vbmU7CiAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX3ZhcmlhYmxlcy5vcGVyYW5k
KHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSk7CiAgICAgICAgIGlmICghdmFyaWFibGVBY2Nl
c3NEYXRhLT5pc0NhcHR1cmVkKCkpIHsKICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkp
CkBAIC0yNjksMTcgKzI2OSwxNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kCiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZU51bWJlclVu
YXJ5KG5vZGUpOwotICAgICAgICAgICAgbV92YXJpYWJsZXMub3BlcmFuZChub2RlLmxvY2FsKCkp
LnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAgIG1fdmFyaWFibGVzLm9wZXJhbmQobm9k
ZS5sb2NhbCgpKS5zZXQoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gbm9kZS52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKTsKLSAgICAgICAg
aWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0ZWRUeXBlID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRB
d2FyZVByZWRpY3Rpb24oKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0
ZWRUeXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0ZUludDMyVW5hcnkobm9kZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7Ci0gICAgICAgICAg
ICBub2RlLnNldENhbkV4aXQoIWlzQXJyYXlQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQ
cmVkaWN0QXJyYXkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpCisgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0
ZWRUeXBlKSkgeworICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc0FycmF5U3BlY3VsYXRp
b24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNBcnJheSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNC
b29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGVC
b29sZWFuVW5hcnkobm9kZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5vZGUuc2V0Q2Fu
RXhpdChmYWxzZSk7CkBAIC0zMzIsNyArMzMyLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
c3BlY3VsYXRlSW50MzJCaW5hcnkobm9kZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50
MzIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzQ2LDEwICszNDYsMTAg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFub2RlLmNhblNwZWN1bGF0ZUludGVnZXIo
KSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0RvdWJsZSk7CiAgICAgICAg
ICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS5zZXRDYW5F
eGl0KHRydWUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzY4LDggKzM2OCw4IEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOwotICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFNwZWNOdW1iZXIpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtMzkz
LDcgKzM5Myw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAg
Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIApAQCAtNDA2LDEyICs0MDYsMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
c3BlY3VsYXRlTnVtYmVyVW5hcnkobm9kZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoUHJlZGljdERvdWJsZSk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0Rv
dWJsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVja051
bWJlcjoKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJl
cik7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNOdW1iZXIpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CkBAIC00Mjcs
MTcgKzQyNywxNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAg
ICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSkpIHsKICAg
ICAgICAgICAgIHNwZWN1bGF0ZUludDMyQmluYXJ5KAogICAgICAgICAgICAgICAgIG5vZGUsICFu
b2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpOwotICAgICAgICAg
ICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkgewogICAgICAgICAgICAgc3Bl
Y3VsYXRlTnVtYmVyQmluYXJ5KG5vZGUpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
U3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAo
bm9kZS5vcCgpID09IFZhbHVlQWRkKSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS5j
b2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChQcmVkaWN0U3RyaW5nIHwgUHJlZGljdEludDMyIHwgUHJlZGljdE51bWJlcik7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNTdHJpbmcgfCBTcGVjSW50MzIgfCBT
cGVjTnVtYmVyKTsKICAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDU5LDExICs0NTksMTEgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGVJbnQzMkJp
bmFyeSgKICAgICAgICAgICAgICAgICBub2RlLCAhbm9kZUNhblRydW5jYXRlSW50ZWdlcihub2Rl
LmFyaXRoTm9kZUZsYWdzKCkpKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
UHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0lu
dDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHNwZWN1bGF0ZU51
bWJlckJpbmFyeShub2RlKTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
RG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjRG91YmxlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTQ3OCwxMSArNDc4LDExIEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgaWYgKG1fZ3JhcGgu
bmVnYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkgewogICAgICAgICAgICAgc3BlY3Vs
YXRlSW50MzJVbmFyeSgKICAgICAgICAgICAgICAgICBub2RlLCAhbm9kZUNhblRydW5jYXRlSW50
ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHNw
ZWN1bGF0ZU51bWJlclVuYXJ5KG5vZGUpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3REb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNEb3Vi
bGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNTAwLDExICs1MDAsMTEg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAg
ICAgIG5vZGUsCiAgICAgICAgICAgICAgICAgIW5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5h
cml0aE5vZGVGbGFncygpKQogICAgICAgICAgICAgICAgIHx8ICFub2RlQ2FuSWdub3JlTmVnYXRp
dmVaZXJvKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
c3BlY3VsYXRlTnVtYmVyQmluYXJ5KG5vZGUpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KFByZWRpY3REb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNE
b3VibGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNTQyLDExICs1NDIs
MTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAg
ICAgICAgIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pCiAg
ICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAg
c3BlY3VsYXRlSW50MzJCaW5hcnkobm9kZSwgdHJ1ZSk7IC8vIGZvcmNpbmcgY2FuLWV4aXQsIHdo
aWNoIGlzIGEgYml0IG9uIHRoZSBjb25zZXJ2YXRpdmUgc2lkZS4KLSAgICAgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIHNwZWN1bGF0ZU51bWJlckJpbmFyeShub2RlKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNl
dChTcGVjRG91YmxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC01
NjEsMTEgKzU2MSwxMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludGVn
ZXIoKQogICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAg
ICAgICAgIHNwZWN1bGF0ZUludDMyVW5hcnkobm9kZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBzcGVjdWxhdGVOdW1iZXJVbmFyeShub2RlKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNl
dChTcGVjRG91YmxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC01
NzgsNyArNTc4LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgc3BlY3VsYXRlTnVtYmVyVW5h
cnkobm9kZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7
CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0RvdWJsZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtNTkwLDIzICs1OTAsMjMgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwotICAg
ICAgICBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihjaGlsZC5wcmVkaWN0aW9uKCkpKQorICAgICAg
ICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24oY2hpbGQucHJlZGljdGlvbigpKSkKICAgICAgICAg
ICAgIHNwZWN1bGF0ZUJvb2xlYW5VbmFyeShub2RlKTsKICAgICAgICAgZWxzZSBpZiAoY2hpbGQu
c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVyKCkpIHsKICAgICAgICAgICAgIG5vZGUu
c2V0Q2FuRXhpdCgKLSAgICAgICAgICAgICAgICAhaXNGaW5hbE9iamVjdE9yT3RoZXJQcmVkaWN0
aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIp
OworICAgICAgICAgICAgICAgICFpc0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1bGF0aW9uKGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihTcGVjRmluYWxPYmplY3QgfCBTcGVjT3RoZXIpOwogICAgICAgICB9IGVs
c2UgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZUFycmF5T3JPdGhlcigpKSB7CiAgICAgICAgICAg
ICBub2RlLnNldENhbkV4aXQoCi0gICAgICAgICAgICAgICAgIWlzQXJyYXlPck90aGVyUHJlZGlj
dGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwotICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKTsKKyAg
ICAgICAgICAgICAgICAhaXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoU3BlY0FycmF5IHwgU3BlY090aGVyKTsKICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5zaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCiAgICAgICAgICAgICBzcGVjdWxhdGVJbnQzMlVuYXJ5KG5v
ZGUpOwogICAgICAgICBlbHNlIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKICAg
ICAgICAgICAgIHNwZWN1bGF0ZU51bWJlclVuYXJ5KG5vZGUpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFByZWRpY3RCb29sZWFuKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChT
cGVjQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC02NDQsNyAr
NjQ0LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEJvb2xlYW4pOworICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFNwZWNCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAg
ICAgCkBAIC02ODMsMTggKzY4MywxOCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0Qm9vbGVhbik7CisgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoU3BlY0Jvb2xlYW4pOwogICAgICAgICAKICAgICAgICAgTm9kZSYg
bGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07CiAgICAgICAgIE5vZGUmIHJpZ2h0ID0gbV9n
cmFwaFtub2RlLmNoaWxkMigpXTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBmaWx0ZXI7Ci0gICAg
ICAgIFByZWRpY3Rpb25DaGVja2VyIGNoZWNrZXI7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGZp
bHRlcjsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGVDaGVja2VyIGNoZWNrZXI7CiAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGxlZnQsIHJpZ2h0KSkgewotICAgICAgICAg
ICAgZmlsdGVyID0gUHJlZGljdEludDMyOwotICAgICAgICAgICAgY2hlY2tlciA9IGlzSW50MzJQ
cmVkaWN0aW9uOworICAgICAgICAgICAgZmlsdGVyID0gU3BlY0ludDMyOworICAgICAgICAgICAg
Y2hlY2tlciA9IGlzSW50MzJTcGVjdWxhdGlvbjsKICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVOdW1iZXIobGVmdCwgcmlnaHQpKSB7Ci0gICAgICAgICAgICBmaWx0ZXIg
PSBQcmVkaWN0TnVtYmVyOwotICAgICAgICAgICAgY2hlY2tlciA9IGlzTnVtYmVyUHJlZGljdGlv
bjsKKyAgICAgICAgICAgIGZpbHRlciA9IFNwZWNOdW1iZXI7CisgICAgICAgICAgICBjaGVja2Vy
ID0gaXNOdW1iZXJTcGVjdWxhdGlvbjsKICAgICAgICAgfSBlbHNlIGlmIChub2RlLm9wKCkgPT0g
Q29tcGFyZUVxKSB7CiAgICAgICAgICAgICBpZiAoKG1fZ3JhcGguaXNDb25zdGFudChub2RlLmNo
aWxkMSgpLmluZGV4KCkpCiAgICAgICAgICAgICAgICAgICYmIG1fZ3JhcGgudmFsdWVPZkpTQ29u
c3RhbnQobm9kZS5jaGlsZDEoKS5pbmRleCgpKS5pc051bGwoKSkKQEAgLTcwNiw0NyArNzA2LDQ3
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KGxlZnQsIHJpZ2h0KSkgewotICAgICAgICAgICAgICAgIGZpbHRlciA9IFByZWRp
Y3RGaW5hbE9iamVjdDsKLSAgICAgICAgICAgICAgICBjaGVja2VyID0gaXNGaW5hbE9iamVjdFBy
ZWRpY3Rpb247CisgICAgICAgICAgICAgICAgZmlsdGVyID0gU3BlY0ZpbmFsT2JqZWN0OworICAg
ICAgICAgICAgICAgIGNoZWNrZXIgPSBpc0ZpbmFsT2JqZWN0U3BlY3VsYXRpb247CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KGxlZnQsIHJpZ2h0KSkg
ewotICAgICAgICAgICAgICAgIGZpbHRlciA9IFByZWRpY3RBcnJheTsKLSAgICAgICAgICAgICAg
ICBjaGVja2VyID0gaXNBcnJheVByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgZmlsdGVyID0g
U3BlY0FycmF5OworICAgICAgICAgICAgICAgIGNoZWNrZXIgPSBpc0FycmF5U3BlY3VsYXRpb247
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnQuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3Qo
KSAmJiByaWdodC5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkgewogICAgICAg
ICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCgKLSAgICAgICAgICAgICAgICAgICAgIWlzRmluYWxP
YmplY3RQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQotICAgICAgICAg
ICAgICAgICAgICB8fCAhaXNGaW5hbE9iamVjdE9yT3RoZXJQcmVkaWN0aW9uKGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkubV90eXBlKSk7Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdEZpbmFsT2JqZWN0KTsKLSAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIp
OworICAgICAgICAgICAgICAgICAgICAhaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgICAgICAgICB8fCAhaXNGaW5hbE9i
amVjdE9yT3RoZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpOwor
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNGaW5hbE9i
amVjdCk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3Bl
Y0ZpbmFsT2JqZWN0IHwgU3BlY090aGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocmlnaHQuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAmJiBs
ZWZ0LnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7CiAgICAgICAgICAgICAg
ICAgbm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAgICAgICAgICAhaXNGaW5hbE9iamVjdE9y
T3RoZXJQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQotICAgICAgICAg
ICAgICAgICAgICB8fCAhaXNGaW5hbE9iamVjdFByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxk
MigpKS5tX3R5cGUpKTsKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIpOwotICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RGaW5hbE9iamVjdCk7CisgICAg
ICAgICAgICAgICAgICAgICFpc0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgICAgICAgICB8fCAhaXNGaW5hbE9i
amVjdFNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSk7CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ZpbmFsT2JqZWN0IHwg
U3BlY090aGVyKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRl
cihTcGVjRmluYWxPYmplY3QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChsZWZ0LnNob3VsZFNwZWN1bGF0ZUFycmF5KCkgJiYgcmlnaHQuc2hvdWxkU3Bl
Y3VsYXRlQXJyYXlPck90aGVyKCkpIHsKICAgICAgICAgICAgICAgICBub2RlLnNldENhbkV4aXQo
Ci0gICAgICAgICAgICAgICAgICAgICFpc0FycmF5UHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlPck90aGVyUHJl
ZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpOwotICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7Ci0gICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEFycmF5IHwgUHJlZGlj
dE90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgIWlzQXJyYXlTcGVjdWxhdGlvbihmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlP
ck90aGVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLmNoaWxkMigpKS5tX3R5cGUpKTsKKyAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNBcnJheSB8IFNw
ZWNPdGhlcik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KHJpZ2h0LnNob3VsZFNwZWN1bGF0ZUFycmF5KCkgJiYgbGVmdC5zaG91bGRTcGVjdWxhdGVBcnJh
eU9yT3RoZXIoKSkgewogICAgICAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCgKLSAgICAgICAg
ICAgICAgICAgICAgIWlzQXJyYXlPck90aGVyUHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlQcmVkaWN0aW9uKGZv
ck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSk7Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKTsKLSAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOwor
ICAgICAgICAgICAgICAgICAgICAhaXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlTcGVj
dWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpOworICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNBcnJheSB8IFNwZWNPdGhlcik7Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0FycmF5KTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgZmlsdGVyID0gUHJlZGljdFRvcDsKLSAgICAgICAgICAgICAgICBjaGVja2VyID0gaXNB
bnlQcmVkaWN0aW9uOworICAgICAgICAgICAgICAgIGZpbHRlciA9IFNwZWNUb3A7CisgICAgICAg
ICAgICAgICAgY2hlY2tlciA9IGlzQW55U3BlY3VsYXRpb247CiAgICAgICAgICAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZpbHRlciA9IFByZWRpY3RUb3A7Ci0gICAg
ICAgICAgICBjaGVja2VyID0gaXNBbnlQcmVkaWN0aW9uOworICAgICAgICAgICAgZmlsdGVyID0g
U3BlY1RvcDsKKyAgICAgICAgICAgIGNoZWNrZXIgPSBpc0FueVNwZWN1bGF0aW9uOwogICAgICAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKICAgICAg
ICAgfQogICAgICAgICBub2RlLnNldENhbkV4aXQoCkBAIC03NjYsNyArNzY2LDcgQEAgYm9vbCBB
YnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KGZhbHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEJvb2xlYW4pOworICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KFNwZWNCb29sZWFuKTsKICAgICAgICAgaWYgKG1fZ3JhcGguaXNKU0NvbnN0
YW50KG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGUuY2hpbGQxKCkuaW5kZXgoKSk7CiAgICAg
ICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkpIHsKQEAg
LTc5NCwxOSArNzk0LDE5IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KAogICAgICAg
ICAgICAgICAgIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0p
KSB7CiAgICAgICAgICAgICBub2RlLnNldENhbkV4aXQoCi0gICAgICAgICAgICAgICAgIWlzRmlu
YWxPYmplY3RQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQotICAgICAg
ICAgICAgICAgIHx8ICFpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLm1fdHlwZSkpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEZpbmFsT2JqZWN0KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSku
ZmlsdGVyKFByZWRpY3RGaW5hbE9iamVjdCk7CisgICAgICAgICAgICAgICAgIWlzRmluYWxPYmpl
Y3RTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAg
ICAgICB8fCAhaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDIoKSku
bV90eXBlKSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVj
RmluYWxPYmplY3QpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIo
U3BlY0ZpbmFsT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVBcnJheSgKICAgICAgICAgICAgICAgICBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkgewogICAgICAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAgICAgICFpc0FycmF5UHJlZGljdGlvbihmb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICB8fCAhaXNBcnJheVBy
ZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMigpKS5tX3R5cGUpKTsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOworICAgICAgICAgICAg
ICAgICFpc0FycmF5U3BlY3VsYXRpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpCisg
ICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLm1fdHlwZSkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
U3BlY0FycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNw
ZWNBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBub2RlLnNl
dENhbkV4aXQoZmFsc2UpOwpAQCAtODE1LDE2ICs4MTUsMTYgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAKICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoU3BlY1N0cmluZyk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNw
ZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBu
b2RlLnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3RTdHJpbmcpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRl
cihQcmVkaWN0SW50MzIpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RT
dHJpbmcpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjU3RyaW5n
KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjU3RyaW5nKTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOiB7CkBAIC04MzMsODQgKzgzMyw4NCBA
QCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgICAgICBt
X2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg
IGlmICghaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
cHJlZGljdGlvbigpKSB8fCAhbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkpIHsKKyAgICAgICAgaWYgKCFpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSB8fCAhbV9ncmFwaFtub2RlLmNoaWxk
MigpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLmNvZGVPcmlnaW4sIGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkp
IHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcmd1
bWVudHMpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGlj
dEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNB
cmd1bWVudHMpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3Bl
Y0ludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdFN0cmluZykgewotICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7Ci0gICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwotICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0U3RyaW5nKTsKKyAgICAgICAgaWYgKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpID09IFNwZWNTdHJpbmcpIHsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY1N0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hv
dWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQ4QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFNwZWNJbnQ4QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkg
ewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDE2
QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGlj
dEludDMyKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMy
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQxNkFy
cmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQz
Mik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMkFycmF5KTsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzJBcnJheSk7CisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWlu
dDhBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQ
cmVkaWN0VWludDhBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZp
bHRlcihQcmVkaWN0SW50MzIpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQ
cmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
U3BlY1VpbnQ4QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0
ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0lu
dDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCkpIHsKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50OENsYW1w
ZWRBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVk
aWN0SW50MzIpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50
MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY1VpbnQ4
Q2xhbXBlZEFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVy
KFNwZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQz
Mik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0VWludDE2QXJyYXkpOwotICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNVaW50MTZBcnJheSk7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxk
U3BlY3VsYXRlVWludDMyQXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdFVpbnQzMkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDMyQXJyYXkpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGlmIChub2Rl
LnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5k
ZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0
ZUZsb2F0MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihQcmVkaWN0RmxvYXQzMkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFByZWRpY3REb3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoU3BlY0Zsb2F0MzJBcnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgp
KSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Rmxv
YXQ2NEFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RE
b3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Zs
b2F0NjRBcnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihT
cGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjRG91Ymxl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwotICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOwotICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRv
cCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC05MjIsNyArOTIyLDcgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgbV9pc1ZhbGlkID0g
ZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoIW1fZ3Jh
cGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFi
bGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlv
bigpKQorICAgICAgICBpZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRl
SW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
ICAgICAgICAgfHwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcmd1bWVu
dHMoKQogI2VuZGlmCkBAIC05MzQsODggKzkzNCw4OCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSB7Ci0gICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0QXJndW1lbnRzKTsKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Cisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJndW1lbnRzKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDhBcnJheSk7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ludDhBcnJheSk7CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAg
aWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQotICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7
CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY0ludDMy
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQz
KCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQzKCkpLmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUlu
dDE2QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEludDE2QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5m
aWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSku
ZmlsdGVyKFNwZWNJbnQxNkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIo
KSkuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCi0gICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1i
ZXIpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNO
dW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7Ci0gICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzJBcnJheSk7Ci0g
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwor
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ludDMyQXJyYXkp
OworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsK
ICAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQzKCldLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoKSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQ
cmVkaWN0SW50MzIpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmls
dGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY051bWJlcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91
bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50OEFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDhBcnJheSk7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDMoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQotICAgICAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY0ludDMyKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRl
cihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkp
LmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBl
ZEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3RVaW50OENsYW1wZWRBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY1VpbnQ4Q2xhbXBlZEFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBpZiAobV9ncmFw
aFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCi0gICAgICAgICAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVy
KFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSku
ZmlsdGVyKFNwZWNOdW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXko
KSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVp
bnQxNkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihT
cGVjVWludDE2QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0
ZXIoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQzKCldLnNo
b3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQzKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY051bWJlcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0VWludDMyQXJyYXkpOwotICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNVaW50MzJBcnJheSk7Cisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAg
ICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpKQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRp
Y3RJbnQzMik7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIo
U3BlY0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZUZsb2F0MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihQcmVkaWN0RmxvYXQzMkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNGbG9hdDMyQXJyYXkpOworICAgICAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNOdW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3Bl
Y3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEo
KSkuZmlsdGVyKFByZWRpY3RGbG9hdDY0QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Zsb2F0NjRBcnJheSk7CisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY051bWJlcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBBU1NFUlQobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRT
cGVjdWxhdGVBcnJheSgpKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEFycmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJl
ZGljdEludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Fy
cmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsK
ICAgICAgICAgaWYgKG5vZGUub3AoKSA9PSBQdXRCeVZhbCkKICAgICAgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLmNvZGVPcmlnaW4sIGluZGV4SW5CbG9jayk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTAyMywyMyArMTAyMywyMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQg
aW5kCiAgICAgICAgICAgICAKICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KHRydWUpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVk
aWN0QXJyYXkpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3ROdW1iZXIp
OworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNOdW1iZXIpOwogICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhp
dCh0cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFy
cmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsK
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0Ogog
ICAgICAgICBub2RlLnNldENhbkV4aXQoCi0gICAgICAgICAgICAhaXNDZWxsUHJlZGljdGlvbihm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgIHx8ICFpc0NlbGxQcmVk
aWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSk7Ci0gICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RDZWxsKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdENlbGwpOworICAgICAgICAgICAgIWlzQ2VsbFNwZWN1
bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgfHwgIWlz
Q2VsbFNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSk7CisgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNDZWxsKTsKKyAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTA3MCwx
MiArMTA3MCwxMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAg
ICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFuVW5hcnkobm9kZSk7CiAgICAgICAgIGVsc2UgaWYg
KGNoaWxkLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7CiAgICAgICAgICAg
ICBub2RlLnNldENhbkV4aXQoCi0gICAgICAgICAgICAgICAgIWlzRmluYWxPYmplY3RPck90aGVy
UHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwotICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEZpbmFsT2JqZWN0IHwgUHJlZGlj
dE90aGVyKTsKKyAgICAgICAgICAgICAgICAhaXNGaW5hbE9iamVjdE9yT3RoZXJTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY090aGVyKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKSkgewogICAg
ICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAgICAgICFpc0FycmF5T3JPdGhl
clByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSB8IFByZWRpY3RPdGhl
cik7CisgICAgICAgICAgICAgICAgIWlzQXJyYXlPck90aGVyU3BlY3VsYXRpb24oZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEo
KSkuZmlsdGVyKFNwZWNBcnJheSB8IFNwZWNPdGhlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY2hp
bGQuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQogICAgICAgICAgICAgc3BlY3VsYXRlSW50MzJV
bmFyeShub2RlKTsKICAgICAgICAgZWxzZSBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlTnVtYmVy
KCkpCkBAIC0xMTA5LDE3ICsxMTA5LDE3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1
bnNpZ25lZCBpbmQKICAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
OwogICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAg
ICAgICBzcGVjdWxhdGVJbnQzMlVuYXJ5KG5vZGUpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOwogICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGZvck5vZGUobm9kZUluZGV4KTsKICAgICAg
ICAgICAgIAotICAgICAgICBQcmVkaWN0ZWRUeXBlIHR5cGUgPSBzb3VyY2UubV90eXBlOwotICAg
ICAgICBpZiAodHlwZSAmIH4oUHJlZGljdE51bWJlciB8IFByZWRpY3RTdHJpbmcgfCBQcmVkaWN0
Qm9vbGVhbikpIHsKLSAgICAgICAgICAgIHR5cGUgJj0gKFByZWRpY3ROdW1iZXIgfCBQcmVkaWN0
U3RyaW5nIHwgUHJlZGljdEJvb2xlYW4pOwotICAgICAgICAgICAgdHlwZSB8PSBQcmVkaWN0U3Ry
aW5nOworICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gc291cmNlLm1fdHlwZTsKKyAgICAg
ICAgaWYgKHR5cGUgJiB+KFNwZWNOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKSB7
CisgICAgICAgICAgICB0eXBlICY9IChTcGVjTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29s
ZWFuKTsKKyAgICAgICAgICAgIHR5cGUgfD0gU3BlY1N0cmluZzsKICAgICAgICAgfQogICAgICAg
ICBkZXN0aW5hdGlvbi5zZXQodHlwZSk7CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7
CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kCiAgICAgICAgICAgICAKICAgICBjYXNlIFN0ckNhdDoKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KGZhbHNlKTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0U3Ry
aW5nKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjU3RyaW5nKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIE5ld0FycmF5OgpAQCAtMTE0OSw3ICsx
MTQ5LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOwogICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGZvck5vZGUobm9kZUluZGV4KTsKICAgICAg
ICAgICAgIAotICAgICAgICBpZiAoaXNPYmplY3RQcmVkaWN0aW9uKHNvdXJjZS5tX3R5cGUpKSB7
CisgICAgICAgIGlmIChpc09iamVjdFNwZWN1bGF0aW9uKHNvdXJjZS5tX3R5cGUpKSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBzaW1wbGUgY2FzZS4gV2UgYWxyZWFkeSBrbm93IHRoYXQg
dGhlIHNvdXJjZSBpcyBhbgogICAgICAgICAgICAgLy8gb2JqZWN0LCBzbyB0aGVyZSdzIG5vdGhp
bmcgdG8gZG8uIEkgZG9uJ3QgdGhpbmsgdGhpcyBjYXNlIHdpbGwKICAgICAgICAgICAgIC8vIGJl
IGhpdCwgYnV0IHRoZW4gYWdhaW4sIHlvdSBuZXZlciBrbm93LgpAQCAtMTE2MCwyMCArMTE2MCwy
MCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIAog
ICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAoaXNP
dGhlclByZWRpY3Rpb24oY2hpbGQucHJlZGljdGlvbigpKSkgewotICAgICAgICAgICAgc291cmNl
LmZpbHRlcihQcmVkaWN0T3RoZXIpOwotICAgICAgICAgICAgZGVzdGluYXRpb24uc2V0KFByZWRp
Y3RPYmplY3RPdGhlcik7CisgICAgICAgIGlmIChpc090aGVyU3BlY3VsYXRpb24oY2hpbGQucHJl
ZGljdGlvbigpKSkgeworICAgICAgICAgICAgc291cmNlLmZpbHRlcihTcGVjT3RoZXIpOworICAg
ICAgICAgICAgZGVzdGluYXRpb24uc2V0KFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGlzT2JqZWN0UHJlZGljdGlv
bihjaGlsZC5wcmVkaWN0aW9uKCkpKSB7Ci0gICAgICAgICAgICBzb3VyY2UuZmlsdGVyKFByZWRp
Y3RPYmplY3RNYXNrKTsKKyAgICAgICAgaWYgKGlzT2JqZWN0U3BlY3VsYXRpb24oY2hpbGQucHJl
ZGljdGlvbigpKSkgeworICAgICAgICAgICAgc291cmNlLmZpbHRlcihTcGVjT2JqZWN0TWFzayk7
CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0g
ICAgICAgIGRlc3RpbmF0aW9uLm1lcmdlKFByZWRpY3RPYmplY3RPdGhlcik7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1lcmdlKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtMTE4MSwxMCArMTE4MSwxMCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUobm9kZS5j
aGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShu
b2RlSW5kZXgpOwogICAgICAgICAKLSAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc0NlbGxQcmVk
aWN0aW9uKHNvdXJjZS5tX3R5cGUpKTsKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc0NlbGxT
cGVjdWxhdGlvbihzb3VyY2UubV90eXBlKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgc291cmNl
LmZpbHRlcihQcmVkaWN0RnVuY3Rpb24pOwotICAgICAgICBkZXN0aW5hdGlvbi5zZXQoUHJlZGlj
dEZpbmFsT2JqZWN0KTsKKyAgICAgICAgc291cmNlLmZpbHRlcihTcGVjRnVuY3Rpb24pOworICAg
ICAgICBkZXN0aW5hdGlvbi5zZXQoU3BlY0ZpbmFsT2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0xMjEzLDcgKzEyMTMsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05v
dENyZWF0ZWQ6Ci0gICAgICAgIGlmIChpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYgKGlz
RW1wdHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgICAgICBtX3ZhcmlhYmxlcy5vcGVyYW5kKAog
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29k
ZU9yaWdpbikpLm1fdHlwZSkpIHsKICAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7
CkBAIC0xMjMwLDkgKzEyMzAsOSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kCiAgICAgICAgIGlmIChub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAg
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc051bWJlcihub2RlLmNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIG5vZGUuc2V0
Q2FuRXhpdCgKLSAgICAgICAgICAgICFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgICAgICFp
c0VtcHR5U3BlY3VsYXRpb24oCiAgICAgICAgICAgICAgICAgbV92YXJpYWJsZXMub3BlcmFuZCgK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNv
ZGVPcmlnaW4pKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjUyLDcgKzEyNTIsNyBA
QCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIC8vIFdl
IGtub3cgdGhhdCB0aGlzIGV4ZWN1dGFibGUgZG9lcyBub3QgZXNjYXBlIGl0cyBhcmd1bWVudHMs
IHNvIHdlIGNhbiBvcHRpbWl6ZQogICAgICAgICAvLyB0aGUgYXJndW1lbnRzIGEgYml0LiBOb3Rl
IHRoYXQgdGhpcyBlbmRzIHVwIGJlaW5nIGZ1cnRoZXIgb3B0aW1pemVkIGJ5IHRoZQogICAgICAg
ICAvLyBBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLgotICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFr
ZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0xMjYyLDcgKzEyNjIsNyBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIC8vIGEgZ2V0
dGVyLiBXZSBkb24ndCBzcGVjdWxhdGUgYWdhaW5zdCB0aGlzLgogICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS5jb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwogICAgICAgICAvLyBCdXQgd2UgZG8g
c3BlY3VsYXRlIHRoYXQgdGhlIGluZGV4IGlzIGFuIGludGVnZXIuCi0gICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgIC8vIEFuZCB0aGUgcmVzdWx0
IGlzIHVua25vd24uCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTI3NiwxMiArMTI3NiwxMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIAogICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAg
ICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3RGdW5jdGlvbik7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0Z1
bmN0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEdldFNjb3Bl
Q2hhaW46CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7Ci0gICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoUHJlZGljdENlbGxPdGhlcik7CisgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoU3BlY0NlbGxPdGhlcik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgY2FzZSBHZXRTY29wZWRWYXI6CkBAIC0xMzAxLDc0ICsxMzAxLDc0IEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIG1faXNWYWxpZCA9IGZh
bHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzQ2VsbFBy
ZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKQotICAgICAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdENlbGwpOworICAgICAgICBp
ZiAoaXNDZWxsU3BlY3VsYXRpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkp
KQorICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwog
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS5jb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwogICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhp
dCh0cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFy
cmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBHZXRBcmd1bWVudHNMZW5ndGg6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsK
LSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFyZ3VtZW50cyk7
Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FyZ3VtZW50cyk7CisgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIEdldFN0cmluZ0xlbmd0aDoKLSAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc1N0cmluZ1By
ZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7Ci0gICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFp
c1N0cmluZ1NwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOworICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgICAg
ICAKICAgICBjYXNlIEdldEludDhBcnJheUxlbmd0aDoKLSAgICAgICAgbm9kZS5zZXRDYW5FeGl0
KCFpc0ludDhBcnJheVByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsK
LSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDhBcnJheSk7
Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KCFpc0ludDhBcnJheVNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNw
ZWNJbnQ4QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0SW50MTZBcnJheUxlbmd0aDoKLSAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KCFpc0ludDE2QXJyYXlQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQxNkFycmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
SW50MzIpOworICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzSW50MTZBcnJheVNwZWN1bGF0aW9u
KGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQxNkFycmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5k
ZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdldEludDMyQXJy
YXlMZW5ndGg6Ci0gICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNJbnQzMkFycmF5UHJlZGljdGlv
bihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwotICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzJBcnJheSk7Ci0gICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc0lu
dDMyQXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzJBcnJheSk7CisgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHZXRVaW50OEFycmF5TGVuZ3RoOgotICAgICAgICBub2RlLnNldENhbkV4aXQoIWlz
VWludDhBcnJheVByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVpbnQ4QXJyYXkpOwot
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIG5v
ZGUuc2V0Q2FuRXhpdCghaXNVaW50OEFycmF5U3BlY3VsYXRpb24oZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y1VpbnQ4QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0VWludDhDbGFtcGVkQXJyYXlMZW5ndGg6Ci0g
ICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24oZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5KTsKLSAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICBub2RlLnNldENhbkV4aXQoIWlz
VWludDhDbGFtcGVkQXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDhDbGFt
cGVkQXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0VWludDE2QXJyYXlMZW5ndGg6Ci0gICAgICAgIG5v
ZGUuc2V0Q2FuRXhpdCghaXNVaW50MTZBcnJheVByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJl
ZGljdFVpbnQxNkFycmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
SW50MzIpOworICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzVWludDE2QXJyYXlTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDE2QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0VWludDMy
QXJyYXlMZW5ndGg6Ci0gICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNVaW50MzJBcnJheVByZWRp
Y3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVpbnQzMkFycmF5KTsKLSAgICAgICAgZm9yTm9k
ZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICBub2RlLnNldENhbkV4aXQo
IWlzVWludDMyQXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
OworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDMyQXJyYXkp
OworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgR2V0RmxvYXQzMkFycmF5TGVuZ3RoOgotICAgICAgICBub2RlLnNldENh
bkV4aXQoIWlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Rmxv
YXQzMkFycmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIp
OworICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzRmxvYXQzMkFycmF5U3BlY3VsYXRpb24oZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0Zsb2F0MzJBcnJheSk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZXRGbG9hdDY0QXJy
YXlMZW5ndGg6Ci0gICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNGbG9hdDY0QXJyYXlQcmVkaWN0
aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7Ci0gICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RGbG9hdDY0QXJyYXkpOwotICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCgh
aXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
OworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRmxvYXQ2NEFycmF5
KTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKQEAgLTEzNzYs
NyArMTM3Niw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICBub2RlLnNldENhbkV4aXQoCiAgICAgICAgICAgICAhdmFsdWUubV9zdHJ1Y3R1cmUuaXNT
dWJzZXRPZihub2RlLnN0cnVjdHVyZVNldCgpKQotICAgICAgICAgICAgfHwgIWlzQ2VsbFByZWRp
Y3Rpb24odmFsdWUubV90eXBlKSk7CisgICAgICAgICAgICB8fCAhaXNDZWxsU3BlY3VsYXRpb24o
dmFsdWUubV90eXBlKSk7CiAgICAgICAgIHZhbHVlLmZpbHRlcihub2RlLnN0cnVjdHVyZVNldCgp
KTsKICAgICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTM5MSwxMyArMTM5MSwxMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQg
aW5kCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0UHJvcGVydHlTdG9yYWdlOgogICAgICAg
ICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFNwZWNDZWxsKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7IC8vIFRo
ZSByZXN1bHQgaXMgbm90IGEgSlMgdmFsdWUuCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0
SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7
IC8vIExpZXMsIGJ1dCB0aGlzIGlzIChhbG1vc3QpIGFsd2F5cyBmb2xsb3dlZCBieSBHZXRCeVZh
bCwgd2hpY2ggZG9lcyBleGl0LiBTbyBubyBwb2ludCBpbiB0cnlpbmcgdG8gYmUgbW9yZSBwcmVj
aXNlLgotICAgICAgICBQcmVkaWN0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gbV9ncmFwaFtub2Rl
LmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYg
UHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlvbikgeworICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBiYXNlUHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwor
ICAgICAgICBpZiAoIShiYXNlUHJlZGljdGlvbiAmIFNwZWNJbnQzMikgJiYgYmFzZVByZWRpY3Rp
b24pIHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MDUsODIgKzE0MDUsODIgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdFN0cmluZykgewotICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7CisgICAg
ICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSA9PSBTcGVjU3RyaW5n
KSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjU3RyaW5n
KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50OEFycmF5KTsKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQ4QXJyYXkpOwogICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQx
NkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQxNkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFNwZWNJbnQxNkFycmF5KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVh
cigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzJBcnJheSk7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzJBcnJheSk7CiAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoUHJlZGljdFVpbnQ4QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5maWx0ZXIoU3BlY1VpbnQ4QXJyYXkpOwogICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLmNsZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBp
ZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50OENsYW1wZWRBcnJh
eSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0
VWludDhDbGFtcGVkQXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5m
aWx0ZXIoU3BlY1VpbnQ4Q2xhbXBlZEFycmF5KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5jbGVhcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkgewot
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVpbnQxNkFy
cmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdE90aGVyKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNVaW50MTZBcnJh
eSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNPdGhlcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0VWludDMyQXJyYXkpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY1VpbnQzMkFycmF5KTsKICAgICAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRl
RmxvYXQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3RGbG9hdDMyQXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0Zsb2F0MzJBcnJheSk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuY2xlYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7
Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0RmxvYXQ2
NEFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNG
bG9hdDY0QXJyYXkpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihTcGVjQXJyYXkpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsK
ICAgICAgICAgYnJlYWs7IAogICAgIH0KICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgICAgICBu
b2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFNwZWNDZWxsKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgICAgICBu
b2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFNwZWNDZWxsKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIENoZWNr
RnVuY3Rpb246CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsgLy8gTGllcyEgV2UgY2Fu
IGRvIGJldHRlci4KLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGlj
dEZ1bmN0aW9uKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Z1
bmN0aW9uKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0
aGUgZmFjdCB0aGF0IHdlIGtub3cgd2hhdCB0aGUgZnVuY3Rpb24gaXMuCiAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZERpcmVj
dDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwotICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFNwZWNDZWxsKTsKICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUuY29kZU9y
aWdpbiwgaW5kZXhJbkJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE0
OTUsMTcgKzE0OTUsMTcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGlu
ZAogICAgICAgICAgICAgCiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgogICAgICAgICBub2Rl
LnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFByZWRpY3RDZWxsKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y0NlbGwpOwogICAgICAgICAvLyBTYWRseSwgd2UgZG9uJ3QgcHJvcGFnYXRlIHRoZSBmYWN0IHRo
YXQgd2UndmUgZG9uZSBDaGVja0hhc0luc3RhbmNlCiAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7
CiAgICAgICAgIC8vIEFnYWluLCBzYWRseSwgd2UgZG9uJ3QgcHJvcGFnYXRlIHRoZSBmYWN0IHRo
YXQgd2UndmUgZG9uZSBJbnN0YW5jZU9mCi0gICAgICAgIGlmICghKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpICYgflByZWRpY3RDZWxsKSAmJiAhKGZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlICYgflByZWRpY3RDZWxsKSkKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFByZWRpY3RDZWxsKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MygpKS5maWx0ZXIoUHJlZGljdENlbGwpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3RCb29sZWFuKTsKKyAgICAgICAgaWYgKCEobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5w
cmVkaWN0aW9uKCkgJiB+U3BlY0NlbGwpICYmICEoZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUgJiB+U3BlY0NlbGwpKQorICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoU3BlY0NlbGwpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVj
Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0Jvb2xlYW4pOwogICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgUGhpOgpAQCAtMTYzMSw3ICsxNjMx
LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICAg
ICAgLy8gYmVmb3JlIGFuZCBhZnRlciBzZXR0aW5nIGl0LgogICAgICAgICAgICAgaWYgKG5vZGUu
dmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgdW5uZWNlc3NhcmlseSBsb3NlcyBwcmVjaXNpb24uCi0g
ICAgICAgICAgICAgICAgc291cmNlLnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAgICAg
ICBzb3VyY2Uuc2V0KFNwZWNEb3VibGUpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgc291cmNlID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMywy
MiArMjIzLDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzcGVjdWxhdGVJbnQzMlVuYXJ5KE5vZGUm
IG5vZGUsIGJvb2wgZm9yY2VDYW5FeGl0ID0gZmFsc2UpCiAgICAgewogICAgICAgICBBYnN0cmFj
dFZhbHVlJiBjaGlsZFZhbHVlID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgbm9k
ZS5zZXRDYW5FeGl0KGZvcmNlQ2FuRXhpdCB8fCAhaXNJbnQzMlByZWRpY3Rpb24oY2hpbGRWYWx1
ZS5tX3R5cGUpKTsKLSAgICAgICAgY2hpbGRWYWx1ZS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAg
ICAgICAgbm9kZS5zZXRDYW5FeGl0KGZvcmNlQ2FuRXhpdCB8fCAhaXNJbnQzMlNwZWN1bGF0aW9u
KGNoaWxkVmFsdWUubV90eXBlKSk7CisgICAgICAgIGNoaWxkVmFsdWUuZmlsdGVyKFNwZWNJbnQz
Mik7CiAgICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyVW5hcnkoTm9kZSYgbm9k
ZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGNoaWxkVmFsdWUgPSBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpOwotICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzTnVtYmVyUHJlZGljdGlv
bihjaGlsZFZhbHVlLm1fdHlwZSkpOwotICAgICAgICBjaGlsZFZhbHVlLmZpbHRlcihQcmVkaWN0
TnVtYmVyKTsKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc051bWJlclNwZWN1bGF0aW9uKGNo
aWxkVmFsdWUubV90eXBlKSk7CisgICAgICAgIGNoaWxkVmFsdWUuZmlsdGVyKFNwZWNOdW1iZXIp
OwogICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW5VbmFyeShOb2RlJiBub2Rl
KQogICAgIHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgY2hpbGRWYWx1ZSA9IGZvck5vZGUobm9k
ZS5jaGlsZDEoKSk7Ci0gICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNCb29sZWFuUHJlZGljdGlv
bihjaGlsZFZhbHVlLm1fdHlwZSkpOwotICAgICAgICBjaGlsZFZhbHVlLmZpbHRlcihQcmVkaWN0
Qm9vbGVhbik7CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNCb29sZWFuU3BlY3VsYXRpb24o
Y2hpbGRWYWx1ZS5tX3R5cGUpKTsKKyAgICAgICAgY2hpbGRWYWx1ZS5maWx0ZXIoU3BlY0Jvb2xl
YW4pOwogICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZUludDMyQmluYXJ5KE5vZGUmIG5v
ZGUsIGJvb2wgZm9yY2VDYW5FeGl0ID0gZmFsc2UpCkBAIC0yNDcsMTAgKzI0NywxMCBAQCBwcml2
YXRlOgogICAgICAgICBBYnN0cmFjdFZhbHVlJiBjaGlsZFZhbHVlMiA9IGZvck5vZGUobm9kZS5j
aGlsZDIoKSk7CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCgKICAgICAgICAgICAgIGZvcmNlQ2Fu
RXhpdAotICAgICAgICAgICAgfHwgIWlzSW50MzJQcmVkaWN0aW9uKGNoaWxkVmFsdWUxLm1fdHlw
ZSkKLSAgICAgICAgICAgIHx8ICFpc0ludDMyUHJlZGljdGlvbihjaGlsZFZhbHVlMi5tX3R5cGUp
KTsKLSAgICAgICAgY2hpbGRWYWx1ZTEuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgIGNo
aWxkVmFsdWUyLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgfHwgIWlzSW50MzJT
cGVjdWxhdGlvbihjaGlsZFZhbHVlMS5tX3R5cGUpCisgICAgICAgICAgICB8fCAhaXNJbnQzMlNw
ZWN1bGF0aW9uKGNoaWxkVmFsdWUyLm1fdHlwZSkpOworICAgICAgICBjaGlsZFZhbHVlMS5maWx0
ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgY2hpbGRWYWx1ZTIuZmlsdGVyKFNwZWNJbnQzMik7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyQmluYXJ5KE5vZGUmIG5vZGUpCkBA
IC0yNTgsMTAgKzI1OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBBYnN0cmFjdFZhbHVlJiBjaGls
ZFZhbHVlMSA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IGNoaWxkVmFsdWUyID0gZm9yTm9kZShub2RlLmNoaWxkMigpKTsKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KAotICAgICAgICAgICAgIWlzTnVtYmVyUHJlZGljdGlvbihjaGlsZFZhbHVlMS5tX3R5
cGUpCi0gICAgICAgICAgICB8fCAhaXNOdW1iZXJQcmVkaWN0aW9uKGNoaWxkVmFsdWUyLm1fdHlw
ZSkpOwotICAgICAgICBjaGlsZFZhbHVlMS5maWx0ZXIoUHJlZGljdE51bWJlcik7Ci0gICAgICAg
IGNoaWxkVmFsdWUyLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgICFpc051bWJl
clNwZWN1bGF0aW9uKGNoaWxkVmFsdWUxLm1fdHlwZSkKKyAgICAgICAgICAgIHx8ICFpc051bWJl
clNwZWN1bGF0aW9uKGNoaWxkVmFsdWUyLm1fdHlwZSkpOworICAgICAgICBjaGlsZFZhbHVlMS5m
aWx0ZXIoU3BlY051bWJlcik7CisgICAgICAgIGNoaWxkVmFsdWUyLmZpbHRlcihTcGVjTnVtYmVy
KTsKICAgICB9CiAgICAgCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMTk2
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgorI2luY2x1ZGUgIlNw
ZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTIyNSw5ICsyMjUsOSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fc3RydWN0dXJlID0gMDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaWx0ZXIoUHJlZGljdGVk
VHlwZSBvdGhlcikKKyAgICB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlwZSBvdGhlcikKICAgICB7
Ci0gICAgICAgIGlmICghKG90aGVyICYgUHJlZGljdENlbGwpKSB7CisgICAgICAgIGlmICghKG90
aGVyICYgU3BlY0NlbGwpKSB7CiAgICAgICAgICAgICBjbGVhcigpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
aXNDbGVhck9yVG9wKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCEocHJl
ZGljdGlvbkZyb21TdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUpICYgb3RoZXIpKQorICAgICAgICBpZiAo
IShzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUpICYgb3RoZXIpKQogICAgICAg
ICAgICAgbV9zdHJ1Y3R1cmUgPSAwOwogICAgIH0KICAgICAKQEAgLTI3MywxMyArMjczLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGF0KDApOwogICAgIH0KICAgICAKLSAgICBQcmVkaWN0
ZWRUeXBlIHByZWRpY3Rpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0CisgICAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0Q2VsbDsKKyAgICAgICAgICAgIHJl
dHVybiBTcGVjQ2VsbDsKICAgICAgICAgaWYgKGlzQ2xlYXIoKSkKLSAgICAgICAgICAgIHJldHVy
biBQcmVkaWN0Tm9uZTsKLSAgICAgICAgcmV0dXJuIHByZWRpY3Rpb25Gcm9tU3RydWN0dXJlKG1f
c3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiBTcGVjTm9uZTsKKyAgICAgICAgcmV0dXJu
IHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShtX3N0cnVjdHVyZSk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29u
c3QKQEAgLTMwOSwxMyArMzA5LDEzIEBAIHByaXZhdGU6CiAKIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICBBYnN0cmFjdFZhbHVlKCkKLSAgICAgICAgOiBtX3R5cGUoUHJlZGljdE5vbmUpCisg
ICAgICAgIDogbV90eXBlKFNwZWNOb25lKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgdm9pZCBj
bGVhcigpCiAgICAgewotICAgICAgICBtX3R5cGUgPSBQcmVkaWN0Tm9uZTsKKyAgICAgICAgbV90
eXBlID0gU3BlY05vbmU7CiAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1f
dmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMyMyw3
ICszMjMsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAgYm9vbCBpc0NsZWFy
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV90eXBlID09IFByZWRpY3RO
b25lICYmIG1fc3RydWN0dXJlLmlzQ2xlYXIoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX3R5
cGUgPT0gU3BlY05vbmUgJiYgbV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwogICAgICAgICBpZiAocmVz
dWx0KQogICAgICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTMzMSw3ICszMzEsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAg
dm9pZCBtYWtlVG9wKCkKICAgICB7Ci0gICAgICAgIG1fdHlwZSA9IFByZWRpY3RUb3A7CisgICAg
ICAgIG1fdHlwZSA9IFNwZWNUb3A7CiAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKICAg
ICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpA
QCAtMzM5LDcgKzMzOSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICB2b2lk
IGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7Ci0gICAgICAgIGlmIChtX3R5cGUgJiBQcmVkaWN0
Q2VsbCkKKyAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWNDZWxsKQogICAgICAgICAgICAgbV9zdHJ1
Y3R1cmUubWFrZVRvcCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1
Y3R1cmUuaXNDbGVhcigpKTsKQEAgLTM1Myw3ICszNTMsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1
ZSB7CiAgICAgCiAgICAgYm9vbCBpc1RvcCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV90eXBlID09IFByZWRpY3RUb3AgJiYgbV9zdHJ1Y3R1cmUuaXNUb3AoKTsKKyAgICAgICAgcmV0
dXJuIG1fdHlwZSA9PSBTcGVjVG9wICYmIG1fc3RydWN0dXJlLmlzVG9wKCk7CiAgICAgfQogICAg
IAogICAgIGJvb2wgdmFsdWVJc1RvcCgpIGNvbnN0CkBAIC0zODYsNyArMzg2LDcgQEAgc3RydWN0
IEFic3RyYWN0VmFsdWUgewogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fc3RydWN0dXJl
LmNsZWFyKCk7CiAgICAgICAgIAotICAgICAgICBtX3R5cGUgPSBwcmVkaWN0aW9uRnJvbVZhbHVl
KHZhbHVlKTsKKyAgICAgICAgbV90eXBlID0gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpOwog
ICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgIAogICAgICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CkBAIC0zOTcsMTUgKzM5NywxNSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAg
ICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1fc3RydWN0dXJlLmFkZChzdHJ1Y3R1
cmUpOwogICAgICAgICAKLSAgICAgICAgbV90eXBlID0gcHJlZGljdGlvbkZyb21TdHJ1Y3R1cmUo
c3RydWN0dXJlKTsKKyAgICAgICAgbV90eXBlID0gc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0
cnVjdHVyZSk7CiAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIAogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KFByZWRpY3Rl
ZFR5cGUgdHlwZSkKKyAgICB2b2lkIHNldChTcGVjdWxhdGVkVHlwZSB0eXBlKQogICAgIHsKLSAg
ICAgICAgaWYgKHR5cGUgJiBQcmVkaWN0Q2VsbCkKKyAgICAgICAgaWYgKHR5cGUgJiBTcGVjQ2Vs
bCkKICAgICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCBzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICAqdGhpcyA9IG90aGVyOwogICAgICAgICAgICAg
cmVzdWx0ID0gIW90aGVyLmlzQ2xlYXIoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHJlc3VsdCB8PSBtZXJnZVByZWRpY3Rpb24obV90eXBlLCBvdGhlci5tX3R5cGUpOworICAgICAg
ICAgICAgcmVzdWx0IHw9IG1lcmdlU3BlY3VsYXRpb24obV90eXBlLCBvdGhlci5tX3R5cGUpOwog
ICAgICAgICAgICAgcmVzdWx0IHw9IG1fc3RydWN0dXJlLmFkZEFsbChvdGhlci5tX3N0cnVjdHVy
ZSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlKSB7CiAgICAgICAg
ICAgICAgICAgcmVzdWx0IHw9ICEhbV92YWx1ZTsKQEAgLTQ0NywxMSArNDQ3LDExIEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBtZXJnZShQcmVkaWN0ZWRUeXBlIHR5cGUpCisgICAgdm9pZCBtZXJnZShTcGVjdWxh
dGVkVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgbWVyZ2VQcmVkaWN0aW9uKG1fdHlwZSwgdHlw
ZSk7CisgICAgICAgIG1lcmdlU3BlY3VsYXRpb24obV90eXBlLCB0eXBlKTsKICAgICAgICAgCi0g
ICAgICAgIGlmICh0eXBlICYgUHJlZGljdENlbGwpCisgICAgICAgIGlmICh0eXBlICYgU3BlY0Nl
bGwpCiAgICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CiAgICAgICAgIG1fdmFsdWUg
PSBKU1ZhbHVlKCk7CiAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICAKICAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogICAg
IHsKLSAgICAgICAgbV90eXBlICY9IG90aGVyLnByZWRpY3Rpb25Gcm9tU3RydWN0dXJlcygpOwor
ICAgICAgICBtX3R5cGUgJj0gb3RoZXIuc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpOwogICAg
ICAgICBtX3N0cnVjdHVyZS5maWx0ZXIob3RoZXIpOwogICAgICAgICAKICAgICAgICAgLy8gSXQn
cyBwb3NzaWJsZSB0aGF0IHByaW9yIHRvIHRoZSBhYm92ZSB0d28gc3RhdGVtZW50cyB3ZSBoYWQg
KEZvbywgVE9QKSwgd2hlcmUKLSAgICAgICAgLy8gRm9vIGlzIGEgUHJlZGljdGVkVHlwZSB0aGF0
IGlzIGRpc2pvaW50IHdpdGggdGhlIHBhc3NlZCBTdHJ1Y3R1cmVTZXQuIEluIHRoYXQKKyAgICAg
ICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRlZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRoZSBw
YXNzZWQgU3RydWN0dXJlU2V0LiBJbiB0aGF0CiAgICAgICAgIC8vIGNhc2UsIHdlIHdpbGwgbm93
IGhhdmUgKE5vbmUsIFtzb21lU3RydWN0dXJlXSkuIEluIGdlbmVyYWwsIHdlIG5lZWQgdG8gbWFr
ZQotICAgICAgICAvLyBzdXJlIHRoYXQgbmV3IGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0aGUg
UHJlZGljdGVkVHlwZSBuZWVkcyB0byBiZSBmZWQgYmFjaworICAgICAgICAvLyBzdXJlIHRoYXQg
bmV3IGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0aGUgU3BlY3VsYXRlZFR5cGUgbmVlZHMgdG8g
YmUgZmVkIGJhY2sKICAgICAgICAgLy8gaW50byB0aGUgaW5mb3JtYXRpb24gZ2xlYW5lZCBmcm9t
IHRoZSBTdHJ1Y3R1cmVTZXQuCiAgICAgICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOwog
ICAgICAgICAKQEAgLTQ3Niw5ICs0NzYsOSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaWx0ZXIoUHJl
ZGljdGVkVHlwZSB0eXBlKQorICAgIHZvaWQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICBpZiAodHlwZSA9PSBQcmVkaWN0VG9wKQorICAgICAgICBpZiAodHlwZSA9
PSBTcGVjVG9wKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3R5cGUgJj0gdHlwZTsK
ICAgICAgICAgCkBAIC00OTksMTEgKzQ5OSwxMSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAg
ICAgICAgIGlmIChpc1RvcCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAot
ICAgICAgICBpZiAobWVyZ2VQcmVkaWN0aW9ucyhtX3R5cGUsIHByZWRpY3Rpb25Gcm9tVmFsdWUo
dmFsdWUpKSAhPSBtX3R5cGUpCisgICAgICAgIGlmIChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUs
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSkgIT0gbV90eXBlKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKG1fdHlwZSAmIFByZWRpY3RFbXB0eSk7CisgICAgICAgICAgICBBU1NF
UlQobV90eXBlICYgU3BlY0VtcHR5KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtNTExLDcgKzUxMSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCEhdmFsdWUg
JiYgdmFsdWUuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBQcmVkaWN0
Q2VsbCk7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3BlY0NlbGwpOwogICAgICAgICAg
ICAgcmV0dXJuIG1fc3RydWN0dXJlLmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01MjYsMTEgKzUyNiwxMSBAQCBzdHJ1Y3QgQWJz
dHJhY3RWYWx1ZSB7CiAgICAgICAgIGlmICghIW1fdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
bV92YWx1ZSA9PSB2YWx1ZTsKICAgICAgICAgCi0gICAgICAgIGlmIChtZXJnZVByZWRpY3Rpb25z
KG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkKKyAgICAgICAg
aWYgKG1lcmdlU3BlY3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUp
KSAhPSBtX3R5cGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlICYgUHJl
ZGljdEVtcHR5KTsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01MzgsNyArNTM4
LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIAogICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAgICAg
ICAgICAgQVNTRVJUKG1fdHlwZSAmIFByZWRpY3RDZWxsKTsKKyAgICAgICAgICAgIEFTU0VSVCht
X3R5cGUgJiBTcGVjQ2VsbCk7CiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuY29udGFp
bnModmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTU0NywxNCArNTQ3LDE0IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCEobV90eXBlICYg
UHJlZGljdENlbGwpKQorICAgICAgICBpZiAoIShtX3R5cGUgJiBTcGVjQ2VsbCkpCiAgICAgICAg
ICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuaXNDbGVhcigpKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChpc0NsZWFyKCkpCiAgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUpOwogICAgICAgICAKICAg
ICAgICAgaWYgKCEhbV92YWx1ZSkKLSAgICAgICAgICAgIEFTU0VSVChtZXJnZVByZWRpY3Rpb25z
KG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gbV90eXBlKTsKKyAgICAg
ICAgICAgIEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1bGF0aW9uRnJvbVZh
bHVlKG1fdmFsdWUpKSA9PSBtX3R5cGUpOwogICAgICAgICAKICAgICAgICAgLy8gTm90ZSB0aGF0
IGl0J3MgcG9zc2libGUgZm9yIGEgcHJlZGljdGlvbiBsaWtlIChGaW5hbCwgW10pLiBUaGlzIHJl
YWxseSBtZWFucyB0aGF0CiAgICAgICAgIC8vIHRoZSB2YWx1ZSBpcyBib3R0b20gYW5kIHRoYXQg
YW55IGNvZGUgdGhhdCB1c2VzIHRoZSB2YWx1ZSBpcyB1bnJlYWNoYWJsZS4gQnV0CkBAIC01NjQs
NyArNTY0LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIHZvaWQgZHVtcChG
SUxFKiBvdXQpIGNvbnN0CiAgICAgewotICAgICAgICBmcHJpbnRmKG91dCwgIiglcywgIiwgcHJl
ZGljdGlvblRvU3RyaW5nKG1fdHlwZSkpOworICAgICAgICBmcHJpbnRmKG91dCwgIiglcywgIiwg
c3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpKTsKICAgICAgICAgbV9zdHJ1Y3R1cmUuZHVtcChv
dXQpOwogICAgICAgICBpZiAoISFtX3ZhbHVlKQogICAgICAgICAgICAgZnByaW50ZihvdXQsICIs
ICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlvbigpKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCBzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZSB7CiAgICAgfQogCiAgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBtX3N0
cnVjdHVyZTsKLSAgICBQcmVkaWN0ZWRUeXBlIG1fdHlwZTsKKyAgICBTcGVjdWxhdGVkVHlwZSBt
X3R5cGU7CiAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmgJKHJldmlzaW9uIDExOTYwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxNCArMjgsMTQgQEAKIAogI2luY2x1ZGUgIkRGR0RvdWJsZUZvcm1h
dFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCi0jaW5jbHVkZSAi
UHJlZGljdGVkVHlwZS5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgQXJndW1lbnRQb3NpdGlvbiB7CiBwdWJs
aWM6CiAgICAgQXJndW1lbnRQb3NpdGlvbigpCi0gICAgICAgIDogbV9wcmVkaWN0aW9uKFByZWRp
Y3ROb25lKQorICAgICAgICA6IG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICAgICAgLCBtX2Rv
dWJsZUZvcm1hdFN0YXRlKEVtcHR5RG91YmxlRm9ybWF0U3RhdGUpCiAgICAgewogICAgIH0KQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFs
c2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlcy5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obV9wcmVkaWN0
aW9uLCBtX3ZhcmlhYmxlc1tpXS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlU3BlY3VsYXRpb24obV9wcmVkaWN0aW9uLCBtX3ZhcmlhYmxl
c1tpXS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlRG91YmxlRm9ybWF0U3RhdGUobV9kb3VibGVGb3JtYXRTdGF0ZSwgbV92YXJpYWJsZXNb
aV0tPmRvdWJsZUZvcm1hdFN0YXRlKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghY2hhbmdl
ZCkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAg
ICB9CiAgICAgCi0gICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9wcmVkaWN0aW9uOyB9CisgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlZGljdGlvbjsgfQogICAgIERvdWJsZUZvcm1hdFN0YXRlIGRvdWJsZUZvcm1h
dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVGb3JtYXRTdGF0ZTsgfQogICAgIGJvb2wg
c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgY29uc3QKICAgICB7CkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIFByZWRpY3RlZFR5cGUgbV9wcmVkaWN0
aW9uOworICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbjsKICAgICBEb3VibGVGb3JtYXRT
dGF0ZSBtX2RvdWJsZUZvcm1hdFN0YXRlOwogICAgIAogICAgIFZlY3RvcjxWYXJpYWJsZUFjY2Vz
c0RhdGEqLCAyPiBtX3ZhcmlhYmxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDcgKzI4NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAo
IWlzQWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRp
Y3Rpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FjdGlvbmFibGVBcnJheVNwZWN1
bGF0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50
ZWdlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlQmFkQXJndW1lbnRzVXNl
cyhub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDc3LDcgKzQ3Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFtX2dyYXBoW25vZGUuY2hp
bGQyKCldLnByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FjdGlvbmFibGVB
cnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpCisgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNBY3Rpb25hYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHx8
ICFtX2dyYXBoW25vZGUuY2hpbGQyKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsOSBAQCBwcml2YXRlOgogICAgIC8v
IEhhbmRsZSBzZXR0aW5nIHRoZSByZXN1bHQgb2YgYW4gaW50cmluc2ljLgogICAgIHZvaWQgc2V0
SW50cmluc2ljUmVzdWx0KGJvb2wgdXNlc1Jlc3VsdCwgaW50IHJlc3VsdE9wZXJhbmQsIE5vZGVJ
bmRleCk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlm
IGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWMoYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50
cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpYyhi
b29sIHVzZXNSZXN1bHQsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCi0gICAgICAgIGludCBkZXN0aW5h
dGlvbk9wZXJhbmQsIFByZWRpY3RlZFR5cGUsIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLAorICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVk
VHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCiAgICAgICAg
IGNvbnN0IEdldEJ5SWRTdGF0dXMmKTsKICAgICAvLyBQcmVwYXJlIHRvIHBhcnNlIGEgYmxvY2su
CiAgICAgdm9pZCBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTxQaGlTdGFja1R5cGUgc3RhY2tUeXBlPgogICAgIHZvaWQgcHJv
Y2Vzc1BoaVN0YWNrKCk7CiAgICAgCi0gICAgdm9pZCBmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rp
b25zKCk7CisgICAgdm9pZCBmaXhWYXJpYWJsZUFjY2Vzc1NwZWN1bGF0aW9ucygpOwogICAgIC8v
IEFkZCBzcGlsbCBsb2NhdGlvbnMgdG8gbm9kZXMuCiAgICAgdm9pZCBhbGxvY2F0ZVZpcnR1YWxS
ZWdpc3RlcnMoKTsKICAgICAKQEAgLTE2MiwxNyArMTYyLDE3IEBAIHByaXZhdGU6CiAgICAgICAg
IHNldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCksIHZhbHVl
LCBzZXRNb2RlKTsKICAgICB9CiAgICAgCi0gICAgTm9kZUluZGV4IGluamVjdExhenlPcGVyYW5k
UHJlZGljdGlvbihOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIE5vZGVJbmRleCBpbmplY3RMYXp5
T3BlcmFuZFNwZWN1bGF0aW9uKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBO
b2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAgICBBU1NFUlQobm9kZS5vcCgp
ID09IEdldExvY2FsKTsKICAgICAgICAgQVNTRVJUKG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4ID09IG1fY3VycmVudEluZGV4KTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
ID0gCisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSAKICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fbGF6eU9wZXJhbmRzLnByZWRpY3Rpb24oCiAgICAgICAgICAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkobV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwo
KSkpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgZGF0YUxvZygiTGF6
eSBvcGVyYW5kIFtAJXUsIGJjIyV1LCByJWRdIHByZWRpY3Rpb246ICVzXG4iLAotICAgICAgICAg
ICAgICAgIG5vZGVJbmRleCwgbV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwoKSwgcHJlZGljdGlv
blRvU3RyaW5nKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICBub2RlSW5kZXgsIG1fY3Vy
cmVudEluZGV4LCBub2RlLmxvY2FsKCksIHNwZWN1bGF0aW9uVG9TdHJpbmcocHJlZGljdGlvbikp
OwogI2VuZGlmCiAgICAgICAgIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJl
ZGljdGlvbik7CiAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CkBAIC0xOTUsNyArMTk1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoZmx1c2hDaGlsZC5vcCgpID09IFBoaSkgewog
ICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0
YSA9IGZsdXNoQ2hpbGQudmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VJc0NhcHR1cmVkKGlzQ2FwdHVyZWQpOwotICAgICAg
ICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRk
VG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVJbmRleCkp
OworICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFNwZWN1
bGF0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBu
b2RlSW5kZXgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICB9CkBAIC0yMTYsNyArMjE2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBHZXRMb2NhbCkK
ICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgo
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5qZWN0TGF6eU9w
ZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhub2RlUHRyLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkpOworICAgICAgICAgICAgICAgIHJldHVybiBp
bmplY3RMYXp5T3BlcmFuZFNwZWN1bGF0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhu
b2RlUHRyLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBHZXRMb2Nh
bCkKQEAgLTIzMyw3ICsyMzMsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTm9kZUlu
ZGV4IHBoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSk7CiAg
ICAgICAgIG1fbG9jYWxQaGlTdGFjay5hcHBlbmQoUGhpU3RhY2tFbnRyeShtX2N1cnJlbnRCbG9j
aywgcGhpLCBvcGVyYW5kKSk7Ci0gICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5k
UHJlZGljdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRh
KSwgcGhpKSk7CisgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5kU3BlY3VsYXRp
b24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHBoaSkp
OwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQp
ID0gbm9kZUluZGV4OwogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5zZXRMb2NhbEZpcnN0VGltZShvcGVyYW5kLCBub2RlSW5kZXgpOwpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGZsdXNoQ2hpbGQub3AoKSA9
PSBQaGkpIHsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZUFjY2Vzc0RhdGEgPSBmbHVzaENoaWxkLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlSXNDYXB0dXJlZChpc0NhcHR1cmVk
KTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQcmVk
aWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBu
b2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9w
ZXJhbmRTcGVjdWxhdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nl
c3NEYXRhKSwgbm9kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpID0gbm9kZUluZGV4OwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAgICAgICAgIH0KQEAgLTI5
Myw3ICsyOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIFdlJ3JlIGdldHRpbmcg
YW4gYXJndW1lbnQgaW4gdGhlIGZpcnN0IGJhc2ljIGJsb2NrOyBsaW5rCiAgICAgICAgICAgICAg
ICAgLy8gdGhlIEdldExvY2FsIHRvIHRoZSBTZXRBcmd1bWVudC4KICAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZVB0ci0+bG9jYWwoKSA9PSBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9w
ZXJhbmQpKTsKLSAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFBy
ZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpKSwgbm9kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5q
ZWN0TGF6eU9wZXJhbmRTcGVjdWxhdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8obm9k
ZVB0ci0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpLCBub2RlSW5kZXgpKTsKICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSA9IG5v
ZGVJbmRleDsKICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAgICAg
fQpAQCAtMzAxLDcgKzMwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoaXNDYXB0dXJl
ZCkgewogICAgICAgICAgICAgICAgIGlmIChub2RlUHRyLT5vcCgpID09IEdldExvY2FsKQogICAg
ICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9H
cmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSwgbm9k
ZUluZGV4KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluamVjdExhenlPcGVyYW5kU3BlY3Vs
YXRpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNjZXNz
RGF0YSgpKSwgbm9kZUluZGV4KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChub2RlUHRyLT5vcCgpID09IEdldExvY2FsKQpAQCAtMzE1LDcgKzMxNSw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgTm9kZUluZGV4IHBoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcElu
Zm8odmFyaWFibGVBY2Nlc3NEYXRhKSk7CiAgICAgICAgIG1fYXJndW1lbnRQaGlTdGFjay5hcHBl
bmQoUGhpU3RhY2tFbnRyeShtX2N1cnJlbnRCbG9jaywgcGhpLCBhcmd1bWVudCkpOwotICAgICAg
ICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRM
b2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHBoaSkpOworICAgICAgICBub2RlSW5k
ZXggPSBpbmplY3RMYXp5T3BlcmFuZFNwZWN1bGF0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9w
SW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBwaGkpKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2st
PnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkgPSBub2RlSW5kZXg7CiAgICAgICAg
IAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGFyZ3VtZW50LCBub2RlSW5kZXgpOwpAQCAtNzI4LDEwICs3MjgsMTAgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIEluc3RydWN0aW9uKiBwdXRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJ
bnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7CiAKLSAgICAgICAgUHJlZGljdGVk
VHlwZSBwcmVkaWN0aW9uID0gUHJlZGljdE5vbmU7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBTcGVjTm9uZTsKICAgICAgICAgaWYgKGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChwdXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2NhbGxfcHV0X3Jlc3VsdCkgewogICAg
ICAgICAgICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXggPSBtX2N1cnJlbnRJbmRleCArIE9QQ09E
RV9MRU5HVEgob3BfY2FsbCk7Ci0gICAgICAgICAgICBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlv
bigpOworICAgICAgICAgICAgcHJlZGljdGlvbiA9IGdldFNwZWN1bGF0aW9uKCk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSk7CkBAIC03NTAsMjMgKzc1MCwyMyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gY2FsbDsKICAgICB9CiAgICAgCi0gICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0
aW9uV2l0aG91dE9TUkV4aXQoTm9kZUluZGV4IG5vZGVJbmRleCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKKyAgICBTcGVjdWxhdGVkVHlwZSBnZXRTcGVjdWxhdGlvbldpdGhvdXRPU1JFeGl0KE5v
ZGVJbmRleCBub2RlSW5kZXgsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgewogICAgICAg
ICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQ
cm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJ
bmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nKCJE
eW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29k
ZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOworICAgICAgICBkYXRhTG9n
KCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRl
Y29kZUluZGV4LCBzcGVjdWxhdGlvblRvU3RyaW5nKHByZWRpY3Rpb24pKTsKICNlbmRpZgogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHByZWRpY3Rpb247CiAgICAgfQogCi0gICAgUHJlZGljdGVk
VHlwZSBnZXRQcmVkaWN0aW9uKE5vZGVJbmRleCBub2RlSW5kZXgsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb24oTm9kZUluZGV4IG5vZGVJ
bmRleCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKICAgICB7Ci0gICAgICAgIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChub2RlSW5kZXgsIGJ5
dGVjb2RlSW5kZXgpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0U3Bl
Y3VsYXRpb25XaXRob3V0T1NSRXhpdChub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgpOwogICAgICAg
ICAKLSAgICAgICAgaWYgKHByZWRpY3Rpb24gPT0gUHJlZGljdE5vbmUpIHsKKyAgICAgICAgaWYg
KHByZWRpY3Rpb24gPT0gU3BlY05vbmUpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gaW5m
b3JtYXRpb24gYWJvdXQgd2hhdCB2YWx1ZXMgdGhpcyBub2RlIGdlbmVyYXRlcy4gR2l2ZSB1cAog
ICAgICAgICAgICAgLy8gb24gZXhlY3V0aW5nIHRoaXMgY29kZSwgc2luY2Ugd2UncmUgbGlrZWx5
IHRvIGRvIG1vcmUgZGFtYWdlIHRoYW4gZ29vZC4KICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9y
Y2VPU1JFeGl0KTsKQEAgLTc3NSwxNCArNzc1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBwcmVkaWN0aW9uOwogICAgIH0KICAgICAKLSAgICBQcmVkaWN0ZWRUeXBlIGdldFByZWRpY3Rp
b25XaXRob3V0T1NSRXhpdCgpCisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb25XaXRo
b3V0T1NSRXhpdCgpCiAgICAgewotICAgICAgICByZXR1cm4gZ2V0UHJlZGljdGlvbldpdGhvdXRP
U1JFeGl0KG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRQcm9maWxpbmdJbmRleCk7CisgICAgICAg
IHJldHVybiBnZXRTcGVjdWxhdGlvbldpdGhvdXRPU1JFeGl0KG1fZ3JhcGguc2l6ZSgpLCBtX2N1
cnJlbnRQcm9maWxpbmdJbmRleCk7CiAgICAgfQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgZ2V0
UHJlZGljdGlvbigpCisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb24oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGdldFByZWRpY3Rpb24obV9ncmFwaC5zaXplKCksIG1fY3VycmVudFBy
b2ZpbGluZ0luZGV4KTsKKyAgICAgICAgcmV0dXJuIGdldFNwZWN1bGF0aW9uKG1fZ3JhcGguc2l6
ZSgpLCBtX2N1cnJlbnRQcm9maWxpbmdJbmRleCk7CiAgICAgfQogCiAgICAgTm9kZUluZGV4IG1h
a2VTYWZlKE5vZGVJbmRleCBub2RlSW5kZXgpCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBwcml2YXRl
OgogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fcmV0dXJuVmFsdWU7CiAgICAg
ICAgIAotICAgICAgICAvLyBQcmVkaWN0aW9ucyBhYm91dCB2YXJpYWJsZSB0eXBlcyBjb2xsZWN0
ZWQgZnJvbSB0aGUgcHJvZmlsZWQgY29kZSBibG9jaywKKyAgICAgICAgLy8gU3BlY3VsYXRpb25z
IGFib3V0IHZhcmlhYmxlIHR5cGVzIGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2RlIGJs
b2NrLAogICAgICAgICAvLyB3aGljaCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMgdGhh
dCBwYXN0IERGRyBjb21waWxhdGlucyBvZiB0aGlzCiAgICAgICAgIC8vIGNvZGUgYmxvY2sgaGFk
IGdhdGhlcmVkLgogICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciBtX2xhenlP
cGVyYW5kczsKQEAgLTExNTAsMTIgKzExNTAsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbChJbnRlcnByZQogICAgICAgICBpbnQgcmVzdWx0T3BlcmFuZCA9IDA7IC8vIG1ha2Ug
Y29tcGlsZXIgaGFwcHkKICAgICAgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1fY3VycmVudElu
ZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHB1dElu
c3RydWN0aW9uID0gY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsK
LSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gUHJlZGljdE5vbmU7CisgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBTcGVjTm9uZTsKICAgICAgICAgaWYgKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChwdXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2NhbGxf
cHV0X3Jlc3VsdCkgewogICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCA9IHB1dEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIHVzZXNSZXN1bHQgPSB0cnVlOwogICAgICAgICAg
ICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXggPSBuZXh0T2Zmc2V0OwotICAgICAgICAgICAgcHJl
ZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBnZXRT
cGVjdWxhdGlvbigpOwogICAgICAgICAgICAgbmV4dE9mZnNldCArPSBPUENPREVfTEVOR1RIKG9w
X2NhbGxfcHV0X3Jlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgSlNGdW5jdGlvbiogZXhwZWN0
ZWRGdW5jdGlvbjsKQEAgLTE0MjMsNyArMTQyMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZU1pbk1heChib29sIHUKIAogLy8gRklYTUU6IFdlIGRlYWQtY29kZS1lbGltaW5hdGUgdW51
c2VkIE1hdGggaW50cmluc2ljcywgYnV0IHRoYXQncyBpbnZhbGlkIGJlY2F1c2UKIC8vIHRoZXkg
bmVlZCB0byBwZXJmb3JtIHRoZSBUb051bWJlciBjb252ZXJzaW9uLCB3aGljaCBjYW4gaGF2ZSBz
aWRlLWVmZmVjdHMuCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMoYm9vbCB1
c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbikKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhib29s
IHVzZXNSZXN1bHQsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogICAgIGNhc2Ug
QWJzSW50cmluc2ljOiB7CkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWMoYm9vCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgaW50IHRoaXNPcGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgw
KTsKLSAgICAgICAgaWYgKCEobV9ncmFwaFtnZXQodGhpc09wZXJhbmQpXS5wcmVkaWN0aW9uKCkg
JiBQcmVkaWN0U3RyaW5nKSkKKyAgICAgICAgaWYgKCEobV9ncmFwaFtnZXQodGhpc09wZXJhbmQp
XS5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCiAgICAgICAgIGludCBpbmRleE9wZXJhbmQgPSByZWdpc3Rlck9mZnNldCArIGFy
Z3VtZW50VG9PcGVyYW5kKDEpOwpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljKGJvbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIGludCB0aGlzT3BlcmFuZCA9IHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJh
bmQoMCk7Ci0gICAgICAgIGlmICghKG1fZ3JhcGhbZ2V0KHRoaXNPcGVyYW5kKV0ucHJlZGljdGlv
bigpICYgUHJlZGljdFN0cmluZykpCisgICAgICAgIGlmICghKG1fZ3JhcGhbZ2V0KHRoaXNPcGVy
YW5kKV0ucHJlZGljdGlvbigpICYgU3BlY1N0cmluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgaW50IGluZGV4T3BlcmFuZCA9IHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1l
bnRUb09wZXJhbmQoMSk7CkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWMoYm9vCiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdl
dEJ5SWQoCi0gICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBpbnQg
ZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlSW5kZXgg
YmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICBjb25zdCBHZXRCeUlkU3RhdHVz
JiBnZXRCeUlkU3RhdHVzKQogewogICAgIGlmIChnZXRCeUlkU3RhdHVzLmlzU2ltcGxlRGlyZWN0
KCkKQEAgLTE1NTMsNyArMTU1Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBH
ZXRCeU9mZnNldCBkb2VzIG5vdCBrbm93IHRvIHRlcm1pbmF0ZSBzcGVjdWxhdGl2ZQogICAgICAg
ICAvLyBleGVjdXRpb24gaWYgaXQgZG9lc24ndCBoYXZlIGEgcHJlZGljdGlvbiwgc28gd2UgZG8g
aXQgbWFudWFsbHkuCi0gICAgICAgIGlmIChwcmVkaWN0aW9uID09IFByZWRpY3ROb25lKQorICAg
ICAgICBpZiAocHJlZGljdGlvbiA9PSBTcGVjTm9uZSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Rm9yY2VPU1JFeGl0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMu
c3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CkBAIC0yMDE4LDcgKzIwMTgsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIC8vID09PSBQcm9wZXJ0eSBh
Y2Nlc3Mgb3BlcmF0aW9ucyA9PT0KIAogICAgICAgICBjYXNlIG9wX2dldF9ieV92YWw6IHsKLSAg
ICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRTcGVjdWxhdGlvbigpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eSA9
IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKQEAgLTIwNDMsNyArMjA0Myw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
IG1fY3VycmVudFByb2ZpbGluZ0luZGV4ICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNr
KTsKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBnZXRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJbnN0
cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwor
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFNwZWN1bGF0aW9uKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOwogICAgICAgICAg
ICAgCkBAIC0yMDc5LDcgKzIwNzksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2dldF9zY29wZWRfdmFyOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24gPSBnZXRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uID0gZ2V0U3BlY3VsYXRpb24oKTsKICAgICAgICAgICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGRlcHRoID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKQEAgLTIwOTcsNyArMjA5Nyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3B1dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDog
ewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbldp
dGhvdXRPU1JFeGl0KCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0g
Z2V0U3BlY3VsYXRpb25XaXRob3V0T1NSRXhpdCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9w
LT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAg
LTIyMTQsNyArMjIxNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6IHsKLSAgICAg
ICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRTcGVjdWxhdGlvbigpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9HcmFw
aChHZXRHbG9iYWxWYXIsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwg
T3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOwpAQCAtMjQ1NSwxMCArMjQ1NSwxMCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIEluc3RydWN0aW9uKiBwdXRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvbiAr
IE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gUHJlZGljdE5vbmU7CisgICAgICAgICAgICBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gU3BlY05vbmU7CiAgICAgICAgICAgICBpZiAoaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKHB1dEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3BfY2Fs
bF9wdXRfcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXgg
PSBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKTsKLSAgICAg
ICAgICAgICAgICBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgICAg
IHByZWRpY3Rpb24gPSBnZXRTcGVjdWxhdGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCk7CkBA
IC0yNDkzLDcgKzI0OTMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbmVxX3B0cik7CiAKICAgICAgICAgY2Fz
ZSBvcF9yZXNvbHZlOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBn
ZXRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0g
Z2V0U3BlY3VsYXRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmRdOwogCkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX3Jlc29sdmVfYmFzZTogewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
ID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IGdldFNwZWN1bGF0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVk
IGlkZW50aWZpZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKIApAQCAtMjUxNSw3ICsyNTE1LDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbDogewotICAgICAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFNwZWN1bGF0aW9uKCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIE5vZGVJbmRleCByZXNvbHZlID0gYWRkVG9HcmFwaChSZXNvbHZlR2xvYmFsLCBP
cEluZm8obV9ncmFwaC5tX3Jlc29sdmVHbG9iYWxEYXRhLnNpemUoKSksIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CiAgICAgICAgICAgICBtX2dyYXBoLm1fcmVzb2x2ZUdsb2JhbERhdGEuYXBwZW5kKFJl
c29sdmVHbG9iYWxEYXRhKCkpOwpAQCAtMjU4NSw3ICsyNTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3Vt
ZW50cyA9IHRydWU7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgICAgICBH
ZXRNeUFyZ3VtZW50QnlWYWxTYWZlLCBPcEluZm8oMCksIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkp
LAorICAgICAgICAgICAgICAgICAgICBHZXRNeUFyZ3VtZW50QnlWYWxTYWZlLCBPcEluZm8oMCks
IE9wSW5mbyhnZXRTcGVjdWxhdGlvbigpKSwKICAgICAgICAgICAgICAgICAgICAgZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKICAgICAgICAgfQpAQCAtMjc2OSw3ICsyNzY5LDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJvY2Vzc1BoaVN0YWNrKCkKICAgICB9CiB9CiAKLXZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmZpeFZhcmlhYmxlQWNjZXNzUHJlZGljdGlvbnMoKQordm9pZCBCeXRl
Q29kZVBhcnNlcjo6Zml4VmFyaWFibGVBY2Nlc3NTcGVjdWxhdGlvbnMoKQogewogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZGF0YSA9ICZtX2dyYXBoLm1fdmFy
aWFibGVBY2Nlc3NEYXRhW2ldOwpAQCAtMzA5NSw3ICszMDk1LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5j
bGVhcigpOwogICAgIH0KICAgICAKLSAgICBmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rpb25zKCk7
CisgICAgZml4VmFyaWFibGVBY2Nlc3NTcGVjdWxhdGlvbnMoKTsKICAgICAKICAgICBtX2dyYXBo
Lm1fcHJlc2VydmVkVmFycyA9IG1fcHJlc2VydmVkVmFyczsKICAgICBtX2dyYXBoLm1fbG9jYWxW
YXJzID0gbV9udW1Mb2NhbHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzOSw4ICs1MzksOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOwogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZTogewotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rp
b24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgICAg
ICBib29sIG5vZGVIYXNJbnRlZ2VySW5kZXhQcmVkaWN0aW9uID0gISghKGJhc2VQcmVkaWN0aW9u
ICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlvbik7CisgICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRp
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICBib29sIG5vZGVIYXNJbnRlZ2VySW5kZXhQcmVkaWN0
aW9uID0gISghKGJhc2VQcmVkaWN0aW9uICYgU3BlY0ludDMyKSAmJiBiYXNlUHJlZGljdGlvbik7
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxICYmIGhhc0ludGVn
ZXJJbmRleFByZWRpY3Rpb24gPT0gbm9kZUhhc0ludGVnZXJJbmRleFByZWRpY3Rpb24pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTU1Nyw3ICs1NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgICAgICBp
ZiAoaXNGaXhlZEluZGV4ZWRTdG9yYWdlT2JqZWN0UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnByZWRpY3Rpb24oKSkgJiYgbV9ncmFwaC5ieVZhbElzUHVyZShub2RlKSkKKyAgICAg
ICAgICAgICAgICBpZiAoaXNGaXhlZEluZGV4ZWRTdG9yYWdlT2JqZWN0U3BlY3VsYXRpb24obV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpICYmIG1fZ3JhcGguYnlWYWxJc1B1cmUo
bm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVy
biBOb05vZGU7CiAKQEAgLTkxMSwxMiArOTExLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+
c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gdmFyaWFibGVB
Y2Nlc3NEYXRhLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmFyZ3VtZW50
QXdhcmVQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0ludDMyU3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0Jvb2xl
YW5QcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNCb29s
ZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTAyMCw4ICsx
MDIwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKLSAgICAgICAgICAgIFBy
ZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRp
Y3Rpb24oKTsKLSAgICAgICAgICAgIGJvb2wgbm9kZUhhc0ludGVnZXJJbmRleFByZWRpY3Rpb24g
PSAhKCEoYmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKTsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gbV9ncmFwaFtub2Rl
LmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBib29sIG5vZGVIYXNJbnRlZ2Vy
SW5kZXhQcmVkaWN0aW9uID0gISghKGJhc2VQcmVkaWN0aW9uICYgU3BlY0ludDMyKSAmJiBiYXNl
UHJlZGljdGlvbik7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChnZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlTG9hZEVsaW1pbmF0aW9uKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSwgbm9kZUhhc0lu
dGVnZXJJbmRleFByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNO
b3RDcmVhdGVkOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24o
CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5j
b2RlT3JpZ2luKSkubV90eXBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMyArNzQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBHZXRCeUlkOiB7Ci0gICAgICAgICAg
ICBpZiAoIWlzSW50MzJQcmVkaWN0aW9uKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rp
b24oKSkpCisgICAgICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihtX2dyYXBoW21fY29t
cGlsZUluZGV4XS5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgaWYgKGNvZGVCbG9jaygpLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigp
KSAhPSBnbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgYm9vbCBpc0Fy
Z3VtZW50cyA9IGlzQXJndW1lbnRzUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBib29sIGlzU3RyaW5nID0gaXNTdHJpbmdQcmVkaWN0
aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJv
b2wgaXNBcnJheSA9IGlzQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBib29sIGlzQXJndW1lbnRzID0gaXNBcmd1bWVudHNT
cGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBib29sIGlzU3RyaW5nID0gaXNTdHJpbmdTcGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBib29sIGlzSW50OEFycmF5ID0gbV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKTsKICAgICAgICAg
ICAgIGJvb2wgaXNJbnQxNkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVj
dWxhdGVJbnQxNkFycmF5KCk7CiAgICAgICAgICAgICBib29sIGlzSW50MzJBcnJheSA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpOwpAQCAtMTI5LDEw
ICsxMjksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewotICAgICAgICAgICAgUHJlZGlj
dGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlv
bigpOwotICAgICAgICAgICAgaWYgKCghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAm
JiBiYXNlUHJlZGljdGlvbikKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGJhc2VQcmVkaWN0
aW9uID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBp
ZiAoKCEoYmFzZVByZWRpY3Rpb24gJiBTcGVjSW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKQogICAg
ICAgICAgICAgICAgIHx8IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJn
dW1lbnRzKCkKLSAgICAgICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9u
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgICAg
IHx8ICFpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
cHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgICAgIG5vZGUuc2V0T3BBbmREZWZhdWx0Rmxh
Z3MoTm9wKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVyZWZDaGlsZDEobm9k
ZSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERlcmVmQ2hpbGQyKG5vZGUpOwpA
QCAtMjg0LDcgKzI4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgTm9kZSBuZXdEaXZpc2lvbiA9IG9sZERpdmlzaW9uOwogICAgICAgICAgICAgICAgIG5l
d0RpdmlzaW9uLnNldFJlZkNvdW50KDIpOwotICAgICAgICAgICAgICAgIG5ld0RpdmlzaW9uLnBy
ZWRpY3QoUHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICAgICAgbmV3RGl2aXNpb24ucHJlZGlj
dChTcGVjRG91YmxlKTsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggbmV3RGl2aXNpb25JbmRl
eCA9IG1fZ3JhcGguc2l6ZSgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG9s
ZERpdmlzaW9uLnNldE9wKERvdWJsZUFzSW50MzIpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoIW1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgaWYgKGlzQWN0aW9uYWJsZUludE11dGFibGVBcnJheVByZWRpY3Rp
b24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAgICBp
ZiAoaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5U3BlY3VsYXRpb24obV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9k
ZS5jaGlsZDMoKV0uaXNDb25zdGFudCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkpCkBAIC0zMjYsNyArMzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBm
aXhEb3VibGVFZGdlKDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5UHJlZGljdGlvbiht
X2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIGlmIChp
c0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVNwZWN1bGF0aW9uKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zOTAsNyArMzkwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2Nr
LCByZXN1bHRJbmRleCk7CiAgICAgICAgIAogICAgICAgICBOb2RlJiBpbnQzMlRvRG91YmxlID0g
bV9ncmFwaFtyZXN1bHRJbmRleF07Ci0gICAgICAgIGludDMyVG9Eb3VibGUucHJlZGljdChQcmVk
aWN0RG91YmxlKTsKKyAgICAgICAgaW50MzJUb0RvdWJsZS5wcmVkaWN0KFNwZWNEb3VibGUpOwog
ICAgICAgICBpbnQzMlRvRG91YmxlLnJlZigpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyAr
NzYsNyBAQCBjb25zdCBjaGFyKiBHcmFwaDo6bmFtZU9mVmFyaWFibGVBY2Nlc3NECiAgICAgaWYg
KHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAqcHRyKysgPSAnKic7
CiAgICAgCi0gICAgcHRyLnN0cmNhdChwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyh2YXJp
YWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSkpOworICAgIHB0ci5zdHJjYXQoc3BlY3VsYXRp
b25Ub0FiYnJldmlhdGVkU3RyaW5nKHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpKSk7
CiAgICAgCiAgICAgKnB0cisrID0gMDsKICAgICAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEdy
YXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgICAgICBkYXRhTG9nKCIlc0Al
dSVzIiwKICAgICAgICAgICAgICAgICAgICAgdXNlS2luZFRvU3RyaW5nKG1fdmFyQXJnQ2hpbGRy
ZW5bY2hpbGRJZHhdLnVzZUtpbmQoKSksCiAgICAgICAgICAgICAgICAgICAgIG1fdmFyQXJnQ2hp
bGRyZW5bY2hpbGRJZHhdLmluZGV4KCksCi0gICAgICAgICAgICAgICAgICAgIHByZWRpY3Rpb25U
b0FiYnJldmlhdGVkU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvblRvQWJi
cmV2aWF0ZWRTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICBhdChtX3ZhckFyZ0NoaWxk
cmVuW2NoaWxkSWR4XSkucHJlZGljdGlvbigpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpA
QCAtMTc3LDE5ICsxNzcsMTkgQEAgdm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4
KQogICAgICAgICAgICAgZGF0YUxvZygiJXNAJXUlcyIsCiAgICAgICAgICAgICAgICAgICAgIHVz
ZUtpbmRUb1N0cmluZyhub2RlLmNoaWxkMSgpLnVzZUtpbmQoKSksCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUuY2hpbGQxKCkuaW5kZXgoKSwKLSAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlv
blRvQWJicmV2aWF0ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChub2Rl
LmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoISFub2Rl
LmNoaWxkMigpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCIsICVzQCV1JXMiLAogICAgICAgICAg
ICAgICAgICAgICB1c2VLaW5kVG9TdHJpbmcobm9kZS5jaGlsZDIoKS51c2VLaW5kKCkpLAogICAg
ICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMigpLmluZGV4KCksCi0gICAgICAgICAgICAgICAg
ICAgIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQyKCkpLnByZWRp
Y3Rpb24oKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRT
dHJpbmcoYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCEhbm9kZS5jaGlsZDMoKSkgewogICAgICAgICAgICAgZGF0YUxvZygiLCAlc0AldSVz
IiwKICAgICAgICAgICAgICAgICAgICAgdXNlS2luZFRvU3RyaW5nKG5vZGUuY2hpbGQzKCkudXNl
S2luZCgpKSwKICAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZDMoKS5pbmRleCgpLAotICAg
ICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChub2RlLmNo
aWxkMygpKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25U
b0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQzKCkpLnByZWRpY3Rpb24oKSkpOwogICAg
ICAgICB9CiAgICAgICAgIGhhc1ByaW50ZWQgPSAhIW5vZGUuY2hpbGQxKCk7CiAgICAgfQpAQCAt
MjY5LDkgKzI2OSw5IEBAIHZvaWQgR3JhcGg6OmR1bXAoTm9kZUluZGV4IG5vZGVJbmRleCkKIAog
ICAgIGlmICghc2tpcHBlZCkgewogICAgICAgICBpZiAobm9kZS5oYXNWYXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgcHJlZGljdGluZyAlcywgZG91YmxlIHJhdGlv
ICVsZiVzIiwgcHJlZGljdGlvblRvU3RyaW5nKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnBy
ZWRpY3Rpb24oKSksIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPmRvdWJsZVZvdGVSYXRpbygp
LCBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSA/ICIs
IGZvcmNpbmcgZG91YmxlIiA6ICIiKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgcHJlZGljdGlu
ZyAlcywgZG91YmxlIHJhdGlvICVsZiVzIiwgc3BlY3VsYXRpb25Ub1N0cmluZyhub2RlLnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT5kb3VibGVWb3RlUmF0aW8oKSwgbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNl
RG91YmxlRm9ybWF0KCkgPyAiLCBmb3JjaW5nIGRvdWJsZSIgOiAiIik7CiAgICAgICAgIGVsc2Ug
aWYgKG5vZGUuaGFzSGVhcFByZWRpY3Rpb24oKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgcHJl
ZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkp
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgcHJlZGljdGluZyAlcyIsIHNwZWN1bGF0aW9uVG9T
dHJpbmcobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKSk7CiAgICAgfQogICAgIAogICAgIGRhdGFM
b2coIlxuIik7CkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBHcmFwaDo6cHJlZGljdEFyZ3VtZW50
VHlwZXMoKQogICAgICAgICBhdChtX2FyZ3VtZW50c1thcmddKS52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+cHJlZGljdChwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAg
IAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygiQXJndW1l
bnQgWyV6dV0gcHJlZGljdGlvbjogJXNcbiIsIGFyZywgcHJlZGljdGlvblRvU3RyaW5nKGF0KG1f
YXJndW1lbnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKKyAg
ICAgICAgZGF0YUxvZygiQXJndW1lbnQgWyV6dV0gcHJlZGljdGlvbjogJXNcbiIsIGFyZywgc3Bl
Y3VsYXRpb25Ub1N0cmluZyhhdChtX2FyZ3VtZW50c1thcmddKS52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+cHJlZGljdGlvbigpKSk7CiAjZW5kaWYKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw5ICsxODcsOSBAQCBw
dWJsaWM6CiAKICAgICBCbG9ja0luZGV4IGJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChWZWN0
b3I8QmxvY2tJbmRleD4mIGJsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbik7CiAKLSAgICBQ
cmVkaWN0ZWRUeXBlIGdldEpTQ29uc3RhbnRQcmVkaWN0aW9uKE5vZGUmIG5vZGUpCisgICAgU3Bl
Y3VsYXRlZFR5cGUgZ2V0SlNDb25zdGFudFNwZWN1bGF0aW9uKE5vZGUmIG5vZGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gcHJlZGljdGlvbkZyb21WYWx1ZShub2RlLnZhbHVlT2ZKU0NvbnN0YW50
KG1fY29kZUJsb2NrKSk7CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21WYWx1ZShub2Rl
LnZhbHVlT2ZKU0NvbnN0YW50KG1fY29kZUJsb2NrKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wg
YWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlJiBhZGQpCkBAIC00MjQsMTcgKzQyNCwxNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc1ByZWRpY3RlZE51bWVyaWNhbChOb2RlJiBub2Rl
KQogICAgIHsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gYXQobm9kZS5jaGlsZDEoKSku
cHJlZGljdGlvbigpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gYXQobm9kZS5jaGls
ZDIoKSkucHJlZGljdGlvbigpOwotICAgICAgICByZXR1cm4gaXNOdW1iZXJQcmVkaWN0aW9uKGxl
ZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IGxlZnQgPSBhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCk7CisgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHJpZ2h0ID0gYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpOworICAgICAgICBy
ZXR1cm4gaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJp
Z2h0KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBieVZhbElzUHVyZShOb2RlJiBub2RlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVn
ZXIoKQogICAgICAgICAgICAgJiYgKChub2RlLm9wKCkgPT0gUHV0QnlWYWwgfHwgbm9kZS5vcCgp
ID09IFB1dEJ5VmFsQWxpYXMpCi0gICAgICAgICAgICAgICAgPyBpc0FjdGlvbmFibGVNdXRhYmxl
QXJyYXlQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkKLSAgICAgICAg
ICAgICAgICA6IGlzQWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5w
cmVkaWN0aW9uKCkpKTsKKyAgICAgICAgICAgICAgICA/IGlzQWN0aW9uYWJsZU11dGFibGVBcnJh
eVNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAg
ICAgICA6IGlzQWN0aW9uYWJsZUFycmF5U3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgY2xvYmJlcnNXb3JsZChOb2RlJiBu
b2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAko
cmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsOSArMjYwLDkgQEAgcHVibGljOgogICAgIH0K
ICAgICAKICAgICAvLyBIZWxwZXIgbWV0aG9kcyB0byBnZXQgcHJlZGljdGlvbnMKLSAgICBQcmVk
aWN0ZWRUeXBlIGdldFByZWRpY3Rpb24oTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5wcmVkaWN0
aW9uKCk7IH0KLSAgICBQcmVkaWN0ZWRUeXBlIGdldFByZWRpY3Rpb24oTm9kZUluZGV4IG5vZGVJ
bmRleCkgeyByZXR1cm4gZ2V0UHJlZGljdGlvbihncmFwaCgpW25vZGVJbmRleF0pOyB9Ci0gICAg
UHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKEVkZ2Ugbm9kZVVzZSkgeyByZXR1cm4gZ2V0UHJl
ZGljdGlvbihub2RlVXNlLmluZGV4KCkpOyB9CisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3Vs
YXRpb24oTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5wcmVkaWN0aW9uKCk7IH0KKyAgICBTcGVj
dWxhdGVkVHlwZSBnZXRTcGVjdWxhdGlvbihOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBn
ZXRTcGVjdWxhdGlvbihncmFwaCgpW25vZGVJbmRleF0pOyB9CisgICAgU3BlY3VsYXRlZFR5cGUg
Z2V0U3BlY3VsYXRpb24oRWRnZSBub2RlVXNlKSB7IHJldHVybiBnZXRTcGVjdWxhdGlvbihub2Rl
VXNlLmluZGV4KCkpOyB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHZvaWQqIGFkZHJl
c3NPZkRvdWJsZUNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNp
bmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiT3BlcmFuZHMuaCIKLSNpbmNsdWRlICJQcmVkaWN0ZWRUeXBlLmgiCisjaW5jbHVk
ZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQy
LCBjaGlsZDMpCiAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdp
c3RlcikKICAgICAgICAgLCBtX3JlZkNvdW50KDApCi0gICAgICAgICwgbV9wcmVkaWN0aW9uKFBy
ZWRpY3ROb25lKQorICAgICAgICAsIG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICB7CiAgICAg
ICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKG9wKTsKICAgICAgICAgQVNTRVJUKCEobV9mbGFncyAm
IE5vZGVIYXNWYXJBcmdzKSk7CkBAIC05NSw3ICs5NSw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgICAgICAs
IG1fcmVmQ291bnQoMCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0ubV92YWx1ZSkKLSAgICAgICAg
LCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCisgICAgICAgICwgbV9wcmVkaWN0aW9uKFNwZWNO
b25lKQogICAgIHsKICAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mob3ApOwogICAgICAgICBB
U1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKQEAgLTEwOSw3ICsxMDksNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgICwgbV9yZWZDb3VudCgwKQogICAgICAgICAsIG1fb3BJbmZv
KGltbTEubV92YWx1ZSkKICAgICAgICAgLCBtX29wSW5mbzIoc2FmZUNhc3Q8dW5zaWduZWQ+KGlt
bTIubV92YWx1ZSkpCi0gICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQorICAgICAg
ICAsIG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICB7CiAgICAgICAgIHNldE9wQW5kRGVmYXVs
dEZsYWdzKG9wKTsKICAgICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7
CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAsIG1fcmVmQ291bnQo
MCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0xLm1fdmFsdWUpCiAgICAgICAgICwgbV9vcEluZm8y
KHNhZmVDYXN0PHVuc2lnbmVkPihpbW0yLm1fdmFsdWUpKQotICAgICAgICAsIG1fcHJlZGljdGlv
bihQcmVkaWN0Tm9uZSkKKyAgICAgICAgLCBtX3ByZWRpY3Rpb24oU3BlY05vbmUpCiAgICAgewog
ICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhvcCk7CiAgICAgICAgIEFTU0VSVChtX2ZsYWdz
ICYgTm9kZUhhc1ZhckFyZ3MpOwpAQCAtNTg0LDE3ICs1ODQsMTcgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgZ2V0SGVhcFByZWRpY3Rp
b24oKQorICAgIFNwZWN1bGF0ZWRUeXBlIGdldEhlYXBQcmVkaWN0aW9uKCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChoYXNIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFByZWRpY3RlZFR5cGU+KG1fb3BJbmZvMik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxTcGVjdWxhdGVkVHlwZT4obV9vcEluZm8yKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBwcmVk
aWN0SGVhcChQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgYm9vbCBwcmVkaWN0SGVhcChT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0hlYXBQ
cmVkaWN0aW9uKCkpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIG1lcmdlUHJlZGljdGlvbiht
X29wSW5mbzIsIHByZWRpY3Rpb24pOworICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxhdGlvbiht
X29wSW5mbzIsIHByZWRpY3Rpb24pOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0Z1bmN0aW9u
Q2hlY2tEYXRhKCkKQEAgLTc2NywxMTQgKzc2NywxMTQgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICByZXR1cm4gY2hpbGRyZW4ubnVtQ2hpbGRyZW4oKTsKICAgICB9CiAgICAgCi0gICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uKCkKKyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CiAgICAgfQogICAgIAotICAgIGJvb2wg
cHJlZGljdChQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgYm9vbCBwcmVkaWN0KFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gbWVyZ2VQcmVkaWN0
aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1
bGF0aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CiAgICAgfQogICAgIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4gaXNJbnQzMlBy
ZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZURv
dWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rp
b24oKSk7CisgICAgICAgIHJldHVybiBpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7
CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBpc051bWJlclByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCb29sZWFuKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBp
c0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Jvb2xl
YW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0ZpbmFsT2Jq
ZWN0UHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNGaW5hbE9iamVj
dFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxk
U3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0Zp
bmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJu
IGlzRmluYWxPYmplY3RPck90aGVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVBcnJheSgpCiAgICAgewotICAgICAgICByZXR1
cm4gaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzQXJy
YXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZUFyZ3VtZW50cygpCiAgICAgewotICAgICAgICByZXR1cm4gaXNBcmd1bWVudHNQ
cmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0FyZ3VtZW50c1NwZWN1
bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlSW50OEFycmF5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0ludDhBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzSW50OEFycmF5U3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVJbnQx
NkFycmF5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUludDMyQXJy
YXkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGlj
dGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzSW50MzJBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rp
b24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgp
CiAgICAgewotICAgICAgICByZXR1cm4gaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9u
KCkpOworICAgICAgICByZXR1cm4gaXNVaW50OEFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbigp
KTsKICAgICB9CiAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihwcmVk
aWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNVaW50OENsYW1wZWRBcnJheVNwZWN1bGF0aW9u
KHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlVWlu
dDE2QXJyYXkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzVWludDE2QXJyYXlQcmVkaWN0aW9u
KHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVVaW50
MzJBcnJheSgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNVaW50MzJBcnJheVByZWRpY3Rpb24o
cHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzVWludDMyQXJyYXlTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUZsb2F0
MzJBcnJheSgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9u
KHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9u
KHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmxv
YXQ2NEFycmF5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzRmxvYXQ2NEFycmF5U3BlY3VsYXRp
b24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVB
cnJheU9yT3RoZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQXJyYXlPck90aGVyUHJlZGlj
dGlvbihwcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNBcnJheU9yT3RoZXJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0
ZU9iamVjdCgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNPYmplY3RQcmVkaWN0aW9uKHByZWRp
Y3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc09iamVjdFNwZWN1bGF0aW9uKHByZWRpY3Rpb24o
KSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQ2VsbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gaXNDZWxsUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOworICAgICAgICBy
ZXR1cm4gaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlJiBvcDEsIE5vZGUmIG9wMikK
QEAgLTkzMiw3ICs5MzIsNyBAQCBwcml2YXRlOgogICAgIHVpbnRwdHJfdCBtX29wSW5mbzsKICAg
ICB1bnNpZ25lZCBtX29wSW5mbzI7CiAgICAgLy8gVGhlIHByZWRpY3Rpb24gYXNjcmliZWQgdG8g
dGhpcyBub2RlIGFmdGVyIHByb3BhZ2F0aW9uLgotICAgIFByZWRpY3RlZFR5cGUgbV9wcmVkaWN0
aW9uOworICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbjsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTk2
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMjAgKzgyLDIwIEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiBwcml2YXRlOgotICAgIGJvb2wgc2V0UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHByZWRpY3Rpb24pCisgICAgYm9vbCBzZXRQcmVkaWN0aW9uKFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pCiAgICAgewogICAgICAgICBBU1NFUlQobV9ncmFwaFttX2NvbXBpbGVJbmRleF0uaGFz
UmVzdWx0KCkpOwogICAgICAgICAKICAgICAgICAgLy8gc2V0UHJlZGljdGlvbigpIGlzIHVzZWQg
d2hlbiB3ZSBrbm93IHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRoYXQgd2UgY2FuIGNoYW5nZQogICAg
ICAgICAvLyBvdXIgbWluZHMgYWJvdXQgd2hhdCB0aGUgcHJlZGljdGlvbiBpcyBnb2luZyB0byBi
ZS4gVGhlcmUgaXMgbm8gc2VtYW50aWMKLSAgICAgICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHNl
dFByZWRpY3Rpb24oKSBhbmQgbWVyZ2VQcmVkaWN0aW9uKCkgb3RoZXIgdGhhbiB0aGUKKyAgICAg
ICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHNldFByZWRpY3Rpb24oKSBhbmQgbWVyZ2VTcGVjdWxh
dGlvbigpIG90aGVyIHRoYW4gdGhlCiAgICAgICAgIC8vIGluY3JlYXNlZCBjaGVja2luZyB0byB2
YWxpZGF0ZSB0aGlzIHByb3BlcnR5LgotICAgICAgICBBU1NFUlQobV9ncmFwaFttX2NvbXBpbGVJ
bmRleF0ucHJlZGljdGlvbigpID09IFByZWRpY3ROb25lIHx8IG1fZ3JhcGhbbV9jb21waWxlSW5k
ZXhdLnByZWRpY3Rpb24oKSA9PSBwcmVkaWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGhb
bV9jb21waWxlSW5kZXhdLnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZSB8fCBtX2dyYXBoW21fY29t
cGlsZUluZGV4XS5wcmVkaWN0aW9uKCkgPT0gcHJlZGljdGlvbik7CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gbV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdChwcmVkaWN0aW9uKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBtZXJnZVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uKQorICAgIGJvb2wgbWVyZ2VQcmVkaWN0aW9uKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9ncmFwaFttX2NvbXBpbGVJbmRleF0uaGFzUmVzdWx0
KCkpOwogICAgICAgICAKQEAgLTEzNCwxMyArMTM0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHN3
aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgogICAgICAgICBjYXNlIFdlYWtK
U0NvbnN0YW50OiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24ocHJlZGlj
dGlvbkZyb21WYWx1ZShtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1fY29tcGlsZUluZGV4KSkp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKHNwZWN1bGF0aW9uRnJvbVZh
bHVlKG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobV9jb21waWxlSW5kZXgpKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0TG9j
YWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRh
ID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUg
cHJlZGljdGlvbiA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpOworICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGlj
dGlvbigpOwogICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCiAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAgICAgICAKQEAgLTE2
OCw3ICsxNjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEJpdFJTaGlmdDoKICAgICAgICAg
Y2FzZSBCaXRMU2hpZnQ6CiAgICAgICAgIGNhc2UgQml0VVJTaGlmdDogewotICAgICAgICAgICAg
Y2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgIGZsYWdzIHw9IE5v
ZGVVc2VkQXNJbnQ7CiAgICAgICAgICAgICBmbGFncyAmPSB+KE5vZGVVc2VkQXNOdW1iZXIgfCBO
b2RlTmVlZHNOZWdaZXJvKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6IHsKLSAg
ICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0SW50MzIpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBm
bGFncyB8PSBOb2RlVXNlZEFzSW50OwogICAgICAgICAgICAgZmxhZ3MgJj0gfihOb2RlVXNlZEFz
TnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhmbGFncyk7CkBAIC0yMDUsMjIgKzIwNSwyMiBA
QCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OiB7
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVV
c2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQXJpdGhNb2Q6IHsKLSAgICAg
ICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGlj
dGlvbigpOwotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkp
CisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihtZXJnZVNwZWN1bGF0aW9u
cyhsZWZ0LCByaWdodCkpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGVDYW5TcGVjdWxhdGVJ
bnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVk
aWN0RG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGZsYWdzIHw9IE5vZGVVc2VkQXNWYWx1ZTsKQEAgLTIzMSwyOSArMjMxLDI5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjogewogICAgICAgICAg
ICAgaWYgKG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCi0g
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsK
KyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNOdW1iZXIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhmbGFncyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgICAg
IFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigp
OwotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc051
bWJlclNwZWN1bGF0aW9uKHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIShsZWZ0ICYgUHJlZGljdE51bWJlcikgfHwgIShyaWdodCAmIFByZWRpY3ROdW1iZXIpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVj
RG91YmxlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEobGVmdCAmIFNwZWNOdW1iZXIp
IHx8ICEocmlnaHQgJiBTcGVjTnVtYmVyKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBsZWZ0
IG9yIHJpZ2h0IGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBudW1iZXIuCi0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RTdHJp
bmcpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVj
U3RyaW5nKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdFN0cmluZyB8IFByZWRpY3RJbnQzMiB8IFBy
ZWRpY3REb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjU3RyaW5nIHwgU3BlY0ludDMyIHwgU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpc05vdE5lZ1plcm8obm9kZS5jaGlsZDEo
KS5pbmRleCgpKSB8fCBpc05vdE5lZ1plcm8obm9kZS5jaGlsZDIoKS5pbmRleCgpKSkKQEAgLTI2
NSwxNCArMjY1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIEFyaXRoQWRkOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rp
b24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNo
aWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcihub2RlKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwor
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91Ymxl
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzTm90TmVn
WmVybyhub2RlLmNoaWxkMSgpLmluZGV4KCkpIHx8IGlzTm90TmVnWmVybyhub2RlLmNoaWxkMigp
LmluZGV4KCkpKQpAQCAtMjg0LDE0ICsyODQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKLSAgICAgICAgICAgIFByZWRpY3Rl
ZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAgICAg
ICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGlj
dGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQg
PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQotICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
UHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaXNO
b3RaZXJvKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkgfHwgaXNOb3RaZXJvKG5vZGUuY2hpbGQyKCku
aW5kZXgoKSkpCkBAIC0zMDUsOSArMzA1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0
aE5lZ2F0ZToKICAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rp
b24oKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNwZWN1bGF0
ZUludGVnZXIobm9kZSkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0RvdWJsZSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKQEAgLTMxNSwxNSArMzE1LDE1IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aE1pbjoKICAgICAgICAgY2FzZSBBcml0
aE1heDogewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0g
bV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7CisgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJl
ZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkg
ewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25z
KGxlZnQsIHJpZ2h0KSkKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1l
cmdlU3BlY3VsYXRpb25zKGxlZnQsIHJpZ2h0KSkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9k
ZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFByZWRpY3REb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlcjsKQEAgLTMzMywxNCArMzMzLDE0IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFyaXRoTXVsOiB7Ci0gICAgICAgICAgICBQ
cmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsK
LSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCld
LnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGxlZnQgPSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFByZWRpY3REb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gQXMgc29vbiBhcyBhIG11bHRpcGx5IGhhcHBlbnMsIHdlIGNhbiBlYXNpbHkgZW5kIHVwIGlu
IHRoZSBwYXJ0CkBAIC0zNTUsMTUgKzM1NSwxNSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aERpdjogewotICAgICAgICAgICAgUHJlZGljdGVk
VHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0
aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMy
UHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkKKyAgICAgICAgICAgICAg
ICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1lcmdlU3BlY3VsYXRpb25zKGxlZnQsIHJpZ2h0KSkK
ICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0
aE5vZGVGbGFncygpKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOworICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQXMgc29vbiBhcyBhIG11bHRpcGx5IGhh
cHBlbnMsIHdlIGNhbiBlYXNpbHkgZW5kIHVwIGluIHRoZSBwYXJ0CkBAIC0zNzgsMTcgKzM3OCwx
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0
aFNxcnQ6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0RG91
YmxlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjRG91YmxlKTsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KGZsYWdzIHwgTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aEFiczogewotICAgICAgICAgICAgUHJl
ZGljdGVkVHlwZSBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwor
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihu
b2RlLmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKGNoaWxkKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNEb3VibGUpOwogCiAgICAgICAgICAgICBmbGFncyAm
PSB+Tm9kZU5lZWRzTmVnWmVybzsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKQEAgLTQwOSw3ICs0MDksNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIElzU3RyaW5nOgogICAgICAgICBjYXNlIElzT2JqZWN0OgogICAgICAg
ICBjYXNlIElzRnVuY3Rpb246IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlv
bihQcmVkaWN0Qm9vbGVhbik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
U3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhu
b2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MjgsNyArNDI4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkKICAgICAgICAg
ICAgICAgICB8fCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRB
cnJheSgpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRp
Y3REb3VibGUpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNw
ZWNEb3VibGUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CiAKQEAgLTQ0NCwxMyAr
NDQ0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZTogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQ
cmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3JhZ2U6IAogICAgICAgICBjYXNlIEdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJl
ZGljdGlvbihQcmVkaWN0T3RoZXIpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0
aW9uKFNwZWNPdGhlcik7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdz
KG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ3NCwxMSArNDc0LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENvbnZl
cnRUaGlzOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKICAgICAg
ICAgICAgIGlmIChwcmVkaWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24g
JiB+UHJlZGljdE9iamVjdE1hc2spIHsKLSAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlvbiAm
PSBQcmVkaWN0T2JqZWN0TWFzazsKLSAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IG1l
cmdlUHJlZGljdGlvbnMocHJlZGljdGlvbiwgUHJlZGljdE9iamVjdE90aGVyKTsKKyAgICAgICAg
ICAgICAgICBpZiAocHJlZGljdGlvbiAmIH5TcGVjT2JqZWN0TWFzaykgeworICAgICAgICAgICAg
ICAgICAgICBwcmVkaWN0aW9uICY9IFNwZWNPYmplY3RNYXNrOworICAgICAgICAgICAgICAgICAg
ICBwcmVkaWN0aW9uID0gbWVyZ2VTcGVjdWxhdGlvbnMocHJlZGljdGlvbiwgU3BlY09iamVjdE90
aGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAgICAgICB9CkBAIC01MDEsMzAgKzUwMSwz
MCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFJlc29sdmVCYXNlOgogICAgICAgICBjYXNlIFJl
c29sdmVCYXNlU3RyaWN0UHV0OgogICAgICAgICBjYXNlIFJlc29sdmVHbG9iYWw6IHsKLSAgICAg
ICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24o
KTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLmdldEhlYXBQ
cmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVk
aWN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBHZXRTY29wZUNoYWluOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFBy
ZWRpY3Rpb24oUHJlZGljdENlbGxPdGhlcik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFBy
ZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOiB7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjRnVuY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAg
IGNhc2UgTmV3T2JqZWN0OiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
UHJlZGljdEZpbmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlv
bihTcGVjRmluYWxPYmplY3QpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRG
bGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBOZXdBcnJheTogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVk
aWN0aW9uKFByZWRpY3RBcnJheSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rp
b24oU3BlY0FycmF5KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2Rl
LmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hp
bGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICAgKytjaGlsZElkeCkg
ewpAQCAtNTM1LDI0ICs1MzUsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0g
c2V0UHJlZGljdGlvbihQcmVkaWN0QXJyYXkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQ
cmVkaWN0aW9uKFNwZWNBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOiB7Ci0gICAgICAgICAgICBjaGFuZ2Vk
IHw9IHNldFByZWRpY3Rpb24oUHJlZGljdE9iamVjdE90aGVyKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7Ci0gICAg
ICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdFN0cmluZyk7CisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFs
dWUpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdl
RmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVVc2VkQXNJbnQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFN0ckNhdDogewotICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RTdHJpbmcpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOwogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOwogICAgICAgICAgICAg
ICAgICBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOwog
ICAgICAgICAgICAgICAgICArK2NoaWxkSWR4KQpAQCAtNTYxLDIwICs1NjEsMjAgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6IHsK
LSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGNoaWxkID0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoY2hpbGQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3RQcmVkaWN0aW9uKGNoaWxkKSkgeworICAgICAg
ICAgICAgICAgIGlmIChpc09iamVjdFNwZWN1bGF0aW9uKGNoaWxkKSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBJJ2QgbG92ZSB0byBmb2xkIHRoaXMgY2FzZSBpbnRvIHRoZSBjYXNlIGJlbG93
LCBidXQgSSBjYW4ndCwgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmluZyBQ
cmVkaWN0T2JqZWN0TWFzayBmcm9tIHNvbWV0aGluZyB0aGF0IG9ubHkgaGFzIGFuIG9iamVjdAot
ICAgICAgICAgICAgICAgICAgICAvLyBwcmVkaWN0aW9uIGFuZCBub3RoaW5nIGVsc2UgbWVhbnMg
d2UgaGF2ZSBhbiBpbGwtZm9ybWVkIFByZWRpY3RlZFR5cGUKKyAgICAgICAgICAgICAgICAgICAg
Ly8gcmVtb3ZpbmcgU3BlY09iamVjdE1hc2sgZnJvbSBzb21ldGhpbmcgdGhhdCBvbmx5IGhhcyBh
biBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJlZGljdGlvbiBhbmQgbm90aGluZyBl
bHNlIG1lYW5zIHdlIGhhdmUgYW4gaWxsLWZvcm1lZCBTcGVjdWxhdGVkVHlwZQogICAgICAgICAg
ICAgICAgICAgICAvLyAoc3Ryb25nIHByZWRpY3Qtbm9uZSkuIFRoaXMgc2hvdWxkIGJlIGtpbGxl
ZCBvbmNlIHdlIHJlbW92ZSBhbGwgdHJhY2VzCiAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHN0
YXRpYyAoYWthIHdlYWspIHByZWRpY3Rpb25zLgotICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0U3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGNoaWxkICYgUHJlZGljdE9iamVjdE1hc2spIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChjaGlsZCAmIFNwZWNPYmplY3RNYXNrKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIE9iamVjdHMgZ2V0IHR1cm5lZCBpbnRvIHN0cmluZ3MuIFNvIGlmIHRoZSBpbnB1dCBoYXMg
aGludHMgb2Ygb2JqZWN0bmVzcywKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCB3
aWxsIGhhdmUgaGluc3RzIG9mIHN0cmluZ2luZXNzLgogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlUHJl
ZGljdGlvbnMoY2hpbGQgJiB+UHJlZGljdE9iamVjdE1hc2ssIFByZWRpY3RTdHJpbmcpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1lcmdlU3BlY3VsYXRpb25zKGNoaWxkICYgflNwZWNPYmpl
Y3RNYXNrLCBTcGVjU3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxkKTsKICAgICAgICAgICAg
IH0KQEAgLTU4MywyMSArNTgzLDIxIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246IHsKLSAgICAgICAgICAgIGNoYW5nZWQg
fD0gc2V0UHJlZGljdGlvbihQcmVkaWN0T2JqZWN0T3RoZXIpOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOiB7
CiAgICAgICAgICAgICAvLyBBdCB0aGlzIHN0YWdlIHdlIGRvbid0IHRyeSB0byBwcmVkaWN0IHdo
ZXRoZXIgdGhlIGFyZ3VtZW50cyBhcmUgb3VycyBvcgogICAgICAgICAgICAgLy8gc29tZW9uZSBl
bHNlJ3MuIFdlIGNvdWxkLCBidXQgd2UgZG9uJ3QsIHlldC4KLSAgICAgICAgICAgIGNoYW5nZWQg
fD0gc2V0UHJlZGljdGlvbihQcmVkaWN0QXJndW1lbnRzKTsKKyAgICAgICAgICAgIGNoYW5nZWQg
fD0gc2V0UHJlZGljdGlvbihTcGVjQXJndW1lbnRzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAg
Y2FzZSBOZXdGdW5jdGlvbk5vQ2hlY2s6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb25FeHByZXNz
aW9uOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEZ1bmN0
aW9uKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjRnVuY3Rpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNjg5LDcg
KzY4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygiJXNcbiIsIHByZWRpY3Rpb25Ub1N0
cmluZyhtX2dyYXBoW21fY29tcGlsZUluZGV4XS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgZGF0
YUxvZygiJXNcbiIsIHNwZWN1bGF0aW9uVG9TdHJpbmcobV9ncmFwaFttX2NvbXBpbGVJbmRleF0u
cHJlZGljdGlvbigpKSk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCB8PSBj
aGFuZ2VkOwpAQCAtNzg0LDEyICs3ODQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2Ug
VmFsdWVBZGQ6CiAgICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICAgICAgY2FzZSBB
cml0aFN1YjogewotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVk
aWN0aW9uKCk7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBtX2dyYXBo
W25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBpc051
bWJlclByZWRpY3Rpb24ocmlnaHQpCisgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3Vs
YXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKICAgICAgICAgICAgICAg
ICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKICAgICAg
ICAgICAgICAgICAgICAgYmFsbG90ID0gVmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlRG91YmxlOwog
ICAgICAgICAgICAgICAgIGVsc2UKQEAgLTgwMSwxMiArODAxLDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEFyaXRoTXVsOiB7
Ci0gICAgICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsK
KyAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YTo6QmFsbG90IGJhbGxvdDsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGlj
dGlvbihyaWdodCkKKyAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0
KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQogICAgICAgICAgICAgICAgICAgICAmJiAh
bV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQogICAgICAgICAgICAgICAg
ICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVEb3VibGU7CiAgICAgICAgICAg
ICAgICAgZWxzZQpAQCAtODIxLDEyICs4MjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNh
c2UgQXJpdGhNYXg6CiAgICAgICAgICAgICBjYXNlIEFyaXRoTW9kOgogICAgICAgICAgICAgY2Fz
ZSBBcml0aERpdjogewotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgICAgIFByZWRpY3Rl
ZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5w
cmVkaWN0aW9uKCk7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBtX2dy
YXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBp
c051bWJlclByZWRpY3Rpb24ocmlnaHQpCisgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3Bl
Y3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgIShOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBi
YWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVEb3VibGU7CkBAIC04NTQsMTAgKzg1NCwx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAg
ICAgICAgICAgICAgIGlmIChpc0RvdWJsZVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgICAgICBub2RlLnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT52b3RlKFZhcmlhYmxlQWNjZXNzRGF0YTo6Vm90ZURvdWJsZSk7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoIWlzTnVtYmVyUHJlZGljdGlvbihwcmVkaWN0aW9uKSB8fCBpc0ludDMyUHJl
ZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNOdW1iZXJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikp
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnZvdGUoVmFy
aWFibGVBY2Nlc3NEYXRhOjpWb3RlVmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnRJCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAotICAgIFByZWRpY3Rl
ZFR5cGUgdHlwZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlSW5kZXgpLm1fdHlwZTsKKyAgICBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGVJbmRleCkubV90eXBlOwogICAg
IE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBp
bmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwpAQCAtMTA3Myw3ICsxMDcz
LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50SQogICAgICAgICBB
U1NFUlRfVU5VU0VEKHNwaWxsRm9ybWF0LCAoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8
IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnRlZ2VyKTsKIAogICAgICAgICAvLyBJZiB3ZSBr
bm93IHRoaXMgd2FzIHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNo
ZWNraW5nLgotICAgICAgICBpZiAoIWlzSW50MzJQcmVkaWN0aW9uKHR5cGUpKQorICAgICAgICBp
ZiAoIWlzSW50MzJTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgp
OwpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlSW50SQogICAgICAgICBHUFJSZWcgcGF5bG9hZEdQUiA9IGluZm8ucGF5bG9hZEdQUigpOwog
ICAgICAgICBtX2dwcnMubG9jayh0YWdHUFIpOwogICAgICAgICBtX2dwcnMubG9jayhwYXlsb2Fk
R1BSKTsKLSAgICAgICAgaWYgKCFpc0ludDMyUHJlZGljdGlvbih0eXBlKSkKKyAgICAgICAgaWYg
KCFpc0ludDMyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgbV9ncHJzLnVubG9jayh0YWdHUFIpOwog
ICAgICAgICBtX2dwcnMucmVsZWFzZSh0YWdHUFIpOwpAQCAtMTEzNyw3ICsxMTM3LDcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50UwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5k
ZXggbm9kZUluZGV4KQorRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY0RvdWJsZShOb2Rl
SW5kZXggbm9kZUluZGV4KQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBk
YXRhTG9nKCJTcGVjRG91YmxlQCVkICAgIiwgbm9kZUluZGV4KTsKQEAgLTExNDcsNyArMTE0Nyw3
IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICAgICAgcmV0
dXJuIGZwckFsbG9jYXRlKCk7CiAgICAgfQogCi0gICAgUHJlZGljdGVkVHlwZSB0eXBlID0gbV9z
dGF0ZS5mb3JOb2RlKG5vZGVJbmRleCkubV90eXBlOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUg
PSBtX3N0YXRlLmZvck5vZGUobm9kZUluZGV4KS5tX3R5cGU7CiAgICAgTm9kZSYgbm9kZSA9IGF0
KG5vZGVJbmRleCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUu
dmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRp
b25JbmZvW3ZpcnR1YWxSZWdpc3Rlcl07CkBAIC0xMTg1LDcgKzExODUsNyBAQCBGUFJSZWcgU3Bl
Y3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVEb3ViCiAKICAgICAgICAgICAgIGlmIChzcGlsbEZv
cm1hdCAhPSBEYXRhRm9ybWF0SlNJbnRlZ2VyICYmIHNwaWxsRm9ybWF0ICE9IERhdGFGb3JtYXRJ
bnRlZ2VyKSB7CiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0g
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9y
KHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwotICAg
ICAgICAgICAgICAgIGlmICghaXNOdW1iZXJQcmVkaWN0aW9uKHR5cGUpKQorICAgICAgICAgICAg
ICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRy
ZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lz
dGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAgICAgICAgICAgICAg
ICBtX2ppdC5sb2FkRG91YmxlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIGZwcik7CiAgICAgICAgICAgICAgICAgaGFzVW5ib3hlZERvdWJsZSA9IG1faml0Lmp1bXAo
KTsKQEAgLTEyMTksNyArMTIxOSw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1
bGF0ZURvdWIKICAgICAgICAgaWYgKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSAhPSBEYXRhRm9ybWF0
SlNJbnRlZ2VyKSB7CiAgICAgICAgICAgICBGUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJU
YWcpKTsKLSAgICAgICAgICAgIGlmICghaXNOdW1iZXJQcmVkaWN0aW9uKHR5cGUpKQorICAgICAg
ICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0
YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CiAgICAgICAgICAgICB1
bmJveERvdWJsZSh0YWdHUFIsIHBheWxvYWRHUFIsIGZwciwgc2NyYXRjaC5mcHIoKSk7CiAgICAg
ICAgICAgICBoYXNVbmJveGVkRG91YmxlID0gbV9qaXQuanVtcCgpOwpAQCAtMTI3MCw3ICsxMjcw
LDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgIHJldHVy
biBJbnZhbGlkRlBSUmVnOwogfQogCi1HUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVDZWxsKE5vZGVJbmRleCBub2RlSW5kZXgpCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4KQogewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKICAgICBkYXRhTG9nKCJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJbmRleCk7CkBAIC0xMjgw
LDcgKzEyODAsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAotICAgIFByZWRpY3RlZFR5cGUgdHlw
ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlSW5kZXgpLm1fdHlwZTsKKyAgICBTcGVjdWxhdGVkVHlw
ZSB0eXBlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGVJbmRleCkubV90eXBlOwogICAgIE5vZGUmIG5v
ZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIg
PSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9n
ZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwpAQCAtMTI5OSw3ICsxMjk5LDcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICB9CiAKICAgICAg
ICAgQVNTRVJUKChpbmZvLnNwaWxsRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpIHx8IGluZm8uc3Bp
bGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Q2VsbCk7Ci0gICAgICAgIGlmICghaXNDZWxsUHJlZGlj
dGlvbih0eXBlKSkKKyAgICAgICAgaWYgKCFpc0NlbGxTcGVjdWxhdGlvbih0eXBlKSkKICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZShKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJl
Z2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgIEdQUlJl
ZyBncHIgPSBhbGxvY2F0ZSgpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBh
eWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKQEAgLTEzMjAsNyArMTMyMCw3IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICAgICAgR1BSUmVnIHBh
eWxvYWRHUFIgPSBpbmZvLnBheWxvYWRHUFIoKTsKICAgICAgICAgbV9ncHJzLmxvY2sodGFnR1BS
KTsKICAgICAgICAgbV9ncHJzLmxvY2socGF5bG9hZEdQUik7Ci0gICAgICAgIGlmICghaXNDZWxs
UHJlZGljdGlvbih0eXBlKSkKKyAgICAgICAgaWYgKCFpc0NlbGxTcGVjdWxhdGlvbih0eXBlKSkK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BS
LCBwYXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAg
ICAgIG1fZ3Bycy51bmxvY2sodGFnR1BSKTsKICAgICAgICAgbV9ncHJzLnJlbGVhc2UodGFnR1BS
KTsKQEAgLTEzNDQsMTIgKzEzNDQsMTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbAogICAgIHJldHVybiBJbnZhbGlkR1BSUmVnOwogfQogCi1HUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCitHUFJS
ZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjQm9vbGVhbihOb2RlSW5kZXggbm9kZUluZGV4KQog
ewogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBkYXRhTG9nKCJTcGVjQm9vbEAl
ZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKLSAgICBQcmVkaWN0ZWRUeXBlIHR5cGUgPSBtX3N0
YXRlLmZvck5vZGUobm9kZUluZGV4KS5tX3R5cGU7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9
IG1fc3RhdGUuZm9yTm9kZShub2RlSW5kZXgpLm1fdHlwZTsKICAgICBOb2RlJiBub2RlID0gbV9q
aXQuZ3JhcGgoKVtub2RlSW5kZXhdOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0
ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0g
bV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwpAQCAtMTM3NCw3ICsxMzc0LDcgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogCiAgICAgICAgIEFTU0VS
VCgoaW5mby5zcGlsbEZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKSB8fCBpbmZvLnNwaWxsRm9ybWF0
KCkgPT0gRGF0YUZvcm1hdEJvb2xlYW4pOwogCi0gICAgICAgIGlmICghaXNCb29sZWFuUHJlZGlj
dGlvbih0eXBlKSkKKyAgICAgICAgaWYgKCFpc0Jvb2xlYW5TcGVjdWxhdGlvbih0eXBlKSkKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZShKSVRDb21w
aWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpKSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVh
bFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKSk7CiAKICAgICAg
ICAgR1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CkBAIC0xMzk2LDcgKzEzOTYsNyBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgICAgIEdQUlJlZyBwYXlsb2Fk
R1BSID0gaW5mby5wYXlsb2FkR1BSKCk7CiAgICAgICAgIG1fZ3Bycy5sb2NrKHRhZ0dQUik7CiAg
ICAgICAgIG1fZ3Bycy5sb2NrKHBheWxvYWRHUFIpOwotICAgICAgICBpZiAoIWlzQm9vbGVhblBy
ZWRpY3Rpb24odHlwZSkpCisgICAgICAgIGlmICghaXNCb29sZWFuU3BlY3VsYXRpb24odHlwZSkp
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQ
UiwgcGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOwog
CiAgICAgICAgIG1fZ3Bycy51bmxvY2sodGFnR1BSKTsKQEAgLTE0MzksMTYgKzE0MzksMTYgQEAg
SklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcgogICAgIHJldHVybiBub3RO
dW1iZXI7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShO
b2RlJiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJlZGljdGlvbkNoZWNrZXIg
cHJlZGljdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aXR5KE5vZGUmIG5vZGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBTcGVjdWxhdGVkVHlw
ZUNoZWNrZXIgc3BlY3VsYXRlZFR5cGVDaGVja2VyKQogewotICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBv
cDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgU3BlY0NlbGxPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKKyAgICBTcGVjQ2VsbE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQy
KCkpOwogICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAgR1BSUmVnIG9wMkdQUiA9
IG9wMi5ncHIoKTsKICAgICAKLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICBpZiAoIXNwZWN1bGF0ZWRUeXBlQ2hlY2tl
cihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7Ci0gICAgaWYgKCFw
cmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpCisg
ICAgaWYgKCFzcGVjdWxhdGVkVHlwZUNoZWNrZXIobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLm1fdHlwZSkpCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNv
dXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5jaGlsZDIoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BS
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoY2xhc3NJbmZvKSkpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRo
aXMsIG9wMik7CkBAIC0xNDY2LDkgKzE0NjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0RXF1YWxpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09i
amVjdE9yT3RoZXJFcXVhbGl0eSgKICAgICBFZGdlIGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxk
LAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVk
aWN0aW9uQ2hlY2spCisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFNwZWN1bGF0ZWRU
eXBlQ2hlY2tlciBzcGVjdWxhdGVkVHlwZUNoZWNrZXIpCiB7Ci0gICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgU3BlY0NlbGxPcGVyYW5kIG9wMSh0aGlz
LCBsZWZ0Q2hpbGQpOwogICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsK
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIApAQCAtMTQ3Nyw3ICsxNDc3LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIEdQUlJlZyBv
cDJQYXlsb2FkR1BSID0gb3AyLnBheWxvYWRHUFIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgIAotICAgIGlmICghcHJlZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9y
Tm9kZShsZWZ0Q2hpbGQpLm1fdHlwZSkpIHsKKyAgICBpZiAoIXNwZWN1bGF0ZWRUeXBlQ2hlY2tl
cihtX3N0YXRlLmZvck5vZGUobGVmdENoaWxkKS5tX3R5cGUpKSB7CiAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soCiAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDFHUFIpLCBsZWZ0Q2hpbGQuaW5kZXgoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0
cigKQEAgLTE0OTMsOSArMTQ5Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RUb09iamUKICAgICAKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCBy
aWdodENoaWxkIG11c3QgYmUgYSBjZWxsLiBJZiB0aGUgQ0ZBIGNhbiB0ZWxsIHVzIHRoYXQgdGhl
CiAgICAgLy8gcHJvb2YsIHdoZW4gZmlsdGVyZWQgb24gY2VsbCwgZGVtb25zdHJhdGVzIHRoYXQg
d2UgaGF2ZSBhbiBvYmplY3Qgb2YgdGhlIGRlc2lyZWQgdHlwZQotICAgIC8vIChwcmVkaWN0aW9u
Q2hlY2soKSB3aWxsIHRlc3QgZm9yIEZpbmFsT2JqZWN0IG9yIEFycmF5LCBjdXJyZW50bHkpLCB0
aGVuIHdlIGNhbiBza2lwIHRoZQorICAgIC8vIChzcGVjdWxhdGlvbkNoZWNrKCkgd2lsbCB0ZXN0
IGZvciBGaW5hbE9iamVjdCBvciBBcnJheSwgY3VycmVudGx5KSwgdGhlbiB3ZSBjYW4gc2tpcCB0
aGUKICAgICAvLyBzcGVjdWxhdGlvbi4KLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRl
LmZvck5vZGUocmlnaHRDaGlsZCkubV90eXBlICYgUHJlZGljdENlbGwpKSB7CisgICAgaWYgKCFz
cGVjdWxhdGVkVHlwZUNoZWNrZXIobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAm
IFNwZWNDZWxsKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgQmFk
VHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZC5p
bmRleCgpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMTUxNCw3ICsxNTE0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIAogICAgIC8v
IFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBub3QgYmUg
YSBjZWxsLiBDaGVjayBpZiB0aGF0IGlzIGVub3VnaCB0bwogICAgIC8vIHByb3ZlIHRoYXQgaXQg
aXMgZWl0aGVyIG51bGwgb3IgdW5kZWZpbmVkLgotICAgIGlmICghaXNPdGhlclByZWRpY3Rpb24o
bV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIH5QcmVkaWN0Q2VsbCkpIHsKKyAg
ICBpZiAoIWlzT3RoZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUocmlnaHRDaGlsZCkubV90
eXBlICYgflNwZWNDZWxsKSkgewogICAgICAgICBtX2ppdC5tb3ZlKG9wMlRhZ0dQUiwgcmVzdWx0
R1BSKTsKICAgICAgICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAg
ICAgICAgIApAQCAtMTUzNywxMyArMTUzNywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlT2JqZWN0VG9PYmplCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9i
amVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KAogICAgIEVkZ2UgbGVmdENoaWxkLCBFZGdlIHJp
Z2h0Q2hpbGQsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsCi0gICAgY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8sIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rpb25DaGVjaykKKyAgICBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbywgU3BlY3VsYXRlZFR5cGVDaGVja2VyIHNwZWN1bGF0ZWRU
eXBlQ2hlY2tlcikKIHsKICAgICBOb2RlJiBicmFuY2hOb2RlID0gYXQoYnJhbmNoTm9kZUluZGV4
KTsKICAgICBCbG9ja0luZGV4IHRha2VuID0gYnJhbmNoTm9kZS50YWtlbkJsb2NrSW5kZXgoKTsK
ICAgICBCbG9ja0luZGV4IG5vdFRha2VuID0gYnJhbmNoTm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgo
KTsKICAgICAKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywgbGVmdENoaWxkKTsK
KyAgICBTcGVjQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgSlNWYWx1ZU9w
ZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQpOwogICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgCkBAIC0xNTUyLDcgKzE1NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUGVlcEhvbGVPYmplCiAgICAgR1BSUmVnIG9wMlBheWxvYWRHUFIgPSBvcDIucGF5bG9hZEdQ
UigpOwogICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgCi0gICAgaWYg
KCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKGxlZnRDaGlsZCkubV90eXBlKSkgewor
ICAgIGlmICghc3BlY3VsYXRlZFR5cGVDaGVja2VyKG1fc3RhdGUuZm9yTm9kZShsZWZ0Q2hpbGQp
Lm1fdHlwZSkpIHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIEJhZFR5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZC5pbmRleCgp
LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMTU2OCw5ICsxNTY4LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIAogICAgIC8vIFdlIGtu
b3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIElm
IHRoZSBDRkEgY2FuIHRlbGwgdXMgdGhhdCB0aGUKICAgICAvLyBwcm9vZiwgd2hlbiBmaWx0ZXJl
ZCBvbiBjZWxsLCBkZW1vbnN0cmF0ZXMgdGhhdCB3ZSBoYXZlIGFuIG9iamVjdCBvZiB0aGUgZGVz
aXJlZCB0eXBlCi0gICAgLy8gKHByZWRpY3Rpb25DaGVjaygpIHdpbGwgdGVzdCBmb3IgRmluYWxP
YmplY3Qgb3IgQXJyYXksIGN1cnJlbnRseSksIHRoZW4gd2UgY2FuIHNraXAgdGhlCisgICAgLy8g
KHNwZWN1bGF0aW9uQ2hlY2soKSB3aWxsIHRlc3QgZm9yIEZpbmFsT2JqZWN0IG9yIEFycmF5LCBj
dXJyZW50bHkpLCB0aGVuIHdlIGNhbiBza2lwIHRoZQogICAgIC8vIHNwZWN1bGF0aW9uLgotICAg
IGlmICghcHJlZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUg
JiBQcmVkaWN0Q2VsbCkpIHsKKyAgICBpZiAoIXNwZWN1bGF0ZWRUeXBlQ2hlY2tlcihtX3N0YXRl
LmZvck5vZGUocmlnaHRDaGlsZCkubV90eXBlICYgU3BlY0NlbGwpKSB7CiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJUYWdHUFIs
IG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLmluZGV4KCksCiAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hQdHIoCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUGVlcEhvbGVPYmplCiAgICAgCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJy
YW5jaCwgcmlnaHRDaGlsZCBtdXN0IG5vdCBiZSBhIGNlbGwuIENoZWNrIGlmIHRoYXQgaXMgZW5v
dWdoIHRvCiAgICAgLy8gcHJvdmUgdGhhdCBpdCBpcyBlaXRoZXIgbnVsbCBvciB1bmRlZmluZWQu
Ci0gICAgaWYgKGlzT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5t
X3R5cGUgJiB+UHJlZGljdENlbGwpKQorICAgIGlmIChpc090aGVyU3BlY3VsYXRpb24obV9zdGF0
ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIH5TcGVjQ2VsbCkpCiAgICAgICAgIHJpZ2h0
Tm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIGp1bXAobm90VGFrZW4s
IEZvcmNlSnVtcCk7CkBAIC0xNjE5LDggKzE2MTksOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW50ZWdlckNvbXBhCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVD
b21wYXJlKE5vZGUmIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpEb3VibGVDb25kaXRpb24gY29uZGl0
aW9uKQogewotICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOwotICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkp
OworICAgIFNwZWNEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBT
cGVjRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgCiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1t
MzIoMSksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOwpAQCAtMTY4NSwxOCArMTY4NSwxOCBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlTG9naWNhbE5vdChOb2RlJiBub2RlKQogewogICAgIGlmIChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVCb29sZWFuKCkpIHsKLSAgICAgICAgU3BlY3VsYXRlQm9vbGVh
bk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWNCb29sZWFu
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCB2YWx1ZSk7CiAgICAgICAgIG1faml0LnhvcjMyKFRydXN0ZWRJbW0zMigx
KSwgdmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGJvb2xlYW5SZXN1bHQocmVz
dWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigp
KSB7Ci0gICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgp
LCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCAhaXNGaW5hbE9iamVjdE9yT3RoZXJQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGls
ZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksICZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAo
YXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKLSAgICAg
ICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksICZKU0FycmF5
OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3Qobm9kZS5jaGlsZDEoKSwgJkpTQXJyYXk6OnNfaW5mbywgIWlzQXJyYXlPck90aGVyU3BlY3Vs
YXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkpIHsKQEAgLTE3MDcsNyArMTcwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9k
ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKLSAgICAgICAgU3BlY3VsYXRl
RG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0Rv
dWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBv
cmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0
aGlzKTsKICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWQu
Z3ByKCkpOwpAQCAtMTc3Miw3ICsxNzcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJy
YW5jaChOb2RlJiBubwogICAgIEJsb2NrSW5kZXggbm90VGFrZW4gPSBub2RlLm5vdFRha2VuQmxv
Y2tJbmRleCgpOwogCiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJv
b2xlYW4oKSkgewotICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0Jvb2xlYW5PcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6UmVzdWx0Q29uZGl0aW9uIGNv
bmRpdGlvbiA9IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvOwogCiAgICAgICAgIGlmICh0YWtlbiA9
PSBuZXh0QmxvY2soKSkgewpAQCAtMTc4Nyw5ICsxNzg3LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6ZW1pdEJyYW5jaChOb2RlJiBubwogCiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4
KTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFs
T2JqZWN0T3JPdGhlcigpKSB7Ci0gICAgICAgIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUu
Y2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlzRmlu
YWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSk7CisgICAgICAgIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCks
IHRha2VuLCBub3RUYWtlbiwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlzRmluYWxPYmplY3RP
ck90aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
OwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlP
ck90aGVyKCkpIHsKLSAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEo
KSwgdGFrZW4sIG5vdFRha2VuLCAmSlNBcnJheTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAg
ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFrZW4sIG5vdFRha2VuLCAm
SlNBcnJheTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewogICAgICAgICBpZiAoYXQobm9kZS5jaGls
ZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAgICAgICBib29sIGludmVy
dCA9IGZhbHNlOwpAQCAtMTgwNCw3ICsxODA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dEJyYW5jaChOb2RlJiBubwogICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmFuY2hUZXN0MzIoaW52ZXJ0
ID8gTWFjcm9Bc3NlbWJsZXI6Olplcm8gOiBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWUu
Z3ByKCksIHRha2VuKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVj
RG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEZQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAgICAgYnJhbmNoRG91YmxlTm9uWmVy
byh2YWx1ZS5mcHIoKSwgc2NyYXRjaC5mcHIoKSwgdGFrZW4pOwogICAgICAgICB9CkBAIC0xODY0
LDExICsxODY0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEdldExvY2FsOiB7Ci0gICAgICAgIFByZWRpY3Rl
ZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24o
KTsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUudmFyaWFibGVBY2Nl
c3NEYXRhKCktPnByZWRpY3Rpb24oKTsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBi
bG9jaygpLT52YWx1ZXNBdEhlYWQub3BlcmFuZChub2RlLmxvY2FsKCkpOwogCiAgICAgICAgIC8v
IElmIHdlIGhhdmUgbm8gcHJlZGljdGlvbiBmb3IgdGhpcyBsb2NhbCwgdGhlbiBkb24ndCBhdHRl
bXB0IHRvIGNvbXBpbGUuCi0gICAgICAgIGlmIChwcmVkaWN0aW9uID09IFByZWRpY3ROb25lKSB7
CisgICAgICAgIGlmIChwcmVkaWN0aW9uID09IFNwZWNOb25lKSB7CiAgICAgICAgICAgICB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTg5MCw3ICsx
ODkwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgICAgIGlm
IChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkgeworICAgICAgICAgICAgaWYgKGlzSW50
MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkgewogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHQodGhpcyk7CiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CiAKQEAgLTE5MDIsNyAr
MTkwMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGlzQXJy
YXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKSB7CisgICAgICAgICAgICBpZiAoaXNBcnJheVNwZWN1
bGF0aW9uKHByZWRpY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxv
YWRGb3Iobm9kZS5sb2NhbCgpKSwgcmVzdWx0LmdwcigpKTsKIApAQCAtMTkxNCw3ICsxOTE0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoaXNCb29sZWFuUHJl
ZGljdGlvbihwcmVkaWN0aW9uKSkgeworICAgICAgICAgICAgaWYgKGlzQm9vbGVhblNwZWN1bGF0
aW9uKHByZWRpY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3Iobm9kZS5sb2NhbCgpKSwgcmVzdWx0LmdwcigpKTsKIApAQCAtMTkzOSw3ICsxOTM5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBtX2dwcnMu
cmV0YWluKHRhZy5ncHIoKSwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySlMpOwogCiAgICAg
ICAgIERhdGFGb3JtYXQgZm9ybWF0OwotICAgICAgICBpZiAoaXNDZWxsUHJlZGljdGlvbih2YWx1
ZS5tX3R5cGUpCisgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpCiAg
ICAgICAgICAgICAmJiAhbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+aXNDYXB0dXJlZCgpKQog
ICAgICAgICAgICAgZm9ybWF0ID0gRGF0YUZvcm1hdEpTQ2VsbDsKICAgICAgICAgZWxzZQpAQCAt
MTk5Niw3ICsxOTk2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAKICAgICAgICAgaWYgKCFub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0Nh
cHR1cmVkKCkpIHsKICAgICAgICAgICAgIGlmIChub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5z
aG91bGRVc2VEb3VibGVGb3JtYXQoKSkgewotICAgICAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICAgICAgU3Bl
Y0RvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUuZnByKCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4
KTsKICAgICAgICAgICAgICAgICAvLyBJbmRpY2F0ZSB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vz
c2FyeSB0byByZXRyaWV2ZSB0aGUgdmFsdWUgb2YKQEAgLTIwMDUsNyArMjAwNSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICB2YWx1
ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9IFZhbHVlU291cmNlKERv
dWJsZUluUmVnaXN0ZXJGaWxlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG5vZGUudmFyaWFi
bGVBY2Nlc3NEYXRhKCktPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmIChtX2dlbmVyYXRpb25J
bmZvW2F0KG5vZGUuY2hpbGQxKCkpLnZpcnR1YWxSZWdpc3RlcigpXS5yZWdpc3RlckZvcm1hdCgp
ID09IERhdGFGb3JtYXREb3VibGUpIHsKICAgICAgICAgICAgICAgICBEb3VibGVPcGVyYW5kIHZh
bHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91
YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsK
QEAgLTIwMTMsMjUgKzIwMTMsMjUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChu
b2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoRG91YmxlSW5SZWdpc3RlckZpbGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlzSW50MzJQ
cmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1
bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdl
ck9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2Nh
bCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAg
ICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChub2RlLmxvY2FsKCkpID0g
VmFsdWVTb3VyY2UoSW50MzJJblJlZ2lzdGVyRmlsZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNBcnJheVByZWRpY3Rpb24ocHJlZGlj
dGVkVHlwZSkpIHsKLSAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihw
cmVkaWN0ZWRUeXBlKSkgeworICAgICAgICAgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBjZWxsKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0gY2Vs
bC5ncHIoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICAgICAgICAgIGlmICghaXNB
cnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQog
ICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BS
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihj
ZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKICAgICAgICAg
ICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICAgICAgdmFsdWVT
b3VyY2VSZWZlcmVuY2VGb3JPcGVyYW5kKG5vZGUubG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShDZWxs
SW5SZWdpc3RlckZpbGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKLSAg
ICAgICAgICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNo
aWxkMSgpKTsKKyAgICAgICAgICAgIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0ZWRU
eXBlKSkgeworICAgICAgICAgICAgICAgIFNwZWNCb29sZWFuT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVlLmdwcigp
LCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKICAgICAgICAgICAgICAg
ICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2VS
ZWZlcmVuY2VGb3JPcGVyYW5kKG5vZGUubG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShCb29sZWFuSW5S
ZWdpc3RlckZpbGUpOwpAQCAtMjEyOCw3ICsyMTI4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVja051bWJl
cjogewotICAgICAgICBpZiAoIWlzTnVtYmVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKICAgICAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCwgb3AxLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCkBAIC0yMTY3LDggKzIxNjcsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhp
cywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRo
aXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAgICBTcGVjRG91YmxlT3BlcmFuZCBvcDEodGhpcywg
bm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWNEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2Rl
LmNoaWxkMigpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogCiAg
ICAgICAgIEZQUlJlZyByZWcxID0gb3AxLmZwcigpOwpAQCAtMjE5OSw3ICsyMTk5LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjRG91YmxlT3BlcmFuZCBvcDEodGhp
cywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAg
ICAgICAgIAogICAgICAgICBtX2ppdC5hYnNEb3VibGUob3AxLmZwcigpLCByZXN1bHQuZnByKCkp
OwpAQCAtMjIyOCw4ICsyMjI4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAg
ICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAg
ICAgU3BlY0RvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBT
cGVjRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wTGlzdCBkb25lOwpAQCAtMjI2Miw3ICsyMjYyLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcml0
aFNxcnQ6IHsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5j
aGlsZDEoKSk7CisgICAgICAgIFNwZWNEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogICAgICAgICAK
ICAgICAgICAgbV9qaXQuc3FydERvdWJsZShvcDEuZnByKCksIHJlc3VsdC5mcHIoKSk7CkBAIC0y
MzMyLDggKzIzMzIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKCFh
dChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJs
ZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7Ci0gICAg
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOyAv
LyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9iYWJseSBiZSByaWdo
dC4KKyAgICAgICAgaWYgKCFhdChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2Vy
KCkgfHwgIWlzQWN0aW9uYWJsZUFycmF5U3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpKSkgeworICAgICAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS5jaGlsZDEoKSk7IC8vIFNhdmUgYSByZWdpc3Rlciwgc3BlY3VsYXRlIGNlbGwuIFdlJ2xsIHBy
b2JhYmx5IGJlIHJpZ2h0LgogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhp
cywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CiAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlUYWdHUFIgPSBwcm9wZXJ0eS50YWdHUFIo
KTsKQEAgLTIzNTUsNyArMjM1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGF0
KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CisgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgPT0gU3BlY1N0cmluZykgewogICAg
ICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgICAgICBpZiAo
IW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM2Myw2MyArMjM2
Myw2MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVJbnQ4QXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFy
cmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXpl
b2YoaW50OF90KSwgaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJy
YXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRC
eVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0
b3IoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCksIGlzSW50OEFycmF5U3BlY3VsYXRpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0No
ZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgp
LT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50MTZfdCksIGlzSW50MTZB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBO
b1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25l
ZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9m
KGludDE2X3QpLCBpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFy
cmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29t
cGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAg
ICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNj
cmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQzMl90KSwgaXNJbnQzMkFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVT
cGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7Cisg
ICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0
YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50MzJfdCksIGlzSW50
MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
ID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBT
aWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZVVpbnQ4QXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwg
c2l6ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5
cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29t
cGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJh
eURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4QXJyYXlTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJh
eVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFy
cmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OENsYW1wZWRBcnJh
eSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9m
KHVpbnQ4X3QpLCBpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxU
eXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNv
bXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xh
bXBlZEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhDbGFt
cGVkQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywg
VW5zaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgp
KSB7Ci0gICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xv
YmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKHVpbnQxNl90
KSwgaXNVaW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWND
aGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxP
bkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3Io
KSwgbm9kZSwgc2l6ZW9mKHVpbnQxNl90KSwgaXNVaW50MTZBcnJheVNwZWN1bGF0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWND
aGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAg
ICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKSkgewot
ICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERh
dGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50MzJfdCksIGlz
VWludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tz
LCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRU
eXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCksIG5v
ZGUsIHNpemVvZih1aW50MzJfdCksIGlzVWludDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sg
OiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAg
ICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYg
KGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGZsb2F0KSwgaXNGbG9h
dDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
ID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsK
KyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2Jh
bERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBp
c0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hl
Y2tzKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRB
cnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJheSht
X2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9m
KGRvdWJsZSksIGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFy
cmF5U3BlY0NoZWNrcyk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRB
cnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwg
c2l6ZW9mKGRvdWJsZSksIGlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxs
VHlwZWRBcnJheVNwZWNDaGVja3MpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIApA
QCAtMjQzOCw5ICsyNDM4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4gYXJyYXksIGFuZCB0aGF0IHBy
b3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwgbV92ZWN0b3JMZW5ndGgpLgog
ICAgICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUgYmFzZSB0byBiZSB0eXBlIGFycmF5
LCB3ZSBjYW4gc2tpcCB0aGUgY2hlY2suCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBTcGVj
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlJl
ZyBiYXNlUmVnID0gYmFzZS5ncHIoKTsKLSAgICAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBp
ZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkKICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogICAgICAgICB9
CkBAIC0yNDY2LDkgKzI0NjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIo
KSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCi0gICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxl
TXV0YWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpCisg
ICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5U3BlY3VsYXRpb24oYXQobm9k
ZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKQogICAgICAgICAgICAgfHwgYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7IC8vIFNhdmUgYSByZWdpc3Rlciwg
c3BlY3VsYXRlIGNlbGwuIFdlJ2xsIHByb2JhYmx5IGJlIHJpZ2h0LgorICAgICAgICAgICAgU3Bl
Y0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7IC8vIFNhdmUgYSByZWdpc3Rl
ciwgc3BlY3VsYXRlIGNlbGwuIFdlJ2xsIHByb2JhYmx5IGJlIHJpZ2h0LgogICAgICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAgICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKQEAgLTI0ODQsNjYgKzI0ODQsNjYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNo
aWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlSW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJh
c2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoaW50OF90KSwgaXNJbnQ4QXJy
YXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9U
eXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRU
eXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXko
bV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHBy
b3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoaW50OF90KSwgaXNJbnQ4QXJyYXlTcGVjdWxhdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5
cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7
CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkp
IHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xv
YmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5n
cHIoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWND
aGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAg
ICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgp
LT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9k
ZSwgc2l6ZW9mKGludDE2X3QpLCBpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBB
bGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBp
ZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
YnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAg
IGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQz
MkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6
ZW9mKGludDMyX3QpLCBpc0ludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVk
QXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVz
Y3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDMy
X3QpLCBpc0ludDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3Bl
Y0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRv
cigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBp
c1VpbnQ4QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tz
LCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50
VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJh
c2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhB
cnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8g
Tm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNp
Z25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlVWludDhDbGFtcGVkQXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9y
SW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3Jp
cHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3Qp
LCBpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5
U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5LCBDbGFtcFJvdW5kaW5nKTsKKyAgICAgICAg
ICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51
aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCks
IG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OENsYW1wZWRBcnJheVNwZWN1bGF0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNw
ZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXksIENs
YW1wUm91bmRpbmcpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQxNkFycmF5KCkpIHsKLSAg
ICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0
YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCks
IG5vZGUsIHNpemVvZih1aW50MTZfdCksIGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVj
ayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAg
ICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9k
ZSwgc2l6ZW9mKHVpbnQxNl90KSwgaXNVaW50MTZBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6
IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
YXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKSkgewotICAgICAg
ICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9k
ZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDog
QWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWlu
dDMyQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBz
aXplb2YodWludDMyX3QpLCBpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxs
VHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBp
ZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
YnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgewotICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+
ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9k
ZSwgc2l6ZW9mKGZsb2F0KSwgaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFs
bFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZs
b2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3Io
KSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihmbG9hdCksIGlzRmxv
YXQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3Mp
OwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5
KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJv
cGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihkb3VibGUpLCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlU
eXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOworICAgICAgICAgICAgY29t
cGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2
NEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6
ZW9mKGRvdWJsZSksIGlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlw
ZWRBcnJheVNwZWNDaGVja3MpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIApAQCAt
MjU2OCw3ICsyNTY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJv
cGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAg
ICAgICAgIC8vIElmIHdlIGhhdmUgcHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXks
IHdlIGNhbiBza2lwIHRoZSBjaGVjay4KLSAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0Fy
cmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJy
YXk6OnNfaW5mbykpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwpAQCAtMjYxNCwxMCArMjYxNCwx
MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgQVNTRVJUKGlzQWN0aW9uYWJs
ZU11dGFibGVBcnJheVByZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7
CisgICAgICAgIEFTU0VSVChpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihhdChu
b2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKTsKICAgICAgICAgQVNTRVJUKGF0KG5vZGUuY2hp
bGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSk7CiAKLSAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdElu
dDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKIAogICAgICAgICBpZiAo
YXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsKQEAgLTI3MTEs
OCArMjcxMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAoIW5vZGUuYWRqdXN0ZWRSZWZDb3VudCgp
KSB7Ci0gICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOwotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywg
bm9kZS5jaGlsZDIoKSk7CisgICAgICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlz
LCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKICAgICAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogICAg
ICAgICAgICAgCkBAIC0yNzI2LDggKzI3MjYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAg
ICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAg
U3BlY0NlbGxPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9
IGFyZ3VtZW50LmdwcigpOwogICAgICAgICAKQEAgLTI3NDEsOCArMjc0MSw4IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNh
c2UgUmVnRXhwVGVzdDogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0
aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBu
b2RlLmNoaWxkMigpKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAg
ICAgICBHUFJSZWcgYXJndW1lbnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgCkBAIC0y
NzU2LDcgKzI3NTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5UHVzaDogewotICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9y
YWdlKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZUxlbmd0aCh0aGlzKTsKQEAg
LTI3NjksNyArMjc2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgCiAgICAgICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZVRhZ0dQUiwg
bm9kZS5jaGlsZDIoKSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHN0b3JhZ2VHUFIs
IHN0b3JhZ2VMZW5ndGhHUFIpOwogCi0gICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgIGlmICghaXNBcnJh
eVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQogICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5
OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VH
UFIpOwpAQCAtMjc5NSw3ICsyNzk1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJheVBvcDogewotICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAg
ICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHZhbHVlVGFnKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3JhcnkgdmFsdWVQYXls
b2FkKHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKQEAgLTI4MDcs
NyArMjgwNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgR1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogICAgICAgICBHUFJSZWcg
c3RvcmFnZUxlbmd0aEdQUiA9IHN0b3JhZ2VMZW5ndGguZ3ByKCk7CiAgICAgICAgIAotICAgICAg
ICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQorICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKQEAgLTI5NTMsNyArMjk1Myw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAg
IG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUgJiB+KFByZWRpY3ROdW1iZXIgfCBQcmVkaWN0Qm9vbGVhbikpKSB7
CisgICAgICAgIGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUgJiB+
KFNwZWNOdW1iZXIgfCBTcGVjQm9vbGVhbikpKSB7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9w
MVRhZ0dQUiwgcmVzdWx0VGFnR1BSKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9h
ZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0zMDU5LDE1ICsz
MDU5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgQ29udmVydFRoaXM6IHsKLSAgICAgICAgaWYgKGlzT2JqZWN0
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgewotICAg
ICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOworICAgICAgICBpZiAoaXNPYmplY3RTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICAgICAgU3BlY0NlbGxPcGVyYW5kIHRoaXNW
YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgdGhpc1ZhbHVlKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUodGhpc1ZhbHVlLmdw
cigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCks
IG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBpZiAoaXNPdGhlclByZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGlj
dGlvbigpKSkgeworICAgICAgICBpZiAoaXNPdGhlclNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQx
KCkpLnByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNWYWx1
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNo
KHRoaXMpOwogICAgICAgICAgICAgCkBAIC0zMDg2LDExICszMDg2LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIAotICAgICAgICBpZiAoaXNPYmplY3RQcmVkaWN0aW9uKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IHRoaXNWYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKGlzT2JqZWN0U3Bl
Y3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAg
U3BlY0NlbGxPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIEdQUlJlZyB0aGlzVmFsdWVHUFIgPSB0aGlzVmFsdWUuZ3ByKCk7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICghaXNPYmplY3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKCFpc09iamVjdFNwZWN1bGF0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwodGhp
c1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpF
cXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8p
KSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
dGhpc1ZhbHVlKTsKQEAgLTMxMjEsNyArMzEyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gdGhlbiB3ZSBzcGVjdWxhdGUgYmVjYXVzZSB3
ZSB3YW50IHRvIGdldCByZWNvbXBpbGVkIGlmIGl0IGlzbid0IChzaW5jZQogICAgICAgICAvLyBv
dGhlcndpc2Ugd2UnZCBzdGFydCB0YWtpbmcgc2xvdyBwYXRoIGEgbG90KS4KICAgICAgICAgCi0g
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNhbGxlZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
KyAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGNhbGxlZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNj
cmF0Y2godGhpcyk7CiAgICAgICAgIApAQCAtMzE5MCw3ICszMTkwLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBHZXRTY29wZWRWYXI6IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGVD
aGFpbih0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVyYW5kIHNjb3Bl
Q2hhaW4odGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRU
YWcodGhpcyk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAg
ICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwpAQCAtMzIwMiw3ICsz
MjAyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQdXRTY29wZWRWYXI6IHsKLSAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgc2NvcGVDaGFpbih0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAg
U3BlY0NlbGxPcGVyYW5kIHNjb3BlQ2hhaW4odGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAg
IEdQUlRlbXBvcmFyeSBzY3JhdGNoUmVnaXN0ZXIodGhpcyk7CiAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaFJlZ2lzdGVyLmdwcigpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHNjb3BlQ2hhaW4uZ3ByKCksIEpTVmFyaWFibGVPYmplY3Q6Om9m
ZnNldE9mUmVnaXN0ZXJzKCkpLCBzY3JhdGNoR1BSKTsKQEAgLTMyMjAsOCArMzIyMCw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoaXNDZWxsUHJlZGljdGlvbihhdChu
b2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7Ci0gICAgICAgICAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBpZiAoaXNDZWxsU3Bl
Y3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAg
U3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMsIGJhc2UpOwogICAgICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgICAgICAKQEAgLTMyNzQsOCArMzI3NCw4
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoaXNDZWxsUHJlZGljdGlv
bihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7Ci0gICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBpZiAoaXND
ZWxsU3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgeworICAgICAg
ICAgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKIApAQCAtMzMy
MCwxMCArMzMyMCwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgfQogCiAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDogewotICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0Fy
cmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJy
YXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CkBAIC0zMzQ0LDEzICszMzQ0LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIEdldFN0cmluZ0xlbmd0aDogewotICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAg
ICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgCiAgICAgICAgIEdQUlJlZyBiYXNlR1BS
ID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsK
ICAgICAgICAgCi0gICAgICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICBpZiAoIWlzU3RyaW5nU3BlY3VsYXRp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VH
UFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8p
KSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOwpAQCAt
MzM2MCw0NCArMzM2MCw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgfQogCiAgICAgY2FzZSBHZXRJbnQ4QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29t
cGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNj
cmlwdG9yKCksIG5vZGUsICFpc0ludDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0
aChtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50
OEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRJbnQxNkFycmF5TGVuZ3RoOiB7
Ci0gICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+
aW50MTZBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50MTZBcnJheVByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlR2V0
VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9y
KCksIG5vZGUsICFpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdldElu
dDMyQXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9q
aXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNJbnQzMkFy
cmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7Cisg
ICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+aW50
MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgR2V0VWludDhBcnJheUxlbmd0aDogewotICAgICAgICBjb21waWxlR2V0VHlw
ZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCks
IG5vZGUsICFpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50OEFycmF5
U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAg
ICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRVaW50OENsYW1wZWRBcnJheUxlbmd0aDog
ewotICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50OENsYW1wZWRBcnJh
eVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAg
ICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4
Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50OENsYW1wZWRBcnJheVNwZWN1
bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgR2V0VWludDE2QXJyYXlMZW5ndGg6IHsKLSAgICAgICAg
Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJh
eURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzVWludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJy
YXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgbm9k
ZSwgIWlzVWludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdldFVpbnQzMkFy
cmF5TGVuZ3RoOiB7Ci0gICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmds
b2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc1VpbnQzMkFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAg
ICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMy
QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBHZXRGbG9hdDMyQXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5
cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9y
KCksIG5vZGUsICFpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aCht
X2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzRmxv
YXQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRGbG9hdDY0QXJyYXlMZW5n
dGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0
YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0Zsb2F0NjRBcnJheVByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBj
b21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJh
eURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ICAgICBjYXNlIENoZWNrRnVuY3Rpb246IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
ZnVuY3Rpb24odGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBm
dW5jdGlvbih0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRDYWNoZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIG5vZGUuZnVuY3Rpb24oKSkpOwogICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzQwNiwx
MiArMzQwNiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgaWYgKHZhbHVlLm1fc3Ry
dWN0dXJlLmlzU3Vic2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkKLSAgICAgICAgICAgICYmIGlz
Q2VsbFByZWRpY3Rpb24odmFsdWUubV90eXBlKSkgeworICAgICAgICAgICAgJiYgaXNDZWxsU3Bl
Y3VsYXRpb24odmFsdWUubV90eXBlKSkgewogICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxl
SW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAg
IFNwZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAKICAg
ICAgICAgQVNTRVJUKG5vZGUuc3RydWN0dXJlU2V0KCkuc2l6ZSgpKTsKICAgICAgICAgCkBAIC0z
NDQ2LDcgKzM0NDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgfQogCiAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6IHsKLSAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmFkZFdlYWtSZWZlcmVuY2VUcmFu
c2l0aW9uKApAQCAtMzQ2Niw3ICszNDY2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3Jh
Z2U6IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgYmFzZSk7CiAgICAgICAgIAogICAg
ICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CkBAIC0zNTAzLDcgKzM1MDMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNh
c2UgUHV0QnlPZmZzZXQ6IHsKICNpZiBFTkFCTEUoR0dDKSB8fCBFTkFCTEUoV1JJVEVfQkFSUklF
Ul9QUk9GSUxJTkcpCi0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS5jaGlsZDIoKSk7CisgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQyKCkpOwogI2VuZGlmCiAgICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hp
bGQzKCkpOwpAQCAtMzUyNiw3ICszNTI2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkOiB7Ci0gICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAg
ICAgIFNwZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBK
U1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIApAQCAtMzU0NSw3ICszNTQ1LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2Ug
UHV0QnlJZERpcmVjdDogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGls
ZDIoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAKQEAg
LTM1OTcsNyArMzU5Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICB9CiAKICAgICBjYXNlIENoZWNrSGFzSW5zdGFuY2U6IHsKLSAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0Nl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSBzdHJ1Y3R1cmUodGhpcyk7CiAKICAgICAgICAgLy8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1w
bGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZScuCkBAIC0zODY0LDcgKzM4NjQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBj
YXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogewotICAgICAgICBBU1NFUlQoIWlzRW1wdHlQ
cmVkaWN0aW9uKAorICAgICAgICBBU1NFUlQoIWlzRW1wdHlTcGVjdWxhdGlvbigKICAgICAgICAg
ICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKICAgICAgICAgICAgICAgICBtX2ppdC5n
cmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpOwog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApAQCAtMzg4MSw3ICszODgxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAg
ICAgICAKLSAgICAgICAgaWYgKCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYgKCFpc0Vt
cHR5U3BlY3VsYXRpb24oCiAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVy
YW5kKAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVy
Rm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soCkBAIC0zOTQyLDcgKzM5NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5
bG9hZC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIo
KTsKICAgICAgICAgCi0gICAgICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24oCisgICAgICAgIGlm
ICghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVz
KCkub3BlcmFuZCgKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNS
ZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKS5tX3R5cGUpKSB7CiAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDI4LDcgKzEwMjgsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJ
CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgIGRhdGFMb2coIlNwZWNJbnRAJWQg
ICAiLCBub2RlSW5kZXgpOwogI2VuZGlmCi0gICAgUHJlZGljdGVkVHlwZSB0eXBlID0gbV9zdGF0
ZS5mb3JOb2RlKG5vZGVJbmRleCkubV90eXBlOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBt
X3N0YXRlLmZvck5vZGUobm9kZUluZGV4KS5tX3R5cGU7CiAgICAgTm9kZSYgbm9kZSA9IGF0KG5v
ZGVJbmRleCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmly
dHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25J
bmZvW3ZpcnR1YWxSZWdpc3Rlcl07CkBAIC0xMDg2LDcgKzEwODYsNyBAQCBHUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJCiAgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBp
cyBhbiBpbnRlZ2VyLgogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAg
bV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgaWYgKCFpc0ludDMyUHJlZGljdGlvbih0eXBlKSkK
KyAgICAgICAgaWYgKCFpc0ludDMyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVt
YmVyUmVnaXN0ZXIpKTsKICAgICAgICAgaW5mby5maWxsSlNWYWx1ZShncHIsIERhdGFGb3JtYXRK
U0ludGVnZXIpOwogICAgICAgICAvLyBJZiAhc3RyaWN0IHdlJ3JlIGRvbmUsIHJldHVybi4KQEAg
LTExNzAsMTIgKzExNzAsMTIgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
SW50UwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQorRlBSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY0RvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQogewogI2lmIERGR19FTkFC
TEUoREVCVUdfVkVSQk9TRSkKICAgICBkYXRhTG9nKCJTcGVjRG91YmxlQCVkICAgIiwgbm9kZUlu
ZGV4KTsKICNlbmRpZgotICAgIFByZWRpY3RlZFR5cGUgdHlwZSA9IG1fc3RhdGUuZm9yTm9kZShu
b2RlSW5kZXgpLm1fdHlwZTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV9zdGF0ZS5mb3JO
b2RlKG5vZGVJbmRleCkubV90eXBlOwogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwog
ICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3Rl
cigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFs
UmVnaXN0ZXJdOwpAQCAtMTI2MCw3ICsxMjYwLDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlRG91YgogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBqc1ZhbHVlR3By
LCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogCi0gICAgICAgIGlmICghaXNOdW1i
ZXJQcmVkaWN0aW9uKHR5cGUpKQorICAgICAgICBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24odHlw
ZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGpz
VmFsdWVHcHIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6
Olplcm8sIGpzVmFsdWVHcHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlcikpOwogCiAg
ICAgICAgIC8vIEZpcnN0LCBpZiB3ZSBnZXQgaGVyZSB3ZSBoYXZlIGEgZG91YmxlIGVuY29kZWQg
YXMgYSBKU1ZhbHVlCkBAIC0xMzIzLDEyICsxMzIzLDEyIEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJ
VDo6ZmlsbFNwZWN1bGF0ZURvdWIKICAgICByZXR1cm4gSW52YWxpZEZQUlJlZzsKIH0KIAotR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4
KQorR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY0NlbGwoTm9kZUluZGV4IG5vZGVJbmRl
eCkKIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZGF0YUxvZygiU3BlY0Nl
bGxAJWQgICAiLCBub2RlSW5kZXgpOwogI2VuZGlmCi0gICAgUHJlZGljdGVkVHlwZSB0eXBlID0g
bV9zdGF0ZS5mb3JOb2RlKG5vZGVJbmRleCkubV90eXBlOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5
cGUgPSBtX3N0YXRlLmZvck5vZGUobm9kZUluZGV4KS5tX3R5cGU7CiAgICAgTm9kZSYgbm9kZSA9
IGF0KG5vZGVJbmRleCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5v
ZGUudmlydHVhbFJlZ2lzdGVyKCk7CiAgICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVy
YXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rlcl07CkBAIC0xMzU4LDcgKzEzNTgsNyBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZ3ByKTsKIAogICAgICAg
ICBpbmZvLmZpbGxKU1ZhbHVlKGdwciwgRGF0YUZvcm1hdEpTKTsKLSAgICAgICAgaWYgKCFpc0Nl
bGxQcmVkaWN0aW9uKHR5cGUpKQorICAgICAgICBpZiAoIWlzQ2VsbFNwZWN1bGF0aW9uKHR5cGUp
KQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIp
LCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IGdwciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIGluZm8uZmlsbEpTVmFs
dWUoZ3ByLCBEYXRhRm9ybWF0SlNDZWxsKTsKICAgICAgICAgcmV0dXJuIGdwcjsKQEAgLTEzNzQs
NyArMTM3NCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAg
ICBjYXNlIERhdGFGb3JtYXRKUzogewogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
ICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKLSAgICAgICAgaWYgKCFpc0NlbGxQcmVkaWN0aW9u
KHR5cGUpKQorICAgICAgICBpZiAoIWlzQ2VsbFNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBub2RlSW5kZXgs
IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoZ3ByLCBEYXRh
Rm9ybWF0SlNDZWxsKTsKICAgICAgICAgcmV0dXJuIGdwcjsKQEAgLTEzOTgsMTIgKzEzOTgsMTIg
QEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgIHJldHVybiBJ
bnZhbGlkR1BSUmVnOwogfQogCi1HUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVC
b29sZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCitHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjQm9vbGVhbihOb2RlSW5kZXggbm9kZUluZGV4KQogewogI2lmIERGR19FTkFCTEUoREVCVUdf
VkVSQk9TRSkKICAgICBkYXRhTG9nKCJTcGVjQm9vbEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5k
aWYKLSAgICBQcmVkaWN0ZWRUeXBlIHR5cGUgPSBtX3N0YXRlLmZvck5vZGUobm9kZUluZGV4KS5t
X3R5cGU7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlSW5k
ZXgpLm1fdHlwZTsKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKICAgICBWaXJ0dWFs
UmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBH
ZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXTsK
QEAgLTE0MzMsNyArMTQzMyw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUJvb2wKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpLCBncHIpOwogCiAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoZ3ByLCBEYXRh
Rm9ybWF0SlMpOwotICAgICAgICBpZiAoIWlzQm9vbGVhblByZWRpY3Rpb24odHlwZSkpIHsKKyAg
ICAgICAgaWYgKCFpc0Jvb2xlYW5TcGVjdWxhdGlvbih0eXBlKSkgewogICAgICAgICAgICAgbV9q
aXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSks
IGdwcik7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KGdwciksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgZ3ByLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSksIFNwZWN1
bGF0aW9uUmVjb3ZlcnkoQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2ssIGdwciwgSW52YWxpZEdQUlJl
ZykpOwogICAgICAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxp
bnQzMl90PihWYWx1ZUZhbHNlKSksIGdwcik7CkBAIC0xNDUyLDcgKzE0NTIsNyBAQCBHUFJSZWcg
U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAgY2FzZSBEYXRhRm9ybWF0SlM6
IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAgICAgICAgIG1fZ3Bycy5sb2Nr
KGdwcik7Ci0gICAgICAgIGlmICghaXNCb29sZWFuUHJlZGljdGlvbih0eXBlKSkgeworICAgICAg
ICBpZiAoIWlzQm9vbGVhblNwZWN1bGF0aW9uKHR5cGUpKSB7CiAgICAgICAgICAgICBtX2ppdC54
b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgZ3By
KTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3By
KSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCBncHIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSwgU3BlY3VsYXRp
b25SZWNvdmVyeShCb29sZWFuU3BlY3VsYXRpb25DaGVjaywgZ3ByLCBJbnZhbGlkR1BSUmVnKSk7
CiAgICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMy
X3Q+KFZhbHVlRmFsc2UpKSwgZ3ByKTsKQEAgLTE0OTksMTkgKzE0OTksMTkgQEAgSklUQ29tcGls
ZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcgogICAgIHJldHVybiBub3ROdW1iZXI7CiB9
CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2Rl
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlv
bkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUm
IG5vZGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBTcGVjdWxhdGVkVHlwZUNoZWNrZXIg
c3BlY3VsYXRlZFR5cGVDaGVja2VyKQogewotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDIodGhpcywg
bm9kZS5jaGlsZDIoKSk7CisgICAgU3BlY0NlbGxPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICBTcGVjQ2VsbE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKICAgICAKICAgICBHUFJSZWcgb3AxR1BS
ID0gb3AxLmdwcigpOwogICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAKLSAgICBpZiAoIXByZWRpY3Rpb25DaGVj
ayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICBpZiAoIXNwZWN1
bGF0ZWRUeXBlQ2hlY2tlcihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBu
b2RlLmNoaWxkMSgpLmluZGV4KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKLSAg
ICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90
eXBlKSkKKyAgICBpZiAoIXNwZWN1bGF0ZWRUeXBlQ2hlY2tlcihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDIoKSkubV90eXBlKSkKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlUmVncyhvcDJHUFIpLCBub2RlLmNoaWxkMigpLmluZGV4KCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQ
UiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKGNsYXNzSW5mbykpKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWxzZUNh
c2UgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIG9w
MkdQUik7CkBAIC0xNTI2LDkgKzE1MjYsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
T2JqZWN0RXF1YWxpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVj
dE9yT3RoZXJFcXVhbGl0eSgKICAgICBFZGdlIGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxkLAot
ICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0
aW9uQ2hlY2spCisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFNwZWN1bGF0ZWRUeXBl
Q2hlY2tlciBzcGVjdWxhdGVkVHlwZUNoZWNrZXIpCiB7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgU3BlY0NlbGxPcGVyYW5kIG9wMSh0aGlzLCBs
ZWZ0Q2hpbGQpOwogICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdodENoaWxkKTsKICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIApAQCAtMTUzNiw3ICsxNTM2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIEdQUlJlZyBvcDJH
UFIgPSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAg
ICAKLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobGVmdENoaWxkKS5t
X3R5cGUpKSB7CisgICAgaWYgKCFzcGVjdWxhdGVkVHlwZUNoZWNrZXIobV9zdGF0ZS5mb3JOb2Rl
KGxlZnRDaGlsZCkubV90eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbGVmdENoaWxkLmluZGV4KCksCiAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0xNTUyLDkgKzE1NTIsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgCiAgICAgLy8gV2Uga25vdyB0
aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4gSWYgdGhl
IENGQSBjYW4gdGVsbCB1cyB0aGF0IHRoZQogICAgIC8vIHByb29mLCB3aGVuIGZpbHRlcmVkIG9u
IGNlbGwsIGRlbW9uc3RyYXRlcyB0aGF0IHdlIGhhdmUgYW4gb2JqZWN0IG9mIHRoZSBkZXNpcmVk
IHR5cGUKLSAgICAvLyAocHJlZGljdGlvbkNoZWNrKCkgd2lsbCB0ZXN0IGZvciBGaW5hbE9iamVj
dCBvciBBcnJheSwgY3VycmVudGx5KSwgdGhlbiB3ZSBjYW4gc2tpcCB0aGUKKyAgICAvLyAoc3Bl
Y3VsYXRpb25DaGVjaygpIHdpbGwgdGVzdCBmb3IgRmluYWxPYmplY3Qgb3IgQXJyYXksIGN1cnJl
bnRseSksIHRoZW4gd2UgY2FuIHNraXAgdGhlCiAgICAgLy8gc3BlY3VsYXRpb24uCi0gICAgaWYg
KCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIFBy
ZWRpY3RDZWxsKSkgeworICAgIGlmICghc3BlY3VsYXRlZFR5cGVDaGVja2VyKG1fc3RhdGUuZm9y
Tm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiBTcGVjQ2VsbCkpIHsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0
Q2hpbGQuaW5kZXgoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTE1NzMsNyAr
MTU3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAK
ICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3Qg
bm90IGJlIGEgY2VsbC4gQ2hlY2sgaWYgdGhhdCBpcyBlbm91Z2ggdG8KICAgICAvLyBwcm92ZSB0
aGF0IGl0IGlzIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZC4KLSAgICBpZiAoIWlzT3RoZXJQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiB+UHJlZGljdENlbGwp
KSB7CisgICAgaWYgKCFpc090aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hp
bGQpLm1fdHlwZSAmIH5TcGVjQ2VsbCkpIHsKICAgICAgICAgbV9qaXQubW92ZShvcDJHUFIsIHJl
c3VsdEdQUik7CiAgICAgICAgIG1faml0LmFuZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOwogICAgICAgICAKQEAgLTE1OTYsMTMg
KzE1OTYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9yT3RoZXJF
cXVhbGl0eSgKICAgICBFZGdlIGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxkLCBOb2RlSW5kZXgg
YnJhbmNoTm9kZUluZGV4LAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcmVkaWN0
aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8sIFNwZWN1bGF0ZWRUeXBlQ2hlY2tlciBzcGVjdWxhdGVkVHlwZUNoZWNrZXIpCiB7CiAgICAg
Tm9kZSYgYnJhbmNoTm9kZSA9IGF0KGJyYW5jaE5vZGVJbmRleCk7CiAgICAgQmxvY2tJbmRleCB0
YWtlbiA9IGJyYW5jaE5vZGUudGFrZW5CbG9ja0luZGV4KCk7CiAgICAgQmxvY2tJbmRleCBub3RU
YWtlbiA9IGJyYW5jaE5vZGUubm90VGFrZW5CbG9ja0luZGV4KCk7CiAgICAgCi0gICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7CisgICAgU3BlY0NlbGxPcGVyYW5k
IG9wMSh0aGlzLCBsZWZ0Q2hpbGQpOwogICAgIEpTVmFsdWVPcGVyYW5kIG9wMih0aGlzLCByaWdo
dENoaWxkKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgIApAQCAtMTYxMCw3
ICsxNjEwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAg
IEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAKLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUo
bGVmdENoaWxkKS5tX3R5cGUpKSB7CisgICAgaWYgKCFzcGVjdWxhdGVkVHlwZUNoZWNrZXIobV9z
dGF0ZS5mb3JOb2RlKGxlZnRDaGlsZCkubV90eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAogICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbGVmdENoaWxk
LmluZGV4KCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0xNjI2LDkgKzE2MjYs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgCiAgICAg
Ly8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEg
Y2VsbC4gSWYgdGhlIENGQSBjYW4gdGVsbCB1cyB0aGF0IHRoZQogICAgIC8vIHByb29mLCB3aGVu
IGZpbHRlcmVkIG9uIGNlbGwsIGRlbW9uc3RyYXRlcyB0aGF0IHdlIGhhdmUgYW4gb2JqZWN0IG9m
IHRoZSBkZXNpcmVkIHR5cGUKLSAgICAvLyAocHJlZGljdGlvbkNoZWNrKCkgd2lsbCB0ZXN0IGZv
ciBGaW5hbE9iamVjdCBvciBBcnJheSwgY3VycmVudGx5KSwgdGhlbiB3ZSBjYW4gc2tpcCB0aGUK
KyAgICAvLyAoc3BlY3VsYXRpb25DaGVjaygpIHdpbGwgdGVzdCBmb3IgRmluYWxPYmplY3Qgb3Ig
QXJyYXksIGN1cnJlbnRseSksIHRoZW4gd2UgY2FuIHNraXAgdGhlCiAgICAgLy8gc3BlY3VsYXRp
b24uCi0gICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQp
Lm1fdHlwZSAmIFByZWRpY3RDZWxsKSkgeworICAgIGlmICghc3BlY3VsYXRlZFR5cGVDaGVja2Vy
KG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiBTcGVjQ2VsbCkpIHsKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9w
MkdQUiksIHJpZ2h0Q2hpbGQuaW5kZXgoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigK
QEAgLTE2NDQsNyArMTY0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZU9iamUKICAgICAKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdo
dENoaWxkIG11c3Qgbm90IGJlIGEgY2VsbC4gQ2hlY2sgaWYgdGhhdCBpcyBlbm91Z2ggdG8KICAg
ICAvLyBwcm92ZSB0aGF0IGl0IGlzIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZC4KLSAgICBpZiAo
aXNPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIH5Q
cmVkaWN0Q2VsbCkpCisgICAgaWYgKGlzT3RoZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
cmlnaHRDaGlsZCkubV90eXBlICYgflNwZWNDZWxsKSkKICAgICAgICAgcmlnaHROb3RDZWxsLmxp
bmsoJm1faml0KTsKICAgICBlbHNlIHsKICAgICAgICAganVtcChub3RUYWtlbiwgRm9yY2VKdW1w
KTsKQEAgLTE2NzgsOCArMTY3OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnRl
Z2VyQ29tcGEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUNvbXBhcmUoTm9k
ZSYgbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiBjb25kaXRpb24pCiB7Ci0g
ICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgU3Bl
Y0RvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIFNwZWNEb3VibGVP
cGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwogICAgIAogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlVHJ1ZSksIHJl
c3VsdC5ncHIoKSk7CkBAIC0xNzM5LDExICsxNzM5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2Fs
Tm90KE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7Ci0gICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVy
TG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCAhaXNGaW5h
bE9iamVjdE9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKTsKKyAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hp
bGQxKCksICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1
bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRl
QXJyYXlPck90aGVyKCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KG5vZGUuY2hpbGQxKCksICZKU0FycmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21w
aWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgJkpTQXJyYXk6OnNfaW5m
bywgIWlzQXJyYXlPck90aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKQEAgLTE3NTUsNyArMTc1NSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlTnVtYmVy
KCkpIHsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNo
aWxkMSgpKTsKKyAgICAgICAgU3BlY0RvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGls
ZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihW
YWx1ZUZhbHNlKSwgcmVzdWx0LmdwcigpKTsKQEAgLTE3NjYsMTAgKzE3NjYsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faml0LmdldFByZWRpY3Rp
b24obm9kZS5jaGlsZDEoKSk7Ci0gICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlv
bikpIHsKLSAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBtX2ppdC5nZXRTcGVjdWxhdGlvbihub2RlLmNoaWxkMSgpKTsKKyAgICBpZiAoaXNC
b29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpIHsKKyAgICAgICAgaWYgKGlzQm9vbGVhblNw
ZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAg
ICAgICAgICBTcGVjQm9vbGVhbk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9qaXQubW92ZSh2YWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKQEAg
LTE4NDEsOSArMTg0MSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSYg
bm8KICAgICBCbG9ja0luZGV4IG5vdFRha2VuID0gbm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgoKTsK
ICAgICAKICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmpl
Y3RPck90aGVyKCkpIHsKLSAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGls
ZDEoKSwgdGFrZW4sIG5vdFRha2VuLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCAhaXNGaW5hbE9i
amVjdE9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKTsKKyAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFr
ZW4sIG5vdFRha2VuLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCAhaXNGaW5hbE9iamVjdE9yT3Ro
ZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAg
ICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3Ro
ZXIoKSkgewotICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0
YWtlbiwgbm90VGFrZW4sICZKU0FycmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBlbWl0
T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4sICZKU0Fy
cmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGJvb2wgaW52ZXJ0ID0g
ZmFsc2U7CkBAIC0xODU4LDcgKzE4NTgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0QnJh
bmNoKE5vZGUmIG5vCiAgICAgICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyYW5jaFRlc3QzMihpbnZlcnQgPyBN
YWNyb0Fzc2VtYmxlcjo6WmVybyA6IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB2YWx1ZS5ncHIo
KSwgdGFrZW4pOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIFNwZWNEb3Vi
bGVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgRlBSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgICAgICBicmFuY2hEb3VibGVOb25aZXJvKHZh
bHVlLmZwcigpLCBzY3JhdGNoLmZwcigpLCB0YWtlbik7CiAgICAgICAgIH0KQEAgLTE4NzAsMTAg
KzE4NzAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlJiBubwogICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAg
R1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBib29sIHBy
ZWRpY3RCb29sZWFuID0gaXNCb29sZWFuUHJlZGljdGlvbihtX2ppdC5nZXRQcmVkaWN0aW9uKG5v
ZGUuY2hpbGQxKCkpKTsKKyAgICAgICAgYm9vbCBwcmVkaWN0Qm9vbGVhbiA9IGlzQm9vbGVhblNw
ZWN1bGF0aW9uKG1faml0LmdldFNwZWN1bGF0aW9uKG5vZGUuY2hpbGQxKCkpKTsKICAgICAKICAg
ICAgICAgaWYgKHByZWRpY3RCb29sZWFuKSB7Ci0gICAgICAgICAgICBpZiAoaXNCb29sZWFuUHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgICAg
ICAgICAgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKSB7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlJlc3VsdENv
bmRpdGlvbiBjb25kaXRpb24gPSBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybzsKICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsKQEAgLTE5
NDAsMTEgKzE5NDAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgR2V0TG9jYWw6IHsKLSAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlv
bigpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS52YXJpYWJsZUFj
Y2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9
IGJsb2NrKCktPnZhbHVlc0F0SGVhZC5vcGVyYW5kKG5vZGUubG9jYWwoKSk7CiAKICAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBubyBwcmVkaWN0aW9uIGZvciB0aGlzIGxvY2FsLCB0aGVuIGRvbid0IGF0
dGVtcHQgdG8gY29tcGlsZS4KLSAgICAgICAgaWYgKHByZWRpY3Rpb24gPT0gUHJlZGljdE5vbmUp
IHsKKyAgICAgICAgaWYgKHByZWRpY3Rpb24gPT0gU3BlY05vbmUpIHsKICAgICAgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xOTY2LDcg
KzE5NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmIChpc0ludDMyUHJlZGljdGlvbih2YWx1ZS5tX3R5cGUpKSB7CisgICAgICAgICAgICBp
ZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpIHsKICAgICAgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwogICAg
ICAgICAgICAgICAgIApAQCAtMTk5MCw5ICsxOTkwLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKICAgICAgICAg
aWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAg
IGZvcm1hdCA9IERhdGFGb3JtYXRKUzsKLSAgICAgICAgZWxzZSBpZiAoaXNDZWxsUHJlZGljdGlv
bih2YWx1ZS5tX3R5cGUpKQorICAgICAgICBlbHNlIGlmIChpc0NlbGxTcGVjdWxhdGlvbih2YWx1
ZS5tX3R5cGUpKQogICAgICAgICAgICAgZm9ybWF0ID0gRGF0YUZvcm1hdEpTQ2VsbDsKLSAgICAg
ICAgZWxzZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbih2YWx1ZS5tX3R5cGUpKQorICAgICAgICBl
bHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpKQogICAgICAgICAgICAg
Zm9ybWF0ID0gRGF0YUZvcm1hdEpTQm9vbGVhbjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
Zm9ybWF0ID0gRGF0YUZvcm1hdEpTOwpAQCAtMjA0OSw3ICsyMDQ5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgaWYgKCFub2Rl
LnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0NhcHR1cmVkKCkpIHsKICAgICAgICAgICAgIGlmIChu
b2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSkgewotICAg
ICAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGls
ZDEoKSk7CisgICAgICAgICAgICAgICAgU3BlY0RvdWJsZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVEb3VibGUodmFsdWUuZnBy
KCksIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAg
ICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgICAgICAvLyBJbmRpY2F0
ZSB0aGF0IGl0J3Mgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byByZXRyaWV2ZSB0aGUgdmFsdWUgb2YK
QEAgLTIwNTksMjYgKzIwNTksMjYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG5vZGUudmFyaWFibGVB
Y2Nlc3NEYXRhKCktPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBpZiAo
aXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHByZWRpY3RlZFR5cGUgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5hcmd1bWVu
dEF3YXJlUHJlZGljdGlvbigpOworICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihw
cmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5k
IHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG1faml0LnN0b3Jl
MzIodmFsdWUuZ3ByKCksIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSkpOwog
ICAgICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgICAg
ICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9IFZhbHVlU291
cmNlKEludDMySW5SZWdpc3RlckZpbGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUp
KSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGlmIChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGVk
VHlwZSkpIHsKKyAgICAgICAgICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKICAgICAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7
Ci0gICAgICAgICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlTcGVj
dWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhjZWxsR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7
CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21w
aWxlSW5kZXgpOwogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFu
ZChub2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoQ2VsbEluUmVnaXN0ZXJGaWxlKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpc0Jvb2xl
YW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgU3BlY3VsYXRl
Qm9vbGVhbk9wZXJhbmQgYm9vbGVhbih0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICAgICAg
ICAgIFNwZWNCb29sZWFuT3BlcmFuZCBib29sZWFuKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGJvb2xlYW4uZ3ByKCksIEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29t
cGlsZUluZGV4KTsKICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJh
bmQobm9kZS5sb2NhbCgpKSA9IFZhbHVlU291cmNlKEJvb2xlYW5JblJlZ2lzdGVyRmlsZSk7CkBA
IC0yMTc2LDcgKzIxNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrTnVtYmVyOiB7Ci0gICAgICAgIGlm
ICghaXNOdW1iZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKSB7CisgICAgICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkgewogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJ
bnRlZ2VyID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9w
MS5ncHIoKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCkBAIC0yMjExLDggKzIyMTEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGls
ZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hp
bGQyKCkpOworICAgICAgICBTcGVjRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEo
KSk7CisgICAgICAgIFNwZWNEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsK
ICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogCiAgICAgICAgIEZQUlJl
ZyByZWcxID0gb3AxLmZwcigpOwpAQCAtMjI0Myw3ICsyMjQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgCi0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICBTcGVjRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGls
ZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIAogICAg
ICAgICBtX2ppdC5hYnNEb3VibGUob3AxLmZwcigpLCByZXN1bHQuZnByKCkpOwpAQCAtMjI3Miw4
ICsyMjcyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgU3BlY0RvdWJs
ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjRG91YmxlT3Bl
cmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgb3AxKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCBkb25lOwpAQCAtMjMwNiw3ICsyMzA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcml0aFNxcnQ6IHsKLSAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgICAgIFNwZWNEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAg
ICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogICAgICAgICAKICAgICAgICAgbV9q
aXQuc3FydERvdWJsZShvcDEuZnByKCksIHJlc3VsdC5mcHIoKSk7CkBAIC0yMzc2LDcgKzIzNzYs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKCFhdChub2RlLmNoaWxk
MigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZUFycmF5UHJlZGlj
dGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlmICghYXQo
bm9kZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVB
cnJheVNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKICAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAg
ICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKQEAgLTIzOTcsNyArMjM5Nyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSku
cHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSA9PSBTcGVjU3RyaW5nKSB7CiAgICAgICAgICAgICBjb21waWxl
R2V0QnlWYWxPblN0cmluZyhub2RlKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDA1LDYzICsyNDA1LDYzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewotICAgICAg
ICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+
aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50OF90KSwgaXNJbnQ4QXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBl
ZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBl
ZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDhf
dCksIGlzSW50OEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWND
aGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg
IAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlSW50MTZBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlR2V0QnlWYWxP
bkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigp
LCBub2RlLCBzaXplb2YoaW50MTZfdCksIGlzSW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNr
IDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAg
ICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50
MTZBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBpc0ludDE2QXJyYXlT
cGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlw
ZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlw
ZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQz
MkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSht
X2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihp
bnQzMl90KSwgaXNJbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5
U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRv
cigpLCBub2RlLCBzaXplb2YoaW50MzJfdCksIGlzSW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWND
aGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKICAgICAg
ICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKLSAgICAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4
QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OEFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRB
cnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBl
ZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50
OF90KSwgaXNVaW50OEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNw
ZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGls
ZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAg
ICAgICAgCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlVWludDhDbGFtcGVkQXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZUdldEJ5
VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OENsYW1wZWRBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlw
ZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9q
aXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6
ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDog
QWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAg
ICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFs
T25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9y
KCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWND
aGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAg
ICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEo
KS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIGlzVWlu
dDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywg
VW5zaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNw
ZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50
VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBu
b2RlLCBzaXplb2YodWludDMyX3QpLCBpc1VpbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sg
OiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAg
ICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVp
bnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDMyX3QpLCBpc1VpbnQzMkFy
cmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBO
b1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2ln
bmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVGbG9hdDMyQXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25GbG9hdFR5
cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCksIG5v
ZGUsIHNpemVvZihmbG9hdCksIGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBB
bGxUeXBlZEFycmF5U3BlY0NoZWNrcyk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkZs
b2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3Io
KSwgbm9kZSwgc2l6ZW9mKGZsb2F0KSwgaXNGbG9hdDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hl
Y2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcyk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGls
ZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAg
ICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZUdl
dEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihkb3VibGUpLCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlU
eXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOworICAgICAgICAgICAgY29t
cGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0
QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihkb3VibGUpLCBpc0Zsb2F0NjRBcnJheVNw
ZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBl
ZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKICAgICAgICAg
ICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBicmVhazsgICAgICAgICAgICAKQEAgLTI0NjksNyArMjQ2OSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChh
dChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheSgpKTsKIAotICAgICAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVj
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRl
U3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAg
ICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogCkBAIC0yNDgw
LDcgKzI0ODAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQorICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtMjUwMSw3ICsy
NTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghYXQobm9kZS5j
aGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVNdXRhYmxl
QXJyYXlQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAg
ICAgaWYgKCFhdChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlz
QWN0aW9uYWJsZU11dGFibGVBcnJheVNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRp
Y3Rpb24oKSkpIHsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS5j
aGlsZDEoKSk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUuY2hp
bGQyKCkpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMyh0aGlzLCBub2RlLmNoaWxk
MygpKTsKQEAgLTI1MTYsMTEgKzI1MTYsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBT
cGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBT
cGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3Vs
YXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAg
ICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsK
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwot
ICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKKyAgICAgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OwogICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMs
IG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaDIodGhpcyk7CkBAIC0yNTM0LDcgKzI1
MzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
ICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICBpZiAoIWlzQXJndW1lbnRzUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICAgICAgaWYgKCFpc0FyZ3VtZW50c1NwZWN1bGF0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CiAgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksCiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTI1NzgsNjEgKzI1NzgsNjEgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5
KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQu
Z2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5
LmdwcigpLCBub2RlLCBzaXplb2YoaW50OF90KSwgaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWND
aGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAg
ICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgp
LT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2Rl
LCBzaXplb2YoaW50OF90KSwgaXNJbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxU
eXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAo
IW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJl
YWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFy
cmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9m
KGludDE2X3QpLCBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJy
YXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRC
eVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3Jp
cHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3Qp
LCBpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0No
ZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAg
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlSW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5n
cHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQzMl90KSwgaXNJbnQzMkFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlw
ZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlw
ZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1f
aml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJv
cGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQzMl90KSwgaXNJbnQzMkFycmF5U3BlY3VsYXRp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlU
eXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkp
OwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgp
KSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmds
b2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHku
Z3ByKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OEFycmF5UHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVj
Q2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAg
ICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0
YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwg
bm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sg
OiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAg
ICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OENsYW1wZWRBcnJheSgpKSB7Ci0gICAgICAg
ICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+
dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5Lmdwcigp
LCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhDbGFtcGVkQXJyYXlQcmVkaWN0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNw
ZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXksIENs
YW1wUm91bmRpbmcpOworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJh
eShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLCBiYXNl
LmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4Q2xh
bXBlZEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3Ms
IFVuc2lnbmVkVHlwZWRBcnJheSwgQ2xhbXBSb3VuZGluZyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVVaW50MTZBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIGJhc2Uu
Z3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDE2X3QpLCBpc1VpbnQxNkFy
cmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5v
VHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWdu
ZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIo
KSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIGlzVWludDE2QXJyYXlT
cGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlw
ZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRU
eXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVp
bnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJy
YXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIo
KSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50MzJfdCksIGlzVWludDMyQXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBl
ZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5
cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSht
X2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBw
cm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJheVNwZWN1
bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVk
QXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQz
MkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJh
eShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIo
KSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihmbG9hdCksIGlzRmxvYXQzMkFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRB
cnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcyk7CisgICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5m
bG9hdDMyQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2Rl
LCBzaXplb2YoZmxvYXQpLCBpc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFs
bFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3Vs
ZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlw
dG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwg
aXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hl
Y2tzKTsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJv
cGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihkb3VibGUpLCBpc0Zsb2F0NjRBcnJheVNwZWN1bGF0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5
VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKICAgICAgICAgICAgIGlm
ICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgICAKQEAgLTI2NTYsNyArMjY1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMg
YW4gYXJyYXksIGFuZCB0aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3Ig
KDwgbV92ZWN0b3JMZW5ndGgpLgogICAgICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUg
YmFzZSB0byBiZSB0eXBlIGFycmF5LCB3ZSBjYW4gc2tpcCB0aGUgY2hlY2suCi0gICAgICAgIGlm
ICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCisgICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZKU0FycmF5OjpzX2luZm8pKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKQEAgLTI3MDEsMTAg
KzI3MDEsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEFTU0VSVChpc0Fj
dGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rp
b24oKSkpOworICAgICAgICBBU1NFUlQoaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5U3BlY3VsYXRp
b24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7CiAgICAgICAgIEFTU0VSVChhdChu
b2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpOwogCi0gICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWND
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVT
dHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewogICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5v
ZGUsIHNpemVvZihpbnQ4X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJy
YXkpOwpAQCAtMjc5Niw4ICsyNzk2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICBpZiAoY29tcGlsZVJlZ0V4cEV4ZWMobm9kZSkpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGlmICghbm9kZS5hZGp1c3RlZFJlZkNvdW50KCkpIHsKLSAg
ICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7
Ci0gICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLmNo
aWxkMigpKTsKKyAgICAgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOworICAgICAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGFyZ3VtZW50KHRoaXMsIG5vZGUu
Y2hpbGQyKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAg
ICAgICAgICAgR1BSUmVnIGFyZ3VtZW50R1BSID0gYXJndW1lbnQuZ3ByKCk7CiAgICAgICAgICAg
ICAKQEAgLTI4MTEsOCArMjgxMSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAgIFNw
ZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjQ2Vs
bE9wZXJhbmQgYXJndW1lbnQodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIGFyZ3VtZW50R1BSID0gYXJndW1l
bnQuZ3ByKCk7CiAgICAgICAgIApAQCAtMjgyNSw4ICsyODI1LDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgUmVnRXhwVGVzdDog
ewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OwotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLmNoaWxk
MigpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7
CisgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLmNoaWxkMigpKTsK
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgYXJn
dW1lbnRHUFIgPSBhcmd1bWVudC5ncHIoKTsKICAgICAgICAgCkBAIC0yODQxLDcgKzI4NDEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAg
ICAKICAgICBjYXNlIEFycmF5UHVzaDogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBi
YXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOwogICAg
ICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZUxlbmd0aCh0aGlzKTsKQEAgLTI4NTMsNyArMjg1Myw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAg
ICAgICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZUdQUiwgbm9kZS5jaGlsZDIoKSwgV3Jp
dGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIp
OwogCi0gICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBt
X2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0
b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VHUFIpOwpAQCAtMjg4MSw3ICsyODgxLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBBcnJheVBvcDogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHZhbHVlKHRoaXMpOwogICAgICAgICBH
UFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2VM
ZW5ndGgodGhpcyk7CkBAIC0yODkxLDcgKzI4OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHN0b3JhZ2VMZW5ndGhHUFIgPSBzdG9yYWdlTGVuZ3RoLmdw
cigpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0FycmF5U3BlY3Vs
YXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNo
aWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAg
CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7CkBAIC0zMDE4LDcgKzMwMTgs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAog
ICAgICAgICBvcDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlICYgfihQcmVkaWN0TnVtYmVyIHwgUHJlZGljdEJvb2xl
YW4pKSkKKyAgICAgICAgaWYgKCEobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSAmIH4oU3BlY051bWJlciB8IFNwZWNCb29sZWFuKSkpCiAgICAgICAgICAgICBtX2ppdC5tb3Zl
KG9wMUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm9uWmVybywgb3AxR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwpA
QCAtMzExMiwyMSArMzExMiwyMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENvbnZlcnRUaGlzOiB7Ci0gICAgICAg
IGlmIChpc09iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpIHsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRoaXNWYWx1ZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKGlzT2JqZWN0U3BlY3VsYXRpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgICAgIFNwZWNDZWxs
T3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIHRoaXNWYWx1ZSk7CiAgICAgICAgICAgICBtX2ppdC5tb3Zl
KHRoaXNWYWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGlzT3RoZXJQcmVkaWN0aW9uKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgaWYgKGlzT3RoZXJTcGVjdWxhdGlvbihh
dChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7CiAgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzLCB0aGlzVmFsdWUpOwogICAgICAgICAgICAgR1BSUmVnIHRoaXNW
YWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
ID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFpc090aGVy
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAg
ICAgICAgICAgaWYgKCFpc090aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpIHsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKHRoaXNWYWx1ZUdQ
Uiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgbV9qaXQuYW5kUHRyKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHNjcmF0Y2hHUFIpOwogICAgICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGhpc1ZhbHVl
R1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIocmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oVmFsdWVOdWxsKSkpKTsKQEAgLTMxMzcsMTMgKzMxMzcsMTMgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChpc09iamVjdFByZWRpY3Rpb24oYXQo
bm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgewotICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBpZiAoaXNP
YmplY3RTcGVjdWxhdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7CisgICAg
ICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwog
ICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB0aGlzVmFsdWUpOwogICAgICAg
ICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAg
IEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKLSAgICAgICAg
ICAgIGlmICghaXNPYmplY3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKQorICAgICAgICAgICAgaWYgKCFpc09iamVjdFNwZWN1bGF0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3ModGhpc1ZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgSklUQ29tcGlsZXI6
OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1faml0Lm1vdmUodGhpc1ZhbHVlR1BSLCByZXN1bHRHUFIpOwpAQCAtMzE3MSw3ICsz
MTcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAvLyB0aGVuIHdlIHNwZWN1bGF0ZSBiZWNhdXNlIHdlIHdhbnQgdG8gZ2V0IHJlY29tcGlsZWQg
aWYgaXQgaXNuJ3QgKHNpbmNlCiAgICAgICAgIC8vIG90aGVyd2lzZSB3ZSdkIHN0YXJ0IHRha2lu
ZyBzbG93IHBhdGggYSBsb3QpLgogICAgICAgICAKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgY2FsbGVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjQ2VsbE9wZXJhbmQg
Y2FsbGVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgCkBA
IC0zMjQwLDcgKzMyNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdldFNjb3BlZFZhcjogewotICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzY29wZUNoYWluKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OworICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgc2NvcGVDaGFpbih0aGlzLCBub2RlLmNoaWxkMSgp
KTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhzY29wZUNoYWluLmdwcigpLCBKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJl
Z2lzdGVycygpKSwgcmVzdWx0R1BSKTsKQEAgLTMyNDksNyArMzI0OSw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgUHV0U2NvcGVkVmFyOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNjb3Bl
Q2hhaW4odGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBzY29w
ZUNoYWluKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aFJlZ2lzdGVyKHRoaXMpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2hSZWdp
c3Rlci5ncHIoKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhz
Y29wZUNoYWluLmdwcigpLCBKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZlJlZ2lzdGVycygpKSwg
c2NyYXRjaEdQUik7CkBAIC0zMjY1LDggKzMyNjUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgaWYgKGlzQ2VsbFByZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGlj
dGlvbigpKSkgewotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBiYXNlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBi
YXNlLmdwcigpOwpAQCAtMzMxNSw4ICszMzE1LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGlmIChpc0NlbGxQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rp
b24oKSkpIHsKLSAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CisgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihhdChub2RlLmNoaWxk
MSgpKS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKIAogICAgICAgICAgICAgR1BSUmVzdWx0IHJlc3VsdCh0aGlzKTsKQEAgLTMzNTYsMTMg
KzMzNTYsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
IH0KIAogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcyk7CiAgICAgICAgIAogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAg
ICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQorICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0
KCkpLCByZXN1bHRHUFIpOwpAQCAtMzM4MCwxMyArMzM4MCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBHZXRTdHJpbmdMZW5n
dGg6IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxk
MSgpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7
CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIAogICAgICAgICBH
UFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIWlzU3RyaW5nUHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc1N0
cmluZ1NwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQog
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU1N0cmluZzo6c19pbmZvKSkp
OwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSwgcmVzdWx0R1BSKTsKQEAgLTMz
OTYsNDMgKzMzOTYsNDMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgIH0KIAogICAgIGNhc2UgR2V0SW50OEFycmF5TGVuZ3RoOiB7Ci0gICAgICAgIGNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3Jp
cHRvcigpLCBub2RlLCAhaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0ludDhB
cnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR2V0SW50MTZBcnJheUxlbmd0aDogewot
ICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmlu
dDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0ludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZUdldFR5
cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigp
LCBub2RlLCAhaXNJbnQxNkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRJbnQz
MkFycmF5TGVuZ3RoOiB7Ci0gICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0
Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50MzJBcnJh
eVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAg
ICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmludDMy
QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0ludDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBjYXNlIEdldFVpbnQ4QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5cGVk
QXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBu
b2RlLCAhaXNVaW50OEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmds
b2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzVWludDhBcnJheVNw
ZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR2V0VWludDhDbGFtcGVkQXJyYXlMZW5ndGg6IHsK
LSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT51
aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzVWludDhDbGFtcGVkQXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAg
ICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENs
YW1wZWRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzVWludDhDbGFtcGVkQXJyYXlTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBjYXNlIEdldFVpbnQxNkFycmF5TGVuZ3RoOiB7Ci0gICAgICAgIGNv
bXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsICFpc1VpbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5
TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUs
ICFpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRVaW50MzJBcnJh
eUxlbmd0aDogewotICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50MzJBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAg
ICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFy
cmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgR2V0RmxvYXQzMkFycmF5TGVuZ3RoOiB7Ci0gICAgICAgIGNvbXBpbGVHZXRUeXBl
ZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigp
LCBub2RlLCAhaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9q
aXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0Zsb2F0
MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR2V0RmxvYXQ2NEFycmF5TGVuZ3Ro
OiB7Ci0gICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEo
KS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNGbG9hdDY0QXJyYXlQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29t
cGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsICFpc0Zsb2F0NjRBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgQ2hlY2tGdW5jdGlvbjogewotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBmdW5j
dGlvbih0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGZ1bmN0
aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENh
Y2hlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGls
ZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS5mdW5jdGlvbigpKSk7CiAgICAgICAg
IG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0zNDQwLDEyICsz
NDQwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICBj
YXNlIENoZWNrU3RydWN0dXJlOiB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1
cmUuaXNTdWJzZXRPZihub2RlLnN0cnVjdHVyZVNldCgpKQotICAgICAgICAgICAgJiYgaXNDZWxs
UHJlZGljdGlvbih2YWx1ZS5tX3R5cGUpKSB7CisgICAgICAgICAgICAmJiBpc0NlbGxTcGVjdWxh
dGlvbih2YWx1ZS5tX3R5cGUpKSB7CiAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRl
eCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3Bl
Y0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIAogICAgICAg
ICBBU1NFUlQobm9kZS5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkpOwogICAgICAgICAKQEAgLTM0ODAs
NyArMzQ4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0U3RydWN0dXJlOiB7Ci0gICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWNDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJSZWcgYmFzZUdQ
UiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5hZGRXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbigKQEAgLTM1MDAsNyArMzUwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgR2V0UHJvcGVydHlT
dG9yYWdlOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5j
aGlsZDEoKSk7CisgICAgICAgIFNwZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2UpOwogICAgICAgICAK
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwpAQCAtMzUzNCw3ICszNTM0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAg
ICBjYXNlIFB1dEJ5T2Zmc2V0OiB7CiAjaWYgRU5BQkxFKEdHQykgfHwgRU5BQkxFKFdSSVRFX0JB
UlJJRVJfUFJPRklMSU5HKQotICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUuY2hpbGQyKCkpOworICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LmNoaWxkMigpKTsKICNlbmRpZgogICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMygpKTsKQEAgLTM1NTUsNyArMzU1NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUHV0QnlJZDogewot
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwor
ICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEdQ
UlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAKQEAgLTM1NzMsNyArMzU3Myw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBj
YXNlIFB1dEJ5SWREaXJlY3Q6IHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUu
Y2hpbGQyKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAg
CkBAIC0zNjIxLDcgKzM2MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUm
IG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOiB7Ci0gICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNw
ZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1w
b3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogCiAgICAgICAgIC8vIFNwZWN1bGF0ZSB0aGF0IGJhc2Ug
J0ltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UnLgpAQCAtMzg4Niw3ICszODg2LDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogICAgICAgICAKLSAgICAgICAgaWYgKCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYg
KCFpc0VtcHR5U3BlY3VsYXRpb24oCiAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMo
KS5vcGVyYW5kKAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1Jl
Z2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpIHsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCkBAIC0zOTQ1LDcgKzM5NDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBpbmRleEdQUiA9IGluZGV4Lmdwcigp
OwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAg
ICAgICAgaWYgKCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYgKCFpc0VtcHR5U3BlY3Vs
YXRpb24oCiAgICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUu
Y29kZU9yaWdpbikpLm1fdHlwZSkpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCkBA
IC00MDM4LDcgKzQwMzgsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDog
ewotICAgICAgICBBU1NFUlQoIWlzRW1wdHlQcmVkaWN0aW9uKAorICAgICAgICBBU1NFUlQoIWlz
RW1wdHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFu
ZCgKICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5v
ZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDExOTYwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsNyArMTA0LDcgQEAgR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3RvcmFnZShOb2RlSQogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICAvLyBNdXN0IGJlIGEgY2VsbDsgZmlsbCBpdCBhcyBhIGNlbGwgYW5kIHRoZW4gcmV0dXJu
IHRoZSBwb2ludGVyLgotICAgICAgICByZXR1cm4gZmlsbFNwZWN1bGF0ZUNlbGwobm9kZUluZGV4
KTsKKyAgICAgICAgcmV0dXJuIGZpbGxTcGVjQ2VsbChub2RlSW5kZXgpOwogICAgIH0KICAgICAg
ICAgCiAgICAgY2FzZSBEYXRhRm9ybWF0U3RvcmFnZTogewpAQCAtMTE0LDcgKzExNCw3IEBAIEdQ
UlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFN0b3JhZ2UoTm9kZUkKICAgICB9CiAgICAgICAgIAog
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmaWxsU3BlY3VsYXRlQ2VsbChub2RlSW5kZXgp
OworICAgICAgICByZXR1cm4gZmlsbFNwZWNDZWxsKG5vZGVJbmRleCk7CiAgICAgfQogfQogCkBA
IC0yOTIsNyArMjkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJl
ZwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIHJoc05vdENlbGw7CiAgICAgYm9vbCBoYWRD
ZWxsQ2hlY2sgPSBmYWxzZTsKLSAgICBpZiAoIWlzS25vd25DZWxsKHZhbHVlVXNlLmluZGV4KCkp
ICYmICFpc0NlbGxQcmVkaWN0aW9uKG1faml0LmdldFByZWRpY3Rpb24odmFsdWVVc2UuaW5kZXgo
KSkpKSB7CisgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5pbmRleCgpKSAmJiAhaXNDZWxs
U3BlY3VsYXRpb24obV9qaXQuZ2V0U3BlY3VsYXRpb24odmFsdWVVc2UuaW5kZXgoKSkpKSB7CiAg
ICAgICAgIGhhZENlbGxDaGVjayA9IHRydWU7CiAgICAgICAgIHJoc05vdENlbGwgPSBtX2ppdC5i
cmFuY2hJZk5vdENlbGwodmFsdWVHUFIpOwogICAgIH0KQEAgLTM1NCw3ICszNTQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoSlNDZWxsCiAjaWYgRU5BQkxFKEdHQykKICAg
ICBKSVRDb21waWxlcjo6SnVtcCByaHNOb3RDZWxsOwogICAgIGJvb2wgaGFkQ2VsbENoZWNrID0g
ZmFsc2U7Ci0gICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5pbmRleCgpKSAmJiAhaXNDZWxs
UHJlZGljdGlvbihtX2ppdC5nZXRQcmVkaWN0aW9uKHZhbHVlVXNlLmluZGV4KCkpKSkgeworICAg
IGlmICghaXNLbm93bkNlbGwodmFsdWVVc2UuaW5kZXgoKSkgJiYgIWlzQ2VsbFNwZWN1bGF0aW9u
KG1faml0LmdldFNwZWN1bGF0aW9uKHZhbHVlVXNlLmluZGV4KCkpKSkgewogICAgICAgICBoYWRD
ZWxsQ2hlY2sgPSB0cnVlOwogICAgICAgICByaHNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKHZhbHVlR1BSKTsKICAgICB9CkBAIC02NTMsNyArNjUzLDcgQEAgR1BSVGVtcG9yYXJ5OjpH
UFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSQogICAgICAgICBtX2dwciA9IG1faml0LT5hbGxvY2F0
ZSgpOwogfQogCi1HUFJUZW1wb3Jhcnk6OkdQUlRlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCogaml0
LCBTcGVjdWxhdGVDZWxsT3BlcmFuZCYgb3AxKQorR1BSVGVtcG9yYXJ5OjpHUFJUZW1wb3Jhcnko
U3BlY3VsYXRpdmVKSVQqIGppdCwgU3BlY0NlbGxPcGVyYW5kJiBvcDEpCiAgICAgOiBtX2ppdChq
aXQpCiAgICAgLCBtX2dwcihJbnZhbGlkR1BSUmVnKQogewpAQCAtNjYzLDcgKzY2Myw3IEBAIEdQ
UlRlbXBvcmFyeTo6R1BSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSkkKICAgICAgICAgbV9ncHIgPSBt
X2ppdC0+YWxsb2NhdGUoKTsKIH0KIAotR1BSVGVtcG9yYXJ5OjpHUFJUZW1wb3JhcnkoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgU3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQmIG9wMSkKK0dQUlRlbXBvcmFy
eTo6R1BSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiBqaXQsIFNwZWNCb29sZWFuT3BlcmFuZCYg
b3AxKQogICAgIDogbV9qaXQoaml0KQogICAgICwgbV9ncHIoSW52YWxpZEdQUlJlZykKIHsKQEAg
LTc0Niw3ICs3NDYsNyBAQCBGUFJUZW1wb3Jhcnk6OkZQUlRlbXBvcmFyeShTcGVjdWxhdGl2ZUpJ
CiAgICAgICAgIG1fZnByID0gbV9qaXQtPmZwckFsbG9jYXRlKCk7CiB9CiAKLUZQUlRlbXBvcmFy
eTo6RlBSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiBqaXQsIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQmIG9wMSkKK0ZQUlRlbXBvcmFyeTo6RlBSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiBqaXQs
IFNwZWNEb3VibGVPcGVyYW5kJiBvcDEpCiAgICAgOiBtX2ppdChqaXQpCiAgICAgLCBtX2ZwcihJ
bnZhbGlkRlBSUmVnKQogewpAQCAtNzU2LDcgKzc1Niw3IEBAIEZQUlRlbXBvcmFyeTo6RlBSVGVt
cG9yYXJ5KFNwZWN1bGF0aXZlSkkKICAgICAgICAgbV9mcHIgPSBtX2ppdC0+ZnByQWxsb2NhdGUo
KTsKIH0KIAotRlBSVGVtcG9yYXJ5OjpGUFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqIGppdCwg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCYgb3AxLCBTcGVjdWxhdGVEb3VibGVPcGVyYW5kJiBvcDIp
CitGUFJUZW1wb3Jhcnk6OkZQUlRlbXBvcmFyeShTcGVjdWxhdGl2ZUpJVCogaml0LCBTcGVjRG91
YmxlT3BlcmFuZCYgb3AxLCBTcGVjRG91YmxlT3BlcmFuZCYgb3AyKQogICAgIDogbV9qaXQoaml0
KQogICAgICwgbV9mcHIoSW52YWxpZEZQUlJlZykKIHsKQEAgLTgxOSwxNCArODE5LDE0IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZURvdWIKICAgICBCbG9ja0luZGV4IHRh
a2VuID0gYnJhbmNoTm9kZS50YWtlbkJsb2NrSW5kZXgoKTsKICAgICBCbG9ja0luZGV4IG5vdFRh
a2VuID0gYnJhbmNoTm9kZS5ub3RUYWtlbkJsb2NrSW5kZXgoKTsKICAgICAKLSAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVE
b3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICBTcGVjRG91YmxlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgU3BlY0RvdWJsZU9wZXJhbmQgb3Ay
KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgIAogICAgIGJyYW5jaERvdWJsZShjb25kaXRpb24s
IG9wMS5mcHIoKSwgb3AyLmZwcigpLCB0YWtlbik7CiAgICAganVtcChub3RUYWtlbik7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUm
IG5vZGUsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBOb2RlSW5kZXgg
YnJhbmNoTm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgU3BlY3VsYXRlZFR5
cGVDaGVja2VyIHNwZWN1bGF0ZWRUeXBlQ2hlY2tlcikKIHsKICAgICBOb2RlJiBicmFuY2hOb2Rl
ID0gYXQoYnJhbmNoTm9kZUluZGV4KTsKICAgICBCbG9ja0luZGV4IHRha2VuID0gYnJhbmNoTm9k
ZS50YWtlbkJsb2NrSW5kZXgoKTsKQEAgLTg0MSwxNSArODQxLDE1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgbm90VGFrZW4gPSB0bXA7CiAgICAg
fQogCi0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwot
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICBT
cGVjQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIFNwZWNDZWxsT3Bl
cmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgCiAgICAgR1BSUmVnIG9wMUdQUiA9
IG9wMS5ncHIoKTsKICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIAotICAgIGlm
ICghcHJlZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
KQorICAgIGlmICghc3BlY3VsYXRlZFR5cGVDaGVja2VyKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCkuaW5kZXgoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AxR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwotICAgIGlmICghcHJlZGljdGlvbkNoZWNrKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMigpKS5tX3R5cGUpKQorICAgIGlmICghc3BlY3VsYXRl
ZFR5cGVDaGVja2VyKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMigpKS5tX3R5cGUpKQogICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMkdQUiksIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AyR1BSLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJ
bmZvKSkpOwogICAgIAogICAgIGJyYW5jaFB0cihjb25kaXRpb24sIG9wMUdQUiwgb3AyR1BSLCB0
YWtlbik7CkBAIC05MDksMzIgKzkwOSwzMiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGVlcEhvbGVCcmFuCiAgICAgICAgICAgICAgICAgICAgIGF0KG5vZGUuY2hpbGQxKCkpLCBhdChu
b2RlLmNoaWxkMigpKSkpIHsKICAgICAgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RF
cXVhbGl0eSgKICAgICAgICAgICAgICAgICAgICAgbm9kZSwgYnJhbmNoTm9kZUluZGV4LCAmSlNG
aW5hbE9iamVjdDo6c19pbmZvLAotICAgICAgICAgICAgICAgICAgICBpc0ZpbmFsT2JqZWN0UHJl
ZGljdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGlzRmluYWxPYmplY3RTcGVjdWxhdGlvbik7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQy
KCkpKSkgewogICAgICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KAog
ICAgICAgICAgICAgICAgICAgICBub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0FycmF5OjpzX2lu
Zm8sCi0gICAgICAgICAgICAgICAgICAgIGlzQXJyYXlQcmVkaWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgaXNBcnJheVNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKQogICAgICAgICAgICAg
ICAgICAgICAgICAmJiBhdChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVj
dE9yT3RoZXIoKSkgewogICAgICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2Jq
ZWN0T3JPdGhlckVxdWFsaXR5KAogICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMSgpLCBu
b2RlLmNoaWxkMigpLCBicmFuY2hOb2RlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICZKU0Zp
bmFsT2JqZWN0OjpzX2luZm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9u
KTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlRmluYWxPYmplY3RPck90aGVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgJiYgYXQobm9k
ZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSkgewogICAgICAgICAgICAg
ICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KAogICAgICAg
ICAgICAgICAgICAgICBub2RlLmNoaWxkMigpLCBub2RlLmNoaWxkMSgpLCBicmFuY2hOb2RlSW5k
ZXgsCi0gICAgICAgICAgICAgICAgICAgICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sIGlzRmluYWxP
YmplY3RQcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgJkpTRmluYWxPYmplY3Q6OnNf
aW5mbywgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
YXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXkoKQogICAgICAgICAgICAgICAg
ICAgICAgICAmJiBhdChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIo
KSkgewogICAgICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhl
ckVxdWFsaXR5KAogICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMSgpLCBub2RlLmNoaWxk
MigpLCBicmFuY2hOb2RlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICZKU0FycmF5OjpzX2lu
Zm8sIGlzQXJyYXlQcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgJkpTQXJyYXk6OnNf
aW5mbywgaXNBcnJheVNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXQobm9k
ZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgJiYgYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXkoKSkgewog
ICAgICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFs
aXR5KAogICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMigpLCBub2RlLmNoaWxkMSgpLCBi
cmFuY2hOb2RlSW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICZKU0FycmF5OjpzX2luZm8sIGlz
QXJyYXlQcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgJkpTQXJyYXk6OnNfaW5mbywg
aXNBcnJheVNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAg
ICAgbm9uU3BlY3VsYXRpdmVQZWVwaG9sZUJyYW5jaChub2RlLCBicmFuY2hOb2RlSW5kZXgsIGNv
bmRpdGlvbiwgb3BlcmF0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk5
MSw3ICs5OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAg
ICAgICAgIGlmIChub2RlSW5kZXggPT0gTm9Ob2RlIHx8IG1faml0LmNvZGVCbG9jaygpLT5hcmd1
bWVudElzQ2FwdHVyZWQoaSkpCiAgICAgICAgICAgICBtX2FyZ3VtZW50c1tpXSA9IFZhbHVlU291
cmNlKFZhbHVlSW5SZWdpc3RlckZpbGUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fy
Z3VtZW50c1tpXSA9IFZhbHVlU291cmNlOjpmb3JQcmVkaWN0aW9uKGF0KG5vZGVJbmRleCkudmFy
aWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBtX2FyZ3VtZW50
c1tpXSA9IFZhbHVlU291cmNlOjpmb3JTcGVjdWxhdGlvbihhdChub2RlSW5kZXgpLnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBtX3N0YXRlLnJl
c2V0KCk7CkBAIC0xMDExLDcgKzEwMTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KEJhc2ljQmxvY2smCiAgICAgICAgIGVsc2UgaWYgKGF0KG5vZGVJbmRleCkudmFyaWFibGVBY2Nl
c3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKQogICAgICAgICAgICAgbV92YXJpYWJs
ZXNbaV0gPSBWYWx1ZVNvdXJjZShEb3VibGVJblJlZ2lzdGVyRmlsZSk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIG1fdmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2U6OmZvclByZWRpY3Rpb24o
YXQobm9kZUluZGV4KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRBd2FyZVByZWRpY3Rp
b24oKSk7CisgICAgICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291cmNlOjpmb3JTcGVj
dWxhdGlvbihhdChub2RlSW5kZXgpLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5hcmd1bWVudEF3YXJl
UHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgbV9sYXN0U2V0T3BlcmFuZCA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7CkBAIC0xMDUzLDExICsxMDUzLDExIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICAgICAgICAgICAgICAgICAg
ICAgIFZhbHVlU291cmNlIHZhbHVlU291cmNlOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGFyZ3VtZW50UG9zaXRpb24uc2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShEb3VibGVJblJlZ2lzdGVy
RmlsZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0ludDMyUHJlZGljdGlv
bihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIGlmIChpc0ludDMyU3BlY3VsYXRpb24oYXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9u
KCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3Vy
Y2UoSW50MzJJblJlZ2lzdGVyRmlsZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChpc0FycmF5UHJlZGljdGlvbihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5U3BlY3VsYXRpb24oYXJndW1lbnRQ
b3NpdGlvbi5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
U291cmNlID0gVmFsdWVTb3VyY2UoQ2VsbEluUmVnaXN0ZXJGaWxlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24oYXJndW1lbnRQb3NpdGlvbi5w
cmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFu
U3BlY3VsYXRpb24oYXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoQm9vbGVhbkluUmVnaXN0
ZXJGaWxlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKFZhbHVlSW5SZWdpc3RlckZpbGUp
OwpAQCAtMTE3NCwxMjkgKzExNzQsMTI5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJn
dW1lbnRUeXBlcygKICAgICAgICAgCiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgVmlydHVh
bFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsK
LSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gdmFyaWFibGVBY2Nlc3NEYXRh
LT5wcmVkaWN0aW9uKCk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3RlZFR5cGUgPSB2
YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKTsKIAogICAgICAgICBKU1ZhbHVlU291cmNl
IHZhbHVlU291cmNlID0gSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0
dWFsUmVnaXN0ZXIpKTsKICAgICAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgaWYg
KGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICBpZiAoaXNJbnQzMlNw
ZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkJlbG93LCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBH
UFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgZWxzZSBpZiAoaXNBcnJheVNw
ZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVt
cCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNv
dXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykp
KTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlw
ZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0
ZW1wLmdwcigpKTsKICAgICAgICAgICAgIG1faml0LnhvclB0cihUcnVzdGVkSW1tMzIoc3RhdGlj
X2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0lu
dDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChp
c0ludDhBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXNJbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKGlzSW50MTZBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigp
Lm1fY2xhc3NJbmZvKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rp
b24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc0ludDMyQXJyYXlTcGVj
dWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNlIGlm
IChpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIH0gZWxz
ZSBpZiAoaXNVaW50OEFycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAg
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRl
eCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIo
KSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCks
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8p
KSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQ4Q2xhbXBlZEFycmF5U3Bl
Y3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1Jl
Z2lzdGVyKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwotICAgICAgICB9
IGVsc2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAoaXNVaW50MTZBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7
CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5n
cHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNl
LCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKS5t
X2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQzMkFycmF5UHJlZGljdGlv
bihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzVWludDMyQXJyYXlTcGVj
dWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoaXNGbG9hdDMyQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkp
OwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1w
LmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xh
c3NJbmZvKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzRmxvYXQ2NEFycmF5U3BlY3Vs
YXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRo
aXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lz
dGVyKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNl
LCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZs
b2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgfQogI2Vsc2UK
LSAgICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICBp
ZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJl
Z2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwotICAgICAgICBlbHNl
IGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICBlbHNlIGlm
IChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
Ojp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGlz
Qm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCisgICAgICAgIH0gZWxzZSBpZiAoaXNC
b29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKLSAgICAgICAgZWxzZSBp
ZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIGVsc2Ug
aWYgKGlzSW50OEFycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0ludDE2QXJyYXlQcmVk
aWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQxNkFycmF5
U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3By
KCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0lu
Zm8pKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0
ZWRUeXBlKSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzSW50MzJBcnJheVNwZWN1bGF0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwotICAgICAg
ICB9IGVsc2UgaWYgKGlzVWludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAg
ICAgICAgfSBlbHNlIGlmIChpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkg
ewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigp
KTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5v
ZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdw
cigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2Us
IG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWlu
dDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNlIGlmIChp
c1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICB9
IGVsc2UgaWYgKGlzVWludDhDbGFtcGVkQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkg
ewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigp
KTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5v
ZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdw
cigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2Us
IG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWlu
dDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAg
fSBlbHNlIGlmIChpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9h
ZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5k
ZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2Rl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFy
cmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwotICAgICAgICB9ICBlbHNlIGlmIChpc1Vp
bnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICB9ICBlbHNlIGlm
IChpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29t
cGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3Jp
cHRvcigpLm1fY2xhc3NJbmZvKSkpOwotICAgICAgICB9ICBlbHNlIGlmIChpc0Zsb2F0MzJBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgfSAgZWxzZSBpZiAoaXNGbG9h
dDMyQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVt
cG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6
OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigp
Lm1fY2xhc3NJbmZvKSkpOwotICAgICAgICB9ICAgZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVk
aWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIH0gICBlbHNlIGlmIChpc0Zsb2F0NjRB
cnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFn
Rm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpDZWxsVGFnKSkpOwpAQCAtMTUxOCw3ICsxNTE4LDcgQEAgVmFsdWVSZWNvdmVyeSBTcGVjdWxh
dGl2ZUpJVDo6Y29tcHV0ZVZhbAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldENoYXJD
b2RlQXQoTm9kZSYgbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS5jaGlsZDMoKSA9PSBOb05vZGUp
OwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHN0cmluZyh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
KyAgICBTcGVjQ2VsbE9wZXJhbmQgc3RyaW5nKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgIFNw
ZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBpbmRleCh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAg
ICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogCkBAIC0xNTI2
LDggKzE1MjYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hhckNvZGVBCiAg
ICAgR1BSUmVnIGluZGV4UmVnID0gaW5kZXguZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcg
PSBzdG9yYWdlLmdwcigpOwogICAgIAotICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7Ci0gICAgICAgIEFTU0VSVCghKGF0
KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSAmIFByZWRpY3RTdHJpbmcpKTsKKyAgICBpZiAo
IWlzU3RyaW5nU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpIHsKKyAgICAgICAgQVNTRVJUKCEoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpICYg
U3BlY1N0cmluZykpOwogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21w
aWxlSW5kZXgpOwogICAgICAgICByZXR1cm47CkBAIC0xNTU4LDE1ICsxNTU4LDE1IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRDaGFyQ29kZUEKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSYgbm9kZSkKIHsKLSAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIFNwZWNDZWxsT3BlcmFu
ZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3Bl
cmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICBTdG9yYWdlT3BlcmFuZCBz
dG9yYWdlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5n
cHIoKTsKICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIoKTsKICAgICBHUFJS
ZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAKLSAgICBpZiAoIWlzU3RyaW5nUHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgewotICAgICAgICBB
U1NFUlQoIShhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgJiBQcmVkaWN0U3RyaW5nKSk7
CisgICAgaWYgKCFpc1N0cmluZ1NwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKSB7CisgICAgICAgIEFTU0VSVCghKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRp
Y3Rpb24oKSAmIFNwZWNTdHJpbmcpKTsKICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVj
dXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAgICAgIG5vUmVz
dWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTcwMCw3ICsxNzAwLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIp
OwogCi0gICAgICAgICAgICBpZiAoIWlzTnVtYmVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgICAgIGlmICghaXNOdW1iZXJTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIG5vZGUuY2hp
bGQxKCkuaW5kZXgoKSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywg
Z3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKIAogICAgICAgICAgICAgLy8g
Rmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBkb3VibGUgZW5jb2RlZCBhcyBhIEpTVmFs
dWUKQEAgLTE3MzcsNyArMTczNyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZVRvSW50MzIKIAogICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKIAotICAgICAgICAgICAgICAgIGlmICghaXNOdW1iZXJQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAg
ICAgICAgICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlLmNoaWxkMSgpLmlu
ZGV4KCksIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHRhZ0dQ
UiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKIAogICAgICAgICAgICAgICAg
IHVuYm94RG91YmxlKHRhZ0dQUiwgcGF5bG9hZEdQUiwgZnByLCBzY3JhdGNoLmZwcigpKTsKQEAg
LTE3NjQsNyArMTc2NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50
MzIKICAgICB9CiAgICAgCiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0
ZUJvb2xlYW4oKSkgewotICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCBvcDEodGhpcywg
bm9kZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWNCb29sZWFuT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKICAg
ICAgICAgCiAgICAgICAgIG1faml0LmFuZDMyKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIoMSks
IG9wMS5ncHIoKSk7CkBAIC0xODE2LDcgKzE4MTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlVUludDMyVG9OdW1iCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVB
c0ludDMyKE5vZGUmIG5vZGUpCiB7Ci0gICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhp
cywgbm9kZS5jaGlsZDEoKSk7CisgICAgU3BlY0RvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOwogICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcyk7CiAgICAgCkBAIC0xODQ5LDcgKzE4NDksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgfQogI2VuZGlmCiAgICAgCi0gICAg
aWYgKGlzSW50MzJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKSB7CisgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkgewogICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEo
dGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVzdWx0LmZw
cigpKTsKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnQzMlRvRG91YmwKICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFu
Y2hQdHIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMUdQUiwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBpZiAoIWlzTnVtYmVyUHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgIGlm
ICghaXNOdW1iZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgQmFkVHlwZSwg
SlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKSk7CkBAIC0xODk0LDcgKzE4OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICAgICAKLSAgICBpZiAoIWlz
TnVtYmVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkg
eworICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAg
QmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS5jaGls
ZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKQEAg
LTE5NjUsNyArMTk2NSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShK
SVQKIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgoY29u
c3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIE5vZGUmIG5vZGUsIGJvb2wgbmVl
ZHNTcGVjdWxhdGlvbkNoZWNrKQogewotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhp
cywgbm9kZS5jaGlsZDEoKSk7CisgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5j
aGlsZDEoKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAKICAgICBHUFJS
ZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CkBAIC0xOTgxLDcgKzE5ODEsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0VHlwZWRBcnJhCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYg
ZGVzY3JpcHRvciwgTm9kZSYgbm9kZSwgc2l6ZV90IGVsZW1lbnRTaXplLCBUeXBlZEFycmF5U3Bl
Y3VsYXRpb25SZXF1aXJlbWVudHMgc3BlY3VsYXRpb25SZXF1aXJlbWVudHMsIFR5cGVkQXJyYXlT
aWduZWRuZXNzIHNpZ25lZG5lc3MpCiB7Ci0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBTcGVjQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhp
cywgbm9kZS5jaGlsZDIoKSk7CiAgICAgU3RvcmFnZU9wZXJhbmQgc3RvcmFnZSh0aGlzLCBub2Rl
LmNoaWxkMygpKTsKIApAQCAtMjA4Myw3ICsyMDgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAgICAgICB2YWx1ZUdQUiA9IHNjcmF0Y2hSZWc7CiAgICAg
fSBlbHNlIGlmIChyb3VuZGluZyA9PSBDbGFtcFJvdW5kaW5nKSB7CiAgICAgICAgIEFTU0VSVChl
bGVtZW50U2l6ZSA9PSAxKTsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9w
KHRoaXMsIHZhbHVlVXNlKTsKKyAgICAgICAgU3BlY0RvdWJsZU9wZXJhbmQgdmFsdWVPcCh0aGlz
LCB2YWx1ZVVzZSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAg
IEZQUlRlbXBvcmFyeSBmbG9hdFNjcmF0Y2godGhpcyk7CiAgICAgICAgIEZQUlJlZyBmcHIgPSB2
YWx1ZU9wLmZwcigpOwpAQCAtMjA5Miw3ICsyMDkyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5VmFsRm9ySQogICAgICAgICB2YWx1ZS5hZG9wdChyZXN1bHQpOwogICAgICAg
ICB2YWx1ZUdQUiA9IGdwcjsKICAgICB9IGVsc2UgewotICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOworICAgICAgICBTcGVjRG91YmxlT3BlcmFu
ZCB2YWx1ZU9wKHRoaXMsIHZhbHVlVXNlKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKICAgICAgICAgRlBSUmVnIGZwciA9IHZhbHVlT3AuZnByKCk7CiAgICAgICAgIEdQUlJl
ZyBncHIgPSByZXN1bHQuZ3ByKCk7CkBAIC0yMTQzLDcgKzIxNDMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yLCBOb2RlJiBub2RlLCBzaXplX3QgZWxlbWVudFNpemUsIFR5cGVkQXJyYXlTcGVj
dWxhdGlvblJlcXVpcmVtZW50cyBzcGVjdWxhdGlvblJlcXVpcmVtZW50cykKIHsKLSAgICBTcGVj
dWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIFNwZWNDZWxs
T3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgIFNwZWN1bGF0ZVN0cmljdElu
dDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICBTdG9yYWdlT3Bl
cmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwogCkBAIC0yMTkxLDcgKzIxOTEsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JGCiAgICAgRWRnZSBiYXNl
VXNlID0gbm9kZS5jaGlsZDEoKTsKICAgICBFZGdlIHZhbHVlVXNlID0gbm9kZS5jaGlsZDMoKTsK
ICAgICAKLSAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2Up
OworICAgIFNwZWNEb3VibGVPcGVyYW5kIHZhbHVlT3AodGhpcywgdmFsdWVVc2UpOwogICAgIAog
ICAgIGlmIChzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlUeXBlU3BlY0No
ZWNrKQogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2UpLCBiYXNlVXNlLmluZGV4KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlw
dG9yLm1fY2xhc3NJbmZvKSkpOwpAQCAtMjI2OSwxNSArMjI2OSwxNSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZkZvCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVJbnN0YW5jZU9mKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKCghIShhdChub2RlLmNoaWxkMSgp
KS5wcmVkaWN0aW9uKCkgJiB+UHJlZGljdENlbGwpCi0gICAgICAgICAmJiAhIShtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlICYgflByZWRpY3RDZWxsKSkKKyAgICBpZiAoKCEh
KGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSAmIH5TcGVjQ2VsbCkKKyAgICAgICAgICYm
ICEhKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY0NlbGwpKQog
ICAgICAgICB8fCBhdChub2RlLmNoaWxkMSgpKS5hZGp1c3RlZFJlZkNvdW50KCkgPT0gMSkgewog
ICAgICAgICAvLyBJdCBtaWdodCBub3QgYmUgYSBjZWxsLiBTcGVjdWxhdGUgbGVzcyBhZ2dyZXNz
aXZlbHkuCiAgICAgICAgIC8vIE9yOiBpdCBtaWdodCBvbmx5IGJlIHVzZWQgb25jZSAoaS5lLiBi
eSB1cyksIHNvIHdlIGdldCB6ZXJvIGJlbmVmaXQKICAgICAgICAgLy8gZnJvbSBzcGVjdWxhdGlu
ZyBhbnkgbW9yZSBhZ2dyZXNzaXZlbHkgdGhhbiB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8uCiAgICAg
ICAgIAogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
LSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUuY2hpbGQz
KCkpOworICAgICAgICBTcGVjQ2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUuY2hpbGQz
KCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKICAgICAgICAgCiAgICAg
ICAgIEdQUlJlZyBwcm90b3R5cGVSZWcgPSBwcm90b3R5cGUuZ3ByKCk7CkBAIC0yMzEwLDkgKzIz
MTAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZihOCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS5jaGlsZDEoKSk7CisgICAgU3BlY0NlbGxPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOwogICAgIC8vIEJhc2UgdW51c2VkIHNpbmNlIHdlIHNwZWN1bGF0ZSBkZWZhdWx0
IEluc3RhbmNlT2YgYmVoYXZpb3VyIGluIENoZWNrSGFzSW5zdGFuY2UuCi0gICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgcHJvdG90eXBlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOworICAgIFNwZWNDZWxs
T3BlcmFuZCBwcm90b3R5cGUodGhpcywgbm9kZS5jaGlsZDMoKSk7CiAgICAgCiAgICAgR1BSVGVt
cG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgCkBAIC0yNTI4LDggKzI1MjgsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQWRkKE5vZGUmIG5vCiAgICAgfQogICAgICAgICAKICAgICBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVtYmVyKGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2Rl
LmNoaWxkMigpKSkpIHsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywg
bm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMs
IG5vZGUuY2hpbGQyKCkpOworICAgICAgICBTcGVjRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CisgICAgICAgIFNwZWNEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNo
aWxkMigpKTsKICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7CiAK
ICAgICAgICAgRlBSUmVnIHJlZzEgPSBvcDEuZnByKCk7CkBAIC0yNjAyLDggKzI2MDIsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgICAgIAotICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUu
Y2hpbGQyKCkpOworICAgIFNwZWNEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKKyAgICBTcGVjRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAg
RlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogCiAgICAgRlBSUmVnIHJlZzEgPSBvcDEu
ZnByKCk7CkBAIC0yNjMzLDcgKzI2MzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhOZWdhdGUoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgICAgIAotICAgIFNwZWN1
bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgIFNwZWNEb3Vi
bGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICBGUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMpOwogCiAgICAgbV9qaXQubmVnYXRlRG91YmxlKG9wMS5mcHIoKSwgcmVzdWx0LmZw
cigpKTsKQEAgLTI2NzUsOCArMjY3NSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aE11bChOb2QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNwZWN1bGF0ZURvdWJs
ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZURvdWJsZU9w
ZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgIFNwZWNEb3VibGVPcGVyYW5kIG9w
MSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBTcGVjRG91YmxlT3BlcmFuZCBvcDIodGhpcywg
bm9kZS5jaGlsZDIoKSk7CiAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEsIG9wMik7
CiAKICAgICBGUFJSZWcgcmVnMSA9IG9wMS5mcHIoKTsKQEAgLTI3NzEsOCArMjc3MSw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZChOb2QKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAgICAgCi0gICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9k
ZS5jaGlsZDEoKSk7Ci0gICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5j
aGlsZDIoKSk7CisgICAgU3BlY0RvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OworICAgIFNwZWNEb3VibGVPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAg
ICAgCiAgICAgRlBSUmVnIG9wMUZQUiA9IG9wMS5mcHIoKTsKICAgICBGUFJSZWcgb3AyRlBSID0g
b3AyLmZwcigpOwpAQCAtMjgwNCwxMiArMjgwNCwxMiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpj
b21wYXJlKE5vZGUmIG5vZGUsCiAgICAgCiAgICAgaWYgKG5vZGUub3AoKSA9PSBDb21wYXJlRXEp
IHsKICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KGF0KG5vZGUu
Y2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVPYmpl
Y3RFcXVhbGl0eShub2RlLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJl
ZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTRmlu
YWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKE5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUFycmF5KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkp
IHsKLSAgICAgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNBcnJheTo6c19p
bmZvLCBpc0FycmF5UHJlZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxp
dHkobm9kZSwgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVNwZWN1bGF0aW9uKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI4MTcsNyArMjgxNyw3
IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwKICAgICAgICAgICAg
ICYmIGF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigp
KSB7CiAgICAgICAgICAgICBjb21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkoCiAg
ICAgICAgICAgICAgICAgbm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSwgJkpTRmluYWxPYmpl
Y3Q6OnNfaW5mbywKLSAgICAgICAgICAgICAgICBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7Cisg
ICAgICAgICAgICAgICAgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI4MjUsNyArMjgyNSw3IEBAIGJv
b2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwKICAgICAgICAgICAgICYmIGF0
KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKICAgICAgICAg
ICAgIGNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSgKICAgICAgICAgICAgICAg
ICBub2RlLmNoaWxkMigpLCBub2RlLmNoaWxkMSgpLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLAot
ICAgICAgICAgICAgICAgIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAg
ICBpc0ZpbmFsT2JqZWN0U3BlY3VsYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIApAQCAtMjgzMyw3ICsyODMzLDcgQEAgYm9vbCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLAogICAgICAgICAgICAgJiYgYXQobm9kZS5jaGlsZDIo
KSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKICAgICAgICAgICAgIGNvbXBpbGVP
YmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSgKICAgICAgICAgICAgICAgICBub2RlLmNoaWxk
MSgpLCBub2RlLmNoaWxkMigpLCAmSlNBcnJheTo6c19pbmZvLAotICAgICAgICAgICAgICAgIGlz
QXJyYXlQcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICBpc0FycmF5U3BlY3VsYXRpb24pOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjg0MSw3
ICsyODQxLDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLAogICAg
ICAgICAgICAgJiYgYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXkoKSkgewog
ICAgICAgICAgICAgY29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KAogICAgICAg
ICAgICAgICAgIG5vZGUuY2hpbGQyKCksIG5vZGUuY2hpbGQxKCksICZKU0FycmF5OjpzX2luZm8s
Ci0gICAgICAgICAgICAgICAgaXNBcnJheVByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgIGlz
QXJyYXlTcGVjdWxhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0yOTgxLDE0ICsyOTgxLDE0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVTdHJpY3RFcShOb2QKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0
ZWN0UGVlcEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBV
SU5UX01BWCkgewogICAgICAgICAgICAgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IG1faml0
LmdyYXBoKCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7Ci0gICAg
ICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5k
ZXgsICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAg
ICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJ
bmRleCwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsK
ICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNo
aWxkMigpKTsKICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrID0gYnJhbmNoSW5kZXhJbkJsb2Nr
OwogICAgICAgICAgICAgbV9jb21waWxlSW5kZXggPSBicmFuY2hOb2RlSW5kZXg7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxp
dHkobm9kZSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24p
OworICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTRmluYWxPYmplY3Q6OnNf
aW5mbywgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICAKQEAgLTI5OTYsMTQgKzI5OTYsMTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVN0cmljdEVxKE5vZAogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sg
PSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2Nr
ICE9IFVJTlRfTUFYKSB7CiAgICAgICAgICAgICBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4ID0g
bV9qaXQuZ3JhcGgoKS5tX2Jsb2Nrc1ttX2Jsb2NrXS0+YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsK
LSAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5v
ZGVJbmRleCwgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24pOworICAgICAgICAg
ICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCAm
SlNBcnJheTo6c19pbmZvLCBpc0FycmF5U3BlY3VsYXRpb24pOwogICAgICAgICAgICAgdXNlKG5v
ZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAg
ICAgbV9pbmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CiAgICAgICAgICAgICBtX2Nv
bXBpbGVJbmRleCA9IGJyYW5jaE5vZGVJbmRleDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9Ci0gICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNBcnJheTo6
c19pbmZvLCBpc0FycmF5UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0
eShub2RlLCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5U3BlY3VsYXRpb24pOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApAQCAtMzAxOSwxMSArMzAxOSwxMSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgICAgIAotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGls
ZDEoKSk7CisgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAg
ICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIAotICAgIFByZWRpY3RlZFR5cGUg
YmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCk7Ci0gICAgaWYg
KCEoYmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKSB7Cisg
ICAgU3BlY3VsYXRlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVk
aWN0aW9uKCk7CisgICAgaWYgKCEoYmFzZVByZWRpY3Rpb24gJiBTcGVjSW50MzIpICYmIGJhc2VQ
cmVkaWN0aW9uKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwpAQCAtMzAzNCw4ICszMDM0
LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgogICAgIEdQUlJl
ZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgPT0gUHJl
ZGljdFN0cmluZykgewotICAgICAgICBpZiAoIWlzU3RyaW5nUHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSA9PSBTcGVjU3RyaW5nKSB7CisgICAgICAgIGlmICghaXNTdHJp
bmdTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJp
bmc6OnNfaW5mbykpKTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZlZhbHVlKCkpLCBzdG9yYWdlUmVnKTsK
QEAgLTMwNDYsNTEgKzMwNDYsNTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldElu
ZGV4ZWRQcgogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOwogICAgIH0g
ZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsK
ICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5n
bG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKTsKLSAgICAgICAgaWYgKCFpc0ludDhB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisg
ICAgICAgIGlmICghaXNJbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9y
YWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgp
KS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJh
eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlE
ZXNjcmlwdG9yKCk7Ci0gICAgICAgIGlmICghaXNJbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0ludDE2QXJy
YXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlw
dG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJl
Zyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQz
MkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9yKCk7Ci0gICAgICAg
IGlmICghaXNJbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0ludDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRl
c2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChh
dChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKICAgICAgICAg
Y29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRh
KCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCk7Ci0gICAgICAgIGlmICghaXNVaW50OEFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAg
aWYgKCFpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zm
c2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91
bGRTcGVjdWxhdGVVaW50OENsYW1wZWRBcnJheSgpKSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJy
YXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1w
ZWRBcnJheURlc2NyaXB0b3IoKTsKLSAgICAgICAgaWYgKCFpc1VpbnQ4Q2xhbXBlZEFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAg
aWYgKCFpc1VpbnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5t
X2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwog
ICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDE2QXJy
YXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9
IG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCk7Ci0gICAgICAgIGlm
ICghaXNVaW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpCisgICAgICAgIGlmICghaXNVaW50MTZBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgZGVz
Y3JpcHRvci5tX3N0b3JhZ2VPZmZzZXQpLCBzdG9yYWdlUmVnKTsKICAgICB9IGVsc2UgaWYgKGF0
KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKICAgICAgICAg
Y29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRh
KCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpOwotICAgICAgICBpZiAoIWlzVWludDMyQXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAg
ICBpZiAoIWlzVWludDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdl
T2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5
RGVzY3JpcHRvcigpOwotICAgICAgICBpZiAoIWlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0Zsb2F0
MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
KQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRl
c2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgZGVzY3JpcHRvci5tX3N0b3JhZ2VPZmZzZXQpLCBzdG9y
YWdlUmVnKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0
ZUZsb2F0NjRBcnJheSgpKSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCk7
Ci0gICAgICAgIGlmICghaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICBpZiAoIWlzRmxvYXQ2NEFycmF5U3BlY3Vs
YXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJh
c2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2Ns
YXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVn
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7
CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7CiAgICAgfQpAQCAtMzA5OSw3
ICszMDk5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgogCiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyhOb2RlJiBub2Rl
KQogewotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7
CisgICAgU3BlY0NlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwog
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKQEAg
LTMxMTgsNyArMzExOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9u
QXIKICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBp
ZiAoIWlzQXJndW1lbnRzUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSkgeworICAgIGlmICghaXNBcmd1bWVudHNTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAog
ICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyks
IG5vZGUuY2hpbGQxKCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0zMTc3LDcg
KzMxNzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkFyCiAKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgoTm9kZSYgbm9kZSkK
IHsKLSAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwor
ICAgIFNwZWNDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcywgYmFzZSk7CiAgICAgCiAgICAgR1BSUmVnIGJhc2VSZWcgPSBi
YXNlLmdwcigpOwpAQCAtMzE4Niw3ICszMTg2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEFyZ3VtZW50cwogICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIGlmICghaXNBcmd1bWVudHNQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgaWYgKCFpc0FyZ3VtZW50c1NwZWN1bGF0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0
cigKQEAgLTMyNTMsOCArMzI1Myw4IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVSZWdF
eHBFeGVjKE4KICAgICAgICAgbm90VGFrZW4gPSB0bXA7CiAgICAgfQogCi0gICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICBTcGVjdWxhdGVDZWxs
T3BlcmFuZCBhcmd1bWVudCh0aGlzLCBub2RlLmNoaWxkMigpKTsKKyAgICBTcGVjQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBTcGVjQ2VsbE9wZXJhbmQgYXJndW1l
bnQodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgIEdQUlJlZyBhcmd1bWVudEdQUiA9IGFyZ3VtZW50LmdwcigpOwogICAgIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNp
b24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw5ICs0NCw5IEBAIGNsYXNzIFNsb3dQYXRoR2VuZXJh
dG9yOwogY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CiBjbGFzcyBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFu
ZDsKIGNsYXNzIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZDsKLWNsYXNzIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQ7Ci1jbGFzcyBTcGVjdWxhdGVDZWxsT3BlcmFuZDsKLWNsYXNzIFNwZWN1bGF0
ZUJvb2xlYW5PcGVyYW5kOworY2xhc3MgU3BlY0RvdWJsZU9wZXJhbmQ7CitjbGFzcyBTcGVjQ2Vs
bE9wZXJhbmQ7CitjbGFzcyBTcGVjQm9vbGVhbk9wZXJhbmQ7CiAKIAogZW51bSBWYWx1ZVNvdXJj
ZUtpbmQgewpAQCAtODEsMTMgKzgxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGtpbmQo
KSA9PSBIYXZlTm9kZSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBWYWx1ZVNvdXJjZSBmb3JQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbikKKyAgICBzdGF0aWMgVmFsdWVTb3Vy
Y2UgZm9yU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikKICAgICB7Ci0gICAg
ICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgaWYgKGlzSW50
MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJj
ZShJbnQzMkluUmVnaXN0ZXJGaWxlKTsKLSAgICAgICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3Rpb24pKQorICAgICAgICBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQog
ICAgICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNlKENlbGxJblJlZ2lzdGVyRmlsZSk7Ci0gICAg
ICAgIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICBpZiAoaXNC
b29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gVmFsdWVT
b3VyY2UoQm9vbGVhbkluUmVnaXN0ZXJGaWxlKTsKICAgICAgICAgcmV0dXJuIFZhbHVlU291cmNl
KFZhbHVlSW5SZWdpc3RlckZpbGUpOwogICAgIH0KQEAgLTM2Nyw5ICszNjcsOSBAQCBwdWJsaWM6
CiAgICAgLy8gbWFjaGluZSByZWdpc3RlcnMsIGltcGxpY2l0bHkgZ2VuZXJhdGluZyBzcGVjdWxh
dGlvbiBjaGVja3MgYXMgbmVlZGVkLgogICAgIEdQUlJlZyBmaWxsU3BlY3VsYXRlSW50KE5vZGVJ
bmRleCwgRGF0YUZvcm1hdCYgcmV0dXJuRm9ybWF0KTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0
ZUludFN0cmljdChOb2RlSW5kZXgpOwotICAgIEZQUlJlZyBmaWxsU3BlY3VsYXRlRG91YmxlKE5v
ZGVJbmRleCk7Ci0gICAgR1BSUmVnIGZpbGxTcGVjdWxhdGVDZWxsKE5vZGVJbmRleCk7Ci0gICAg
R1BSUmVnIGZpbGxTcGVjdWxhdGVCb29sZWFuKE5vZGVJbmRleCk7CisgICAgRlBSUmVnIGZpbGxT
cGVjRG91YmxlKE5vZGVJbmRleCk7CisgICAgR1BSUmVnIGZpbGxTcGVjQ2VsbChOb2RlSW5kZXgp
OworICAgIEdQUlJlZyBmaWxsU3BlY0Jvb2xlYW4oTm9kZUluZGV4KTsKICAgICBHZW5lcmF0ZWRP
cGVyYW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGVJbmRleCk7CiAKICAg
ICB2b2lkIGFkZFNsb3dQYXRoR2VuZXJhdG9yKFBhc3NPd25QdHI8U2xvd1BhdGhHZW5lcmF0b3I+
KTsKQEAgLTIwMzQsMTIgKzIwMzQsMTIgQEAgcHVibGljOgogICAgIGJvb2wgY29tcGlsZVBlZXBI
b2xlQnJhbmNoKE5vZGUmLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19ERkdPcGVyYXRpb25fRUpKKTsKICAgICB2
b2lkIGNvbXBpbGVQZWVwSG9sZUludGVnZXJCcmFuY2goTm9kZSYsIE5vZGVJbmRleCBicmFuY2hO
b2RlSW5kZXgsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNv
bXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlJiwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRl
eCwgSklUQ29tcGlsZXI6OkRvdWJsZUNvbmRpdGlvbik7Ci0gICAgdm9pZCBjb21waWxlUGVlcEhv
bGVPYmplY3RFcXVhbGl0eShOb2RlJiwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCwgY29uc3Qg
Q2xhc3NJbmZvKiwgUHJlZGljdGlvbkNoZWNrZXIpOworICAgIHZvaWQgY29tcGlsZVBlZXBIb2xl
T2JqZWN0RXF1YWxpdHkoTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIGNvbnN0IENs
YXNzSW5mbyosIFNwZWN1bGF0ZWRUeXBlQ2hlY2tlcik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhv
bGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSgKLSAgICAgICAgRWRnZSBsZWZ0Q2hpbGQs
IEVkZ2UgcmlnaHRDaGlsZCwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCwgY29uc3QgQ2xhc3NJ
bmZvKiwgUHJlZGljdGlvbkNoZWNrZXIpOwotICAgIHZvaWQgY29tcGlsZU9iamVjdEVxdWFsaXR5
KE5vZGUmLCBjb25zdCBDbGFzc0luZm8qLCBQcmVkaWN0aW9uQ2hlY2tlcik7CisgICAgICAgIEVk
Z2UgbGVmdENoaWxkLCBFZGdlIHJpZ2h0Q2hpbGQsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgs
IGNvbnN0IENsYXNzSW5mbyosIFNwZWN1bGF0ZWRUeXBlQ2hlY2tlcik7CisgICAgdm9pZCBjb21w
aWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIGNvbnN0IENsYXNzSW5mbyosIFNwZWN1bGF0ZWRUeXBl
Q2hlY2tlcik7CiAgICAgdm9pZCBjb21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHko
Ci0gICAgICAgIEVkZ2UgbGVmdENoaWxkLCBFZGdlIHJpZ2h0Q2hpbGQsIGNvbnN0IENsYXNzSW5m
byosIFByZWRpY3Rpb25DaGVja2VyKTsKKyAgICAgICAgRWRnZSBsZWZ0Q2hpbGQsIEVkZ2Ugcmln
aHRDaGlsZCwgY29uc3QgQ2xhc3NJbmZvKiwgU3BlY3VsYXRlZFR5cGVDaGVja2VyKTsKICAgICB2
b2lkIGNvbXBpbGVWYWx1ZUFkZChOb2RlJik7CiAgICAgdm9pZCBjb21waWxlT2JqZWN0T3JPdGhl
ckxvZ2ljYWxOb3QoRWRnZSB2YWx1ZSwgY29uc3QgQ2xhc3NJbmZvKiwgYm9vbCBuZWVkU3BlY3Vs
YXRpb25DaGVjayk7CiAgICAgdm9pZCBjb21waWxlTG9naWNhbE5vdChOb2RlJik7CkBAIC0yNjE3
LDggKzI2MTcsOCBAQCBwdWJsaWM6CiAgICAgR1BSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiwg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kJik7CiAgICAgR1BSVGVtcG9yYXJ5KFNwZWN1bGF0
aXZlSklUKiwgSW50ZWdlck9wZXJhbmQmKTsKICAgICBHUFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVK
SVQqLCBJbnRlZ2VyT3BlcmFuZCYsIEludGVnZXJPcGVyYW5kJik7Ci0gICAgR1BSVGVtcG9yYXJ5
KFNwZWN1bGF0aXZlSklUKiwgU3BlY3VsYXRlQ2VsbE9wZXJhbmQmKTsKLSAgICBHUFJUZW1wb3Jh
cnkoU3BlY3VsYXRpdmVKSVQqLCBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCYpOworICAgIEdQUlRl
bXBvcmFyeShTcGVjdWxhdGl2ZUpJVCosIFNwZWNDZWxsT3BlcmFuZCYpOworICAgIEdQUlRlbXBv
cmFyeShTcGVjdWxhdGl2ZUpJVCosIFNwZWNCb29sZWFuT3BlcmFuZCYpOwogI2lmIFVTRShKU1ZB
TFVFNjQpCiAgICAgR1BSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiwgSlNWYWx1ZU9wZXJhbmQm
KTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCkBAIC0yNjQ5LDggKzI2NDksOCBAQCBwdWJsaWM6
CiAgICAgRlBSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKik7CiAgICAgRlBSVGVtcG9yYXJ5KFNw
ZWN1bGF0aXZlSklUKiwgRG91YmxlT3BlcmFuZCYpOwogICAgIEZQUlRlbXBvcmFyeShTcGVjdWxh
dGl2ZUpJVCosIERvdWJsZU9wZXJhbmQmLCBEb3VibGVPcGVyYW5kJik7Ci0gICAgRlBSVGVtcG9y
YXJ5KFNwZWN1bGF0aXZlSklUKiwgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCYpOwotICAgIEZQUlRl
bXBvcmFyeShTcGVjdWxhdGl2ZUpJVCosIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQmLCBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kJik7CisgICAgRlBSVGVtcG9yYXJ5KFNwZWN1bGF0aXZlSklUKiwgU3Bl
Y0RvdWJsZU9wZXJhbmQmKTsKKyAgICBGUFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqLCBTcGVj
RG91YmxlT3BlcmFuZCYsIFNwZWNEb3VibGVPcGVyYW5kJik7CiAjaWYgVVNFKEpTVkFMVUUzMl82
NCkKICAgICBGUFJUZW1wb3JhcnkoU3BlY3VsYXRpdmVKSVQqLCBKU1ZhbHVlT3BlcmFuZCYpOwog
I2VuZGlmCkBAIC0yNzE5LDcgKzI3MTksNyBAQCBwcml2YXRlOgogCiAvLyA9PT0gU3BlY3VsYXRp
dmUgT3BlcmFuZCB0eXBlcyA9PT0KIC8vCi0vLyBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCwgU3Bl
Y3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIGFuZCBTcGVjdWxhdGVDZWxsT3BlcmFuZC4KKy8vIFNw
ZWN1bGF0ZUludGVnZXJPcGVyYW5kLCBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgYW5kIFNw
ZWNDZWxsT3BlcmFuZC4KIC8vCiAvLyBUaGVzZSBhcmUgdXNlZCB0byBsb2NrIHRoZSBvcGVyYW5k
cyB0byBhIG5vZGUgaW50byBtYWNoaW5lIHJlZ2lzdGVycyB3aXRoaW4gdGhlCiAvLyBTcGVjdWxh
dGl2ZUpJVC4gVGhlIGNsYXNzZXMgb3BlcmF0ZSBsaWtlIHRob3NlIGFib3ZlLCBob3dldmVyIHRo
ZXNlIHdpbGwKQEAgLTI4MTcsOSArMjgxNyw5IEBAIHByaXZhdGU6CiAgICAgR1BSUmVnIG1fZ3By
T3JJbnZhbGlkOwogfTsKIAotY2xhc3MgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCB7CitjbGFzcyBT
cGVjRG91YmxlT3BlcmFuZCB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIHVzZSkKKyAgICBleHBsaWNpdCBTcGVj
RG91YmxlT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdlIHVzZSkKICAgICAgICAgOiBt
X2ppdChqaXQpCiAgICAgICAgICwgbV9pbmRleCh1c2UuaW5kZXgoKSkKICAgICAgICAgLCBtX2Zw
ck9ySW52YWxpZChJbnZhbGlkRlBSUmVnKQpAQCAtMjgzMCw3ICsyODMwLDcgQEAgcHVibGljOgog
ICAgICAgICAgICAgZnByKCk7CiAgICAgfQogCi0gICAgflNwZWN1bGF0ZURvdWJsZU9wZXJhbmQo
KQorICAgIH5TcGVjRG91YmxlT3BlcmFuZCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9mcHJP
ckludmFsaWQgIT0gSW52YWxpZEZQUlJlZyk7CiAgICAgICAgIG1faml0LT51bmxvY2sobV9mcHJP
ckludmFsaWQpOwpAQCAtMjg0NCw3ICsyODQ0LDcgQEAgcHVibGljOgogICAgIEZQUlJlZyBmcHIo
KQogICAgIHsKICAgICAgICAgaWYgKG1fZnByT3JJbnZhbGlkID09IEludmFsaWRGUFJSZWcpCi0g
ICAgICAgICAgICBtX2Zwck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY3VsYXRlRG91YmxlKGlu
ZGV4KCkpOworICAgICAgICAgICAgbV9mcHJPckludmFsaWQgPSBtX2ppdC0+ZmlsbFNwZWNEb3Vi
bGUoaW5kZXgoKSk7CiAgICAgICAgIHJldHVybiBtX2Zwck9ySW52YWxpZDsKICAgICB9CiAKQEAg
LTI4NTQsOSArMjg1NCw5IEBAIHByaXZhdGU6CiAgICAgRlBSUmVnIG1fZnByT3JJbnZhbGlkOwog
fTsKIAotY2xhc3MgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgeworY2xhc3MgU3BlY0NlbGxPcGVyYW5k
IHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBTcGVjdWxhdGVDZWxsT3BlcmFuZChTcGVjdWxhdGl2
ZUpJVCogaml0LCBFZGdlIHVzZSkKKyAgICBleHBsaWNpdCBTcGVjQ2VsbE9wZXJhbmQoU3BlY3Vs
YXRpdmVKSVQqIGppdCwgRWRnZSB1c2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAs
IG1faW5kZXgodXNlLmluZGV4KCkpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQ
UlJlZykKQEAgLTI4NjcsNyArMjg2Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdwcigpOwog
ICAgIH0KIAotICAgIH5TcGVjdWxhdGVDZWxsT3BlcmFuZCgpCisgICAgflNwZWNDZWxsT3BlcmFu
ZCgpCiAgICAgewogICAgICAgICBBU1NFUlQobV9ncHJPckludmFsaWQgIT0gSW52YWxpZEdQUlJl
Zyk7CiAgICAgICAgIG1faml0LT51bmxvY2sobV9ncHJPckludmFsaWQpOwpAQCAtMjg4MSw3ICsy
ODgxLDcgQEAgcHVibGljOgogICAgIEdQUlJlZyBncHIoKQogICAgIHsKICAgICAgICAgaWYgKG1f
Z3ByT3JJbnZhbGlkID09IEludmFsaWRHUFJSZWcpCi0gICAgICAgICAgICBtX2dwck9ySW52YWxp
ZCA9IG1faml0LT5maWxsU3BlY3VsYXRlQ2VsbChpbmRleCgpKTsKKyAgICAgICAgICAgIG1fZ3By
T3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjQ2VsbChpbmRleCgpKTsKICAgICAgICAgcmV0dXJu
IG1fZ3ByT3JJbnZhbGlkOwogICAgIH0KICAgICAKQEAgLTI4OTYsOSArMjg5Niw5IEBAIHByaXZh
dGU6CiAgICAgR1BSUmVnIG1fZ3ByT3JJbnZhbGlkOwogfTsKIAotY2xhc3MgU3BlY3VsYXRlQm9v
bGVhbk9wZXJhbmQgeworY2xhc3MgU3BlY0Jvb2xlYW5PcGVyYW5kIHsKIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZChTcGVjdWxhdGl2ZUpJVCogaml0LCBFZGdl
IHVzZSkKKyAgICBleHBsaWNpdCBTcGVjQm9vbGVhbk9wZXJhbmQoU3BlY3VsYXRpdmVKSVQqIGpp
dCwgRWRnZSB1c2UpCiAgICAgICAgIDogbV9qaXQoaml0KQogICAgICAgICAsIG1faW5kZXgodXNl
LmluZGV4KCkpCiAgICAgICAgICwgbV9ncHJPckludmFsaWQoSW52YWxpZEdQUlJlZykKQEAgLTI5
MDksNyArMjkwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGdwcigpOwogICAgIH0KICAgICAK
LSAgICB+U3BlY3VsYXRlQm9vbGVhbk9wZXJhbmQoKQorICAgIH5TcGVjQm9vbGVhbk9wZXJhbmQo
KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fZ3ByT3JJbnZhbGlkICE9IEludmFsaWRHUFJSZWcp
OwogICAgICAgICBtX2ppdC0+dW5sb2NrKG1fZ3ByT3JJbnZhbGlkKTsKQEAgLTI5MjMsNyArMjky
Myw3IEBAIHB1YmxpYzoKICAgICBHUFJSZWcgZ3ByKCkKICAgICB7CiAgICAgICAgIGlmIChtX2dw
ck9ySW52YWxpZCA9PSBJbnZhbGlkR1BSUmVnKQotICAgICAgICAgICAgbV9ncHJPckludmFsaWQg
PSBtX2ppdC0+ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oaW5kZXgoKSk7CisgICAgICAgICAgICBtX2dw
ck9ySW52YWxpZCA9IG1faml0LT5maWxsU3BlY0Jvb2xlYW4oaW5kZXgoKSk7CiAgICAgICAgIHJl
dHVybiBtX2dwck9ySW52YWxpZDsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJldmlzaW9uIDExOTYw
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlICJERkdEb3VibGVGb3Jt
YXRTdGF0ZS5oIgogI2luY2x1ZGUgIkRGR05vZGVGbGFncy5oIgogI2luY2x1ZGUgIk9wZXJhbmRz
LmgiCi0jaW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBl
LmgiCiAjaW5jbHVkZSAiVmlydHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CiAjaW5jbHVkZSA8d3RmL1VuaW9uRmluZC5oPgpAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6
CiAKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEoKQogICAgICAgICA6IG1fbG9jYWwoc3RhdGljX2Nh
c3Q8VmlydHVhbFJlZ2lzdGVyPihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpKSkKLSAg
ICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCi0gICAgICAgICwgbV9hcmd1bWVudEF3
YXJlUHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKKyAgICAgICAgLCBtX3ByZWRpY3Rpb24oU3BlY05v
bmUpCisgICAgICAgICwgbV9hcmd1bWVudEF3YXJlUHJlZGljdGlvbihTcGVjTm9uZSkKICAgICAg
ICAgLCBtX2ZsYWdzKDApCiAgICAgICAgICwgbV9kb3VibGVGb3JtYXRTdGF0ZShFbXB0eURvdWJs
ZUZvcm1hdFN0YXRlKQogICAgICAgICAsIG1faXNDYXB0dXJlZChmYWxzZSkKQEAgLTU1LDggKzU1
LDggQEAgcHVibGljOgogICAgIAogICAgIFZhcmlhYmxlQWNjZXNzRGF0YShWaXJ0dWFsUmVnaXN0
ZXIgbG9jYWwsIGJvb2wgaXNDYXB0dXJlZCkKICAgICAgICAgOiBtX2xvY2FsKGxvY2FsKQotICAg
ICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKLSAgICAgICAgLCBtX2FyZ3VtZW50QXdh
cmVQcmVkaWN0aW9uKFByZWRpY3ROb25lKQorICAgICAgICAsIG1fcHJlZGljdGlvbihTcGVjTm9u
ZSkKKyAgICAgICAgLCBtX2FyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKFNwZWNOb25lKQogICAgICAg
ICAsIG1fZmxhZ3MoMCkKICAgICAgICAgLCBtX2RvdWJsZUZvcm1hdFN0YXRlKEVtcHR5RG91Ymxl
Rm9ybWF0U3RhdGUpCiAgICAgICAgICwgbV9pc0NhcHR1cmVkKGlzQ2FwdHVyZWQpCkBAIC0xMDQs
MzMgKzEwNCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2lzQXJndW1lbnRzQWxpYXM7
CiAgICAgfQogICAgIAotICAgIGJvb2wgcHJlZGljdChQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24p
CisgICAgYm9vbCBwcmVkaWN0KFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewogICAg
ICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHNlbGYgPSBmaW5kKCk7Ci0gICAgICAgIGJvb2wgcmVz
dWx0ID0gbWVyZ2VQcmVkaWN0aW9uKHNlbGYtPm1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7Cisg
ICAgICAgIGJvb2wgcmVzdWx0ID0gbWVyZ2VTcGVjdWxhdGlvbihzZWxmLT5tX3ByZWRpY3Rpb24s
IHByZWRpY3Rpb24pOwogICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgbWVyZ2VQcmVk
aWN0aW9uKG1fYXJndW1lbnRBd2FyZVByZWRpY3Rpb24sIG1fcHJlZGljdGlvbik7CisgICAgICAg
ICAgICBtZXJnZVNwZWN1bGF0aW9uKG1fYXJndW1lbnRBd2FyZVByZWRpY3Rpb24sIG1fcHJlZGlj
dGlvbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFByZWRpY3Rl
ZFR5cGUgbm9uVW5pZmllZFByZWRpY3Rpb24oKQorICAgIFNwZWN1bGF0ZWRUeXBlIG5vblVuaWZp
ZWRQcmVkaWN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CiAgICAg
fQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbigpCisgICAgU3BlY3VsYXRlZFR5
cGUgcHJlZGljdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gZmluZCgpLT5tX3ByZWRpY3Rp
b247CiAgICAgfQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgYXJndW1lbnRBd2FyZVByZWRpY3Rp
b24oKQorICAgIFNwZWN1bGF0ZWRUeXBlIGFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBmaW5kKCktPm1fYXJndW1lbnRBd2FyZVByZWRpY3Rpb247CiAgICAg
fQogICAgIAotICAgIGJvb2wgbWVyZ2VBcmd1bWVudEF3YXJlUHJlZGljdGlvbihQcmVkaWN0ZWRU
eXBlIHByZWRpY3Rpb24pCisgICAgYm9vbCBtZXJnZUFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gbWVyZ2VQcmVk
aWN0aW9uKGZpbmQoKS0+bV9hcmd1bWVudEF3YXJlUHJlZGljdGlvbiwgcHJlZGljdGlvbik7Cisg
ICAgICAgIHJldHVybiBtZXJnZVNwZWN1bGF0aW9uKGZpbmQoKS0+bV9hcmd1bWVudEF3YXJlUHJl
ZGljdGlvbiwgcHJlZGljdGlvbik7CiAgICAgfQogICAgIAogICAgIHZvaWQgY2xlYXJWb3Rlcygp
CkBAIC0xNjEsMTIgKzE2MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0
aGUgdmFyaWFibGUgaXMgbm90IGEgbnVtYmVyIHByZWRpY3Rpb24sIHRoZW4gdGhpcyBkb2Vzbid0
CiAgICAgICAgIC8vIG1ha2UgYW55IHNlbnNlLgotICAgICAgICBpZiAoIWlzTnVtYmVyUHJlZGlj
dGlvbihwcmVkaWN0aW9uKCkpKQorICAgICAgICBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24ocHJl
ZGljdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgCiAgICAgICAg
IC8vIElmIHRoZSB2YXJpYWJsZSBpcyBwcmVkaWN0ZWQgdG8gaG9sZCBvbmx5IGRvdWJsZXMsIHRo
ZW4gaXQncyBhCiAgICAgICAgIC8vIG5vLWJyYWluZXI6IGl0IHNob3VsZCBiZSBmb3JtYXR0ZWQg
YXMgYSBkb3VibGUuCi0gICAgICAgIGlmIChpc0RvdWJsZVByZWRpY3Rpb24ocHJlZGljdGlvbigp
KSkKKyAgICAgICAgaWYgKGlzRG91YmxlU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgLy8gSWYgdGhlIHZhcmlhYmxl
IGlzIGtub3duIHRvIGJlIHVzZWQgYXMgYW4gaW50ZWdlciwgdGhlbiBiZSBzYWZlIC0KQEAgLTIy
NSw3ICsyMjUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2RvdWJsZUZvcm1hdFN0YXRlICE9
IFVzaW5nRG91YmxlRm9ybWF0KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAK
LSAgICAgICAgcmV0dXJuIG1lcmdlUHJlZGljdGlvbihtX3ByZWRpY3Rpb24sIFByZWRpY3REb3Vi
bGUpOworICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxhdGlvbihtX3ByZWRpY3Rpb24sIFNwZWNE
b3VibGUpOwogICAgIH0KICAgICAKICAgICBOb2RlRmxhZ3MgZmxhZ3MoKSBjb25zdCB7IHJldHVy
biBtX2ZsYWdzOyB9CkBAIC0yNDYsOCArMjQ2LDggQEAgcHJpdmF0ZToKICAgICAvLyB1c2FnZSBm
b3IgdmFyaWFibGUgYWNjZXNzIG5vZGVzIGRvIGJlIHNpZ25pZmljYW50LgogCiAgICAgVmlydHVh
bFJlZ2lzdGVyIG1fbG9jYWw7Ci0gICAgUHJlZGljdGVkVHlwZSBtX3ByZWRpY3Rpb247Ci0gICAg
UHJlZGljdGVkVHlwZSBtX2FyZ3VtZW50QXdhcmVQcmVkaWN0aW9uOworICAgIFNwZWN1bGF0ZWRU
eXBlIG1fcHJlZGljdGlvbjsKKyAgICBTcGVjdWxhdGVkVHlwZSBtX2FyZ3VtZW50QXdhcmVQcmVk
aWN0aW9uOwogICAgIE5vZGVGbGFncyBtX2ZsYWdzOwogICAgIAogICAgIGZsb2F0IG1fdm90ZXNb
Ml07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>146170</attachid>
            <date>2012-06-06 18:20:09 -0700</date>
            <delta_ts>2012-06-06 18:20:09 -0700</delta_ts>
            <desc>improved patch</desc>
            <filename>spectype_patch_2.diff</filename>
            <type>text/plain</type>
            <size>361271</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5NjU3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1OCBA
QAorMjAxMi0wNi0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFByZWRpY3RlZFR5cGUgc2hvdWxkIGJlIGNhbGxlZCBTcGVjdWxhdGVkVHlwZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg0NzcKKworICAgICAgICBS
dWJiZXIgc3RhbXBlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JC
eXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwOgorICAgICAgICAoSlNDOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlcjo6cHJl
ZGljdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDoK
KyAgICAgICAgKExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyKToKKyAgICAgICAgKiBieXRl
Y29kZS9QcmVkaWN0ZWRUeXBlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBieXRlY29kZS9QcmVk
aWN0ZWRUeXBlLmg6IFJlbW92ZWQuCisgICAgICAgICogYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVk
VHlwZS5jcHAuCisgICAgICAgIChKU0M6OnNwZWN1bGF0aW9uVG9TdHJpbmcpOgorICAgICAgICAo
SlNDOjpzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpzcGVj
dWxhdGlvbkZyb21DbGFzc0luZm8pOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21TdHJ1
Y3R1cmUpOgorICAgICAgICAoSlNDOjpzcGVjdWxhdGlvbkZyb21DZWxsKToKKyAgICAgICAgKEpT
Qzo6c3BlY3VsYXRpb25Gcm9tVmFsdWUpOgorICAgICAgICAqIGJ5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0
ZWRUeXBlLmguCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjppc0FueVNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6aXNDZWxsU3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc09i
amVjdFNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNGaW5hbE9iamVjdFNwZWN1bGF0aW9u
KToKKyAgICAgICAgKEpTQzo6aXNGaW5hbE9iamVjdE9yT3RoZXJTcGVjdWxhdGlvbik6CisgICAg
ICAgIChKU0M6OmlzRml4ZWRJbmRleGVkU3RvcmFnZU9iamVjdFNwZWN1bGF0aW9uKToKKyAgICAg
ICAgKEpTQzo6aXNTdHJpbmdTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQXJyYXlTcGVj
dWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzRnVuY3Rpb25TcGVjdWxhdGlvbik6CisgICAgICAg
IChKU0M6OmlzSW50OEFycmF5U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0ludDE2QXJy
YXlTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSW50MzJBcnJheVNwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNVaW50OEFycmF5U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjpp
c1VpbnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc1VpbnQxNkFy
cmF5U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc1VpbnQzMkFycmF5U3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjppc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpT
Qzo6aXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQXJndW1lbnRz
U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0FjdGlvbmFibGVJbnRNdXRhYmxlQXJyYXlT
cGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5
U3BlY3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJh
eVNwZWN1bGF0aW9uKToKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5U3Bl
Y3VsYXRpb24pOgorICAgICAgICAoSlNDOjppc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKToK
KyAgICAgICAgKEpTQzo6aXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6
OmlzTXlBcmd1bWVudHNTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzSW50MzJTcGVjdWxh
dGlvbik6CisgICAgICAgIChKU0M6OmlzRG91YmxlUmVhbFNwZWN1bGF0aW9uKToKKyAgICAgICAg
KEpTQzo6aXNEb3VibGVTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzTnVtYmVyU3BlY3Vs
YXRpb24pOgorICAgICAgICAoSlNDOjppc0Jvb2xlYW5TcGVjdWxhdGlvbik6CisgICAgICAgIChK
U0M6OmlzT3RoZXJTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OmlzRW1wdHlTcGVjdWxhdGlv
bik6CisgICAgICAgIChKU0M6Om1lcmdlU3BlY3VsYXRpb25zKToKKyAgICAgICAgKEpTQzo6bWVy
Z2VTcGVjdWxhdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU2V0Lmg6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVNldDo6c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcyk6CisgICAg
ICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmls
ZUJhc2U6OlZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNl
OjpkdW1wKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKToKKyAgICAgICAgKFZhbHVlUHJvZmlsZUJhc2UpOgorICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpp
bml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToK
KyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjptZXJnZVN0YXRlQXRUYWlsKToKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OnNwZWN1bGF0ZUludDMyVW5hcnkpOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OnNwZWN1bGF0ZU51bWJlclVuYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0
cmFjdFN0YXRlOjpzcGVjdWxhdGVCb29sZWFuVW5hcnkpOgorICAgICAgICAoSlNDOjpERkc6OkFi
c3RyYWN0U3RhdGU6OnNwZWN1bGF0ZUludDMyQmluYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpB
YnN0cmFjdFN0YXRlOjpzcGVjdWxhdGVOdW1iZXJCaW5hcnkpOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJlQWJzdHJhY3RWYWx1
ZTo6ZmlsdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpz
cGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmVzKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZh
bHVlOjpBYnN0cmFjdFZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpj
bGVhcik6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6aXNDbGVhcik6CisgICAg
ICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6bWFrZVRvcCk6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6Y2xvYmJlclN0cnVjdHVyZXMpOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0VmFsdWU6OmlzVG9wKToKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVl
OjpzZXQpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFsdWU6Om1lcmdlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBYnN0cmFjdFZhbHVlOjpmaWx0ZXIpOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0VmFsdWU6OnZhbGlkYXRlSWdub3JpbmdWYWx1ZSk6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RWYWx1ZTo6dmFsaWRhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0
VmFsdWU6OmNoZWNrQ29uc2lzdGVuY3kpOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0VmFs
dWU6OmR1bXApOgorICAgICAgICAoQWJzdHJhY3RWYWx1ZSk6CisgICAgICAgICogZGZnL0RGR0Fy
Z3VtZW50UG9zaXRpb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0aW9uOjpB
cmd1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0aW9uOjpt
ZXJnZUFyZ3VtZW50QXdhcmVuZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0
aW9uOjpwcmVkaWN0aW9uKToKKyAgICAgICAgKEFyZ3VtZW50UG9zaXRpb24pOgorICAgICAgICAq
IGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmluamVjdExhenlPcGVyYW5kU3BlY3VsYXRpb24p
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRMb2NhbCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmdldEFyZ3VtZW50KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6YWRkQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmdldFNwZWN1bGF0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAoSlNDOjpE
Rkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRTcGVjdWxhdGlvbik6CisgICAgICAgIChJbmxpbmVTdGFj
a0VudHJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6Zml4VmFyaWFibGVBY2Nlc3NTcGVjdWxhdGlvbnMpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZSk6CisgICAgICAgICogZGZnL0RG
R0NTRVBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0SW5kZXhlZFBy
b3BlcnR5U3RvcmFnZUxvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhh
c2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeERv
dWJsZUVkZ2UpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6Om5hbWVPZlZhcmlhYmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmR1bXApOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpwcmVkaWN0QXJndW1lbnRU
eXBlcyk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3Jh
cGg6OmdldEpTQ29uc3RhbnRTcGVjdWxhdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6
OmlzUHJlZGljdGVkTnVtZXJpY2FsKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6YnlWYWxJ
c1B1cmUpOgorICAgICAgICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkpJVENvbXBpbGVyOjpnZXRTcGVjdWxhdGlvbik6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpnZXRIZWFwUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6cHJlZGlj
dEhlYXApOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnByZWRpY3Rpb24pOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OnByZWRpY3QpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3Vs
ZFNwZWN1bGF0ZUludGVnZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1
bGF0ZURvdWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlTnVt
YmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVCb29sZWFuKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVy
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVBcnJheSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKToKKyAgICAgICAg
KEpTQzo6REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkpOgorICAgICAgICAoSlND
OjpERkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6
Ok5vZGU6OnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpzaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6c2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OnNob3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9k
ZTo6c2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpzaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OnNob3VsZFNwZWN1bGF0ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hvdWxk
U3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlOjpzZXRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6bWVyZ2VQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6
REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKEpT
Qzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6ZG9Sb3VuZE9mRG91YmxlVm90aW5n
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcik6CisgICAgICAgIChKU0M6OkRGRzo6R1BSVGVtcG9y
YXJ5OjpHUFJUZW1wb3JhcnkpOgorICAgICAgICAoSlNDOjpERkc6OkZQUlRlbXBvcmFyeTo6RlBS
VGVtcG9yYXJ5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBl
ZXBIb2xlRG91YmxlQnJhbmNoKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y2hlY2tBcmd1bWVudFR5cGVzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldENoYXJDb2RlQXQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlR2V0QnlWYWxPblN0cmluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlRG91YmxlQXNJbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnQzMlRvRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlSW5zdGFuY2VPZik6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBZGQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlQXJpdGhTdWIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhNdWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhNb2QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21wYXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmljdEVxKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldElu
ZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlR2V0QnlWYWxPbkFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRBcmd1bWVudHNMZW5ndGgpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVnRXhwRXhlYyk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmg6CisgICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OlZhbHVl
U291cmNlOjpmb3JTcGVjdWxhdGlvbik6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAg
ICAgIChHUFJUZW1wb3JhcnkpOgorICAgICAgICAoRlBSVGVtcG9yYXJ5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjRG91YmxlT3BlcmFuZDo6U3BlY0RvdWJsZU9wZXJhbmQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWNEb3VibGVPcGVyYW5kOjp+U3BlY0RvdWJsZU9wZXJhbmQpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWNEb3VibGVPcGVyYW5kOjpmcHIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWNDZWxsT3BlcmFuZDo6U3BlY0NlbGxPcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjQ2VsbE9wZXJhbmQ6On5TcGVjQ2VsbE9wZXJhbmQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWNDZWxsT3BlcmFuZDo6Z3ByKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjQm9vbGVhbk9wZXJh
bmQ6OlNwZWNCb29sZWFuT3BlcmFuZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY0Jvb2xlYW5P
cGVyYW5kOjp+U3BlY0Jvb2xlYW5PcGVyYW5kKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjQm9v
bGVhbk9wZXJhbmQ6Omdwcik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
SW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY0Rv
dWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjQ2VsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjQm9vbGVhbik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVj
dE9yT3RoZXJFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQZWVwSG9sZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUNvbXBhcmUpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnRJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWND
ZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWNCb29sZWFu
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRv
T2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlRG91YmxlQ29tcGFyZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KToKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaCk6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJs
ZUFjY2Vzc0RhdGEuaDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OlZh
cmlhYmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRh
OjpwcmVkaWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6Om5vblVu
aWZpZWRQcmVkaWN0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6
OnByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6YXJn
dW1lbnRBd2FyZVByZWRpY3Rpb24pOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNz
RGF0YTo6bWVyZ2VBcmd1bWVudEF3YXJlUHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6
VmFyaWFibGVBY2Nlc3NEYXRhOjpzaG91bGRVc2VEb3VibGVGb3JtYXRBY2NvcmRpbmdUb1ZvdGUp
OgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bWFrZVByZWRpY3Rpb25G
b3JEb3VibGVGb3JtYXQpOgorICAgICAgICAoVmFyaWFibGVBY2Nlc3NEYXRhKToKKwogMjAxMi0w
Ni0wNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdsb2JhbCBv
YmplY3QgdmFyaWFibGUgYWNjZXNzZXMgc2hvdWxkIG5vdCByZXF1aXJlIGFuIGV4dHJhIGxvYWQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExOTYwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2Rl
L01ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUuY3BwCiAgICAgYnl0ZWNvZGUvT3Bjb2RlLmNw
cAogICAgIGJ5dGVjb2RlL1BvbHltb3JwaGljUHV0QnlJZExpc3QuY3BwCi0gICAgYnl0ZWNvZGUv
UHJlZGljdGVkVHlwZS5jcHAKKyAgICBieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAKICAgICBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAK
ICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTIw
LDggKzEyMCw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGVyYW5kcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcCBcCi0JU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEtpbmQuaCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDcg
QEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvTWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmls
ZS5jcHAgXAogICAgIGJ5dGVjb2RlL09wY29kZS5jcHAgXAogICAgIGJ5dGVjb2RlL1BvbHltb3Jw
aGljUHV0QnlJZExpc3QuY3BwIFwKLSAgICBieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcCBcCisg
ICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwIFwKICAgICBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcCBcCiAgICAgYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcCBcCiAgICAgYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMTk2MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTYzMCwxMSArMTYz
MCwxMSBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxieXRlY29kZVxQcmVkaWN0ZWRUeXBlLmNwcCIKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGJ5dGVjb2RlXFNwZWN1bGF0ZWRUeXBlLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8Rmls
ZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcUHJlZGljdGVkVHlwZS5oIgorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5cYnl0ZWNvZGVcU3BlY3VsYXRlZFR5cGUuaCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDExOTYwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsMTAgKzE4MCwx
MCBAQAogCQkwRkQ4MUFEMzE1NEZCNEYwMDA5ODNFNzIgLyogREZHRG9taW5hdG9ycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODFBRDAxNTRGQjRF
QjAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkQ4MkUyMTE0MTcyQ0UzMDAxNzlDOTQgLyogREZHQ2Fw
YWJpbGl0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRDgyRTFFMTQxNzJDMkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuY3BwICovOyB9
OwogCQkwRkQ4MkUzOTE0MUFCMTREMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTM3MTQxQUIx
NDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5NCAvKiBQ
cmVkaWN0ZWRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkQ4MkU0RjE0MURBRUExMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGRDgyRTU0MTQxREFF
RUUwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFNwZWN1bGF0
ZWRUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZEODJFNTYxNDFEQUYwODAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRDgyRTUyMTQxREFFREUwMDE3
OUM5NCAvKiBERkdPU1JFbnRyeS5jcHAgKi87IH07CiAJCTBGRDgyRTU3MTQxREFGMTAwMDE3OUM5
NCAvKiBERkdPU1JFbnRyeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZEODJFODYxNDFG
M0ZGMTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFByZWRp
Y3RlZFR5cGUuY3BwICovOyB9OworCQkwRkQ4MkU4NjE0MUYzRkYxMDAxNzlDOTQgLyogU3BlY3Vs
YXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZEODJFODQxNDFGM0ZEQTAwMTc5Qzk0IC8qIFNwZWN1bGF0ZWRUeXBlLmNwcCAqLzsgfTsK
IAkJMEZFMjI4RUQxNDM2QUIyNzAwMTk2QzQ4IC8qIE9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRTIyOEVCMTQzNkFCMjMwMDE5NkM0OCAv
KiBPcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEZFMjI4RUUxNDM2QUIyQzAwMTk2QzQ4IC8qIE9wdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZFMjI4RUExNDM2QUIyMzAwMTk2
QzQ4IC8qIE9wdGlvbnMuY3BwICovOyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwICovOyB9OwpAQCAtODc1LDEwICs4NzUsMTAgQEAKIAkJMEZEODJFMUUxNDE3
MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdDYXBhYmlsaXRpZXMuY3BwOyBwYXRoID0gZGZnL0RGR0NhcGFi
aWxpdGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTFGMTQxNzJD
MkYwMDE3OUM5NCAvKiBERkdDYXBhYmlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHQ2FwYWJpbGl0aWVzLmg7IHBhdGggPSBkZmcvREZHQ2FwYWJpbGl0aWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAv
KiBDb21wYWN0SklUQ29kZU1hcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b21wYWN0SklUQ29kZU1hcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwRkQ4MkU0
RjE0MURBRUExMDAxNzlDOTQgLyogUHJlZGljdGVkVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcmVkaWN0ZWRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTcGVjdWxhdGVkVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkQ4MkU1MjE0MURBRURFMDAxNzlDOTQgLyogREZHT1NSRW50cnku
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRW50cnkuY3Bw
OyBwYXRoID0gZGZnL0RGR09TUkVudHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZEODJFNTMxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkVudHJ5Lmg7IHBhdGggPSBkZmcvREZHT1NSRW50
cnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZEODJFODQxNDFGM0ZEQTAwMTc5
Qzk0IC8qIFByZWRpY3RlZFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUHJlZGljdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
RDgyRTg0MTQxRjNGREEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVjdWxhdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGRTIyOEVBMTQzNkFCMjMwMDE5NkM0OCAvKiBPcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE9wdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkUyMjhFQjE0MzZBQjIzMDAxOTZDNDggLyogT3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKQEAgLTIyNzUsOCArMjI3NSw4IEBACiAJCQkJQkNGRDhDOTEwRUVC
MkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovLAogCQkJCTk2OUEwNzk0MEVEMUQzQUUwMEYx
RjY4MSAvKiBPcGNvZGUuY3BwICovLAogCQkJCTk2OUEwNzk1MEVEMUQzQUUwMEYxRjY4MSAvKiBP
cGNvZGUuaCAqLywKLQkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogUHJlZGljdGVkVHlw
ZS5jcHAgKi8sCi0JCQkJMEZEODJFNEYxNDFEQUVBMTAwMTc5Qzk0IC8qIFByZWRpY3RlZFR5cGUu
aCAqLywKKwkJCQkwRkQ4MkU4NDE0MUYzRkRBMDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuY3Bw
ICovLAorCQkJCTBGRDgyRTRGMTQxREFFQTEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5oICov
LAogCQkJCTE0MjlEODgzMEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuY3BwICovLAog
CQkJCTE0MjlEODg0MEVEMjFDM0QwMEI4OTYxOSAvKiBTYW1wbGluZ1Rvb2wuaCAqLywKIAkJCQlC
Q0NGMEQwQjBFRjBCOEE1MDA0MTNDOEYgLyogU3RydWN0dXJlU3R1YkluZm8uY3BwICovLApAQCAt
MjUwNiw3ICsyNTA2LDcgQEAKIAkJCQlCQzE4QzQ0QjBFMTZGNUNEMDBCMzQ0NjAgLyogUGFyc2Vy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA1MkMzNTBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2Vy
QXJlbmEuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MzAzRDY0MTQ0N0I5RTEwMEQzRjkwNCAvKiBQ
YXJzZXJUb2tlbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTBGRDgyRTU0MTQxREFFRUUwMDE3OUM5
NCAvKiBQcmVkaWN0ZWRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkQ4MkU1NDE0MURBRUVF
MDAxNzlDOTQgLyogU3BlY3VsYXRlZFR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDUw
MEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ1
MTBFMTZGNUNEMDBCMzQ0NjAgLyogUHJvZmlsZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MThDNDUyMEUxNkY1Q0QwMEIzNDQ2MCAvKiBQcm9maWxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0z
MTQ3LDcgKzMxNDcsNyBAQAogCQkJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUJDMTA3RUM1NEQwMDQyRUMyQyAvKiBQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwNTJDMzQwRkI3OTIxOTAwNDhGREMzIC8qIFBh
cnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTBGRDgyRTg2MTQxRjNGRjEwMDE3OUM5
NCAvKiBQcmVkaWN0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRDgyRTg2MTQxRjNG
RjEwMDE3OUM5NCAvKiBTcGVjdWxhdGVkVHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NTc0
MkY2NTBERDExRjVBMDAwOTE3RkIgLyogUHJvZmlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
NUNENDU3NjBFMUM0RkREMDA4NTM1OEUgLyogUHJvZmlsZUdlbmVyYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5NUFCODM1NjBEQTQzQzMwMDBCQzgzRjMgLyogUHJvZmlsZU5vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1NjAsNyArMjU2MCw3IEBA
IGJvb2wgQ29kZUJsb2NrOjpzaG91bGRPcHRpbWl6ZU5vdygpCiAgICAgICAgICAgICBwcm9maWxl
LT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxl
LT5tX3ByZWRpY3Rpb24gIT0gUHJlZGljdE5vbmUpCisgICAgICAgIGlmIChwcm9maWxlLT5udW1i
ZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLT5tX3ByZWRpY3Rpb24gIT0gU3BlY05vbmUpCiAgICAg
ICAgICAgICBudW1iZXJPZkxpdmVOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKICAgICAgICAg
cHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAgICAgfQpAQCAtMjYxNCw3ICsy
NjE0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKICAgICAgICAgICAg
IGRhdGFMb2coIiAgIGFyZyA9ICV1OiAiLCBpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICBkYXRhTG9nKCIgICBiYyA9ICVkOiAiLCBwcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0KTsKLSAg
ICAgICAgaWYgKCFwcm9maWxlLT5udW1iZXJPZlNhbXBsZXMoKSAmJiBwcm9maWxlLT5tX3ByZWRp
Y3Rpb24gPT0gUHJlZGljdE5vbmUpIHsKKyAgICAgICAgaWYgKCFwcm9maWxlLT5udW1iZXJPZlNh
bXBsZXMoKSAmJiBwcm9maWxlLT5tX3ByZWRpY3Rpb24gPT0gU3BlY05vbmUpIHsKICAgICAgICAg
ICAgIGRhdGFMb2coIjxlbXB0eT5cbiIpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJl
dmlzaW9uIDExOTYwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtNTc2LDcgKzU3Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkp
IC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgICAgICB9Ci0gICAgICAgIFByZWRpY3RlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZv
ckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgU3BlY3VsYXRlZFR5
cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9m
ZnNldCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsMTIgKzg0LDEyIEBAIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlKiBMYXp5T3BlcmFuZFZhbHUKICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwogfQogCi1QcmVk
aWN0ZWRUeXBlIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpwcmVkaWN0aW9uKAorU3Bl
Y3VsYXRlZFR5cGUgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVQYXJzZXI6OnByZWRpY3Rpb24oCiAg
ICAgY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkgY29uc3QKIHsKICAgICBM
YXp5T3BlcmFuZFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGdldElmUHJlc2VudChrZXkpOwogICAg
IGlmICghcHJvZmlsZSkKLSAgICAgICAgcmV0dXJuIFByZWRpY3ROb25lOworICAgICAgICByZXR1
cm4gU3BlY05vbmU7CiAgICAgCiAgICAgcmV0dXJuIHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgJKHJldmlzaW9uIDExOTYwNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDcgQEAgcHVibGljOgogICAgIExhenlPcGVy
YW5kVmFsdWVQcm9maWxlKiBnZXRJZlByZXNlbnQoCiAgICAgICAgIGNvbnN0IExhenlPcGVyYW5k
VmFsdWVQcm9maWxlS2V5JiBrZXkpIGNvbnN0OwogICAgIAotICAgIFByZWRpY3RlZFR5cGUgcHJl
ZGljdGlvbihjb25zdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSYga2V5KSBjb25zdDsKKyAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxl
S2V5JiBrZXkpIGNvbnN0OwogcHJpdmF0ZToKICAgICBDb21wcmVzc2VkTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVIb2xkZXImIG1faG9sZGVyOwogICAgIEhhc2hNYXA8TGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGVLZXksIExhenlPcGVyYW5kVmFsdWVQcm9maWxlKj4gbV9tYXA7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwCShyZXZpc2lv
biAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMzAxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJQcmVkaWN0ZWRUeXBlLmgiCi0KLSNpbmNsdWRlICJBcmd1bWVu
dHMuaCIKLSNpbmNsdWRlICJKU0FycmF5LmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgotI2luY2x1ZGUgPHd0Zi9Cb3VuZHNDaGVja2VkUG9pbnRl
ci5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLQotY29uc3QgY2hhciogcHJlZGljdGlvblRvU3RyaW5n
KFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlID09IFByZWRpY3ROb25lKQot
ICAgICAgICByZXR1cm4gIk5vbmUiOwotICAgIAotICAgIHN0YXRpYyBjb25zdCBpbnQgc2l6ZSA9
IDI1NjsKLSAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXplXTsKLSAgICBCb3VuZHNDaGVj
a2VkUG9pbnRlcjxjaGFyPiBwdHIoZGVzY3JpcHRpb24sIHNpemUpOwotICAgIAotICAgIGJvb2wg
aXNUb3AgPSB0cnVlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RDZWxsT3RoZXIpCi0g
ICAgICAgIHB0ci5zdHJjYXQoIk90aGVyY2VsbCIpOwotICAgIGVsc2UKLSAgICAgICAgaXNUb3Ag
PSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0T2JqZWN0T3RoZXIpCi0gICAg
ICAgIHB0ci5zdHJjYXQoIk90aGVyb2JqIik7Ci0gICAgZWxzZQotICAgICAgICBpc1RvcCA9IGZh
bHNlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RGaW5hbE9iamVjdCkKLSAgICAgICAg
cHRyLnN0cmNhdCgiRmluYWwiKTsKLSAgICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0K
LSAgICBpZiAodmFsdWUgJiBQcmVkaWN0QXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkFycmF5
Iik7Ci0gICAgZWxzZQotICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgIAotICAgIGlmICh2YWx1
ZSAmIFByZWRpY3RJbnQ4QXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkludDhhcnJheSIpOwot
ICAgIGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQ
cmVkaWN0SW50MTZBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiSW50MTZhcnJheSIpOwotICAg
IGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVk
aWN0SW50MzJBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiSW50MzJhcnJheSIpOwotICAgIGVs
c2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0
VWludDhBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiVWludDhhcnJheSIpOwotICAgIGVsc2UK
LSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLQotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RVaW50OENs
YW1wZWRBcnJheSkKLSAgICAgICAgcHRyLnN0cmNhdCgiVWludDhjbGFtcGVkYXJyYXkiKTsKLSAg
ICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKHZhbHVlICYgUHJl
ZGljdFVpbnQxNkFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJVaW50MTZhcnJheSIpOwotICAg
IGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVk
aWN0VWludDMyQXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIlVpbnQzMmFycmF5Iik7Ci0gICAg
ZWxzZQotICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRp
Y3RGbG9hdDMyQXJyYXkpCi0gICAgICAgIHB0ci5zdHJjYXQoIkZsb2F0MzJhcnJheSIpOwotICAg
IGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVk
aWN0RmxvYXQ2NEFycmF5KQotICAgICAgICBwdHIuc3RyY2F0KCJGbG9hdDY0YXJyYXkiKTsKLSAg
ICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0gICAgCi0gICAgaWYgKHZhbHVlICYgUHJl
ZGljdEZ1bmN0aW9uKQotICAgICAgICBwdHIuc3RyY2F0KCJGdW5jdGlvbiIpOwotICAgIGVsc2UK
LSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0TXlB
cmd1bWVudHMpCi0gICAgICAgIHB0ci5zdHJjYXQoIk15YXJndW1lbnRzIik7Ci0gICAgZWxzZQot
ICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RGb3Jl
aWduQXJndW1lbnRzKQotICAgICAgICBwdHIuc3RyY2F0KCJGb3JlaWduYXJndW1lbnRzIik7Ci0g
ICAgZWxzZQotICAgICAgICBpc1RvcCA9IGZhbHNlOwotICAgIAotICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RTdHJpbmcpCi0gICAgICAgIHB0ci5zdHJjYXQoIlN0cmluZyIpOwotICAgIGVsc2UKLSAg
ICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0SW50MzIp
Ci0gICAgICAgIHB0ci5zdHJjYXQoIkludCIpOwotICAgIGVsc2UKLSAgICAgICAgaXNUb3AgPSBm
YWxzZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0RG91YmxlUmVhbCkKLSAgICAgICAg
cHRyLnN0cmNhdCgiRG91YmxlcmVhbCIpOwotICAgIGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxz
ZTsKLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0RG91YmxlTmFOKQotICAgICAgICBwdHIu
c3RyY2F0KCJEb3VibGVuYW4iKTsKLSAgICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0g
ICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdEJvb2xlYW4pCi0gICAgICAgIHB0ci5zdHJjYXQo
IkJvb2wiKTsKLSAgICBlbHNlCi0gICAgICAgIGlzVG9wID0gZmFsc2U7Ci0gICAgCi0gICAgaWYg
KHZhbHVlICYgUHJlZGljdE90aGVyKQotICAgICAgICBwdHIuc3RyY2F0KCJPdGhlciIpOwotICAg
IGVsc2UKLSAgICAgICAgaXNUb3AgPSBmYWxzZTsKLSAgICAKLSAgICBpZiAoaXNUb3ApIHsKLSAg
ICAgICAgcHRyID0gZGVzY3JpcHRpb247Ci0gICAgICAgIHB0ci5zdHJjYXQoIlRvcCIpOwotICAg
IH0KLSAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0RW1wdHkpCi0gICAgICAgIHB0ci5zdHJj
YXQoIkVtcHR5Iik7Ci0gICAgCi0gICAgKnB0cisrID0gMDsKLSAgICAKLSAgICByZXR1cm4gZGVz
Y3JpcHRpb247Ci19Ci0KLWNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5n
KFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbikKLXsKLSAgICBpZiAoaXNGaW5hbE9iamVjdFByZWRp
Y3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPEZpbmFsPiI7Ci0gICAgaWYgKGlz
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxBcnJheT4iOwot
ICAgIGlmIChpc1N0cmluZ1ByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAi
PFN0cmluZz4iOwotICAgIGlmIChpc0Z1bmN0aW9uUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAg
ICAgICAgcmV0dXJuICI8RnVuY3Rpb24+IjsKLSAgICBpZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9u
KHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxJbnQ4YXJyYXk+IjsKLSAgICBpZiAoaXNJ
bnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgcmV0dXJuICI8SW50MTZh
cnJheT4iOwotICAgIGlmIChpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAg
ICAgICByZXR1cm4gIjxJbnQzMmFycmF5PiI7Ci0gICAgaWYgKGlzVWludDhBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPFVpbnQ4YXJyYXk+IjsKLSAgICBpZiAo
aXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPFVp
bnQxNmFycmF5PiI7Ci0gICAgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQotICAgICAgICByZXR1cm4gIjxVaW50MzJhcnJheT4iOwotICAgIGlmIChpc0Zsb2F0MzJBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgIHJldHVybiAiPEZsb2F0MzJhcnJheT4i
OwotICAgIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAg
IHJldHVybiAiPEZsb2F0NjRhcnJheT4iOwotICAgIGlmIChpc015QXJndW1lbnRzUHJlZGljdGlv
bihwcmVkaWN0aW9uKSkKLSAgICAgICAgcmV0dXJuICI8TXlhcmd1bWVudHM+IjsKLSAgICBpZiAo
aXNBcmd1bWVudHNQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxBcmd1
bWVudHM+IjsKLSAgICBpZiAoaXNPYmplY3RQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAg
ICByZXR1cm4gIjxPYmplY3Q+IjsKLSAgICBpZiAoaXNDZWxsUHJlZGljdGlvbihwcmVkaWN0aW9u
KSkKLSAgICAgICAgcmV0dXJuICI8Q2VsbD4iOwotICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihw
cmVkaWN0aW9uKSkKLSAgICAgICAgcmV0dXJuICI8SW50MzI+IjsKLSAgICBpZiAoaXNEb3VibGVQ
cmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxEb3VibGU+IjsKLSAgICBp
ZiAoaXNOdW1iZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICByZXR1cm4gIjxOdW1i
ZXI+IjsKLSAgICBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAg
cmV0dXJuICI8Qm9vbGVhbj4iOwotICAgIGlmIChpc090aGVyUHJlZGljdGlvbihwcmVkaWN0aW9u
KSkKLSAgICAgICAgcmV0dXJuICI8T3RoZXI+IjsKLSAgICByZXR1cm4gIiI7Ci19Ci0KLVByZWRp
Y3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8pCi17Ci0gICAgaWYgKGNsYXNzSW5mbyA9PSAmSlNGaW5hbE9iamVjdDo6c19pbmZvKQotICAg
ICAgICByZXR1cm4gUHJlZGljdEZpbmFsT2JqZWN0OwotICAgIAotICAgIGlmIChjbGFzc0luZm8g
PT0gJkpTQXJyYXk6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIFByZWRpY3RBcnJheTsKLSAgICAK
LSAgICBpZiAoY2xhc3NJbmZvID09ICZKU1N0cmluZzo6c19pbmZvKQotICAgICAgICByZXR1cm4g
UHJlZGljdFN0cmluZzsKLSAgICAKLSAgICBpZiAoY2xhc3NJbmZvID09ICZBcmd1bWVudHM6OnNf
aW5mbykKLSAgICAgICAgcmV0dXJuIFByZWRpY3RBcmd1bWVudHM7IC8vIENhbm5vdCBkaXN0aW5n
dWlzaCBiZXR3ZWVuIE15QXJndW1lbnRzIGFuZCBGb3JlaWduQXJndW1lbnRzIGF0IHRoaXMgc3Rh
Z2UuIFRoYXQgaGFwcGVucyBpbiB0aGUgZmxvdyBhbmFseXNpcy4KLSAgICAKLSAgICBpZiAoY2xh
c3NJbmZvLT5pc1N1YkNsYXNzT2YoJkpTRnVuY3Rpb246OnNfaW5mbykpCi0gICAgICAgIHJldHVy
biBQcmVkaWN0RnVuY3Rpb247Ci0KLSAgICAKLSAgICBpZiAoY2xhc3NJbmZvLT50eXBlZEFycmF5
U3RvcmFnZVR5cGUgIT0gVHlwZWRBcnJheU5vbmUpIHsKLSAgICAgICAgc3dpdGNoIChjbGFzc0lu
Zm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgewotICAgICAgICBjYXNlIFR5cGVkQXJyYXlJbnQ4
OgotICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RJbnQ4QXJyYXk7Ci0gICAgICAgIGNhc2UgVHlw
ZWRBcnJheUludDE2OgotICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RJbnQxNkFycmF5OwotICAg
ICAgICBjYXNlIFR5cGVkQXJyYXlJbnQzMjoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0SW50
MzJBcnJheTsKLSAgICAgICAgY2FzZSBUeXBlZEFycmF5VWludDg6Ci0gICAgICAgICAgICByZXR1
cm4gUHJlZGljdFVpbnQ4QXJyYXk7Ci0gICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQ4Q2xhbXBl
ZDoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0VWludDhDbGFtcGVkQXJyYXk7Ci0gICAgICAg
IGNhc2UgVHlwZWRBcnJheVVpbnQxNjoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0VWludDE2
QXJyYXk7Ci0gICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQzMjoKLSAgICAgICAgICAgIHJldHVy
biBQcmVkaWN0VWludDMyQXJyYXk7Ci0gICAgICAgIGNhc2UgVHlwZWRBcnJheUZsb2F0MzI6Ci0g
ICAgICAgICAgICByZXR1cm4gUHJlZGljdEZsb2F0MzJBcnJheTsKLSAgICAgICAgY2FzZSBUeXBl
ZEFycmF5RmxvYXQ2NDoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0RmxvYXQ2NEFycmF5Owot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgCi0gICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFzc09mKCZKU09iamVjdDo6c19pbmZvKSkK
LSAgICAgICAgcmV0dXJuIFByZWRpY3RPYmplY3RPdGhlcjsKLSAgICAKLSAgICByZXR1cm4gUHJl
ZGljdENlbGxPdGhlcjsKLX0KLQotUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbVN0cnVjdHVy
ZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLXsKLSAgICByZXR1cm4gcHJlZGljdGlvbkZyb21DbGFz
c0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7Ci19Ci0KLVByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbkZyb21DZWxsKEpTQ2VsbCogY2VsbCkKLXsKLSAgICByZXR1cm4gcHJlZGljdGlvbkZyb21T
dHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkpOwotfQotCi1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm4gUHJlZGljdEVtcHR5OwotICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpCi0g
ICAgICAgIHJldHVybiBQcmVkaWN0SW50MzI7Ci0gICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsK
LSAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFzTnVtYmVyKCk7Ci0gICAgICAgIGlmIChu
dW1iZXIgPT0gbnVtYmVyKQotICAgICAgICAgICAgcmV0dXJuIFByZWRpY3REb3VibGVSZWFsOwot
ICAgICAgICByZXR1cm4gUHJlZGljdERvdWJsZU5hTjsKLSAgICB9Ci0gICAgaWYgKHZhbHVlLmlz
Q2VsbCgpKQotICAgICAgICByZXR1cm4gcHJlZGljdGlvbkZyb21DZWxsKHZhbHVlLmFzQ2VsbCgp
KTsKLSAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCi0gICAgICAgIHJldHVybiBQcmVkaWN0Qm9v
bGVhbjsKLSAgICBBU1NFUlQodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAgcmV0dXJu
IFByZWRpY3RPdGhlcjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgSlNDCi0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAkocmV2aXNpb24gMTE5
NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMSwyNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBQcmVkaWN0ZWRU
eXBlX2gKLSNkZWZpbmUgUHJlZGljdGVkVHlwZV9oCi0KLSNpbmNsdWRlICJKU1ZhbHVlLmgiCi0K
LW5hbWVzcGFjZSBKU0MgewotCi1jbGFzcyBTdHJ1Y3R1cmU7Ci0KLXR5cGVkZWYgdWludDMyX3Qg
UHJlZGljdGVkVHlwZTsKLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3ROb25lICAg
ICAgICAgICAgICA9IDB4MDAwMDAwMDA7IC8vIFdlIGRvbid0IGtub3cgYW55dGhpbmcgeWV0Lgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEZpbmFsT2JqZWN0ICAgICAgID0gMHgw
MDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVjdC4KLXN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RBcnJheSAgICAgICAgICAgICA9IDB4MDAwMDAwMDI7IC8v
IEl0J3MgZGVmaW5pdGVseSBhIEpTQXJyYXkuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0RnVuY3Rpb24gICAgICAgICAgPSAweDAwMDAwMDA4OyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBKU0Z1bmN0aW9uIG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBQcmVk
aWN0ZWRUeXBlIFByZWRpY3RJbnQ4QXJyYXkgICAgICAgICA9IDB4MDAwMDAwMTA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEludDE2QXJyYXkgICAgICAgID0gMHgwMDAwMDAy
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFz
c2VzLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEludDMyQXJyYXkgICAgICAg
ID0gMHgwMDAwMDA0MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyQXJyYXkgb3Igb25lIG9m
IGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdFVpbnQ4
QXJyYXkgICAgICAgID0gMHgwMDAwMDA4MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQ4QXJy
YXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
UHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5ID0gMHgwMDAwMDEwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIFVpbnQ4Q2xhbXBlZEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBj
b25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RVaW50MTZBcnJheSAgICAgICA9IDB4MDAwMDAyMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0VWludDMyQXJyYXkgICAgICAg
PSAweDAwMDAwNDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDMyQXJyYXkgb3Igb25lIG9m
IGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEZsb2F0
MzJBcnJheSAgICAgID0gMHgwMDAwMDgwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFy
cmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBl
IFByZWRpY3RGbG9hdDY0QXJyYXkgICAgICA9IDB4MDAwMDEwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3Qg
UHJlZGljdGVkVHlwZSBQcmVkaWN0TXlBcmd1bWVudHMgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYW4gQXJndW1lbnRzIG9iamVjdCwgYW5kIGl0J3MgZGVmaW5pdGVseSB0
aGUgb25lIGZvciBteSBjdXJyZW50IGZyYW1lLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
UHJlZGljdEZvcmVpZ25Bcmd1bWVudHMgID0gMHgwMDAwNDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IGFuIEFyZ3VtZW50cyBvYmplY3QsIGFuZCBpdCdzIGRlZmluaXRlbHkgbm90IG1pbmUuCi1zdGF0
aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0QXJndW1lbnRzICAgICAgICAgPSAweDAwMDA2
MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gQXJndW1lbnRzIG9iamVjdC4KLXN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RPYmplY3RPdGhlciAgICAgICA9IDB4MDAwMDgwMDA7IC8v
IEl0J3MgZGVmaW5pdGVseSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBKU0FycmF5
LCBvciBKU0Z1bmN0aW9uLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE9iamVj
dE1hc2sgICAgICAgID0gMHgwMDAwZmZmZjsgLy8gQml0bWFzayB1c2VkIGZvciB0ZXN0aW5nIGZv
ciBhbnkga2luZCBvZiBvYmplY3QgcHJlZGljdGlvbi4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRU
eXBlIFByZWRpY3RTdHJpbmcgICAgICAgICAgICA9IDB4MDAwMTAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIEpTU3RyaW5nLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdENlbGxP
dGhlciAgICAgICAgID0gMHgwMDAyMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsIGJ1
dCBub3QgYSBzdWJjbGFzcyBvZiBKU09iamVjdCBhbmQgZGVmaW5pdGVseSBub3QgYSBKU1N0cmlu
Zy4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RDZWxsICAgICAgICAgICAgICA9
IDB4MDAwM2ZmZmY7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTQ2VsbC4KLXN0YXRpYyBjb25zdCBQ
cmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQzMiAgICAgICAgICAgICA9IDB4MDA4MDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhbiBJbnQzMi4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRp
Y3REb3VibGVSZWFsICAgICAgICA9IDB4MDEwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIG5v
bi1OYU4gZG91YmxlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdERvdWJsZU5h
TiAgICAgICAgID0gMHgwMjAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgTmFOLgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdERvdWJsZSAgICAgICAgICAgID0gMHgwMzAwMDAw
MDsgLy8gSXQncyBlaXRoZXIgYSBub24tTmFOIG9yIGEgTmFOIGRvdWJsZS4KLXN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3ROdW1iZXIgICAgICAgICAgICA9IDB4MDM4MDAwMDA7IC8v
IEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91YmxlLgotc3RhdGljIGNvbnN0IFByZWRpY3Rl
ZFR5cGUgUHJlZGljdEJvb2xlYW4gICAgICAgICAgID0gMHgwNDAwMDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgQm9vbGVhbi4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RPdGhl
ciAgICAgICAgICAgICA9IDB4MDgwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBub25lIG9mIHRo
ZSBhYm92ZS4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RUb3AgICAgICAgICAg
ICAgICA9IDB4MGZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEVtcHR5ICAgICAgICAgICAgID0gMHgxMDAwMDAw
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIGVtcHR5IHZhbHVlIG1hcmtlci4KLXN0YXRpYyBjb25z
dCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RFbXB0eU9yVG9wICAgICAgICA9IDB4MWZmZmZmZmY7IC8v
IEl0IGNhbiBiZSBhbnkgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
Rml4ZWRJbmRleGVkU3RvcmFnZU1hc2sgPSBQcmVkaWN0SW50OEFycmF5IHwgUHJlZGljdEludDE2
QXJyYXkgfCBQcmVkaWN0SW50MzJBcnJheSB8IFByZWRpY3RVaW50OEFycmF5IHwgUHJlZGljdFVp
bnQ4Q2xhbXBlZEFycmF5IHwgUHJlZGljdFVpbnQxNkFycmF5IHwgUHJlZGljdFVpbnQzMkFycmF5
IHwgUHJlZGljdEZsb2F0MzJBcnJheSB8IFByZWRpY3RGbG9hdDY0QXJyYXk7Ci0KLXR5cGVkZWYg
Ym9vbCAoKlByZWRpY3Rpb25DaGVja2VyKShQcmVkaWN0ZWRUeXBlKTsKLQotLy8gRHVtbXkgcHJl
ZGljdGlvbiBjaGVja2VyLCBvbmx5IHVzZWZ1bCBpZiBzb21lb25lIGluc2lzdHMgb24gcmVxdWly
aW5nIGEgcHJlZGljdGlvbiBjaGVja2VyLgotaW5saW5lIGJvb2wgaXNBbnlQcmVkaWN0aW9uKFBy
ZWRpY3RlZFR5cGUpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWlubGluZSBib29sIGlzQ2Vs
bFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISEodmFsdWUg
JiBQcmVkaWN0Q2VsbCkgJiYgISh2YWx1ZSAmIH5QcmVkaWN0Q2VsbCk7Ci19Ci0KLWlubGluZSBi
b29sIGlzT2JqZWN0UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVy
biAhISh2YWx1ZSAmIFByZWRpY3RPYmplY3RNYXNrKSAmJiAhKHZhbHVlICYgflByZWRpY3RPYmpl
Y3RNYXNrKTsKLX0KLQotaW5saW5lIGJvb2wgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24oUHJlZGlj
dGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEZpbmFsT2JqZWN0
OwotfQotCi1pbmxpbmUgYm9vbCBpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24oUHJlZGlj
dGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISEodmFsdWUgJiAoUHJlZGljdEZpbmFsT2Jq
ZWN0IHwgUHJlZGljdE90aGVyKSkgJiYgISh2YWx1ZSAmIH4oUHJlZGljdEZpbmFsT2JqZWN0IHwg
UHJlZGljdE90aGVyKSk7Ci19Ci0KLWlubGluZSBib29sIGlzRml4ZWRJbmRleGVkU3RvcmFnZU9i
amVjdFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISF2YWx1
ZSAmJiAodmFsdWUgJiBGaXhlZEluZGV4ZWRTdG9yYWdlTWFzaykgPT0gdmFsdWU7Ci19Ci0KLWlu
bGluZSBib29sIGlzU3RyaW5nUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAg
IHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0U3RyaW5nOwotfQotCi1pbmxpbmUgYm9vbCBpc0FycmF5
UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQ
cmVkaWN0QXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlzRnVuY3Rpb25QcmVkaWN0aW9uKFByZWRp
Y3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RGdW5jdGlvbjsK
LX0KLQotaW5saW5lIGJvb2wgaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQ4QXJyYXk7Ci19Ci0KLWlubGlu
ZSBib29sIGlzSW50MTZBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAg
ICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEludDE2QXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlz
SW50MzJBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4g
dmFsdWUgPT0gUHJlZGljdEludDMyQXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlzVWludDhBcnJh
eVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0g
UHJlZGljdFVpbnQ4QXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlzVWludDhDbGFtcGVkQXJyYXlQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFBy
ZWRpY3RVaW50OENsYW1wZWRBcnJheTsKLX0KLQotaW5saW5lIGJvb2wgaXNVaW50MTZBcnJheVBy
ZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJl
ZGljdFVpbnQxNkFycmF5OwotfQotCi1pbmxpbmUgYm9vbCBpc1VpbnQzMkFycmF5UHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0VWlu
dDMyQXJyYXk7Ci19Ci0KLWlubGluZSBib29sIGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihQcmVk
aWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQzMkFy
cmF5OwotfQotCi1pbmxpbmUgYm9vbCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24oUHJlZGljdGVk
VHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEZsb2F0NjRBcnJheTsK
LX0KLQotaW5saW5lIGJvb2wgaXNBcmd1bWVudHNQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCi17Ci0gICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgUHJlZGljdEFyZ3VtZW50cykg
PT0gdmFsdWU7Ci19Ci0KLWlubGluZSBib29sIGlzQWN0aW9uYWJsZUludE11dGFibGVBcnJheVBy
ZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gaXNJbnQ4QXJyYXlQ
cmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHZhbHVl
KQotICAgICAgICB8fCBpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBp
c1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc1VpbnQ4Q2xhbXBlZEFy
cmF5UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNVaW50MTZBcnJheVByZWRpY3Rpb24o
dmFsdWUpCi0gICAgICAgIHx8IGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKLX0KLQot
aW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRp
Y3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbih2
YWx1ZSkKLSAgICAgICAgfHwgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKLX0KLQot
aW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRp
Y3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGlzQWN0aW9uYWJsZUludE11dGFibGVBcnJh
eVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFy
cmF5UHJlZGljdGlvbih2YWx1ZSk7Ci19Ci0KLWlubGluZSBib29sIGlzQWN0aW9uYWJsZU11dGFi
bGVBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gaXNB
cnJheVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzQXJndW1lbnRzUHJlZGljdGlvbih2
YWx1ZSkKLSAgICAgICAgfHwgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYXlQcmVkaWN0aW9u
KHZhbHVlKTsKLX0KLQotaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKFBy
ZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIGlzU3RyaW5nUHJlZGljdGlvbih2YWx1
ZSkKLSAgICAgICAgfHwgaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbih2YWx1ZSk7
Ci19Ci0KLWlubGluZSBib29sIGlzQXJyYXlPck90aGVyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQotewotICAgIHJldHVybiAhISh2YWx1ZSAmIChQcmVkaWN0QXJyYXkgfCBQcmVkaWN0
T3RoZXIpKSAmJiAhKHZhbHVlICYgfihQcmVkaWN0QXJyYXkgfCBQcmVkaWN0T3RoZXIpKTsKLX0K
LQotaW5saW5lIGJvb2wgaXNNeUFyZ3VtZW50c1ByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdE15QXJndW1lbnRzOwotfQotCi1pbmxp
bmUgYm9vbCBpc0ludDMyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJl
dHVybiB2YWx1ZSA9PSBQcmVkaWN0SW50MzI7Ci19Ci0KLWlubGluZSBib29sIGlzRG91YmxlUmVh
bFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gdmFsdWUgPT0g
UHJlZGljdERvdWJsZVJlYWw7Ci19Ci0KLWlubGluZSBib29sIGlzRG91YmxlUHJlZGljdGlvbihQ
cmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIFBy
ZWRpY3REb3VibGUpID09IHZhbHVlOwotfQotCi1pbmxpbmUgYm9vbCBpc051bWJlclByZWRpY3Rp
b24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKLXsKLSAgICByZXR1cm4gISEodmFsdWUgJiBQcmVkaWN0
TnVtYmVyKSAmJiAhKHZhbHVlICYgflByZWRpY3ROdW1iZXIpOwotfQotCi1pbmxpbmUgYm9vbCBp
c0Jvb2xlYW5QcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHZh
bHVlID09IFByZWRpY3RCb29sZWFuOwotfQotCi1pbmxpbmUgYm9vbCBpc090aGVyUHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQotewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0T3Ro
ZXI7Ci19Ci0KLWlubGluZSBib29sIGlzRW1wdHlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCi17Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RFbXB0eTsKLX0KLQotY29uc3QgY2hh
ciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZFR5cGUgdmFsdWUpOwotY29uc3QgY2hhciog
cHJlZGljdGlvblRvQWJicmV2aWF0ZWRTdHJpbmcoUHJlZGljdGVkVHlwZSB2YWx1ZSk7Ci0KLS8v
IE1lcmdlIHR3byBwcmVkaWN0aW9ucy4gTm90ZSB0aGF0IGN1cnJlbnRseSB0aGlzIGp1c3QgZG9l
cyBsZWZ0IHwgcmlnaHQuIEl0IG1heQotLy8gc2VlbSB0ZW1wdGluZyB0byBkbyBzbyBkaXJlY3Rs
eSwgYnV0IHlvdSB3b3VsZCBiZSBkb2luZyBzbyBhdCB5b3VyIG93biBwZXJpbCwKLS8vIHNpbmNl
IHRoZSBtZXJnaW5nIHByb3RvY29sIFByZWRpY3RlZFR5cGUgbWF5IGNoYW5nZSBhdCBhbnkgdGlt
ZSAoYW5kIGhhcyBhbHJlYWR5Ci0vLyBjaGFuZ2VkIHNldmVyYWwgdGltZXMgaW4gaXRzIGhpc3Rv
cnkpLgotaW5saW5lIFByZWRpY3RlZFR5cGUgbWVyZ2VQcmVkaWN0aW9ucyhQcmVkaWN0ZWRUeXBl
IGxlZnQsIFByZWRpY3RlZFR5cGUgcmlnaHQpCi17Ci0gICAgcmV0dXJuIGxlZnQgfCByaWdodDsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29sIG1lcmdlUHJlZGljdGlvbihU
JiBsZWZ0LCBQcmVkaWN0ZWRUeXBlIHJpZ2h0KQotewotICAgIFByZWRpY3RlZFR5cGUgbmV3UHJl
ZGljdGlvbiA9IHN0YXRpY19jYXN0PFQ+KG1lcmdlUHJlZGljdGlvbnMoc3RhdGljX2Nhc3Q8UHJl
ZGljdGVkVHlwZT4obGVmdCksIHJpZ2h0KSk7Ci0gICAgYm9vbCByZXN1bHQgPSBuZXdQcmVkaWN0
aW9uICE9IHN0YXRpY19jYXN0PFByZWRpY3RlZFR5cGU+KGxlZnQpOwotICAgIGxlZnQgPSBuZXdQ
cmVkaWN0aW9uOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLVByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKik7Ci1QcmVkaWN0ZWRUeXBlIHByZWRp
Y3Rpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSopOwotUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
RnJvbUNlbGwoSlNDZWxsKik7Ci1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tVmFsdWUoSlNW
YWx1ZSk7Ci0KLX0gLy8gbmFtZXNwYWNlIEpTQwotCi0jZW5kaWYgLy8gUHJlZGljdGVkVHlwZV9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5jcHAJKHJldmlzaW9uIDExOTYwNCkJKGZyb20gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1ByZWRpY3RlZFR5cGUuY3BwOjExOTYwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQcmVkaWN0ZWRUeXBl
LmgiCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUg
PHd0Zi9Cb3VuZHNDaGVja2VkUG9pbnRlci5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3Qg
Y2hhciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgaWYg
KHZhbHVlID09IFByZWRpY3ROb25lKQorICAgICAgICByZXR1cm4gIk5vbmUiOworICAgIAorICAg
IHN0YXRpYyBjb25zdCBpbnQgc2l6ZSA9IDI1NjsKKyAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlv
bltzaXplXTsKKyAgICBCb3VuZHNDaGVja2VkUG9pbnRlcjxjaGFyPiBwdHIoZGVzY3JpcHRpb24s
IHNpemUpOworICAgIAorICAgIGJvb2wgaXNUb3AgPSB0cnVlOworICAgIAorICAgIGlmICh2YWx1
ZSAmIFByZWRpY3RDZWxsT3RoZXIpCisgICAgICAgIHB0ci5zdHJjYXQoIk90aGVyY2VsbCIpOwor
ICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAodmFsdWUgJiBQ
cmVkaWN0T2JqZWN0T3RoZXIpCisgICAgICAgIHB0ci5zdHJjYXQoIk90aGVyb2JqIik7CisgICAg
ZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAorICAgIGlmICh2YWx1ZSAmIFByZWRp
Y3RGaW5hbE9iamVjdCkKKyAgICAgICAgcHRyLnN0cmNhdCgiRmluYWwiKTsKKyAgICBlbHNlCisg
ICAgICAgIGlzVG9wID0gZmFsc2U7CisKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0QXJyYXkpCisg
ICAgICAgIHB0ci5zdHJjYXQoIkFycmF5Iik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZh
bHNlOworICAgIAorICAgIGlmICh2YWx1ZSAmIFByZWRpY3RJbnQ4QXJyYXkpCisgICAgICAgIHB0
ci5zdHJjYXQoIkludDhhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsK
KyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0SW50MTZBcnJheSkKKyAgICAgICAgcHRyLnN0
cmNhdCgiSW50MTZhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0SW50MzJBcnJheSkKKyAgICAgICAgcHRyLnN0cmNh
dCgiSW50MzJhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAK
KyAgICBpZiAodmFsdWUgJiBQcmVkaWN0VWludDhBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgi
VWludDhhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKworICAgIGlm
ICh2YWx1ZSAmIFByZWRpY3RVaW50OENsYW1wZWRBcnJheSkKKyAgICAgICAgcHRyLnN0cmNhdCgi
VWludDhjbGFtcGVkYXJyYXkiKTsKKyAgICBlbHNlCisgICAgICAgIGlzVG9wID0gZmFsc2U7Cisg
ICAgCisgICAgaWYgKHZhbHVlICYgUHJlZGljdFVpbnQxNkFycmF5KQorICAgICAgICBwdHIuc3Ry
Y2F0KCJVaW50MTZhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0VWludDMyQXJyYXkpCisgICAgICAgIHB0ci5zdHJj
YXQoIlVpbnQzMmFycmF5Iik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAg
IAorICAgIGlmICh2YWx1ZSAmIFByZWRpY3RGbG9hdDMyQXJyYXkpCisgICAgICAgIHB0ci5zdHJj
YXQoIkZsb2F0MzJhcnJheSIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0RmxvYXQ2NEFycmF5KQorICAgICAgICBwdHIuc3Ry
Y2F0KCJGbG9hdDY0YXJyYXkiKTsKKyAgICBlbHNlCisgICAgICAgIGlzVG9wID0gZmFsc2U7Cisg
ICAgCisgICAgaWYgKHZhbHVlICYgUHJlZGljdEZ1bmN0aW9uKQorICAgICAgICBwdHIuc3RyY2F0
KCJGdW5jdGlvbiIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAg
ICBpZiAodmFsdWUgJiBQcmVkaWN0TXlBcmd1bWVudHMpCisgICAgICAgIHB0ci5zdHJjYXQoIk15
YXJndW1lbnRzIik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOworICAgIAorICAg
IGlmICh2YWx1ZSAmIFByZWRpY3RGb3JlaWduQXJndW1lbnRzKQorICAgICAgICBwdHIuc3RyY2F0
KCJGb3JlaWduYXJndW1lbnRzIik7CisgICAgZWxzZQorICAgICAgICBpc1RvcCA9IGZhbHNlOwor
ICAgIAorICAgIGlmICh2YWx1ZSAmIFByZWRpY3RTdHJpbmcpCisgICAgICAgIHB0ci5zdHJjYXQo
IlN0cmluZyIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBp
ZiAodmFsdWUgJiBQcmVkaWN0SW50MzIpCisgICAgICAgIHB0ci5zdHJjYXQoIkludCIpOworICAg
IGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVk
aWN0RG91YmxlUmVhbCkKKyAgICAgICAgcHRyLnN0cmNhdCgiRG91YmxlcmVhbCIpOworICAgIGVs
c2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0
RG91YmxlTmFOKQorICAgICAgICBwdHIuc3RyY2F0KCJEb3VibGVuYW4iKTsKKyAgICBlbHNlCisg
ICAgICAgIGlzVG9wID0gZmFsc2U7CisgICAgCisgICAgaWYgKHZhbHVlICYgUHJlZGljdEJvb2xl
YW4pCisgICAgICAgIHB0ci5zdHJjYXQoIkJvb2wiKTsKKyAgICBlbHNlCisgICAgICAgIGlzVG9w
ID0gZmFsc2U7CisgICAgCisgICAgaWYgKHZhbHVlICYgUHJlZGljdE90aGVyKQorICAgICAgICBw
dHIuc3RyY2F0KCJPdGhlciIpOworICAgIGVsc2UKKyAgICAgICAgaXNUb3AgPSBmYWxzZTsKKyAg
ICAKKyAgICBpZiAoaXNUb3ApIHsKKyAgICAgICAgcHRyID0gZGVzY3JpcHRpb247CisgICAgICAg
IHB0ci5zdHJjYXQoIlRvcCIpOworICAgIH0KKyAgICAKKyAgICBpZiAodmFsdWUgJiBQcmVkaWN0
RW1wdHkpCisgICAgICAgIHB0ci5zdHJjYXQoIkVtcHR5Iik7CisgICAgCisgICAgKnB0cisrID0g
MDsKKyAgICAKKyAgICByZXR1cm4gZGVzY3JpcHRpb247Cit9CisKK2NvbnN0IGNoYXIqIHByZWRp
Y3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbikKK3sKKyAg
ICBpZiAoaXNGaW5hbE9iamVjdFByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVy
biAiPEZpbmFsPiI7CisgICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAg
ICAgICByZXR1cm4gIjxBcnJheT4iOworICAgIGlmIChpc1N0cmluZ1ByZWRpY3Rpb24ocHJlZGlj
dGlvbikpCisgICAgICAgIHJldHVybiAiPFN0cmluZz4iOworICAgIGlmIChpc0Z1bmN0aW9uUHJl
ZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8RnVuY3Rpb24+IjsKKyAgICBp
ZiAoaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxJ
bnQ4YXJyYXk+IjsKKyAgICBpZiAoaXNJbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkK
KyAgICAgICAgcmV0dXJuICI8SW50MTZhcnJheT4iOworICAgIGlmIChpc0ludDMyQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxJbnQzMmFycmF5PiI7CisgICAg
aWYgKGlzVWludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAi
PFVpbnQ4YXJyYXk+IjsKKyAgICBpZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGlv
bikpCisgICAgICAgIHJldHVybiAiPFVpbnQxNmFycmF5PiI7CisgICAgaWYgKGlzVWludDMyQXJy
YXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxVaW50MzJhcnJheT4i
OworICAgIGlmIChpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAg
IHJldHVybiAiPEZsb2F0MzJhcnJheT4iOworICAgIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbikpCisgICAgICAgIHJldHVybiAiPEZsb2F0NjRhcnJheT4iOworICAgIGlm
IChpc015QXJndW1lbnRzUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8
TXlhcmd1bWVudHM+IjsKKyAgICBpZiAoaXNBcmd1bWVudHNQcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQorICAgICAgICByZXR1cm4gIjxBcmd1bWVudHM+IjsKKyAgICBpZiAoaXNPYmplY3RQcmVkaWN0
aW9uKHByZWRpY3Rpb24pKQorICAgICAgICByZXR1cm4gIjxPYmplY3Q+IjsKKyAgICBpZiAoaXND
ZWxsUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8Q2VsbD4iOworICAg
IGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8SW50
MzI+IjsKKyAgICBpZiAoaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICBy
ZXR1cm4gIjxEb3VibGU+IjsKKyAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQorICAgICAgICByZXR1cm4gIjxOdW1iZXI+IjsKKyAgICBpZiAoaXNCb29sZWFuUHJlZGljdGlv
bihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8Qm9vbGVhbj4iOworICAgIGlmIChpc090
aGVyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgcmV0dXJuICI8T3RoZXI+IjsKKyAg
ICByZXR1cm4gIiI7Cit9CisKK1ByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8o
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCit7CisgICAgaWYgKGNsYXNzSW5mbyA9PSAmSlNG
aW5hbE9iamVjdDo6c19pbmZvKQorICAgICAgICByZXR1cm4gUHJlZGljdEZpbmFsT2JqZWN0Owor
ICAgIAorICAgIGlmIChjbGFzc0luZm8gPT0gJkpTQXJyYXk6OnNfaW5mbykKKyAgICAgICAgcmV0
dXJuIFByZWRpY3RBcnJheTsKKyAgICAKKyAgICBpZiAoY2xhc3NJbmZvID09ICZKU1N0cmluZzo6
c19pbmZvKQorICAgICAgICByZXR1cm4gUHJlZGljdFN0cmluZzsKKyAgICAKKyAgICBpZiAoY2xh
c3NJbmZvID09ICZBcmd1bWVudHM6OnNfaW5mbykKKyAgICAgICAgcmV0dXJuIFByZWRpY3RBcmd1
bWVudHM7IC8vIENhbm5vdCBkaXN0aW5ndWlzaCBiZXR3ZWVuIE15QXJndW1lbnRzIGFuZCBGb3Jl
aWduQXJndW1lbnRzIGF0IHRoaXMgc3RhZ2UuIFRoYXQgaGFwcGVucyBpbiB0aGUgZmxvdyBhbmFs
eXNpcy4KKyAgICAKKyAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoJkpTRnVuY3Rpb246
OnNfaW5mbykpCisgICAgICAgIHJldHVybiBQcmVkaWN0RnVuY3Rpb247CisKKyAgICAKKyAgICBp
ZiAoY2xhc3NJbmZvLT50eXBlZEFycmF5U3RvcmFnZVR5cGUgIT0gVHlwZWRBcnJheU5vbmUpIHsK
KyAgICAgICAgc3dpdGNoIChjbGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgeworICAg
ICAgICBjYXNlIFR5cGVkQXJyYXlJbnQ4OgorICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RJbnQ4
QXJyYXk7CisgICAgICAgIGNhc2UgVHlwZWRBcnJheUludDE2OgorICAgICAgICAgICAgcmV0dXJu
IFByZWRpY3RJbnQxNkFycmF5OworICAgICAgICBjYXNlIFR5cGVkQXJyYXlJbnQzMjoKKyAgICAg
ICAgICAgIHJldHVybiBQcmVkaWN0SW50MzJBcnJheTsKKyAgICAgICAgY2FzZSBUeXBlZEFycmF5
VWludDg6CisgICAgICAgICAgICByZXR1cm4gUHJlZGljdFVpbnQ4QXJyYXk7CisgICAgICAgIGNh
c2UgVHlwZWRBcnJheVVpbnQ4Q2xhbXBlZDoKKyAgICAgICAgICAgIHJldHVybiBQcmVkaWN0VWlu
dDhDbGFtcGVkQXJyYXk7CisgICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQxNjoKKyAgICAgICAg
ICAgIHJldHVybiBQcmVkaWN0VWludDE2QXJyYXk7CisgICAgICAgIGNhc2UgVHlwZWRBcnJheVVp
bnQzMjoKKyAgICAgICAgICAgIHJldHVybiBQcmVkaWN0VWludDMyQXJyYXk7CisgICAgICAgIGNh
c2UgVHlwZWRBcnJheUZsb2F0MzI6CisgICAgICAgICAgICByZXR1cm4gUHJlZGljdEZsb2F0MzJB
cnJheTsKKyAgICAgICAgY2FzZSBUeXBlZEFycmF5RmxvYXQ2NDoKKyAgICAgICAgICAgIHJldHVy
biBQcmVkaWN0RmxvYXQ2NEFycmF5OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGNsYXNzSW5mby0+aXNTdWJDbGFz
c09mKCZKU09iamVjdDo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIFByZWRpY3RPYmplY3RPdGhl
cjsKKyAgICAKKyAgICByZXR1cm4gUHJlZGljdENlbGxPdGhlcjsKK30KKworUHJlZGljdGVkVHlw
ZSBwcmVkaWN0aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBy
ZXR1cm4gcHJlZGljdGlvbkZyb21DbGFzc0luZm8oc3RydWN0dXJlLT5jbGFzc0luZm8oKSk7Cit9
CisKK1ByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DZWxsKEpTQ2VsbCogY2VsbCkKK3sKKyAg
ICByZXR1cm4gcHJlZGljdGlvbkZyb21TdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkpOworfQor
CitQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK3sKKyAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gUHJlZGljdEVtcHR5OworICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgIHJldHVybiBQcmVkaWN0SW50MzI7CisgICAg
aWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIG51bWJlciA9IHZhbHVlLmFz
TnVtYmVyKCk7CisgICAgICAgIGlmIChudW1iZXIgPT0gbnVtYmVyKQorICAgICAgICAgICAgcmV0
dXJuIFByZWRpY3REb3VibGVSZWFsOworICAgICAgICByZXR1cm4gUHJlZGljdERvdWJsZU5hTjsK
KyAgICB9CisgICAgaWYgKHZhbHVlLmlzQ2VsbCgpKQorICAgICAgICByZXR1cm4gcHJlZGljdGlv
bkZyb21DZWxsKHZhbHVlLmFzQ2VsbCgpKTsKKyAgICBpZiAodmFsdWUuaXNCb29sZWFuKCkpCisg
ICAgICAgIHJldHVybiBQcmVkaWN0Qm9vbGVhbjsKKyAgICBBU1NFUlQodmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSk7CisgICAgcmV0dXJuIFByZWRpY3RPdGhlcjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVk
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Nw
ZWN1bGF0ZWRUeXBlLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyAr
MjcsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJQcmVkaWN0ZWRU
eXBlLmgiCisjaW5jbHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKIAogI2luY2x1ZGUgIkFyZ3VtZW50
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTM3LDkgKzM3LDkgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLWNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZh
bHVlKQorY29uc3QgY2hhciogc3BlY3VsYXRpb25Ub1N0cmluZyhTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gUHJlZGljdE5vbmUpCisgICAgaWYgKHZhbHVlID09IFNw
ZWNOb25lKQogICAgICAgICByZXR1cm4gIk5vbmUiOwogICAgIAogICAgIHN0YXRpYyBjb25zdCBp
bnQgc2l6ZSA9IDI1NjsKQEAgLTQ4LDExMiArNDgsMTEyIEBAIGNvbnN0IGNoYXIqIHByZWRpY3Rp
b25Ub1N0cmluZyhQcmVkaWN0ZWQKICAgICAKICAgICBib29sIGlzVG9wID0gdHJ1ZTsKICAgICAK
LSAgICBpZiAodmFsdWUgJiBQcmVkaWN0Q2VsbE90aGVyKQorICAgIGlmICh2YWx1ZSAmIFNwZWND
ZWxsT3RoZXIpCiAgICAgICAgIHB0ci5zdHJjYXQoIk90aGVyY2VsbCIpOwogICAgIGVsc2UKICAg
ICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAKLSAgICBpZiAodmFsdWUgJiBQcmVkaWN0T2JqZWN0
T3RoZXIpCisgICAgaWYgKHZhbHVlICYgU3BlY09iamVjdE90aGVyKQogICAgICAgICBwdHIuc3Ry
Y2F0KCJPdGhlcm9iaiIpOwogICAgIGVsc2UKICAgICAgICAgaXNUb3AgPSBmYWxzZTsKICAgICAK
LSAgICBpZiAodmFsdWUgJiBQcmVkaWN0RmluYWxPYmplY3QpCisgICAgaWYgKHZhbHVlICYgU3Bl
Y0ZpbmFsT2JqZWN0KQogICAgICAgICBwdHIuc3RyY2F0KCJGaW5hbCIpOwogICAgIGVsc2UKICAg
ICAgICAgaXNUb3AgPSBmYWxzZTsKIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RBcnJheSkKKyAg
ICBpZiAodmFsdWUgJiBTcGVjQXJyYXkpCiAgICAgICAgIHB0ci5zdHJjYXQoIkFycmF5Iik7CiAg
ICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RJbnQ4QXJyYXkpCisgICAgaWYgKHZhbHVlICYgU3BlY0ludDhBcnJheSkKICAgICAgICAg
cHRyLnN0cmNhdCgiSW50OGFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNl
OwogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RJbnQxNkFycmF5KQorICAgIGlmICh2YWx1
ZSAmIFNwZWNJbnQxNkFycmF5KQogICAgICAgICBwdHIuc3RyY2F0KCJJbnQxNmFycmF5Iik7CiAg
ICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RJbnQzMkFycmF5KQorICAgIGlmICh2YWx1ZSAmIFNwZWNJbnQzMkFycmF5KQogICAgICAg
ICBwdHIuc3RyY2F0KCJJbnQzMmFycmF5Iik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZh
bHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RVaW50OEFycmF5KQorICAgIGlmICh2
YWx1ZSAmIFNwZWNVaW50OEFycmF5KQogICAgICAgICBwdHIuc3RyY2F0KCJVaW50OGFycmF5Iik7
CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogCi0gICAgaWYgKHZhbHVlICYgUHJl
ZGljdFVpbnQ4Q2xhbXBlZEFycmF5KQorICAgIGlmICh2YWx1ZSAmIFNwZWNVaW50OENsYW1wZWRB
cnJheSkKICAgICAgICAgcHRyLnN0cmNhdCgiVWludDhjbGFtcGVkYXJyYXkiKTsKICAgICBlbHNl
CiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdFVp
bnQxNkFycmF5KQorICAgIGlmICh2YWx1ZSAmIFNwZWNVaW50MTZBcnJheSkKICAgICAgICAgcHRy
LnN0cmNhdCgiVWludDE2YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7
CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdFVpbnQzMkFycmF5KQorICAgIGlmICh2YWx1
ZSAmIFNwZWNVaW50MzJBcnJheSkKICAgICAgICAgcHRyLnN0cmNhdCgiVWludDMyYXJyYXkiKTsK
ICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlICYg
UHJlZGljdEZsb2F0MzJBcnJheSkKKyAgICBpZiAodmFsdWUgJiBTcGVjRmxvYXQzMkFycmF5KQog
ICAgICAgICBwdHIuc3RyY2F0KCJGbG9hdDMyYXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlz
VG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdEZsb2F0NjRBcnJheSkK
KyAgICBpZiAodmFsdWUgJiBTcGVjRmxvYXQ2NEFycmF5KQogICAgICAgICBwdHIuc3RyY2F0KCJG
bG9hdDY0YXJyYXkiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0g
ICAgaWYgKHZhbHVlICYgUHJlZGljdEZ1bmN0aW9uKQorICAgIGlmICh2YWx1ZSAmIFNwZWNGdW5j
dGlvbikKICAgICAgICAgcHRyLnN0cmNhdCgiRnVuY3Rpb24iKTsKICAgICBlbHNlCiAgICAgICAg
IGlzVG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdE15QXJndW1lbnRz
KQorICAgIGlmICh2YWx1ZSAmIFNwZWNNeUFyZ3VtZW50cykKICAgICAgICAgcHRyLnN0cmNhdCgi
TXlhcmd1bWVudHMiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0g
ICAgaWYgKHZhbHVlICYgUHJlZGljdEZvcmVpZ25Bcmd1bWVudHMpCisgICAgaWYgKHZhbHVlICYg
U3BlY0ZvcmVpZ25Bcmd1bWVudHMpCiAgICAgICAgIHB0ci5zdHJjYXQoIkZvcmVpZ25hcmd1bWVu
dHMiKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKHZh
bHVlICYgUHJlZGljdFN0cmluZykKKyAgICBpZiAodmFsdWUgJiBTcGVjU3RyaW5nKQogICAgICAg
ICBwdHIuc3RyY2F0KCJTdHJpbmciKTsKICAgICBlbHNlCiAgICAgICAgIGlzVG9wID0gZmFsc2U7
CiAgICAgCi0gICAgaWYgKHZhbHVlICYgUHJlZGljdEludDMyKQorICAgIGlmICh2YWx1ZSAmIFNw
ZWNJbnQzMikKICAgICAgICAgcHRyLnN0cmNhdCgiSW50Iik7CiAgICAgZWxzZQogICAgICAgICBp
c1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3REb3VibGVSZWFsKQor
ICAgIGlmICh2YWx1ZSAmIFNwZWNEb3VibGVSZWFsKQogICAgICAgICBwdHIuc3RyY2F0KCJEb3Vi
bGVyZWFsIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlm
ICh2YWx1ZSAmIFByZWRpY3REb3VibGVOYU4pCisgICAgaWYgKHZhbHVlICYgU3BlY0RvdWJsZU5h
TikKICAgICAgICAgcHRyLnN0cmNhdCgiRG91YmxlbmFuIik7CiAgICAgZWxzZQogICAgICAgICBp
c1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRpY3RCb29sZWFuKQorICAg
IGlmICh2YWx1ZSAmIFNwZWNCb29sZWFuKQogICAgICAgICBwdHIuc3RyY2F0KCJCb29sIik7CiAg
ICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwogICAgIAotICAgIGlmICh2YWx1ZSAmIFBy
ZWRpY3RPdGhlcikKKyAgICBpZiAodmFsdWUgJiBTcGVjT3RoZXIpCiAgICAgICAgIHB0ci5zdHJj
YXQoIk90aGVyIik7CiAgICAgZWxzZQogICAgICAgICBpc1RvcCA9IGZhbHNlOwpAQCAtMTYzLDcg
KzE2Myw3IEBAIGNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWQKICAgICAg
ICAgcHRyLnN0cmNhdCgiVG9wIik7CiAgICAgfQogICAgIAotICAgIGlmICh2YWx1ZSAmIFByZWRp
Y3RFbXB0eSkKKyAgICBpZiAodmFsdWUgJiBTcGVjRW1wdHkpCiAgICAgICAgIHB0ci5zdHJjYXQo
IkVtcHR5Iik7CiAgICAgCiAgICAgKnB0cisrID0gMDsKQEAgLTE3MSwxMzAgKzE3MSwxMzAgQEAg
Y29uc3QgY2hhciogcHJlZGljdGlvblRvU3RyaW5nKFByZWRpY3RlZAogICAgIHJldHVybiBkZXNj
cmlwdGlvbjsKIH0KIAotY29uc3QgY2hhciogcHJlZGljdGlvblRvQWJicmV2aWF0ZWRTdHJpbmco
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKQorY29uc3QgY2hhciogc3BlY3VsYXRpb25Ub0FiYnJl
dmlhdGVkU3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7Ci0gICAgaWYgKGlzRmlu
YWxPYmplY3RQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc0ZpbmFsT2JqZWN0U3Bl
Y3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEZpbmFsPiI7Ci0gICAgaWYg
KGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc0FycmF5U3BlY3VsYXRp
b24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEFycmF5PiI7Ci0gICAgaWYgKGlzU3Ry
aW5nUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNTdHJpbmdTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8U3RyaW5nPiI7Ci0gICAgaWYgKGlzRnVuY3Rp
b25QcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc0Z1bmN0aW9uU3BlY3VsYXRpb24o
cHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPEZ1bmN0aW9uPiI7Ci0gICAgaWYgKGlzSW50
OEFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNJbnQ4QXJyYXlTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8SW50OGFycmF5PiI7Ci0gICAgaWYg
KGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlzSW50MTZBcnJh
eVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxJbnQxNmFycmF5PiI7
Ci0gICAgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgaWYgKGlz
SW50MzJBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxJbnQz
MmFycmF5PiI7Ci0gICAgaWYgKGlzVWludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisg
ICAgaWYgKGlzVWludDhBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1
cm4gIjxVaW50OGFycmF5PiI7Ci0gICAgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3Rpb24pKQorICAgIGlmIChpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAg
ICAgICAgIHJldHVybiAiPFVpbnQxNmFycmF5PiI7Ci0gICAgaWYgKGlzVWludDMyQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlmIChpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24ocHJl
ZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPFVpbnQzMmFycmF5PiI7Ci0gICAgaWYgKGlzRmxv
YXQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNGbG9hdDMyQXJyYXlT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8RmxvYXQzMmFycmF5PiI7
Ci0gICAgaWYgKGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAo
aXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8
RmxvYXQ2NGFycmF5PiI7Ci0gICAgaWYgKGlzTXlBcmd1bWVudHNQcmVkaWN0aW9uKHByZWRpY3Rp
b24pKQorICAgIGlmIChpc015QXJndW1lbnRzU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAg
ICAgIHJldHVybiAiPE15YXJndW1lbnRzPiI7Ci0gICAgaWYgKGlzQXJndW1lbnRzUHJlZGljdGlv
bihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNBcmd1bWVudHNTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKICAgICAgICAgcmV0dXJuICI8QXJndW1lbnRzPiI7Ci0gICAgaWYgKGlzT2JqZWN0UHJlZGlj
dGlvbihwcmVkaWN0aW9uKSkKKyAgICBpZiAoaXNPYmplY3RTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKICAgICAgICAgcmV0dXJuICI8T2JqZWN0PiI7Ci0gICAgaWYgKGlzQ2VsbFByZWRpY3Rpb24o
cHJlZGljdGlvbikpCisgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAg
ICAgICByZXR1cm4gIjxDZWxsPiI7Ci0gICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3Rp
b24pKQorICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJl
dHVybiAiPEludDMyPiI7Ci0gICAgaWYgKGlzRG91YmxlUHJlZGljdGlvbihwcmVkaWN0aW9uKSkK
KyAgICBpZiAoaXNEb3VibGVTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJu
ICI8RG91YmxlPiI7Ci0gICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAg
ICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKICAgICAgICAgcmV0dXJuICI8
TnVtYmVyPiI7Ci0gICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAg
aWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICByZXR1cm4gIjxC
b29sZWFuPiI7Ci0gICAgaWYgKGlzT3RoZXJQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgIGlm
IChpc090aGVyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgIHJldHVybiAiPE90aGVy
PiI7CiAgICAgcmV0dXJuICIiOwogfQogCi1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2xh
c3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQorU3BlY3VsYXRlZFR5cGUgc3BlY3Vs
YXRpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQogewogICAgIGlm
IChjbGFzc0luZm8gPT0gJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIFBy
ZWRpY3RGaW5hbE9iamVjdDsKKyAgICAgICAgcmV0dXJuIFNwZWNGaW5hbE9iamVjdDsKICAgICAK
ICAgICBpZiAoY2xhc3NJbmZvID09ICZKU0FycmF5OjpzX2luZm8pCi0gICAgICAgIHJldHVybiBQ
cmVkaWN0QXJyYXk7CisgICAgICAgIHJldHVybiBTcGVjQXJyYXk7CiAgICAgCiAgICAgaWYgKGNs
YXNzSW5mbyA9PSAmSlNTdHJpbmc6OnNfaW5mbykKLSAgICAgICAgcmV0dXJuIFByZWRpY3RTdHJp
bmc7CisgICAgICAgIHJldHVybiBTcGVjU3RyaW5nOwogICAgIAogICAgIGlmIChjbGFzc0luZm8g
PT0gJkFyZ3VtZW50czo6c19pbmZvKQotICAgICAgICByZXR1cm4gUHJlZGljdEFyZ3VtZW50czsg
Ly8gQ2Fubm90IGRpc3Rpbmd1aXNoIGJldHdlZW4gTXlBcmd1bWVudHMgYW5kIEZvcmVpZ25Bcmd1
bWVudHMgYXQgdGhpcyBzdGFnZS4gVGhhdCBoYXBwZW5zIGluIHRoZSBmbG93IGFuYWx5c2lzLgor
ICAgICAgICByZXR1cm4gU3BlY0FyZ3VtZW50czsgLy8gQ2Fubm90IGRpc3Rpbmd1aXNoIGJldHdl
ZW4gTXlBcmd1bWVudHMgYW5kIEZvcmVpZ25Bcmd1bWVudHMgYXQgdGhpcyBzdGFnZS4gVGhhdCBo
YXBwZW5zIGluIHRoZSBmbG93IGFuYWx5c2lzLgogICAgIAogICAgIGlmIChjbGFzc0luZm8tPmlz
U3ViQ2xhc3NPZigmSlNGdW5jdGlvbjo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIFByZWRpY3RG
dW5jdGlvbjsKKyAgICAgICAgcmV0dXJuIFNwZWNGdW5jdGlvbjsKIAogICAgIAogICAgIGlmIChj
bGFzc0luZm8tPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSAhPSBUeXBlZEFycmF5Tm9uZSkgewogICAg
ICAgICBzd2l0Y2ggKGNsYXNzSW5mby0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSB7CiAgICAgICAg
IGNhc2UgVHlwZWRBcnJheUludDg6Ci0gICAgICAgICAgICByZXR1cm4gUHJlZGljdEludDhBcnJh
eTsKKyAgICAgICAgICAgIHJldHVybiBTcGVjSW50OEFycmF5OwogICAgICAgICBjYXNlIFR5cGVk
QXJyYXlJbnQxNjoKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0SW50MTZBcnJheTsKKyAgICAg
ICAgICAgIHJldHVybiBTcGVjSW50MTZBcnJheTsKICAgICAgICAgY2FzZSBUeXBlZEFycmF5SW50
MzI6Ci0gICAgICAgICAgICByZXR1cm4gUHJlZGljdEludDMyQXJyYXk7CisgICAgICAgICAgICBy
ZXR1cm4gU3BlY0ludDMyQXJyYXk7CiAgICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQ4OgotICAg
ICAgICAgICAgcmV0dXJuIFByZWRpY3RVaW50OEFycmF5OworICAgICAgICAgICAgcmV0dXJuIFNw
ZWNVaW50OEFycmF5OwogICAgICAgICBjYXNlIFR5cGVkQXJyYXlVaW50OENsYW1wZWQ6Ci0gICAg
ICAgICAgICByZXR1cm4gUHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5OworICAgICAgICAgICAgcmV0
dXJuIFNwZWNVaW50OENsYW1wZWRBcnJheTsKICAgICAgICAgY2FzZSBUeXBlZEFycmF5VWludDE2
OgotICAgICAgICAgICAgcmV0dXJuIFByZWRpY3RVaW50MTZBcnJheTsKKyAgICAgICAgICAgIHJl
dHVybiBTcGVjVWludDE2QXJyYXk7CiAgICAgICAgIGNhc2UgVHlwZWRBcnJheVVpbnQzMjoKLSAg
ICAgICAgICAgIHJldHVybiBQcmVkaWN0VWludDMyQXJyYXk7CisgICAgICAgICAgICByZXR1cm4g
U3BlY1VpbnQzMkFycmF5OwogICAgICAgICBjYXNlIFR5cGVkQXJyYXlGbG9hdDMyOgotICAgICAg
ICAgICAgcmV0dXJuIFByZWRpY3RGbG9hdDMyQXJyYXk7CisgICAgICAgICAgICByZXR1cm4gU3Bl
Y0Zsb2F0MzJBcnJheTsKICAgICAgICAgY2FzZSBUeXBlZEFycmF5RmxvYXQ2NDoKLSAgICAgICAg
ICAgIHJldHVybiBQcmVkaWN0RmxvYXQ2NEFycmF5OworICAgICAgICAgICAgcmV0dXJuIFNwZWNG
bG9hdDY0QXJyYXk7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KICAgICAKICAgICBpZiAoY2xhc3NJbmZvLT5pc1N1YkNsYXNzT2YoJkpTT2Jq
ZWN0OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gUHJlZGljdE9iamVjdE90aGVyOworICAgICAg
ICByZXR1cm4gU3BlY09iamVjdE90aGVyOwogICAgIAotICAgIHJldHVybiBQcmVkaWN0Q2VsbE90
aGVyOworICAgIHJldHVybiBTcGVjQ2VsbE90aGVyOwogfQogCi1QcmVkaWN0ZWRUeXBlIHByZWRp
Y3Rpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQorU3BlY3VsYXRlZFR5cGUg
c3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJl
dHVybiBwcmVkaWN0aW9uRnJvbUNsYXNzSW5mbyhzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpKTsKKyAg
ICByZXR1cm4gc3BlY3VsYXRpb25Gcm9tQ2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkp
OwogfQogCi1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2VsbChKU0NlbGwqIGNlbGwpCitT
cGVjdWxhdGVkVHlwZSBzcGVjdWxhdGlvbkZyb21DZWxsKEpTQ2VsbCogY2VsbCkKIHsKLSAgICBy
ZXR1cm4gcHJlZGljdGlvbkZyb21TdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkpOworICAgIHJl
dHVybiBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoY2VsbC0+c3RydWN0dXJlKCkpOwogfQogCi1Q
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tVmFsdWUoSlNWYWx1ZSB2YWx1ZSkKK1NwZWN1bGF0
ZWRUeXBlIHNwZWN1bGF0aW9uRnJvbVZhbHVlKEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFByZWRpY3RFbXB0eTsKKyAgICAgICAgcmV0
dXJuIFNwZWNFbXB0eTsKICAgICBpZiAodmFsdWUuaXNJbnQzMigpKQotICAgICAgICByZXR1cm4g
UHJlZGljdEludDMyOworICAgICAgICByZXR1cm4gU3BlY0ludDMyOwogICAgIGlmICh2YWx1ZS5p
c0RvdWJsZSgpKSB7CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1ZS5hc051bWJlcigpOwog
ICAgICAgICBpZiAobnVtYmVyID09IG51bWJlcikKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0
RG91YmxlUmVhbDsKLSAgICAgICAgcmV0dXJuIFByZWRpY3REb3VibGVOYU47CisgICAgICAgICAg
ICByZXR1cm4gU3BlY0RvdWJsZVJlYWw7CisgICAgICAgIHJldHVybiBTcGVjRG91YmxlTmFOOwog
ICAgIH0KICAgICBpZiAodmFsdWUuaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBwcmVkaWN0aW9u
RnJvbUNlbGwodmFsdWUuYXNDZWxsKCkpOworICAgICAgICByZXR1cm4gc3BlY3VsYXRpb25Gcm9t
Q2VsbCh2YWx1ZS5hc0NlbGwoKSk7CiAgICAgaWYgKHZhbHVlLmlzQm9vbGVhbigpKQotICAgICAg
ICByZXR1cm4gUHJlZGljdEJvb2xlYW47CisgICAgICAgIHJldHVybiBTcGVjQm9vbGVhbjsKICAg
ICBBU1NFUlQodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSk7Ci0gICAgcmV0dXJuIFByZWRpY3RP
dGhlcjsKKyAgICByZXR1cm4gU3BlY090aGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5o
CShyZXZpc2lvbiAxMTk2MDQpCShmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVkaWN0ZWRUeXBlLmg6MTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyNzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUHJlZGljdGVkVHlwZV9oCisjZGVmaW5lIFByZWRpY3RlZFR5cGVfaAorCisjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RydWN0dXJlOwor
Cit0eXBlZGVmIHVpbnQzMl90IFByZWRpY3RlZFR5cGU7CitzdGF0aWMgY29uc3QgUHJlZGljdGVk
VHlwZSBQcmVkaWN0Tm9uZSAgICAgICAgICAgICAgPSAweDAwMDAwMDAwOyAvLyBXZSBkb24ndCBr
bm93IGFueXRoaW5nIHlldC4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RGaW5h
bE9iamVjdCAgICAgICA9IDB4MDAwMDAwMDE7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEpTRmluYWxP
YmplY3QuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0QXJyYXkgICAgICAgICAg
ICAgPSAweDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNv
bnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEZ1bmN0aW9uICAgICAgICAgID0gMHgwMDAwMDAwODsg
Ly8gSXQncyBkZWZpbml0ZWx5IGEgSlNGdW5jdGlvbiBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMu
CitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50OEFycmF5ICAgICAgICAgPSAw
eDAwMDAwMDEwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50OEFycmF5IG9yIG9uZSBvZiBpdHMg
c3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RJbnQxNkFycmF5
ICAgICAgICA9IDB4MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9y
IG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRp
Y3RJbnQzMkFycmF5ICAgICAgICA9IDB4MDAwMDAwNDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJ
bnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0
ZWRUeXBlIFByZWRpY3RVaW50OEFycmF5ICAgICAgICA9IDB4MDAwMDAwODA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50OEFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBj
b25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RVaW50OENsYW1wZWRBcnJheSA9IDB4MDAwMDAxMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1
YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0VWludDE2QXJyYXkg
ICAgICAgPSAweDAwMDAwMjAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Ig
b25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGlj
dFVpbnQzMkFycmF5ICAgICAgID0gMHgwMDAwMDQwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVp
bnQzMkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0
ZWRUeXBlIFByZWRpY3RGbG9hdDMyQXJyYXkgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhbiBVaW50MTZBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMg
Y29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RmxvYXQ2NEFycmF5ICAgICAgPSAweDAwMDAxMDAw
OyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFz
c2VzLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE15QXJndW1lbnRzICAgICAg
ID0gMHgwMDAwMjAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBvYmplY3QsIGFu
ZCBpdCdzIGRlZmluaXRlbHkgdGhlIG9uZSBmb3IgbXkgY3VycmVudCBmcmFtZS4KK3N0YXRpYyBj
b25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RGb3JlaWduQXJndW1lbnRzICA9IDB4MDAwMDQwMDA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0LCBhbmQgaXQncyBkZWZpbml0
ZWx5IG5vdCBtaW5lLgorc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEFyZ3VtZW50
cyAgICAgICAgID0gMHgwMDAwNjAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEFyZ3VtZW50cyBv
YmplY3QuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0T2JqZWN0T3RoZXIgICAg
ICAgPSAweDAwMDA4MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gb2JqZWN0IGJ1dCBub3QgSlNG
aW5hbE9iamVjdCwgSlNBcnJheSwgb3IgSlNGdW5jdGlvbi4KK3N0YXRpYyBjb25zdCBQcmVkaWN0
ZWRUeXBlIFByZWRpY3RPYmplY3RNYXNrICAgICAgICA9IDB4MDAwMGZmZmY7IC8vIEJpdG1hc2sg
dXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2JqZWN0IHByZWRpY3Rpb24uCitzdGF0
aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0U3RyaW5nICAgICAgICAgICAgPSAweDAwMDEw
MDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU1N0cmluZy4KK3N0YXRpYyBjb25zdCBQcmVkaWN0
ZWRUeXBlIFByZWRpY3RDZWxsT3RoZXIgICAgICAgICA9IDB4MDAwMjAwMDA7IC8vIEl0J3MgZGVm
aW5pdGVseSBhIEpTQ2VsbCBidXQgbm90IGEgc3ViY2xhc3Mgb2YgSlNPYmplY3QgYW5kIGRlZmlu
aXRlbHkgbm90IGEgSlNTdHJpbmcuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0
Q2VsbCAgICAgICAgICAgICAgPSAweDAwMDNmZmZmOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0Nl
bGwuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MzIgICAgICAgICAgICAg
PSAweDAwODAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzIuCitzdGF0aWMgY29uc3Qg
UHJlZGljdGVkVHlwZSBQcmVkaWN0RG91YmxlUmVhbCAgICAgICAgPSAweDAxMDAwMDAwOyAvLyBJ
dCdzIGRlZmluaXRlbHkgYSBub24tTmFOIGRvdWJsZS4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRU
eXBlIFByZWRpY3REb3VibGVOYU4gICAgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0J3MgZGVmaW5p
dGVseSBhIE5hTi4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3REb3VibGUgICAg
ICAgICAgICA9IDB4MDMwMDAwMDA7IC8vIEl0J3MgZWl0aGVyIGEgbm9uLU5hTiBvciBhIE5hTiBk
b3VibGUuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0TnVtYmVyICAgICAgICAg
ICAgPSAweDAzODAwMDAwOyAvLyBJdCdzIGVpdGhlciBhbiBJbnQzMiBvciBhIERvdWJsZS4KK3N0
YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RCb29sZWFuICAgICAgICAgICA9IDB4MDQw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgUHJlZGlj
dGVkVHlwZSBQcmVkaWN0T3RoZXIgICAgICAgICAgICAgPSAweDA4MDAwMDAwOyAvLyBJdCdzIGRl
ZmluaXRlbHkgbm9uZSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0VG9wICAgICAgICAgICAgICAgPSAweDBmZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9m
IHRoZSBhYm92ZS4KK3N0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RFbXB0eSAgICAg
ICAgICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBt
YXJrZXIuCitzdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RW1wdHlPclRvcCAgICAg
ICAgPSAweDFmZmZmZmZmOyAvLyBJdCBjYW4gYmUgYW55IG9mIHRoZSBhYm92ZS4KK3N0YXRpYyBj
b25zdCBQcmVkaWN0ZWRUeXBlIEZpeGVkSW5kZXhlZFN0b3JhZ2VNYXNrID0gUHJlZGljdEludDhB
cnJheSB8IFByZWRpY3RJbnQxNkFycmF5IHwgUHJlZGljdEludDMyQXJyYXkgfCBQcmVkaWN0VWlu
dDhBcnJheSB8IFByZWRpY3RVaW50OENsYW1wZWRBcnJheSB8IFByZWRpY3RVaW50MTZBcnJheSB8
IFByZWRpY3RVaW50MzJBcnJheSB8IFByZWRpY3RGbG9hdDMyQXJyYXkgfCBQcmVkaWN0RmxvYXQ2
NEFycmF5OworCit0eXBlZGVmIGJvb2wgKCpQcmVkaWN0aW9uQ2hlY2tlcikoUHJlZGljdGVkVHlw
ZSk7CisKKy8vIER1bW15IHByZWRpY3Rpb24gY2hlY2tlciwgb25seSB1c2VmdWwgaWYgc29tZW9u
ZSBpbnNpc3RzIG9uIHJlcXVpcmluZyBhIHByZWRpY3Rpb24gY2hlY2tlci4KK2lubGluZSBib29s
IGlzQW55UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlKQoreworICAgIHJldHVybiB0cnVlOworfQor
CitpbmxpbmUgYm9vbCBpc0NlbGxQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuICEhKHZhbHVlICYgUHJlZGljdENlbGwpICYmICEodmFsdWUgJiB+UHJlZGljdENl
bGwpOworfQorCitpbmxpbmUgYm9vbCBpc09iamVjdFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2
YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiBQcmVkaWN0T2JqZWN0TWFzaykgJiYgISh2
YWx1ZSAmIH5QcmVkaWN0T2JqZWN0TWFzayk7Cit9CisKK2lubGluZSBib29sIGlzRmluYWxPYmpl
Y3RQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09
IFByZWRpY3RGaW5hbE9iamVjdDsKK30KKworaW5saW5lIGJvb2wgaXNGaW5hbE9iamVjdE9yT3Ro
ZXJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuICEhKHZhbHVl
ICYgKFByZWRpY3RGaW5hbE9iamVjdCB8IFByZWRpY3RPdGhlcikpICYmICEodmFsdWUgJiB+KFBy
ZWRpY3RGaW5hbE9iamVjdCB8IFByZWRpY3RPdGhlcikpOworfQorCitpbmxpbmUgYm9vbCBpc0Zp
eGVkSW5kZXhlZFN0b3JhZ2VPYmplY3RQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7
CisgICAgcmV0dXJuICEhdmFsdWUgJiYgKHZhbHVlICYgRml4ZWRJbmRleGVkU3RvcmFnZU1hc2sp
ID09IHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBpc1N0cmluZ1ByZWRpY3Rpb24oUHJlZGljdGVk
VHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdFN0cmluZzsKK30KKwor
aW5saW5lIGJvb2wgaXNBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAg
ICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEFycmF5OworfQorCitpbmxpbmUgYm9vbCBpc0Z1bmN0
aW9uUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9
PSBQcmVkaWN0RnVuY3Rpb247Cit9CisKK2lubGluZSBib29sIGlzSW50OEFycmF5UHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0SW50
OEFycmF5OworfQorCitpbmxpbmUgYm9vbCBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKFByZWRpY3Rl
ZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQxNkFycmF5Owor
fQorCitpbmxpbmUgYm9vbCBpc0ludDMyQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFs
dWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQzMkFycmF5OworfQorCitpbmxp
bmUgYm9vbCBpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RVaW50OEFycmF5OworfQorCitpbmxpbmUgYm9vbCBp
c1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAg
IHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0VWludDhDbGFtcGVkQXJyYXk7Cit9CisKK2lubGluZSBi
b29sIGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAg
cmV0dXJuIHZhbHVlID09IFByZWRpY3RVaW50MTZBcnJheTsKK30KKworaW5saW5lIGJvb2wgaXNV
aW50MzJBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
dmFsdWUgPT0gUHJlZGljdFVpbnQzMkFycmF5OworfQorCitpbmxpbmUgYm9vbCBpc0Zsb2F0MzJB
cnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUg
PT0gUHJlZGljdEZsb2F0MzJBcnJheTsKK30KKworaW5saW5lIGJvb2wgaXNGbG9hdDY0QXJyYXlQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFBy
ZWRpY3RGbG9hdDY0QXJyYXk7Cit9CisKK2lubGluZSBib29sIGlzQXJndW1lbnRzUHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAm
IFByZWRpY3RBcmd1bWVudHMpID09IHZhbHVlOworfQorCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFi
bGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAg
cmV0dXJuIGlzSW50OEFycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNJbnQxNkFy
cmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNJbnQzMkFycmF5UHJlZGljdGlvbih2
YWx1ZSkKKyAgICAgICAgfHwgaXNVaW50OEFycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAg
fHwgaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzVWlu
dDE2QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc1VpbnQzMkFycmF5UHJlZGlj
dGlvbih2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFy
cmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc0Zsb2F0
MzJBcnJheVByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzRmxvYXQ2NEFycmF5UHJlZGlj
dGlvbih2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlzQWN0aW9uYWJsZVR5cGVkTXV0YWJsZUFy
cmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc0FjdGlv
bmFibGVJbnRNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlv
bmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24odmFsdWUpOworfQorCitpbmxpbmUgYm9v
bCBpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUp
Cit7CisgICAgcmV0dXJuIGlzQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0Fy
Z3VtZW50c1ByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzQWN0aW9uYWJsZVR5cGVkTXV0
YWJsZUFycmF5UHJlZGljdGlvbih2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlzQWN0aW9uYWJs
ZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiBpc1N0
cmluZ1ByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzQWN0aW9uYWJsZU11dGFibGVBcnJh
eVByZWRpY3Rpb24odmFsdWUpOworfQorCitpbmxpbmUgYm9vbCBpc0FycmF5T3JPdGhlclByZWRp
Y3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISEodmFsdWUgJiAoUHJl
ZGljdEFycmF5IHwgUHJlZGljdE90aGVyKSkgJiYgISh2YWx1ZSAmIH4oUHJlZGljdEFycmF5IHwg
UHJlZGljdE90aGVyKSk7Cit9CisKK2lubGluZSBib29sIGlzTXlBcmd1bWVudHNQcmVkaWN0aW9u
KFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RNeUFy
Z3VtZW50czsKK30KKworaW5saW5lIGJvb2wgaXNJbnQzMlByZWRpY3Rpb24oUHJlZGljdGVkVHlw
ZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEludDMyOworfQorCitpbmxp
bmUgYm9vbCBpc0RvdWJsZVJlYWxQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7Cisg
ICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3REb3VibGVSZWFsOworfQorCitpbmxpbmUgYm9vbCBp
c0RvdWJsZVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gISF2
YWx1ZSAmJiAodmFsdWUgJiBQcmVkaWN0RG91YmxlKSA9PSB2YWx1ZTsKK30KKworaW5saW5lIGJv
b2wgaXNOdW1iZXJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCit7CisgICAgcmV0dXJu
ICEhKHZhbHVlICYgUHJlZGljdE51bWJlcikgJiYgISh2YWx1ZSAmIH5QcmVkaWN0TnVtYmVyKTsK
K30KKworaW5saW5lIGJvb2wgaXNCb29sZWFuUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVl
KQoreworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0Qm9vbGVhbjsKK30KKworaW5saW5lIGJv
b2wgaXNPdGhlclByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4g
dmFsdWUgPT0gUHJlZGljdE90aGVyOworfQorCitpbmxpbmUgYm9vbCBpc0VtcHR5UHJlZGljdGlv
bihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RW1w
dHk7Cit9CisKK2NvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZh
bHVlKTsKK2NvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKFByZWRpY3Rl
ZFR5cGUgdmFsdWUpOworCisvLyBNZXJnZSB0d28gcHJlZGljdGlvbnMuIE5vdGUgdGhhdCBjdXJy
ZW50bHkgdGhpcyBqdXN0IGRvZXMgbGVmdCB8IHJpZ2h0LiBJdCBtYXkKKy8vIHNlZW0gdGVtcHRp
bmcgdG8gZG8gc28gZGlyZWN0bHksIGJ1dCB5b3Ugd291bGQgYmUgZG9pbmcgc28gYXQgeW91ciBv
d24gcGVyaWwsCisvLyBzaW5jZSB0aGUgbWVyZ2luZyBwcm90b2NvbCBQcmVkaWN0ZWRUeXBlIG1h
eSBjaGFuZ2UgYXQgYW55IHRpbWUgKGFuZCBoYXMgYWxyZWFkeQorLy8gY2hhbmdlZCBzZXZlcmFs
IHRpbWVzIGluIGl0cyBoaXN0b3J5KS4KK2lubGluZSBQcmVkaWN0ZWRUeXBlIG1lcmdlUHJlZGlj
dGlvbnMoUHJlZGljdGVkVHlwZSBsZWZ0LCBQcmVkaWN0ZWRUeXBlIHJpZ2h0KQoreworICAgIHJl
dHVybiBsZWZ0IHwgcmlnaHQ7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgYm9v
bCBtZXJnZVByZWRpY3Rpb24oVCYgbGVmdCwgUHJlZGljdGVkVHlwZSByaWdodCkKK3sKKyAgICBQ
cmVkaWN0ZWRUeXBlIG5ld1ByZWRpY3Rpb24gPSBzdGF0aWNfY2FzdDxUPihtZXJnZVByZWRpY3Rp
b25zKHN0YXRpY19jYXN0PFByZWRpY3RlZFR5cGU+KGxlZnQpLCByaWdodCkpOworICAgIGJvb2wg
cmVzdWx0ID0gbmV3UHJlZGljdGlvbiAhPSBzdGF0aWNfY2FzdDxQcmVkaWN0ZWRUeXBlPihsZWZ0
KTsKKyAgICBsZWZ0ID0gbmV3UHJlZGljdGlvbjsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQ
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tQ2xhc3NJbmZvKGNvbnN0IENsYXNzSW5mbyopOwor
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbVN0cnVjdHVyZShTdHJ1Y3R1cmUqKTsKK1ByZWRp
Y3RlZFR5cGUgcHJlZGljdGlvbkZyb21DZWxsKEpTQ2VsbCopOworUHJlZGljdGVkVHlwZSBwcmVk
aWN0aW9uRnJvbVZhbHVlKEpTVmFsdWUpOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIFByZWRpY3RlZFR5cGVfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1NwZWN1bGF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1NwZWN1bGF0ZWRUeXBlLmgJKHJldmlzaW9uIDExOTYwNCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw4ICsyNiw4IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgUHJlZGljdGVkVHlwZV9o
Ci0jZGVmaW5lIFByZWRpY3RlZFR5cGVfaAorI2lmbmRlZiBTcGVjdWxhdGVkVHlwZV9oCisjZGVm
aW5lIFNwZWN1bGF0ZWRUeXBlX2gKIAogI2luY2x1ZGUgIkpTVmFsdWUuaCIKIApAQCAtMzUsMjQ1
ICszNSwyNDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIFN0cnVjdHVyZTsKIAotdHlwZWRl
ZiB1aW50MzJfdCBQcmVkaWN0ZWRUeXBlOwotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJl
ZGljdE5vbmUgICAgICAgICAgICAgID0gMHgwMDAwMDAwMDsgLy8gV2UgZG9uJ3Qga25vdyBhbnl0
aGluZyB5ZXQuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RmluYWxPYmplY3Qg
ICAgICAgPSAweDAwMDAwMDAxOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0ZpbmFsT2JqZWN0Lgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEFycmF5ICAgICAgICAgICAgID0gMHgw
MDAwMDAwMjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNBcnJheS4KLXN0YXRpYyBjb25zdCBQcmVk
aWN0ZWRUeXBlIFByZWRpY3RGdW5jdGlvbiAgICAgICAgICA9IDB4MDAwMDAwMDg7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGlj
IGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEludDhBcnJheSAgICAgICAgID0gMHgwMDAwMDAx
MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNz
ZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MTZBcnJheSAgICAgICAg
PSAweDAwMDAwMDIwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MTZBcnJheSBvciBvbmUgb2Yg
aXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0SW50MzJB
cnJheSAgICAgICAgPSAweDAwMDAwMDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzJBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0VWludDhBcnJheSAgICAgICAgPSAweDAwMDAwMDgwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDhBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgUHJl
ZGljdGVkVHlwZSBQcmVkaWN0VWludDhDbGFtcGVkQXJyYXkgPSAweDAwMDAwMTAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYW4gVWludDhDbGFtcGVkQXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdFVpbnQxNkFycmF5ICAgICAgID0g
MHgwMDAwMDIwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBp
dHMgc3ViY2xhc3Nlcy4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RVaW50MzJB
cnJheSAgICAgICA9IDB4MDAwMDA0MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MzJBcnJh
eSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0RmxvYXQzMkFycmF5ICAgICAgPSAweDAwMDAwODAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YW4gVWludDE2QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgotc3RhdGljIGNvbnN0IFBy
ZWRpY3RlZFR5cGUgUHJlZGljdEZsb2F0NjRBcnJheSAgICAgID0gMHgwMDAwMTAwMDsgLy8gSXQn
cyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KLXN0
YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RNeUFyZ3VtZW50cyAgICAgICA9IDB4MDAw
MDIwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0LCBhbmQgaXQncyBk
ZWZpbml0ZWx5IHRoZSBvbmUgZm9yIG15IGN1cnJlbnQgZnJhbWUuCi1zdGF0aWMgY29uc3QgUHJl
ZGljdGVkVHlwZSBQcmVkaWN0Rm9yZWlnbkFyZ3VtZW50cyAgPSAweDAwMDA0MDAwOyAvLyBJdCdz
IGRlZmluaXRlbHkgYW4gQXJndW1lbnRzIG9iamVjdCwgYW5kIGl0J3MgZGVmaW5pdGVseSBub3Qg
bWluZS4KLXN0YXRpYyBjb25zdCBQcmVkaWN0ZWRUeXBlIFByZWRpY3RBcmd1bWVudHMgICAgICAg
ICA9IDB4MDAwMDYwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0Lgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE9iamVjdE90aGVyICAgICAgID0gMHgw
MDAwODAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIG9iamVjdCBidXQgbm90IEpTRmluYWxPYmpl
Y3QsIEpTQXJyYXksIG9yIEpTRnVuY3Rpb24uCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0T2JqZWN0TWFzayAgICAgICAgPSAweDAwMDBmZmZmOyAvLyBCaXRtYXNrIHVzZWQgZm9y
IHRlc3RpbmcgZm9yIGFueSBraW5kIG9mIG9iamVjdCBwcmVkaWN0aW9uLgotc3RhdGljIGNvbnN0
IFByZWRpY3RlZFR5cGUgUHJlZGljdFN0cmluZyAgICAgICAgICAgID0gMHgwMDAxMDAwMDsgLy8g
SXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQ
cmVkaWN0Q2VsbE90aGVyICAgICAgICAgPSAweDAwMDIwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkg
YSBKU0NlbGwgYnV0IG5vdCBhIHN1YmNsYXNzIG9mIEpTT2JqZWN0IGFuZCBkZWZpbml0ZWx5IG5v
dCBhIEpTU3RyaW5nLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdENlbGwgICAg
ICAgICAgICAgID0gMHgwMDAzZmZmZjsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsLgotc3Rh
dGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEludDMyICAgICAgICAgICAgID0gMHgwMDgw
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgotc3RhdGljIGNvbnN0IFByZWRpY3Rl
ZFR5cGUgUHJlZGljdERvdWJsZVJlYWwgICAgICAgID0gMHgwMTAwMDAwMDsgLy8gSXQncyBkZWZp
bml0ZWx5IGEgbm9uLU5hTiBkb3VibGUuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVk
aWN0RG91YmxlTmFOICAgICAgICAgPSAweDAyMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBO
YU4uCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RG91YmxlICAgICAgICAgICAg
PSAweDAzMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3IgYSBOYU4gZG91YmxlLgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdE51bWJlciAgICAgICAgICAgID0gMHgw
MzgwMDAwMDsgLy8gSXQncyBlaXRoZXIgYW4gSW50MzIgb3IgYSBEb3VibGUuCi1zdGF0aWMgY29u
c3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0Qm9vbGVhbiAgICAgICAgICAgPSAweDA0MDAwMDAwOyAv
LyBJdCdzIGRlZmluaXRlbHkgYSBCb29sZWFuLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUg
UHJlZGljdE90aGVyICAgICAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5
IG5vbmUgb2YgdGhlIGFib3ZlLgotc3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdFRv
cCAgICAgICAgICAgICAgID0gMHgwZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJv
dmUuCi1zdGF0aWMgY29uc3QgUHJlZGljdGVkVHlwZSBQcmVkaWN0RW1wdHkgICAgICAgICAgICAg
PSAweDEwMDAwMDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gZW1wdHkgdmFsdWUgbWFya2VyLgot
c3RhdGljIGNvbnN0IFByZWRpY3RlZFR5cGUgUHJlZGljdEVtcHR5T3JUb3AgICAgICAgID0gMHgx
ZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCi1zdGF0aWMgY29uc3QgUHJl
ZGljdGVkVHlwZSBGaXhlZEluZGV4ZWRTdG9yYWdlTWFzayA9IFByZWRpY3RJbnQ4QXJyYXkgfCBQ
cmVkaWN0SW50MTZBcnJheSB8IFByZWRpY3RJbnQzMkFycmF5IHwgUHJlZGljdFVpbnQ4QXJyYXkg
fCBQcmVkaWN0VWludDhDbGFtcGVkQXJyYXkgfCBQcmVkaWN0VWludDE2QXJyYXkgfCBQcmVkaWN0
VWludDMyQXJyYXkgfCBQcmVkaWN0RmxvYXQzMkFycmF5IHwgUHJlZGljdEZsb2F0NjRBcnJheTsK
K3R5cGVkZWYgdWludDMyX3QgU3BlY3VsYXRlZFR5cGU7CitzdGF0aWMgY29uc3QgU3BlY3VsYXRl
ZFR5cGUgU3BlY05vbmUgICAgICAgICAgICAgID0gMHgwMDAwMDAwMDsgLy8gV2UgZG9uJ3Qga25v
dyBhbnl0aGluZyB5ZXQuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ZpbmFsT2Jq
ZWN0ICAgICAgID0gMHgwMDAwMDAwMTsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNGaW5hbE9iamVj
dC4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjQXJyYXkgICAgICAgICAgICAgPSAw
eDAwMDAwMDAyOyAvLyBJdCdzIGRlZmluaXRlbHkgYSBKU0FycmF5Lgorc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNGdW5jdGlvbiAgICAgICAgICA9IDB4MDAwMDAwMDg7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhIEpTRnVuY3Rpb24gb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGlj
IGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQ4QXJyYXkgICAgICAgICA9IDB4MDAwMDAwMTA7
IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQ4QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2Vz
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNJbnQxNkFycmF5ICAgICAgICA9IDB4
MDAwMDAwMjA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBJbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMg
c3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjSW50MzJBcnJheSAg
ICAgICAgPSAweDAwMDAwMDQwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gSW50MzJBcnJheSBvciBv
bmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1Vp
bnQ4QXJyYXkgICAgICAgID0gMHgwMDAwMDA4MDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQ4
QXJyYXkgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNVaW50OENsYW1wZWRBcnJheSA9IDB4MDAwMDAxMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBVaW50OENsYW1wZWRBcnJheSBvciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMg
Y29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1VpbnQxNkFycmF5ICAgICAgID0gMHgwMDAwMDIwMDsg
Ly8gSXQncyBkZWZpbml0ZWx5IGFuIFVpbnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nl
cy4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjVWludDMyQXJyYXkgICAgICAgPSAw
eDAwMDAwNDAwOyAvLyBJdCdzIGRlZmluaXRlbHkgYW4gVWludDMyQXJyYXkgb3Igb25lIG9mIGl0
cyBzdWJjbGFzc2VzLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGbG9hdDMyQXJy
YXkgICAgICA9IDB4MDAwMDA4MDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBVaW50MTZBcnJheSBv
ciBvbmUgb2YgaXRzIHN1YmNsYXNzZXMuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3Bl
Y0Zsb2F0NjRBcnJheSAgICAgID0gMHgwMDAwMTAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIFVp
bnQxNkFycmF5IG9yIG9uZSBvZiBpdHMgc3ViY2xhc3Nlcy4KK3N0YXRpYyBjb25zdCBTcGVjdWxh
dGVkVHlwZSBTcGVjTXlBcmd1bWVudHMgICAgICAgPSAweDAwMDAyMDAwOyAvLyBJdCdzIGRlZmlu
aXRlbHkgYW4gQXJndW1lbnRzIG9iamVjdCwgYW5kIGl0J3MgZGVmaW5pdGVseSB0aGUgb25lIGZv
ciBteSBjdXJyZW50IGZyYW1lLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNGb3Jl
aWduQXJndW1lbnRzICA9IDB4MDAwMDQwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBBcmd1bWVu
dHMgb2JqZWN0LCBhbmQgaXQncyBkZWZpbml0ZWx5IG5vdCBtaW5lLgorc3RhdGljIGNvbnN0IFNw
ZWN1bGF0ZWRUeXBlIFNwZWNBcmd1bWVudHMgICAgICAgICA9IDB4MDAwMDYwMDA7IC8vIEl0J3Mg
ZGVmaW5pdGVseSBhbiBBcmd1bWVudHMgb2JqZWN0Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRU
eXBlIFNwZWNPYmplY3RPdGhlciAgICAgICA9IDB4MDAwMDgwMDA7IC8vIEl0J3MgZGVmaW5pdGVs
eSBhbiBvYmplY3QgYnV0IG5vdCBKU0ZpbmFsT2JqZWN0LCBKU0FycmF5LCBvciBKU0Z1bmN0aW9u
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNPYmplY3RNYXNrICAgICAgICA9IDB4
MDAwMGZmZmY7IC8vIEJpdG1hc2sgdXNlZCBmb3IgdGVzdGluZyBmb3IgYW55IGtpbmQgb2Ygb2Jq
ZWN0IHByZWRpY3Rpb24uCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY1N0cmluZyAg
ICAgICAgICAgID0gMHgwMDAxMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNTdHJpbmcuCitz
dGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0NlbGxPdGhlciAgICAgICAgID0gMHgwMDAy
MDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGEgSlNDZWxsIGJ1dCBub3QgYSBzdWJjbGFzcyBvZiBK
U09iamVjdCBhbmQgZGVmaW5pdGVseSBub3QgYSBKU1N0cmluZy4KK3N0YXRpYyBjb25zdCBTcGVj
dWxhdGVkVHlwZSBTcGVjQ2VsbCAgICAgICAgICAgICAgPSAweDAwMDNmZmZmOyAvLyBJdCdzIGRl
ZmluaXRlbHkgYSBKU0NlbGwuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0ludDMy
ICAgICAgICAgICAgID0gMHgwMDgwMDAwMDsgLy8gSXQncyBkZWZpbml0ZWx5IGFuIEludDMyLgor
c3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVSZWFsICAgICAgICA9IDB4MDEw
MDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIG5vbi1OYU4gZG91YmxlLgorc3RhdGljIGNvbnN0
IFNwZWN1bGF0ZWRUeXBlIFNwZWNEb3VibGVOYU4gICAgICAgICA9IDB4MDIwMDAwMDA7IC8vIEl0
J3MgZGVmaW5pdGVseSBhIE5hTi4KK3N0YXRpYyBjb25zdCBTcGVjdWxhdGVkVHlwZSBTcGVjRG91
YmxlICAgICAgICAgICAgPSAweDAzMDAwMDAwOyAvLyBJdCdzIGVpdGhlciBhIG5vbi1OYU4gb3Ig
YSBOYU4gZG91YmxlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNOdW1iZXIgICAg
ICAgICAgICA9IDB4MDM4MDAwMDA7IC8vIEl0J3MgZWl0aGVyIGFuIEludDMyIG9yIGEgRG91Ymxl
Lgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNCb29sZWFuICAgICAgICAgICA9IDB4
MDQwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhIEJvb2xlYW4uCitzdGF0aWMgY29uc3QgU3Bl
Y3VsYXRlZFR5cGUgU3BlY090aGVyICAgICAgICAgICAgID0gMHgwODAwMDAwMDsgLy8gSXQncyBk
ZWZpbml0ZWx5IG5vbmUgb2YgdGhlIGFib3ZlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBl
IFNwZWNUb3AgICAgICAgICAgICAgICA9IDB4MGZmZmZmZmY7IC8vIEl0IGNhbiBiZSBhbnkgb2Yg
dGhlIGFib3ZlLgorc3RhdGljIGNvbnN0IFNwZWN1bGF0ZWRUeXBlIFNwZWNFbXB0eSAgICAgICAg
ICAgICA9IDB4MTAwMDAwMDA7IC8vIEl0J3MgZGVmaW5pdGVseSBhbiBlbXB0eSB2YWx1ZSBtYXJr
ZXIuCitzdGF0aWMgY29uc3QgU3BlY3VsYXRlZFR5cGUgU3BlY0VtcHR5T3JUb3AgICAgICAgID0g
MHgxZmZmZmZmZjsgLy8gSXQgY2FuIGJlIGFueSBvZiB0aGUgYWJvdmUuCitzdGF0aWMgY29uc3Qg
U3BlY3VsYXRlZFR5cGUgRml4ZWRJbmRleGVkU3RvcmFnZU1hc2sgICAgPSBTcGVjSW50OEFycmF5
IHwgU3BlY0ludDE2QXJyYXkgfCBTcGVjSW50MzJBcnJheSB8IFNwZWNVaW50OEFycmF5IHwgU3Bl
Y1VpbnQ4Q2xhbXBlZEFycmF5IHwgU3BlY1VpbnQxNkFycmF5IHwgU3BlY1VpbnQzMkFycmF5IHwg
U3BlY0Zsb2F0MzJBcnJheSB8IFNwZWNGbG9hdDY0QXJyYXk7CiAKLXR5cGVkZWYgYm9vbCAoKlBy
ZWRpY3Rpb25DaGVja2VyKShQcmVkaWN0ZWRUeXBlKTsKK3R5cGVkZWYgYm9vbCAoKlNwZWN1bGF0
ZWRUeXBlQ2hlY2tlcikoU3BlY3VsYXRlZFR5cGUpOwogCiAvLyBEdW1teSBwcmVkaWN0aW9uIGNo
ZWNrZXIsIG9ubHkgdXNlZnVsIGlmIHNvbWVvbmUgaW5zaXN0cyBvbiByZXF1aXJpbmcgYSBwcmVk
aWN0aW9uIGNoZWNrZXIuCi1pbmxpbmUgYm9vbCBpc0FueVByZWRpY3Rpb24oUHJlZGljdGVkVHlw
ZSkKK2lubGluZSBib29sIGlzQW55U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUpCiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBib29sIGlzQ2VsbFByZWRpY3Rpb24oUHJlZGljdGVk
VHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzQ2VsbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBl
IHZhbHVlKQogewotICAgIHJldHVybiAhISh2YWx1ZSAmIFByZWRpY3RDZWxsKSAmJiAhKHZhbHVl
ICYgflByZWRpY3RDZWxsKTsKKyAgICByZXR1cm4gISEodmFsdWUgJiBTcGVjQ2VsbCkgJiYgISh2
YWx1ZSAmIH5TcGVjQ2VsbCk7CiB9CiAKLWlubGluZSBib29sIGlzT2JqZWN0UHJlZGljdGlvbihQ
cmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNPYmplY3RTcGVjdWxhdGlvbihTcGVj
dWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISEodmFsdWUgJiBQcmVkaWN0T2JqZWN0
TWFzaykgJiYgISh2YWx1ZSAmIH5QcmVkaWN0T2JqZWN0TWFzayk7CisgICAgcmV0dXJuICEhKHZh
bHVlICYgU3BlY09iamVjdE1hc2spICYmICEodmFsdWUgJiB+U3BlY09iamVjdE1hc2spOwogfQog
Ci1pbmxpbmUgYm9vbCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVl
KQoraW5saW5lIGJvb2wgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZh
bHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RmluYWxPYmplY3Q7CisgICAgcmV0
dXJuIHZhbHVlID09IFNwZWNGaW5hbE9iamVjdDsKIH0KIAotaW5saW5lIGJvb2wgaXNGaW5hbE9i
amVjdE9yT3RoZXJQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBp
c0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewot
ICAgIHJldHVybiAhISh2YWx1ZSAmIChQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIp
KSAmJiAhKHZhbHVlICYgfihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIpKTsKKyAg
ICByZXR1cm4gISEodmFsdWUgJiAoU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY090aGVyKSkgJiYgISh2
YWx1ZSAmIH4oU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY090aGVyKSk7CiB9CiAKLWlubGluZSBib29s
IGlzRml4ZWRJbmRleGVkU3RvcmFnZU9iamVjdFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKK2lubGluZSBib29sIGlzRml4ZWRJbmRleGVkU3RvcmFnZU9iamVjdFNwZWN1bGF0aW9uKFNw
ZWN1bGF0ZWRUeXBlIHZhbHVlKQogewogICAgIHJldHVybiAhIXZhbHVlICYmICh2YWx1ZSAmIEZp
eGVkSW5kZXhlZFN0b3JhZ2VNYXNrKSA9PSB2YWx1ZTsKIH0KIAotaW5saW5lIGJvb2wgaXNTdHJp
bmdQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc1N0cmluZ1Nw
ZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQ
cmVkaWN0U3RyaW5nOworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjU3RyaW5nOwogfQogCi1pbmxp
bmUgYm9vbCBpc0FycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJv
b2wgaXNBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVy
biB2YWx1ZSA9PSBQcmVkaWN0QXJyYXk7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNBcnJheTsK
IH0KIAotaW5saW5lIGJvb2wgaXNGdW5jdGlvblByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKK2lubGluZSBib29sIGlzRnVuY3Rpb25TcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdEZ1bmN0aW9uOworICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjRnVuY3Rpb247CiB9CiAKLWlubGluZSBib29sIGlzSW50OEFycmF5UHJlZGlj
dGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNJbnQ4QXJyYXlTcGVjdWxh
dGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGlj
dEludDhBcnJheTsKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY0ludDhBcnJheTsKIH0KIAotaW5s
aW5lIGJvb2wgaXNJbnQxNkFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5s
aW5lIGJvb2wgaXNJbnQxNkFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RJbnQxNkFycmF5OworICAgIHJldHVybiB2YWx1
ZSA9PSBTcGVjSW50MTZBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgaXNJbnQzMkFycmF5UHJlZGlj
dGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNJbnQzMkFycmF5U3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRp
Y3RJbnQzMkFycmF5OworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSW50MzJBcnJheTsKIH0KIAot
aW5saW5lIGJvb2wgaXNVaW50OEFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQor
aW5saW5lIGJvb2wgaXNVaW50OEFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUp
CiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RVaW50OEFycmF5OworICAgIHJldHVybiB2
YWx1ZSA9PSBTcGVjVWludDhBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgaXNVaW50OENsYW1wZWRB
cnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzVWludDhD
bGFtcGVkQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gdmFsdWUgPT0gUHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5OworICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjVWludDhDbGFtcGVkQXJyYXk7CiB9CiAKLWlubGluZSBib29sIGlzVWludDE2QXJyYXlQ
cmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc1VpbnQxNkFycmF5
U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09
IFByZWRpY3RVaW50MTZBcnJheTsKKyAgICByZXR1cm4gdmFsdWUgPT0gU3BlY1VpbnQxNkFycmF5
OwogfQogCi1pbmxpbmUgYm9vbCBpc1VpbnQzMkFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHZhbHVlKQoraW5saW5lIGJvb2wgaXNVaW50MzJBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRU
eXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0VWludDMyQXJyYXk7Cisg
ICAgcmV0dXJuIHZhbHVlID09IFNwZWNVaW50MzJBcnJheTsKIH0KIAotaW5saW5lIGJvb2wgaXNG
bG9hdDMyQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBp
c0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJl
dHVybiB2YWx1ZSA9PSBQcmVkaWN0RmxvYXQzMkFycmF5OworICAgIHJldHVybiB2YWx1ZSA9PSBT
cGVjRmxvYXQzMkFycmF5OwogfQogCi1pbmxpbmUgYm9vbCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlzRmxvYXQ2NEFycmF5U3BlY3Vs
YXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRp
Y3RGbG9hdDY0QXJyYXk7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNGbG9hdDY0QXJyYXk7CiB9
CiAKLWlubGluZSBib29sIGlzQXJndW1lbnRzUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVl
KQoraW5saW5lIGJvb2wgaXNBcmd1bWVudHNTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1
ZSkKIHsKLSAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBQcmVkaWN0QXJndW1lbnRzKSA9
PSB2YWx1ZTsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUgJiBTcGVjQXJndW1lbnRzKSA9
PSB2YWx1ZTsKIH0KIAotaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5UHJl
ZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlSW50
TXV0YWJsZUFycmF5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0
dXJuIGlzSW50OEFycmF5UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNJbnQxNkFycmF5
UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNJbnQzMkFycmF5UHJlZGljdGlvbih2YWx1
ZSkKLSAgICAgICAgfHwgaXNVaW50OEFycmF5UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwg
aXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzVWludDE2
QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQotICAgICAgICB8fCBpc1VpbnQzMkFycmF5UHJlZGljdGlv
bih2YWx1ZSk7CisgICAgcmV0dXJuIGlzSW50OEFycmF5U3BlY3VsYXRpb24odmFsdWUpCisgICAg
ICAgIHx8IGlzSW50MTZBcnJheVNwZWN1bGF0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0ludDMy
QXJyYXlTcGVjdWxhdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNVaW50OEFycmF5U3BlY3VsYXRp
b24odmFsdWUpCisgICAgICAgIHx8IGlzVWludDhDbGFtcGVkQXJyYXlTcGVjdWxhdGlvbih2YWx1
ZSkKKyAgICAgICAgfHwgaXNVaW50MTZBcnJheVNwZWN1bGF0aW9uKHZhbHVlKQorICAgICAgICB8
fCBpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24odmFsdWUpOwogfQogCi1pbmxpbmUgYm9vbCBpc0Fj
dGlvbmFibGVGbG9hdE11dGFibGVBcnJheVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkK
K2lubGluZSBib29sIGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5U3BlY3VsYXRpb24oU3Bl
Y3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGlzRmxvYXQzMkFycmF5UHJlZGljdGlv
bih2YWx1ZSkKLSAgICAgICAgfHwgaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKKyAg
ICByZXR1cm4gaXNGbG9hdDMyQXJyYXlTcGVjdWxhdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNG
bG9hdDY0QXJyYXlTcGVjdWxhdGlvbih2YWx1ZSk7CiB9CiAKLWlubGluZSBib29sIGlzQWN0aW9u
YWJsZVR5cGVkTXV0YWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5s
aW5lIGJvb2wgaXNBY3Rpb25hYmxlVHlwZWRNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxh
dGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5
UHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNBY3Rpb25hYmxlRmxvYXRNdXRhYmxlQXJy
YXlQcmVkaWN0aW9uKHZhbHVlKTsKKyAgICByZXR1cm4gaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFy
cmF5U3BlY3VsYXRpb24odmFsdWUpCisgICAgICAgIHx8IGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJs
ZUFycmF5U3BlY3VsYXRpb24odmFsdWUpOwogfQogCi1pbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVN
dXRhYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBp
c0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gaXNBcnJheVByZWRpY3Rpb24odmFsdWUpCi0gICAgICAgIHx8IGlzQXJn
dW1lbnRzUHJlZGljdGlvbih2YWx1ZSkKLSAgICAgICAgfHwgaXNBY3Rpb25hYmxlVHlwZWRNdXRh
YmxlQXJyYXlQcmVkaWN0aW9uKHZhbHVlKTsKKyAgICByZXR1cm4gaXNBcnJheVNwZWN1bGF0aW9u
KHZhbHVlKQorICAgICAgICB8fCBpc0FyZ3VtZW50c1NwZWN1bGF0aW9uKHZhbHVlKQorICAgICAg
ICB8fCBpc0FjdGlvbmFibGVUeXBlZE11dGFibGVBcnJheVNwZWN1bGF0aW9uKHZhbHVlKTsKIH0K
IAotaW5saW5lIGJvb2wgaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKFByZWRpY3RlZFR5cGUg
dmFsdWUpCitpbmxpbmUgYm9vbCBpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKFNwZWN1bGF0
ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiBpc1N0cmluZ1ByZWRpY3Rpb24odmFsdWUpCi0g
ICAgICAgIHx8IGlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24odmFsdWUpOworICAg
IHJldHVybiBpc1N0cmluZ1NwZWN1bGF0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0FjdGlvbmFi
bGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbih2YWx1ZSk7CiB9CiAKLWlubGluZSBib29sIGlzQXJy
YXlPck90aGVyUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNB
cnJheU9yT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1
cm4gISEodmFsdWUgJiAoUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKSkgJiYgISh2YWx1ZSAm
IH4oUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKSk7CisgICAgcmV0dXJuICEhKHZhbHVlICYg
KFNwZWNBcnJheSB8IFNwZWNPdGhlcikpICYmICEodmFsdWUgJiB+KFNwZWNBcnJheSB8IFNwZWNP
dGhlcikpOwogfQogCi1pbmxpbmUgYm9vbCBpc015QXJndW1lbnRzUHJlZGljdGlvbihQcmVkaWN0
ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNNeUFyZ3VtZW50c1NwZWN1bGF0aW9uKFNwZWN1
bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0TXlBcmd1bWVu
dHM7CisgICAgcmV0dXJuIHZhbHVlID09IFNwZWNNeUFyZ3VtZW50czsKIH0KIAotaW5saW5lIGJv
b2wgaXNJbnQzMlByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK2lubGluZSBib29sIGlz
SW50MzJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gdmFs
dWUgPT0gUHJlZGljdEludDMyOworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjSW50MzI7CiB9CiAK
LWlubGluZSBib29sIGlzRG91YmxlUmVhbFByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkK
K2lubGluZSBib29sIGlzRG91YmxlUmVhbFNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHZhbHVl
KQogewotICAgIHJldHVybiB2YWx1ZSA9PSBQcmVkaWN0RG91YmxlUmVhbDsKKyAgICByZXR1cm4g
dmFsdWUgPT0gU3BlY0RvdWJsZVJlYWw7CiB9CiAKLWlubGluZSBib29sIGlzRG91YmxlUHJlZGlj
dGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wgaXNEb3VibGVTcGVjdWxhdGlv
bihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUg
JiBQcmVkaWN0RG91YmxlKSA9PSB2YWx1ZTsKKyAgICByZXR1cm4gISF2YWx1ZSAmJiAodmFsdWUg
JiBTcGVjRG91YmxlKSA9PSB2YWx1ZTsKIH0KIAotaW5saW5lIGJvb2wgaXNOdW1iZXJQcmVkaWN0
aW9uKFByZWRpY3RlZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc051bWJlclNwZWN1bGF0aW9u
KFNwZWN1bGF0ZWRUeXBlIHZhbHVlKQogewotICAgIHJldHVybiAhISh2YWx1ZSAmIFByZWRpY3RO
dW1iZXIpICYmICEodmFsdWUgJiB+UHJlZGljdE51bWJlcik7CisgICAgcmV0dXJuICEhKHZhbHVl
ICYgU3BlY051bWJlcikgJiYgISh2YWx1ZSAmIH5TcGVjTnVtYmVyKTsKIH0KIAotaW5saW5lIGJv
b2wgaXNCb29sZWFuUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoraW5saW5lIGJvb2wg
aXNCb29sZWFuU3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IHZhbHVlID09IFByZWRpY3RCb29sZWFuOworICAgIHJldHVybiB2YWx1ZSA9PSBTcGVjQm9vbGVh
bjsKIH0KIAotaW5saW5lIGJvb2wgaXNPdGhlclByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1
ZSkKK2lubGluZSBib29sIGlzT3RoZXJTcGVjdWxhdGlvbihTcGVjdWxhdGVkVHlwZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gdmFsdWUgPT0gUHJlZGljdE90aGVyOworICAgIHJldHVybiB2YWx1ZSA9
PSBTcGVjT3RoZXI7CiB9CiAKLWlubGluZSBib29sIGlzRW1wdHlQcmVkaWN0aW9uKFByZWRpY3Rl
ZFR5cGUgdmFsdWUpCitpbmxpbmUgYm9vbCBpc0VtcHR5U3BlY3VsYXRpb24oU3BlY3VsYXRlZFR5
cGUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RFbXB0eTsKKyAgICByZXR1
cm4gdmFsdWUgPT0gU3BlY0VtcHR5OwogfQogCi1jb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9TdHJp
bmcoUHJlZGljdGVkVHlwZSB2YWx1ZSk7Ci1jb25zdCBjaGFyKiBwcmVkaWN0aW9uVG9BYmJyZXZp
YXRlZFN0cmluZyhQcmVkaWN0ZWRUeXBlIHZhbHVlKTsKK2NvbnN0IGNoYXIqIHNwZWN1bGF0aW9u
VG9TdHJpbmcoU3BlY3VsYXRlZFR5cGUgdmFsdWUpOworY29uc3QgY2hhciogc3BlY3VsYXRpb25U
b0FiYnJldmlhdGVkU3RyaW5nKFNwZWN1bGF0ZWRUeXBlIHZhbHVlKTsKIAogLy8gTWVyZ2UgdHdv
IHByZWRpY3Rpb25zLiBOb3RlIHRoYXQgY3VycmVudGx5IHRoaXMganVzdCBkb2VzIGxlZnQgfCBy
aWdodC4gSXQgbWF5CiAvLyBzZWVtIHRlbXB0aW5nIHRvIGRvIHNvIGRpcmVjdGx5LCBidXQgeW91
IHdvdWxkIGJlIGRvaW5nIHNvIGF0IHlvdXIgb3duIHBlcmlsLAotLy8gc2luY2UgdGhlIG1lcmdp
bmcgcHJvdG9jb2wgUHJlZGljdGVkVHlwZSBtYXkgY2hhbmdlIGF0IGFueSB0aW1lIChhbmQgaGFz
IGFscmVhZHkKKy8vIHNpbmNlIHRoZSBtZXJnaW5nIHByb3RvY29sIFNwZWN1bGF0ZWRUeXBlIG1h
eSBjaGFuZ2UgYXQgYW55IHRpbWUgKGFuZCBoYXMgYWxyZWFkeQogLy8gY2hhbmdlZCBzZXZlcmFs
IHRpbWVzIGluIGl0cyBoaXN0b3J5KS4KLWlubGluZSBQcmVkaWN0ZWRUeXBlIG1lcmdlUHJlZGlj
dGlvbnMoUHJlZGljdGVkVHlwZSBsZWZ0LCBQcmVkaWN0ZWRUeXBlIHJpZ2h0KQoraW5saW5lIFNw
ZWN1bGF0ZWRUeXBlIG1lcmdlU3BlY3VsYXRpb25zKFNwZWN1bGF0ZWRUeXBlIGxlZnQsIFNwZWN1
bGF0ZWRUeXBlIHJpZ2h0KQogewogICAgIHJldHVybiBsZWZ0IHwgcmlnaHQ7CiB9CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCBtZXJnZVByZWRpY3Rpb24oVCYgbGVmdCwgUHJl
ZGljdGVkVHlwZSByaWdodCkKK2lubGluZSBib29sIG1lcmdlU3BlY3VsYXRpb24oVCYgbGVmdCwg
U3BlY3VsYXRlZFR5cGUgcmlnaHQpCiB7Ci0gICAgUHJlZGljdGVkVHlwZSBuZXdQcmVkaWN0aW9u
ID0gc3RhdGljX2Nhc3Q8VD4obWVyZ2VQcmVkaWN0aW9ucyhzdGF0aWNfY2FzdDxQcmVkaWN0ZWRU
eXBlPihsZWZ0KSwgcmlnaHQpKTsKLSAgICBib29sIHJlc3VsdCA9IG5ld1ByZWRpY3Rpb24gIT0g
c3RhdGljX2Nhc3Q8UHJlZGljdGVkVHlwZT4obGVmdCk7Ci0gICAgbGVmdCA9IG5ld1ByZWRpY3Rp
b247CisgICAgU3BlY3VsYXRlZFR5cGUgbmV3U3BlY3VsYXRpb24gPSBzdGF0aWNfY2FzdDxUPiht
ZXJnZVNwZWN1bGF0aW9ucyhzdGF0aWNfY2FzdDxTcGVjdWxhdGVkVHlwZT4obGVmdCksIHJpZ2h0
KSk7CisgICAgYm9vbCByZXN1bHQgPSBuZXdTcGVjdWxhdGlvbiAhPSBzdGF0aWNfY2FzdDxTcGVj
dWxhdGVkVHlwZT4obGVmdCk7CisgICAgbGVmdCA9IG5ld1NwZWN1bGF0aW9uOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLVByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8oY29u
c3QgQ2xhc3NJbmZvKik7Ci1QcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tU3RydWN0dXJlKFN0
cnVjdHVyZSopOwotUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uRnJvbUNlbGwoSlNDZWxsKik7Ci1Q
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tVmFsdWUoSlNWYWx1ZSk7CitTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21DbGFzc0luZm8oY29uc3QgQ2xhc3NJbmZvKik7CitTcGVjdWxhdGVk
VHlwZSBzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUoU3RydWN0dXJlKik7CitTcGVjdWxhdGVkVHlw
ZSBzcGVjdWxhdGlvbkZyb21DZWxsKEpTQ2VsbCopOworU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRp
b25Gcm9tVmFsdWUoSlNWYWx1ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwogCi0jZW5kaWYgLy8g
UHJlZGljdGVkVHlwZV9oCisjZW5kaWYgLy8gU3BlY3VsYXRlZFR5cGVfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTZXQuaAkocmV2aXNpb24gMTE5
NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVNldC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVmIFN0cnVjdHVyZVNldF9oCiAj
ZGVmaW5lIFN0cnVjdHVyZVNldF9oCiAKLSNpbmNsdWRlICJQcmVkaWN0ZWRUeXBlLmgiCisjaW5j
bHVkZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRl
IDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEyMSwxMiArMTIxLDEyIEBA
IHB1YmxpYzoKICAgICAKICAgICBTdHJ1Y3R1cmUqIGxhc3QoKSBjb25zdCB7IHJldHVybiBtX3N0
cnVjdHVyZXMubGFzdCgpOyB9CiAKLSAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb25Gcm9tU3Ry
dWN0dXJlcygpIGNvbnN0CisgICAgU3BlY3VsYXRlZFR5cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0
dXJlcygpIGNvbnN0CiAgICAgewotICAgICAgICBQcmVkaWN0ZWRUeXBlIHJlc3VsdCA9IFByZWRp
Y3ROb25lOworICAgICAgICBTcGVjdWxhdGVkVHlwZSByZXN1bHQgPSBTcGVjTm9uZTsKICAgICAg
ICAgCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdHJ1Y3R1cmVzLnNpemUoKTsg
KytpKQotICAgICAgICAgICAgbWVyZ2VQcmVkaWN0aW9uKHJlc3VsdCwgcHJlZGljdGlvbkZyb21T
dHJ1Y3R1cmUobV9zdHJ1Y3R1cmVzW2ldKSk7CisgICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9u
KHJlc3VsdCwgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKG1fc3RydWN0dXJlc1tpXSkpOwogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiAxMTk2MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDcgKzM1LDcgQEAKIAogI2luY2x1ZGUgIkhlYXAuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCi0jaW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgorI2luY2x1ZGUgIlNwZWN1bGF0
ZWRUeXBlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVy
LmgiCiAKQEAgLTUwLDcgKzUwLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIAog
ICAgIFZhbHVlUHJvZmlsZUJhc2UoKQogICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoLTEpCi0g
ICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQorICAgICAgICAsIG1fcHJlZGljdGlv
bihTcGVjTm9uZSkKICAgICAgICAgLCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbigwKQog
ICAgICAgICAsIG1fc2luZ2xldG9uVmFsdWVJc1RvcChmYWxzZSkKICAgICB7CkBAIC02MCw3ICs2
MCw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICBWYWx1ZVByb2ZpbGVC
YXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KQotICAgICAgICAsIG1fcHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKKyAgICAgICAg
LCBtX3ByZWRpY3Rpb24oU3BlY05vbmUpCiAgICAgICAgICwgbV9udW1iZXJPZlNhbXBsZXNJblBy
ZWRpY3Rpb24oMCkKICAgICAgICAgLCBtX3NpbmdsZXRvblZhbHVlSXNUb3AoZmFsc2UpCiAgICAg
ewpAQCAtMTE0LDcgKzExNCw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAg
ZnByaW50ZihvdXQsCiAgICAgICAgICAgICAgICAgInNhbXBsZXMgPSAldSwgcHJlZGljdGlvbiA9
ICVzIiwKICAgICAgICAgICAgICAgICB0b3RhbE51bWJlck9mU2FtcGxlcygpLAotICAgICAgICAg
ICAgICAgIHByZWRpY3Rpb25Ub1N0cmluZyhtX3ByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvblRvU3RyaW5nKG1fcHJlZGljdGlvbikpOwogICAgICAgICBmcHJpbnRmKG91
dCwgIiwgdmFsdWUgPSAiKTsKICAgICAgICAgaWYgKG1fc2luZ2xldG9uVmFsdWVJc1RvcCkKICAg
ICAgICAgICAgIGZwcmludGYob3V0LCAiVE9QIik7CkBAIC0xMzUsNyArMTM1LDcgQEAgc3RydWN0
IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIH0KICAgICAKICAgICAvLyBVcGRhdGVzIHRoZSBwcmVk
aWN0aW9uIGFuZCByZXR1cm5zIHRoZSBuZXcgb25lLgotICAgIFByZWRpY3RlZFR5cGUgY29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKE9wZXJhdGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uID0gTm9PcGVy
YXRpb24pCisgICAgU3BlY3VsYXRlZFR5cGUgY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKE9wZXJh
dGlvbkluUHJvZ3Jlc3Mgb3BlcmF0aW9uID0gTm9PcGVyYXRpb24pCiAgICAgewogICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkgewogICAg
ICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOwpA
QCAtMTQzLDcgKzE0Myw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9udW1iZXJPZlNhbXBs
ZXNJblByZWRpY3Rpb24rKzsKLSAgICAgICAgICAgIG1lcmdlUHJlZGljdGlvbihtX3ByZWRpY3Rp
b24sIHByZWRpY3Rpb25Gcm9tVmFsdWUodmFsdWUpKTsKKyAgICAgICAgICAgIG1lcmdlU3BlY3Vs
YXRpb24obV9wcmVkaWN0aW9uLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAoIW1fc2luZ2xldG9uVmFsdWVJc1RvcCAmJiAhIXZhbHVl
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX3NpbmdsZXRvblZhbHVlKQpAQCAtMTY3LDcgKzE2
Nyw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICBpbnQgbV9ieXRlY29k
ZU9mZnNldDsgLy8gLTEgZm9yIHByb2xvZ3VlCiAgICAgCi0gICAgUHJlZGljdGVkVHlwZSBtX3By
ZWRpY3Rpb247CisgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uOwogICAgIHVuc2lnbmVk
IG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uOwogICAgIAogICAgIGJvb2wgbV9zaW5nbGV0
b25WYWx1ZUlzVG9wOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwzMSArOTks
MzEgQEAgdm9pZCBBYnN0cmFjdFN0YXRlOjppbml0aWFsaXplKEdyYXBoJiBncgogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIFByZWRpY3RlZFR5cGUg
cHJlZGljdGlvbiA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rpb24oKTsKLSAg
ICAgICAgaWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICAgICAgcm9v
dC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0SW50MzIpOwotICAgICAgICBl
bHNlIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEFycmF5KTsKLSAgICAgICAgZWxz
ZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoUHJlZGljdEJvb2xlYW4pOwotICAgICAgICBl
bHNlIGlmIChpc0ludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICBy
b290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RJbnQ4QXJyYXkpOwotICAg
ICAgICBlbHNlIGlmIChpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0SW50MTZBcnJh
eSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikp
Ci0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RJ
bnQzMkFycmF5KTsKLSAgICAgICAgZWxzZSBpZiAoaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVk
aWN0aW9uKSkKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQo
UHJlZGljdFVpbnQ4QXJyYXkpOwotICAgICAgICBlbHNlIGlmIChpc1VpbnQ4Q2xhbXBlZEFycmF5
UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKLSAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5h
cmd1bWVudChpKS5zZXQoUHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5KTsKLSAgICAgICAgZWxzZSBp
ZiAoaXNVaW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICByb290
LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRpY3RVaW50MTZBcnJheSk7Ci0gICAg
ICAgIGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChQcmVkaWN0VWludDMyQXJy
YXkpOwotICAgICAgICBlbHNlIGlmIChpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlv
bikpCi0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFByZWRp
Y3RGbG9hdDMyQXJyYXkpOwotICAgICAgICBlbHNlIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQo
aSkuc2V0KFByZWRpY3RGbG9hdDY0QXJyYXkpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVk
aWN0aW9uID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpOworICAgICAg
ICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjSW50MzIpOworICAgICAgICBlbHNlIGlm
IChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFNwZWNBcnJheSk7CisgICAgICAgIGVsc2UgaWYgKGlz
Qm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+dmFsdWVz
QXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjQm9vbGVhbik7CisgICAgICAgIGVsc2UgaWYgKGlz
SW50OEFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICByb290LT52YWx1
ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFNwZWNJbnQ4QXJyYXkpOworICAgICAgICBlbHNlIGlm
IChpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJvb3Qt
PnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY0ludDE2QXJyYXkpOworICAgICAgICBl
bHNlIGlmIChpc0ludDMyQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAg
IHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY0ludDMyQXJyYXkpOworICAg
ICAgICBlbHNlIGlmIChpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAg
ICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY1VpbnQ4QXJyYXkp
OworICAgICAgICBlbHNlIGlmIChpc1VpbnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRpb24ocHJlZGlj
dGlvbikpCisgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0KFNw
ZWNVaW50OENsYW1wZWRBcnJheSk7CisgICAgICAgIGVsc2UgaWYgKGlzVWludDE2QXJyYXlTcGVj
dWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1
bWVudChpKS5zZXQoU3BlY1VpbnQxNkFycmF5KTsKKyAgICAgICAgZWxzZSBpZiAoaXNVaW50MzJB
cnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRI
ZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjVWludDMyQXJyYXkpOworICAgICAgICBlbHNlIGlmIChp
c0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLnNldChTcGVjRmxvYXQzMkFycmF5KTsKKyAgICAgICAg
ZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAg
ICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXQoU3BlY0Zsb2F0NjRBcnJheSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChp
KS5tYWtlVG9wKCk7CiAgICAgICAgIApAQCAtMjM4LDcgKzIzOCw3IEBAIGJvb2wgQWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICBjYXNlIEdldExvY2FsOiB7CiAgICAgICAg
IFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS52YXJpYWJsZUFj
Y2Vzc0RhdGEoKTsKICAgICAgICAgYm9vbCBjYW5FeGl0ID0gZmFsc2U7Ci0gICAgICAgIGNhbkV4
aXQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdE5vbmU7Cisg
ICAgICAgIGNhbkV4aXQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVkaWN0aW9uKCkgPT0gU3Bl
Y05vbmU7CiAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX3ZhcmlhYmxlcy5vcGVyYW5k
KHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKSk7CiAgICAgICAgIGlmICghdmFyaWFibGVBY2Nl
c3NEYXRhLT5pc0NhcHR1cmVkKCkpIHsKICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkp
CkBAIC0yNjksMTcgKzI2OSwxNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kCiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+
c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpIHsKICAgICAgICAgICAgIHNwZWN1bGF0ZU51bWJlclVu
YXJ5KG5vZGUpOwotICAgICAgICAgICAgbV92YXJpYWJsZXMub3BlcmFuZChub2RlLmxvY2FsKCkp
LnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAgIG1fdmFyaWFibGVzLm9wZXJhbmQobm9k
ZS5sb2NhbCgpKS5zZXQoU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICAKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gbm9kZS52
YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKTsKLSAgICAgICAg
aWYgKGlzSW50MzJQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAgICBTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0ZWRUeXBlID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRB
d2FyZVByZWRpY3Rpb24oKTsKKyAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0
ZWRUeXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0ZUludDMyVW5hcnkobm9kZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7Ci0gICAgICAgICAg
ICBub2RlLnNldENhbkV4aXQoIWlzQXJyYXlQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQ
cmVkaWN0QXJyYXkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpCisgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0
ZWRUeXBlKSkgeworICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc0FycmF5U3BlY3VsYXRp
b24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNBcnJheSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNC
b29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGVC
b29sZWFuVW5hcnkobm9kZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG5vZGUuc2V0Q2Fu
RXhpdChmYWxzZSk7CkBAIC0zMzIsNyArMzMyLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
c3BlY3VsYXRlSW50MzJCaW5hcnkobm9kZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50
MzIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzQ2LDEwICszNDYsMTAg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFub2RlLmNhblNwZWN1bGF0ZUludGVnZXIo
KSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0RvdWJsZSk7CiAgICAgICAg
ICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgbm9kZS5zZXRDYW5F
eGl0KHRydWUpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMzY4LDggKzM2OCw4IEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOwotICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFNwZWNOdW1iZXIpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtMzkz
LDcgKzM5Myw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAg
Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIApAQCAtNDA2LDEyICs0MDYsMTIgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVj
dXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
c3BlY3VsYXRlTnVtYmVyVW5hcnkobm9kZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoUHJlZGljdERvdWJsZSk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0Rv
dWJsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVja051
bWJlcjoKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdE51bWJl
cik7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNOdW1iZXIpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgVmFsdWVBZGQ6CkBAIC00Mjcs
MTcgKzQyNywxNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAg
ICAgICAgIGlmIChtX2dyYXBoLmFkZFNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9kZSkpIHsKICAg
ICAgICAgICAgIHNwZWN1bGF0ZUludDMyQmluYXJ5KAogICAgICAgICAgICAgICAgIG5vZGUsICFu
b2RlQ2FuVHJ1bmNhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpOwotICAgICAgICAg
ICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkgewogICAgICAgICAgICAgc3Bl
Y3VsYXRlTnVtYmVyQmluYXJ5KG5vZGUpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
U3BlY0RvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAo
bm9kZS5vcCgpID09IFZhbHVlQWRkKSB7CiAgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS5j
b2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChQcmVkaWN0U3RyaW5nIHwgUHJlZGljdEludDMyIHwgUHJlZGljdE51bWJlcik7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNTdHJpbmcgfCBTcGVjSW50MzIgfCBT
cGVjTnVtYmVyKTsKICAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNDU5LDExICs0NTksMTEgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBpZiAobV9ncmFwaC5hZGRTaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGVJbnQzMkJp
bmFyeSgKICAgICAgICAgICAgICAgICBub2RlLCAhbm9kZUNhblRydW5jYXRlSW50ZWdlcihub2Rl
LmFyaXRoTm9kZUZsYWdzKCkpKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
UHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0lu
dDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHNwZWN1bGF0ZU51
bWJlckJpbmFyeShub2RlKTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
RG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjRG91YmxlKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKQEAgLTQ3OCwxMSArNDc4LDExIEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgaWYgKG1fZ3JhcGgu
bmVnYXRlU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkgewogICAgICAgICAgICAgc3BlY3Vs
YXRlSW50MzJVbmFyeSgKICAgICAgICAgICAgICAgICBub2RlLCAhbm9kZUNhblRydW5jYXRlSW50
ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkpKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5z
ZXQoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHNw
ZWN1bGF0ZU51bWJlclVuYXJ5KG5vZGUpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3REb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNEb3Vi
bGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNTAwLDExICs1MDAsMTEg
QEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAg
ICAgIG5vZGUsCiAgICAgICAgICAgICAgICAgIW5vZGVDYW5UcnVuY2F0ZUludGVnZXIobm9kZS5h
cml0aE5vZGVGbGFncygpKQogICAgICAgICAgICAgICAgIHx8ICFub2RlQ2FuSWdub3JlTmVnYXRp
dmVaZXJvKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
c3BlY3VsYXRlTnVtYmVyQmluYXJ5KG5vZGUpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCku
c2V0KFByZWRpY3REb3VibGUpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNE
b3VibGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtNTQyLDExICs1NDIs
MTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAg
ICAgICAgIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0pCiAg
ICAgICAgICAgICAmJiBub2RlLmNhblNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAg
c3BlY3VsYXRlSW50MzJCaW5hcnkobm9kZSwgdHJ1ZSk7IC8vIGZvcmNpbmcgY2FuLWV4aXQsIHdo
aWNoIGlzIGEgYml0IG9uIHRoZSBjb25zZXJ2YXRpdmUgc2lkZS4KLSAgICAgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIHNwZWN1bGF0ZU51bWJlckJpbmFyeShub2RlKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNl
dChTcGVjRG91YmxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC01
NjEsMTEgKzU2MSwxMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludGVn
ZXIoKQogICAgICAgICAgICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAg
ICAgICAgIHNwZWN1bGF0ZUludDMyVW5hcnkobm9kZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBzcGVjdWxhdGVOdW1iZXJVbmFyeShub2RlKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNl
dChTcGVjRG91YmxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAgCkBAIC01
NzgsNyArNTc4LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgc3BlY3VsYXRlTnVtYmVyVW5h
cnkobm9kZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7
CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0RvdWJsZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICAgICAgICAgIApAQCAtNTkwLDIzICs1OTAsMjMgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwotICAg
ICAgICBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihjaGlsZC5wcmVkaWN0aW9uKCkpKQorICAgICAg
ICBpZiAoaXNCb29sZWFuU3BlY3VsYXRpb24oY2hpbGQucHJlZGljdGlvbigpKSkKICAgICAgICAg
ICAgIHNwZWN1bGF0ZUJvb2xlYW5VbmFyeShub2RlKTsKICAgICAgICAgZWxzZSBpZiAoY2hpbGQu
c2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVyKCkpIHsKICAgICAgICAgICAgIG5vZGUu
c2V0Q2FuRXhpdCgKLSAgICAgICAgICAgICAgICAhaXNGaW5hbE9iamVjdE9yT3RoZXJQcmVkaWN0
aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIp
OworICAgICAgICAgICAgICAgICFpc0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1bGF0aW9uKGZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihTcGVjRmluYWxPYmplY3QgfCBTcGVjT3RoZXIpOwogICAgICAgICB9IGVs
c2UgaWYgKGNoaWxkLnNob3VsZFNwZWN1bGF0ZUFycmF5T3JPdGhlcigpKSB7CiAgICAgICAgICAg
ICBub2RlLnNldENhbkV4aXQoCi0gICAgICAgICAgICAgICAgIWlzQXJyYXlPck90aGVyUHJlZGlj
dGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwotICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKTsKKyAg
ICAgICAgICAgICAgICAhaXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoU3BlY0FycmF5IHwgU3BlY090aGVyKTsKICAgICAgICAgfSBlbHNlIGlmIChjaGlsZC5zaG91
bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCiAgICAgICAgICAgICBzcGVjdWxhdGVJbnQzMlVuYXJ5KG5v
ZGUpOwogICAgICAgICBlbHNlIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkKICAg
ICAgICAgICAgIHNwZWN1bGF0ZU51bWJlclVuYXJ5KG5vZGUpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFByZWRpY3RCb29sZWFuKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChT
cGVjQm9vbGVhbik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC02NDQsNyAr
NjQ0LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEJvb2xlYW4pOworICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFNwZWNCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAg
ICAgCkBAIC02ODMsMTggKzY4MywxOCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0Qm9vbGVhbik7CisgICAgICAgIGZvck5v
ZGUobm9kZUluZGV4KS5zZXQoU3BlY0Jvb2xlYW4pOwogICAgICAgICAKICAgICAgICAgTm9kZSYg
bGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07CiAgICAgICAgIE5vZGUmIHJpZ2h0ID0gbV9n
cmFwaFtub2RlLmNoaWxkMigpXTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBmaWx0ZXI7Ci0gICAg
ICAgIFByZWRpY3Rpb25DaGVja2VyIGNoZWNrZXI7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGZp
bHRlcjsKKyAgICAgICAgU3BlY3VsYXRlZFR5cGVDaGVja2VyIGNoZWNrZXI7CiAgICAgICAgIGlm
IChOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKGxlZnQsIHJpZ2h0KSkgewotICAgICAgICAg
ICAgZmlsdGVyID0gUHJlZGljdEludDMyOwotICAgICAgICAgICAgY2hlY2tlciA9IGlzSW50MzJQ
cmVkaWN0aW9uOworICAgICAgICAgICAgZmlsdGVyID0gU3BlY0ludDMyOworICAgICAgICAgICAg
Y2hlY2tlciA9IGlzSW50MzJTcGVjdWxhdGlvbjsKICAgICAgICAgfSBlbHNlIGlmIChOb2RlOjpz
aG91bGRTcGVjdWxhdGVOdW1iZXIobGVmdCwgcmlnaHQpKSB7Ci0gICAgICAgICAgICBmaWx0ZXIg
PSBQcmVkaWN0TnVtYmVyOwotICAgICAgICAgICAgY2hlY2tlciA9IGlzTnVtYmVyUHJlZGljdGlv
bjsKKyAgICAgICAgICAgIGZpbHRlciA9IFNwZWNOdW1iZXI7CisgICAgICAgICAgICBjaGVja2Vy
ID0gaXNOdW1iZXJTcGVjdWxhdGlvbjsKICAgICAgICAgfSBlbHNlIGlmIChub2RlLm9wKCkgPT0g
Q29tcGFyZUVxKSB7CiAgICAgICAgICAgICBpZiAoKG1fZ3JhcGguaXNDb25zdGFudChub2RlLmNo
aWxkMSgpLmluZGV4KCkpCiAgICAgICAgICAgICAgICAgICYmIG1fZ3JhcGgudmFsdWVPZkpTQ29u
c3RhbnQobm9kZS5jaGlsZDEoKS5pbmRleCgpKS5pc051bGwoKSkKQEAgLTcwNiw0NyArNzA2LDQ3
IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KGxlZnQsIHJpZ2h0KSkgewotICAgICAgICAgICAgICAgIGZpbHRlciA9IFByZWRp
Y3RGaW5hbE9iamVjdDsKLSAgICAgICAgICAgICAgICBjaGVja2VyID0gaXNGaW5hbE9iamVjdFBy
ZWRpY3Rpb247CisgICAgICAgICAgICAgICAgZmlsdGVyID0gU3BlY0ZpbmFsT2JqZWN0OworICAg
ICAgICAgICAgICAgIGNoZWNrZXIgPSBpc0ZpbmFsT2JqZWN0U3BlY3VsYXRpb247CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUFycmF5KGxlZnQsIHJpZ2h0KSkg
ewotICAgICAgICAgICAgICAgIGZpbHRlciA9IFByZWRpY3RBcnJheTsKLSAgICAgICAgICAgICAg
ICBjaGVja2VyID0gaXNBcnJheVByZWRpY3Rpb247CisgICAgICAgICAgICAgICAgZmlsdGVyID0g
U3BlY0FycmF5OworICAgICAgICAgICAgICAgIGNoZWNrZXIgPSBpc0FycmF5U3BlY3VsYXRpb247
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGxlZnQuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3Qo
KSAmJiByaWdodC5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkgewogICAgICAg
ICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCgKLSAgICAgICAgICAgICAgICAgICAgIWlzRmluYWxP
YmplY3RQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQotICAgICAgICAg
ICAgICAgICAgICB8fCAhaXNGaW5hbE9iamVjdE9yT3RoZXJQcmVkaWN0aW9uKGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkubV90eXBlKSk7Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdEZpbmFsT2JqZWN0KTsKLSAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIp
OworICAgICAgICAgICAgICAgICAgICAhaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgICAgICAgICB8fCAhaXNGaW5hbE9i
amVjdE9yT3RoZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpOwor
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNGaW5hbE9i
amVjdCk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3Bl
Y0ZpbmFsT2JqZWN0IHwgU3BlY090aGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocmlnaHQuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3QoKSAmJiBs
ZWZ0LnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7CiAgICAgICAgICAgICAg
ICAgbm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAgICAgICAgICAhaXNGaW5hbE9iamVjdE9y
T3RoZXJQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQotICAgICAgICAg
ICAgICAgICAgICB8fCAhaXNGaW5hbE9iamVjdFByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxk
MigpKS5tX3R5cGUpKTsKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihQcmVkaWN0RmluYWxPYmplY3QgfCBQcmVkaWN0T3RoZXIpOwotICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RGaW5hbE9iamVjdCk7CisgICAg
ICAgICAgICAgICAgICAgICFpc0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1bGF0aW9uKGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgICAgICAgICB8fCAhaXNGaW5hbE9i
amVjdFNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSk7CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ZpbmFsT2JqZWN0IHwg
U3BlY090aGVyKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRl
cihTcGVjRmluYWxPYmplY3QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChsZWZ0LnNob3VsZFNwZWN1bGF0ZUFycmF5KCkgJiYgcmlnaHQuc2hvdWxkU3Bl
Y3VsYXRlQXJyYXlPck90aGVyKCkpIHsKICAgICAgICAgICAgICAgICBub2RlLnNldENhbkV4aXQo
Ci0gICAgICAgICAgICAgICAgICAgICFpc0FycmF5UHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlPck90aGVyUHJl
ZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpOwotICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7Ci0gICAgICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEFycmF5IHwgUHJlZGlj
dE90aGVyKTsKKyAgICAgICAgICAgICAgICAgICAgIWlzQXJyYXlTcGVjdWxhdGlvbihmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlP
ck90aGVyU3BlY3VsYXRpb24oZm9yTm9kZShub2RlLmNoaWxkMigpKS5tX3R5cGUpKTsKKyAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNBcnJheSB8IFNw
ZWNPdGhlcik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KHJpZ2h0LnNob3VsZFNwZWN1bGF0ZUFycmF5KCkgJiYgbGVmdC5zaG91bGRTcGVjdWxhdGVBcnJh
eU9yT3RoZXIoKSkgewogICAgICAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCgKLSAgICAgICAg
ICAgICAgICAgICAgIWlzQXJyYXlPck90aGVyUHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlQcmVkaWN0aW9uKGZv
ck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSk7Ci0gICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKTsKLSAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOwor
ICAgICAgICAgICAgICAgICAgICAhaXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbihmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlTcGVj
dWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpOworICAgICAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNBcnJheSB8IFNwZWNPdGhlcik7Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0FycmF5KTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgZmlsdGVyID0gUHJlZGljdFRvcDsKLSAgICAgICAgICAgICAgICBjaGVja2VyID0gaXNB
bnlQcmVkaWN0aW9uOworICAgICAgICAgICAgICAgIGZpbHRlciA9IFNwZWNUb3A7CisgICAgICAg
ICAgICAgICAgY2hlY2tlciA9IGlzQW55U3BlY3VsYXRpb247CiAgICAgICAgICAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZpbHRlciA9IFByZWRpY3RUb3A7Ci0gICAg
ICAgICAgICBjaGVja2VyID0gaXNBbnlQcmVkaWN0aW9uOworICAgICAgICAgICAgZmlsdGVyID0g
U3BlY1RvcDsKKyAgICAgICAgICAgIGNoZWNrZXIgPSBpc0FueVNwZWN1bGF0aW9uOwogICAgICAg
ICAgICAgY2xvYmJlcldvcmxkKG5vZGUuY29kZU9yaWdpbiwgaW5kZXhJbkJsb2NrKTsKICAgICAg
ICAgfQogICAgICAgICBub2RlLnNldENhbkV4aXQoCkBAIC03NjYsNyArNzY2LDcgQEAgYm9vbCBB
YnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KGZhbHNlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEJvb2xlYW4pOworICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkuc2V0KFNwZWNCb29sZWFuKTsKICAgICAgICAgaWYgKG1fZ3JhcGguaXNKU0NvbnN0
YW50KG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUg
PSBtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG5vZGUuY2hpbGQxKCkuaW5kZXgoKSk7CiAgICAg
ICAgICAgICBpZiAoIXZhbHVlLmlzTnVtYmVyKCkgJiYgIXZhbHVlLmlzU3RyaW5nKCkpIHsKQEAg
LTc5NCwxOSArNzk0LDE5IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBp
bmQKICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KAogICAgICAg
ICAgICAgICAgIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0p
KSB7CiAgICAgICAgICAgICBub2RlLnNldENhbkV4aXQoCi0gICAgICAgICAgICAgICAgIWlzRmlu
YWxPYmplY3RQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQotICAgICAg
ICAgICAgICAgIHx8ICFpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLm1fdHlwZSkpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEZpbmFsT2JqZWN0KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSku
ZmlsdGVyKFByZWRpY3RGaW5hbE9iamVjdCk7CisgICAgICAgICAgICAgICAgIWlzRmluYWxPYmpl
Y3RTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkKKyAgICAgICAgICAg
ICAgICB8fCAhaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDIoKSku
bV90eXBlKSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVj
RmluYWxPYmplY3QpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIo
U3BlY0ZpbmFsT2JqZWN0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmIChOb2RlOjpzaG91bGRTcGVjdWxhdGVBcnJheSgKICAgICAgICAgICAgICAgICBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLCBtX2dyYXBoW25vZGUuY2hpbGQyKCldKSkgewogICAgICAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAgICAgICFpc0FycmF5UHJlZGljdGlvbihmb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgICAgICB8fCAhaXNBcnJheVBy
ZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMigpKS5tX3R5cGUpKTsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOworICAgICAgICAgICAg
ICAgICFpc0FycmF5U3BlY3VsYXRpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpCisg
ICAgICAgICAgICAgICAgfHwgIWlzQXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLm1fdHlwZSkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
U3BlY0FycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNw
ZWNBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBub2RlLnNl
dENhbkV4aXQoZmFsc2UpOwpAQCAtODE1LDE2ICs4MTUsMTYgQEAgYm9vbCBBYnN0cmFjdFN0YXRl
OjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAKICAgICBjYXNlIFN0cmluZ0NoYXJDb2Rl
QXQ6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoU3BlY1N0cmluZyk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNw
ZWNJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgU3RyaW5nQ2hhckF0OgogICAgICAgICBu
b2RlLnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3RTdHJpbmcpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRl
cihQcmVkaWN0SW50MzIpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RT
dHJpbmcpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjU3RyaW5n
KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjU3RyaW5nKTsKICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOiB7CkBAIC04MzMsODQgKzgzMyw4NCBA
QCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgICAgICBt
X2lzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg
IGlmICghaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
cHJlZGljdGlvbigpKSB8fCAhbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkpIHsKKyAgICAgICAgaWYgKCFpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKG1f
Z3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSB8fCAhbV9ncmFwaFtub2RlLmNoaWxk
MigpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3Js
ZChub2RlLmNvZGVPcmlnaW4sIGluZGV4SW5CbG9jayk7CiAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkp
IHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcmd1
bWVudHMpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGlj
dEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNB
cmd1bWVudHMpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3Bl
Y0ludDMyKTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdFN0cmluZykgewotICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7Ci0gICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwotICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0U3RyaW5nKTsKKyAgICAgICAgaWYgKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpID09IFNwZWNTdHJpbmcpIHsKKyAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY1N0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hv
dWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQ4QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFNwZWNJbnQ4QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkg
ewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDE2
QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGlj
dEludDMyKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMy
KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQxNkFy
cmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQz
Mik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMkFycmF5KTsKLSAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzJBcnJheSk7CisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWlu
dDhBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQ
cmVkaWN0VWludDhBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZp
bHRlcihQcmVkaWN0SW50MzIpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQ
cmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
U3BlY1VpbnQ4QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0
ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0lu
dDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCkpIHsKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50OENsYW1w
ZWRBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVk
aWN0SW50MzIpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50
MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY1VpbnQ4
Q2xhbXBlZEFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVy
KFNwZWNJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQz
Mik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtu
b2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0VWludDE2QXJyYXkpOwotICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNVaW50MTZBcnJheSk7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAg
ICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxk
U3BlY3VsYXRlVWludDMyQXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdFVpbnQzMkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDMyQXJyYXkpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGlmIChub2Rl
LnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5k
ZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICAgICAgZm9y
Tm9kZShub2RlSW5kZXgpLnNldChTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0
ZUZsb2F0MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihQcmVkaWN0RmxvYXQzMkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRl
eCkuc2V0KFByZWRpY3REb3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoU3BlY0Zsb2F0MzJBcnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChTcGVjRG91YmxlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgp
KSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Rmxv
YXQ2NEFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RE
b3VibGUpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Zs
b2F0NjRBcnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihT
cGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjRG91Ymxl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwotICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOwotICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRv
cCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC05MjIsNyArOTIyLDcgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgbV9pc1ZhbGlkID0g
ZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoIW1fZ3Jh
cGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFi
bGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlv
bigpKQorICAgICAgICBpZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRl
SW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
ICAgICAgICAgfHwgbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVBcmd1bWVu
dHMoKQogI2VuZGlmCkBAIC05MzQsODggKzkzNCw4OCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSB7Ci0gICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0QXJndW1lbnRzKTsKLSAg
ICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Cisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJndW1lbnRzKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDhBcnJheSk7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ludDhBcnJheSk7CisgICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAg
aWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQotICAg
ICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7
CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY0ludDMy
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQz
KCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQzKCkpLmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUlu
dDE2QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEludDE2QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5m
aWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSku
ZmlsdGVyKFNwZWNJbnQxNkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIo
KSkuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCi0gICAgICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1i
ZXIpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNO
dW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7Ci0gICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzJBcnJheSk7Ci0g
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwor
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ludDMyQXJyYXkp
OworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsK
ICAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQzKCldLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoKSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQ
cmVkaWN0SW50MzIpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmls
dGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CisgICAgICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY051bWJlcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91
bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50OEFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDhBcnJheSk7CisgICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDMoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQotICAgICAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY0ludDMyKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRl
cihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkp
LmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBl
ZEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3RVaW50OENsYW1wZWRBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQy
KCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY1VpbnQ4Q2xhbXBlZEFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDIoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBpZiAobV9ncmFw
aFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpCi0gICAgICAgICAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVy
KFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSku
ZmlsdGVyKFNwZWNOdW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXko
KSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVp
bnQxNkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihT
cGVjVWludDE2QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0
ZXIoU3BlY0ludDMyKTsKICAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQzKCldLnNo
b3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQzKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7Cisg
ICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY051bWJlcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0VWludDMyQXJyYXkpOwotICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAg
ICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNVaW50MzJBcnJheSk7Cisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAg
ICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDMoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdl
cigpKQotICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRp
Y3RJbnQzMik7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIo
U3BlY0ludDMyKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVjTnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZUZsb2F0MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihQcmVkaWN0RmxvYXQzMkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBmb3JOb2RlKG5v
ZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNGbG9hdDMyQXJyYXkpOworICAgICAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFNwZWNOdW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3Bl
Y3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEo
KSkuZmlsdGVyKFByZWRpY3RGbG9hdDY0QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsKLSAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Zsb2F0NjRBcnJheSk7CisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihTcGVjSW50MzIpOworICAgICAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMygpKS5maWx0ZXIoU3BlY051bWJlcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBBU1NFUlQobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRT
cGVjdWxhdGVBcnJheSgpKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIo
UHJlZGljdEFycmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJl
ZGljdEludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Fy
cmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0ludDMyKTsK
ICAgICAgICAgaWYgKG5vZGUub3AoKSA9PSBQdXRCeVZhbCkKICAgICAgICAgICAgIGNsb2JiZXJX
b3JsZChub2RlLmNvZGVPcmlnaW4sIGluZGV4SW5CbG9jayk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTAyMywyMyArMTAyMywyMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQg
aW5kCiAgICAgICAgICAgICAKICAgICBjYXNlIEFycmF5UHVzaDoKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KHRydWUpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVk
aWN0QXJyYXkpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3ROdW1iZXIp
OworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNOdW1iZXIpOwogICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIAogICAgIGNhc2UgQXJyYXlQb3A6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhp
dCh0cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFy
cmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FycmF5KTsK
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAKICAgICBjYXNlIFJlZ0V4cEV4ZWM6CiAgICAgY2FzZSBSZWdFeHBUZXN0Ogog
ICAgICAgICBub2RlLnNldENhbkV4aXQoCi0gICAgICAgICAgICAhaXNDZWxsUHJlZGljdGlvbihm
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkKLSAgICAgICAgICAgIHx8ICFpc0NlbGxQcmVk
aWN0aW9uKGZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSk7Ci0gICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RDZWxsKTsKLSAgICAgICAgZm9yTm9kZShub2Rl
LmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdENlbGwpOworICAgICAgICAgICAgIWlzQ2VsbFNwZWN1
bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKQorICAgICAgICAgICAgfHwgIWlz
Q2VsbFNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSk7CisgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNDZWxsKTsKKyAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMigpKS5maWx0ZXIoU3BlY0NlbGwpOwogICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIApAQCAtMTA3MCwx
MiArMTA3MCwxMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAg
ICAgICAgICAgICBzcGVjdWxhdGVCb29sZWFuVW5hcnkobm9kZSk7CiAgICAgICAgIGVsc2UgaWYg
KGNoaWxkLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7CiAgICAgICAgICAg
ICBub2RlLnNldENhbkV4aXQoCi0gICAgICAgICAgICAgICAgIWlzRmluYWxPYmplY3RPck90aGVy
UHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwotICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEZpbmFsT2JqZWN0IHwgUHJlZGlj
dE90aGVyKTsKKyAgICAgICAgICAgICAgICAhaXNGaW5hbE9iamVjdE9yT3RoZXJTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0ZpbmFsT2JqZWN0IHwgU3BlY090aGVyKTsKICAgICAg
ICAgfSBlbHNlIGlmIChjaGlsZC5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKSkgewogICAg
ICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KAotICAgICAgICAgICAgICAgICFpc0FycmF5T3JPdGhl
clByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAgICAgICAgICAg
IGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSB8IFByZWRpY3RPdGhl
cik7CisgICAgICAgICAgICAgICAgIWlzQXJyYXlPck90aGVyU3BlY3VsYXRpb24oZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEo
KSkuZmlsdGVyKFNwZWNBcnJheSB8IFNwZWNPdGhlcik7CiAgICAgICAgIH0gZWxzZSBpZiAoY2hp
bGQuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQogICAgICAgICAgICAgc3BlY3VsYXRlSW50MzJV
bmFyeShub2RlKTsKICAgICAgICAgZWxzZSBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlTnVtYmVy
KCkpCkBAIC0xMTA5LDE3ICsxMTA5LDE3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1
bnNpZ25lZCBpbmQKICAgICAgICAgTm9kZSYgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
OwogICAgICAgICBpZiAoY2hpbGQuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAgICAgICAg
ICAgICBzcGVjdWxhdGVJbnQzMlVuYXJ5KG5vZGUpOwotICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChTcGVjSW50MzIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOwogICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGZvck5vZGUobm9kZUluZGV4KTsKICAgICAg
ICAgICAgIAotICAgICAgICBQcmVkaWN0ZWRUeXBlIHR5cGUgPSBzb3VyY2UubV90eXBlOwotICAg
ICAgICBpZiAodHlwZSAmIH4oUHJlZGljdE51bWJlciB8IFByZWRpY3RTdHJpbmcgfCBQcmVkaWN0
Qm9vbGVhbikpIHsKLSAgICAgICAgICAgIHR5cGUgJj0gKFByZWRpY3ROdW1iZXIgfCBQcmVkaWN0
U3RyaW5nIHwgUHJlZGljdEJvb2xlYW4pOwotICAgICAgICAgICAgdHlwZSB8PSBQcmVkaWN0U3Ry
aW5nOworICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gc291cmNlLm1fdHlwZTsKKyAgICAg
ICAgaWYgKHR5cGUgJiB+KFNwZWNOdW1iZXIgfCBTcGVjU3RyaW5nIHwgU3BlY0Jvb2xlYW4pKSB7
CisgICAgICAgICAgICB0eXBlICY9IChTcGVjTnVtYmVyIHwgU3BlY1N0cmluZyB8IFNwZWNCb29s
ZWFuKTsKKyAgICAgICAgICAgIHR5cGUgfD0gU3BlY1N0cmluZzsKICAgICAgICAgfQogICAgICAg
ICBkZXN0aW5hdGlvbi5zZXQodHlwZSk7CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7
CkBAIC0xMTI4LDcgKzExMjgsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kCiAgICAgICAgICAgICAKICAgICBjYXNlIFN0ckNhdDoKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KGZhbHNlKTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0U3Ry
aW5nKTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjU3RyaW5nKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIE5ld0FycmF5OgpAQCAtMTE0OSw3ICsx
MTQ5LDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBzb3VyY2UgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOwogICAgICAg
ICBBYnN0cmFjdFZhbHVlJiBkZXN0aW5hdGlvbiA9IGZvck5vZGUobm9kZUluZGV4KTsKICAgICAg
ICAgICAgIAotICAgICAgICBpZiAoaXNPYmplY3RQcmVkaWN0aW9uKHNvdXJjZS5tX3R5cGUpKSB7
CisgICAgICAgIGlmIChpc09iamVjdFNwZWN1bGF0aW9uKHNvdXJjZS5tX3R5cGUpKSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHRoZSBzaW1wbGUgY2FzZS4gV2UgYWxyZWFkeSBrbm93IHRoYXQg
dGhlIHNvdXJjZSBpcyBhbgogICAgICAgICAgICAgLy8gb2JqZWN0LCBzbyB0aGVyZSdzIG5vdGhp
bmcgdG8gZG8uIEkgZG9uJ3QgdGhpbmsgdGhpcyBjYXNlIHdpbGwKICAgICAgICAgICAgIC8vIGJl
IGhpdCwgYnV0IHRoZW4gYWdhaW4sIHlvdSBuZXZlciBrbm93LgpAQCAtMTE2MCwyMCArMTE2MCwy
MCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIAog
ICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7CiAgICAgICAgIAotICAgICAgICBpZiAoaXNP
dGhlclByZWRpY3Rpb24oY2hpbGQucHJlZGljdGlvbigpKSkgewotICAgICAgICAgICAgc291cmNl
LmZpbHRlcihQcmVkaWN0T3RoZXIpOwotICAgICAgICAgICAgZGVzdGluYXRpb24uc2V0KFByZWRp
Y3RPYmplY3RPdGhlcik7CisgICAgICAgIGlmIChpc090aGVyU3BlY3VsYXRpb24oY2hpbGQucHJl
ZGljdGlvbigpKSkgeworICAgICAgICAgICAgc291cmNlLmZpbHRlcihTcGVjT3RoZXIpOworICAg
ICAgICAgICAgZGVzdGluYXRpb24uc2V0KFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGlzT2JqZWN0UHJlZGljdGlv
bihjaGlsZC5wcmVkaWN0aW9uKCkpKSB7Ci0gICAgICAgICAgICBzb3VyY2UuZmlsdGVyKFByZWRp
Y3RPYmplY3RNYXNrKTsKKyAgICAgICAgaWYgKGlzT2JqZWN0U3BlY3VsYXRpb24oY2hpbGQucHJl
ZGljdGlvbigpKSkgeworICAgICAgICAgICAgc291cmNlLmZpbHRlcihTcGVjT2JqZWN0TWFzayk7
CiAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IHNvdXJjZTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgZGVzdGluYXRpb24gPSBzb3VyY2U7Ci0g
ICAgICAgIGRlc3RpbmF0aW9uLm1lcmdlKFByZWRpY3RPYmplY3RPdGhlcik7CisgICAgICAgIGRl
c3RpbmF0aW9uLm1lcmdlKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IApAQCAtMTE4MSwxMCArMTE4MSwxMCBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5z
aWduZWQgaW5kCiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHNvdXJjZSA9IGZvck5vZGUobm9kZS5j
aGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGRlc3RpbmF0aW9uID0gZm9yTm9kZShu
b2RlSW5kZXgpOwogICAgICAgICAKLSAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc0NlbGxQcmVk
aWN0aW9uKHNvdXJjZS5tX3R5cGUpKTsKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc0NlbGxT
cGVjdWxhdGlvbihzb3VyY2UubV90eXBlKSk7CiAgICAgICAgICAgICAKLSAgICAgICAgc291cmNl
LmZpbHRlcihQcmVkaWN0RnVuY3Rpb24pOwotICAgICAgICBkZXN0aW5hdGlvbi5zZXQoUHJlZGlj
dEZpbmFsT2JqZWN0KTsKKyAgICAgICAgc291cmNlLmZpbHRlcihTcGVjRnVuY3Rpb24pOworICAg
ICAgICBkZXN0aW5hdGlvbi5zZXQoU3BlY0ZpbmFsT2JqZWN0KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCkBAIC0xMjEzLDcgKzEyMTMsNyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUo
dW5zaWduZWQgaW5kCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBDaGVja0FyZ3VtZW50c05v
dENyZWF0ZWQ6Ci0gICAgICAgIGlmIChpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYgKGlz
RW1wdHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgICAgICBtX3ZhcmlhYmxlcy5vcGVyYW5kKAog
ICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29k
ZU9yaWdpbikpLm1fdHlwZSkpIHsKICAgICAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7
CkBAIC0xMjMwLDkgKzEyMzAsOSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWdu
ZWQgaW5kCiAgICAgICAgIGlmIChub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQogICAg
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc051bWJlcihub2RlLmNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIG5vZGUuc2V0
Q2FuRXhpdCgKLSAgICAgICAgICAgICFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgICAgICFp
c0VtcHR5U3BlY3VsYXRpb24oCiAgICAgICAgICAgICAgICAgbV92YXJpYWJsZXMub3BlcmFuZCgK
ICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNv
ZGVPcmlnaW4pKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMjUyLDcgKzEyNTIsNyBA
QCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIC8vIFdl
IGtub3cgdGhhdCB0aGlzIGV4ZWN1dGFibGUgZG9lcyBub3QgZXNjYXBlIGl0cyBhcmd1bWVudHMs
IHNvIHdlIGNhbiBvcHRpbWl6ZQogICAgICAgICAvLyB0aGUgYXJndW1lbnRzIGEgYml0LiBOb3Rl
IHRoYXQgdGhpcyBlbmRzIHVwIGJlaW5nIGZ1cnRoZXIgb3B0aW1pemVkIGJ5IHRoZQogICAgICAg
ICAvLyBBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLgotICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLmZpbHRlcihTcGVjSW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFr
ZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAgICAgCkBAIC0xMjYyLDcgKzEyNjIsNyBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIC8vIGEgZ2V0
dGVyLiBXZSBkb24ndCBzcGVjdWxhdGUgYWdhaW5zdCB0aGlzLgogICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS5jb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwogICAgICAgICAvLyBCdXQgd2UgZG8g
c3BlY3VsYXRlIHRoYXQgdGhlIGluZGV4IGlzIGFuIGludGVnZXIuCi0gICAgICAgIGZvck5vZGUo
bm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQzMik7CiAgICAgICAgIC8vIEFuZCB0aGUgcmVzdWx0
IGlzIHVua25vd24uCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTI3NiwxMiArMTI3NiwxMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4
ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIAogICAgIGNhc2UgR2V0Q2FsbGVlOgogICAgICAg
ICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3RGdW5jdGlvbik7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0Z1
bmN0aW9uKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIEdldFNjb3Bl
Q2hhaW46CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdChmYWxzZSk7Ci0gICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoUHJlZGljdENlbGxPdGhlcik7CisgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5zZXQoU3BlY0NlbGxPdGhlcik7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAg
ICAgY2FzZSBHZXRTY29wZWRWYXI6CkBAIC0xMzAxLDc0ICsxMzAxLDc0IEBAIGJvb2wgQWJzdHJh
Y3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgICAgIG1faXNWYWxpZCA9IGZh
bHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGlzQ2VsbFBy
ZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKQotICAgICAgICAg
ICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdENlbGwpOworICAgICAgICBp
ZiAoaXNDZWxsU3BlY3VsYXRpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkp
KQorICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0NlbGwpOwog
ICAgICAgICBjbG9iYmVyV29ybGQobm9kZS5jb2RlT3JpZ2luLCBpbmRleEluQmxvY2spOwogICAg
ICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIAogICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhp
dCh0cnVlKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFy
cmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjQXJyYXkpOworICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBHZXRBcmd1bWVudHNMZW5ndGg6CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsK
LSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEFyZ3VtZW50cyk7
Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0FyZ3VtZW50cyk7CisgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIEdldFN0cmluZ0xlbmd0aDoKLSAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc1N0cmluZ1By
ZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAgICAgICAgZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7Ci0gICAgICAgIGZvck5vZGUo
bm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFp
c1N0cmluZ1NwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNTdHJpbmcpOworICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgICAg
ICAKICAgICBjYXNlIEdldEludDhBcnJheUxlbmd0aDoKLSAgICAgICAgbm9kZS5zZXRDYW5FeGl0
KCFpc0ludDhBcnJheVByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsK
LSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEludDhBcnJheSk7
Ci0gICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KCFpc0ludDhBcnJheVNwZWN1bGF0aW9uKGZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNw
ZWNJbnQ4QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0SW50MTZBcnJheUxlbmd0aDoKLSAgICAgICAg
bm9kZS5zZXRDYW5FeGl0KCFpc0ludDE2QXJyYXlQcmVkaWN0aW9uKGZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQxNkFycmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
SW50MzIpOworICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzSW50MTZBcnJheVNwZWN1bGF0aW9u
KGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQxNkFycmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5k
ZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdldEludDMyQXJy
YXlMZW5ndGg6Ci0gICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNJbnQzMkFycmF5UHJlZGljdGlv
bihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwotICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzJBcnJheSk7Ci0gICAgICAgIGZvck5vZGUobm9k
ZUluZGV4KS5zZXQoUHJlZGljdEludDMyKTsKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc0lu
dDMyQXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzJBcnJheSk7CisgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBHZXRVaW50OEFycmF5TGVuZ3RoOgotICAgICAgICBub2RlLnNldENhbkV4aXQoIWlz
VWludDhBcnJheVByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVpbnQ4QXJyYXkpOwot
ICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIG5v
ZGUuc2V0Q2FuRXhpdCghaXNVaW50OEFycmF5U3BlY3VsYXRpb24oZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y1VpbnQ4QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0VWludDhDbGFtcGVkQXJyYXlMZW5ndGg6Ci0g
ICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24oZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoUHJlZGljdFVpbnQ4Q2xhbXBlZEFycmF5KTsKLSAgICAgICAgZm9yTm9kZShu
b2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICBub2RlLnNldENhbkV4aXQoIWlz
VWludDhDbGFtcGVkQXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDhDbGFt
cGVkQXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0VWludDE2QXJyYXlMZW5ndGg6Ci0gICAgICAgIG5v
ZGUuc2V0Q2FuRXhpdCghaXNVaW50MTZBcnJheVByZWRpY3Rpb24oZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJl
ZGljdFVpbnQxNkFycmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0
SW50MzIpOworICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzVWludDE2QXJyYXlTcGVjdWxhdGlv
bihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDE2QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0VWludDMy
QXJyYXlMZW5ndGg6Ci0gICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNVaW50MzJBcnJheVByZWRp
Y3Rpb24oZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKLSAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVpbnQzMkFycmF5KTsKLSAgICAgICAgZm9yTm9k
ZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICBub2RlLnNldENhbkV4aXQo
IWlzVWludDMyQXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
OworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjVWludDMyQXJyYXkp
OworICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNJbnQzMik7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgR2V0RmxvYXQzMkFycmF5TGVuZ3RoOgotICAgICAgICBub2RlLnNldENh
bkV4aXQoIWlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Rmxv
YXQzMkFycmF5KTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIp
OworICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzRmxvYXQzMkFycmF5U3BlY3VsYXRpb24oZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0Zsb2F0MzJBcnJheSk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4
KS5zZXQoU3BlY0ludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHZXRGbG9hdDY0QXJy
YXlMZW5ndGg6Ci0gICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNGbG9hdDY0QXJyYXlQcmVkaWN0
aW9uKGZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7Ci0gICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RGbG9hdDY0QXJyYXkpOwotICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCgh
aXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
OworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjRmxvYXQ2NEFycmF5
KTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjSW50MzIpOwogICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKQEAgLTEzNzYs
NyArMTM3Niw3IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICBub2RlLnNldENhbkV4aXQoCiAgICAgICAgICAgICAhdmFsdWUubV9zdHJ1Y3R1cmUuaXNT
dWJzZXRPZihub2RlLnN0cnVjdHVyZVNldCgpKQotICAgICAgICAgICAgfHwgIWlzQ2VsbFByZWRp
Y3Rpb24odmFsdWUubV90eXBlKSk7CisgICAgICAgICAgICB8fCAhaXNDZWxsU3BlY3VsYXRpb24o
dmFsdWUubV90eXBlKSk7CiAgICAgICAgIHZhbHVlLmZpbHRlcihub2RlLnN0cnVjdHVyZVNldCgp
KTsKICAgICAgICAgbV9oYXZlU3RydWN0dXJlcyA9IHRydWU7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTM5MSwxMyArMTM5MSwxMyBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQg
aW5kCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0UHJvcGVydHlTdG9yYWdlOgogICAgICAg
ICBub2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFNwZWNDZWxsKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7IC8vIFRo
ZSByZXN1bHQgaXMgbm90IGEgSlMgdmFsdWUuCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0
SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7
IC8vIExpZXMsIGJ1dCB0aGlzIGlzIChhbG1vc3QpIGFsd2F5cyBmb2xsb3dlZCBieSBHZXRCeVZh
bCwgd2hpY2ggZG9lcyBleGl0LiBTbyBubyBwb2ludCBpbiB0cnlpbmcgdG8gYmUgbW9yZSBwcmVj
aXNlLgotICAgICAgICBQcmVkaWN0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gbV9ncmFwaFtub2Rl
LmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYg
UHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlvbikgeworICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBiYXNlUHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwor
ICAgICAgICBpZiAoIShiYXNlUHJlZGljdGlvbiAmIFNwZWNJbnQzMikgJiYgYmFzZVByZWRpY3Rp
b24pIHsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE0MDUsODIgKzE0MDUsODIgQEAgYm9vbCBBYnN0cmFj
dFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdFN0cmluZykgewotICAgICAg
ICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFN0cmluZyk7CisgICAg
ICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSA9PSBTcGVjU3RyaW5n
KSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjU3RyaW5n
KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50OEFycmF5KTsKKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNJbnQ4QXJyYXkpOwogICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQx
NkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFBy
ZWRpY3RJbnQxNkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFNwZWNJbnQxNkFycmF5KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVh
cigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzJBcnJheSk7CisgICAg
ICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihTcGVjSW50MzJBcnJheSk7CiAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNw
ZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoUHJlZGljdFVpbnQ4QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5maWx0ZXIoU3BlY1VpbnQ4QXJyYXkpOwogICAgICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLmNsZWFyKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBp
ZiAobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVVaW50OENsYW1wZWRBcnJh
eSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0
VWludDhDbGFtcGVkQXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5m
aWx0ZXIoU3BlY1VpbnQ4Q2xhbXBlZEFycmF5KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5jbGVhcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkgewot
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdFVpbnQxNkFy
cmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoUHJlZGljdE90aGVyKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNVaW50MTZBcnJh
eSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNPdGhlcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0VWludDMyQXJyYXkpOworICAgICAgICAgICAg
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY1VpbnQzMkFycmF5KTsKICAgICAgICAg
ICAgIGZvck5vZGUobm9kZUluZGV4KS5jbGVhcigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRl
RmxvYXQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmls
dGVyKFByZWRpY3RGbG9hdDMyQXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0Zsb2F0MzJBcnJheSk7CiAgICAgICAgICAgICBmb3JOb2RlKG5vZGVJ
bmRleCkuY2xlYXIoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlm
IChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7
Ci0gICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0RmxvYXQ2
NEFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFNwZWNG
bG9hdDY0QXJyYXkpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLmNsZWFyKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkp
LmZpbHRlcihTcGVjQXJyYXkpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuY2xlYXIoKTsK
ICAgICAgICAgYnJlYWs7IAogICAgIH0KICAgICBjYXNlIEdldEJ5T2Zmc2V0OgogICAgICAgICBu
b2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFNwZWNDZWxsKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgICAgICBu
b2RlLnNldENhbkV4aXQoZmFsc2UpOwotICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZp
bHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFNwZWNDZWxsKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICBjYXNlIENoZWNr
RnVuY3Rpb246CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsgLy8gTGllcyEgV2UgY2Fu
IGRvIGJldHRlci4KLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGlj
dEZ1bmN0aW9uKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3BlY0Z1
bmN0aW9uKTsKICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhYmxlIHRvIHByb3BhZ2F0ZSB0
aGUgZmFjdCB0aGF0IHdlIGtub3cgd2hhdCB0aGUgZnVuY3Rpb24gaXMuCiAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgCiAgICAgY2FzZSBQdXRCeUlkOgogICAgIGNhc2UgUHV0QnlJZERpcmVj
dDoKICAgICAgICAgbm9kZS5zZXRDYW5FeGl0KHRydWUpOwotICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDEoKSkuZmlsdGVyKFNwZWNDZWxsKTsKICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUuY29kZU9y
aWdpbiwgaW5kZXhJbkJsb2NrKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKQEAgLTE0
OTUsMTcgKzE0OTUsMTcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGlu
ZAogICAgICAgICAgICAgCiAgICAgY2FzZSBDaGVja0hhc0luc3RhbmNlOgogICAgICAgICBub2Rl
LnNldENhbkV4aXQodHJ1ZSk7Ci0gICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVy
KFByZWRpY3RDZWxsKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoU3Bl
Y0NlbGwpOwogICAgICAgICAvLyBTYWRseSwgd2UgZG9uJ3QgcHJvcGFnYXRlIHRoZSBmYWN0IHRo
YXQgd2UndmUgZG9uZSBDaGVja0hhc0luc3RhbmNlCiAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgCiAgICAgY2FzZSBJbnN0YW5jZU9mOgogICAgICAgICBub2RlLnNldENhbkV4aXQodHJ1ZSk7
CiAgICAgICAgIC8vIEFnYWluLCBzYWRseSwgd2UgZG9uJ3QgcHJvcGFnYXRlIHRoZSBmYWN0IHRo
YXQgd2UndmUgZG9uZSBJbnN0YW5jZU9mCi0gICAgICAgIGlmICghKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpICYgflByZWRpY3RDZWxsKSAmJiAhKGZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlICYgflByZWRpY3RDZWxsKSkKLSAgICAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDEoKSkuZmlsdGVyKFByZWRpY3RDZWxsKTsKLSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MygpKS5maWx0ZXIoUHJlZGljdENlbGwpOwotICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0
KFByZWRpY3RCb29sZWFuKTsKKyAgICAgICAgaWYgKCEobV9ncmFwaFtub2RlLmNoaWxkMSgpXS5w
cmVkaWN0aW9uKCkgJiB+U3BlY0NlbGwpICYmICEoZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUgJiB+U3BlY0NlbGwpKQorICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0
ZXIoU3BlY0NlbGwpOworICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihTcGVj
Q2VsbCk7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0Jvb2xlYW4pOwogICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgUGhpOgpAQCAtMTYzMSw3ICsxNjMx
LDcgQEAgaW5saW5lIGJvb2wgQWJzdHJhY3RTdGF0ZTo6bWVyZ2VTdGF0ZUF0VAogICAgICAgICAg
ICAgLy8gYmVmb3JlIGFuZCBhZnRlciBzZXR0aW5nIGl0LgogICAgICAgICAgICAgaWYgKG5vZGUu
dmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgdW5uZWNlc3NhcmlseSBsb3NlcyBwcmVjaXNpb24uCi0g
ICAgICAgICAgICAgICAgc291cmNlLnNldChQcmVkaWN0RG91YmxlKTsKKyAgICAgICAgICAgICAg
ICBzb3VyY2Uuc2V0KFNwZWNEb3VibGUpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgc291cmNlID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1BST1BBR0FUSU9OX1ZFUkJPU0UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0U3RhdGUuaAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMywy
MiArMjIzLDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzcGVjdWxhdGVJbnQzMlVuYXJ5KE5vZGUm
IG5vZGUsIGJvb2wgZm9yY2VDYW5FeGl0ID0gZmFsc2UpCiAgICAgewogICAgICAgICBBYnN0cmFj
dFZhbHVlJiBjaGlsZFZhbHVlID0gZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgbm9k
ZS5zZXRDYW5FeGl0KGZvcmNlQ2FuRXhpdCB8fCAhaXNJbnQzMlByZWRpY3Rpb24oY2hpbGRWYWx1
ZS5tX3R5cGUpKTsKLSAgICAgICAgY2hpbGRWYWx1ZS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAg
ICAgICAgbm9kZS5zZXRDYW5FeGl0KGZvcmNlQ2FuRXhpdCB8fCAhaXNJbnQzMlNwZWN1bGF0aW9u
KGNoaWxkVmFsdWUubV90eXBlKSk7CisgICAgICAgIGNoaWxkVmFsdWUuZmlsdGVyKFNwZWNJbnQz
Mik7CiAgICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyVW5hcnkoTm9kZSYgbm9k
ZSkKICAgICB7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIGNoaWxkVmFsdWUgPSBmb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpOwotICAgICAgICBub2RlLnNldENhbkV4aXQoIWlzTnVtYmVyUHJlZGljdGlv
bihjaGlsZFZhbHVlLm1fdHlwZSkpOwotICAgICAgICBjaGlsZFZhbHVlLmZpbHRlcihQcmVkaWN0
TnVtYmVyKTsKKyAgICAgICAgbm9kZS5zZXRDYW5FeGl0KCFpc051bWJlclNwZWN1bGF0aW9uKGNo
aWxkVmFsdWUubV90eXBlKSk7CisgICAgICAgIGNoaWxkVmFsdWUuZmlsdGVyKFNwZWNOdW1iZXIp
OwogICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZUJvb2xlYW5VbmFyeShOb2RlJiBub2Rl
KQogICAgIHsKICAgICAgICAgQWJzdHJhY3RWYWx1ZSYgY2hpbGRWYWx1ZSA9IGZvck5vZGUobm9k
ZS5jaGlsZDEoKSk7Ci0gICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNCb29sZWFuUHJlZGljdGlv
bihjaGlsZFZhbHVlLm1fdHlwZSkpOwotICAgICAgICBjaGlsZFZhbHVlLmZpbHRlcihQcmVkaWN0
Qm9vbGVhbik7CisgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCghaXNCb29sZWFuU3BlY3VsYXRpb24o
Y2hpbGRWYWx1ZS5tX3R5cGUpKTsKKyAgICAgICAgY2hpbGRWYWx1ZS5maWx0ZXIoU3BlY0Jvb2xl
YW4pOwogICAgIH0KICAgICAKICAgICB2b2lkIHNwZWN1bGF0ZUludDMyQmluYXJ5KE5vZGUmIG5v
ZGUsIGJvb2wgZm9yY2VDYW5FeGl0ID0gZmFsc2UpCkBAIC0yNDcsMTAgKzI0NywxMCBAQCBwcml2
YXRlOgogICAgICAgICBBYnN0cmFjdFZhbHVlJiBjaGlsZFZhbHVlMiA9IGZvck5vZGUobm9kZS5j
aGlsZDIoKSk7CiAgICAgICAgIG5vZGUuc2V0Q2FuRXhpdCgKICAgICAgICAgICAgIGZvcmNlQ2Fu
RXhpdAotICAgICAgICAgICAgfHwgIWlzSW50MzJQcmVkaWN0aW9uKGNoaWxkVmFsdWUxLm1fdHlw
ZSkKLSAgICAgICAgICAgIHx8ICFpc0ludDMyUHJlZGljdGlvbihjaGlsZFZhbHVlMi5tX3R5cGUp
KTsKLSAgICAgICAgY2hpbGRWYWx1ZTEuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgIGNo
aWxkVmFsdWUyLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgfHwgIWlzSW50MzJT
cGVjdWxhdGlvbihjaGlsZFZhbHVlMS5tX3R5cGUpCisgICAgICAgICAgICB8fCAhaXNJbnQzMlNw
ZWN1bGF0aW9uKGNoaWxkVmFsdWUyLm1fdHlwZSkpOworICAgICAgICBjaGlsZFZhbHVlMS5maWx0
ZXIoU3BlY0ludDMyKTsKKyAgICAgICAgY2hpbGRWYWx1ZTIuZmlsdGVyKFNwZWNJbnQzMik7CiAg
ICAgfQogICAgIAogICAgIHZvaWQgc3BlY3VsYXRlTnVtYmVyQmluYXJ5KE5vZGUmIG5vZGUpCkBA
IC0yNTgsMTAgKzI1OCwxMCBAQCBwcml2YXRlOgogICAgICAgICBBYnN0cmFjdFZhbHVlJiBjaGls
ZFZhbHVlMSA9IGZvck5vZGUobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUm
IGNoaWxkVmFsdWUyID0gZm9yTm9kZShub2RlLmNoaWxkMigpKTsKICAgICAgICAgbm9kZS5zZXRD
YW5FeGl0KAotICAgICAgICAgICAgIWlzTnVtYmVyUHJlZGljdGlvbihjaGlsZFZhbHVlMS5tX3R5
cGUpCi0gICAgICAgICAgICB8fCAhaXNOdW1iZXJQcmVkaWN0aW9uKGNoaWxkVmFsdWUyLm1fdHlw
ZSkpOwotICAgICAgICBjaGlsZFZhbHVlMS5maWx0ZXIoUHJlZGljdE51bWJlcik7Ci0gICAgICAg
IGNoaWxkVmFsdWUyLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgICAgICFpc051bWJl
clNwZWN1bGF0aW9uKGNoaWxkVmFsdWUxLm1fdHlwZSkKKyAgICAgICAgICAgIHx8ICFpc051bWJl
clNwZWN1bGF0aW9uKGNoaWxkVmFsdWUyLm1fdHlwZSkpOworICAgICAgICBjaGlsZFZhbHVlMS5m
aWx0ZXIoU3BlY051bWJlcik7CisgICAgICAgIGNoaWxkVmFsdWUyLmZpbHRlcihTcGVjTnVtYmVy
KTsKICAgICB9CiAgICAgCiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAxMTk2
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5j
bHVkZSAiSlNDZWxsLmgiCi0jaW5jbHVkZSAiUHJlZGljdGVkVHlwZS5oIgorI2luY2x1ZGUgIlNw
ZWN1bGF0ZWRUeXBlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlU2V0LmgiCiAKIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTIyNSw5ICsyMjUsOSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fc3RydWN0dXJlID0gMDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaWx0ZXIoUHJlZGljdGVk
VHlwZSBvdGhlcikKKyAgICB2b2lkIGZpbHRlcihTcGVjdWxhdGVkVHlwZSBvdGhlcikKICAgICB7
Ci0gICAgICAgIGlmICghKG90aGVyICYgUHJlZGljdENlbGwpKSB7CisgICAgICAgIGlmICghKG90
aGVyICYgU3BlY0NlbGwpKSB7CiAgICAgICAgICAgICBjbGVhcigpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAo
aXNDbGVhck9yVG9wKCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKCEocHJl
ZGljdGlvbkZyb21TdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUpICYgb3RoZXIpKQorICAgICAgICBpZiAo
IShzcGVjdWxhdGlvbkZyb21TdHJ1Y3R1cmUobV9zdHJ1Y3R1cmUpICYgb3RoZXIpKQogICAgICAg
ICAgICAgbV9zdHJ1Y3R1cmUgPSAwOwogICAgIH0KICAgICAKQEAgLTI3MywxMyArMjczLDEzIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGF0KDApOwogICAgIH0KICAgICAKLSAgICBQcmVkaWN0
ZWRUeXBlIHByZWRpY3Rpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0CisgICAgU3BlY3VsYXRlZFR5
cGUgc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
aXNUb3AoKSkKLSAgICAgICAgICAgIHJldHVybiBQcmVkaWN0Q2VsbDsKKyAgICAgICAgICAgIHJl
dHVybiBTcGVjQ2VsbDsKICAgICAgICAgaWYgKGlzQ2xlYXIoKSkKLSAgICAgICAgICAgIHJldHVy
biBQcmVkaWN0Tm9uZTsKLSAgICAgICAgcmV0dXJuIHByZWRpY3Rpb25Gcm9tU3RydWN0dXJlKG1f
c3RydWN0dXJlKTsKKyAgICAgICAgICAgIHJldHVybiBTcGVjTm9uZTsKKyAgICAgICAgcmV0dXJu
IHNwZWN1bGF0aW9uRnJvbVN0cnVjdHVyZShtX3N0cnVjdHVyZSk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlJiBvdGhlcikgY29u
c3QKQEAgLTMwOSwxMyArMzA5LDEzIEBAIHByaXZhdGU6CiAKIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICBBYnN0cmFjdFZhbHVlKCkKLSAgICAgICAgOiBtX3R5cGUoUHJlZGljdE5vbmUpCisg
ICAgICAgIDogbV90eXBlKFNwZWNOb25lKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgdm9pZCBj
bGVhcigpCiAgICAgewotICAgICAgICBtX3R5cGUgPSBQcmVkaWN0Tm9uZTsKKyAgICAgICAgbV90
eXBlID0gU3BlY05vbmU7CiAgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1f
dmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKQEAgLTMyMyw3
ICszMjMsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAgYm9vbCBpc0NsZWFy
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV90eXBlID09IFByZWRpY3RO
b25lICYmIG1fc3RydWN0dXJlLmlzQ2xlYXIoKTsKKyAgICAgICAgYm9vbCByZXN1bHQgPSBtX3R5
cGUgPT0gU3BlY05vbmUgJiYgbV9zdHJ1Y3R1cmUuaXNDbGVhcigpOwogICAgICAgICBpZiAocmVz
dWx0KQogICAgICAgICAgICAgQVNTRVJUKCFtX3ZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTMzMSw3ICszMzEsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAgCiAgICAg
dm9pZCBtYWtlVG9wKCkKICAgICB7Ci0gICAgICAgIG1fdHlwZSA9IFByZWRpY3RUb3A7CisgICAg
ICAgIG1fdHlwZSA9IFNwZWNUb3A7CiAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKICAg
ICAgICAgbV92YWx1ZSA9IEpTVmFsdWUoKTsKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwpA
QCAtMzM5LDcgKzMzOSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICB2b2lk
IGNsb2JiZXJTdHJ1Y3R1cmVzKCkKICAgICB7Ci0gICAgICAgIGlmIChtX3R5cGUgJiBQcmVkaWN0
Q2VsbCkKKyAgICAgICAgaWYgKG1fdHlwZSAmIFNwZWNDZWxsKQogICAgICAgICAgICAgbV9zdHJ1
Y3R1cmUubWFrZVRvcCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlQobV9zdHJ1
Y3R1cmUuaXNDbGVhcigpKTsKQEAgLTM1Myw3ICszNTMsNyBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1
ZSB7CiAgICAgCiAgICAgYm9vbCBpc1RvcCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV90eXBlID09IFByZWRpY3RUb3AgJiYgbV9zdHJ1Y3R1cmUuaXNUb3AoKTsKKyAgICAgICAgcmV0
dXJuIG1fdHlwZSA9PSBTcGVjVG9wICYmIG1fc3RydWN0dXJlLmlzVG9wKCk7CiAgICAgfQogICAg
IAogICAgIGJvb2wgdmFsdWVJc1RvcCgpIGNvbnN0CkBAIC0zODYsNyArMzg2LDcgQEAgc3RydWN0
IEFic3RyYWN0VmFsdWUgewogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1fc3RydWN0dXJl
LmNsZWFyKCk7CiAgICAgICAgIAotICAgICAgICBtX3R5cGUgPSBwcmVkaWN0aW9uRnJvbVZhbHVl
KHZhbHVlKTsKKyAgICAgICAgbV90eXBlID0gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpOwog
ICAgICAgICBtX3ZhbHVlID0gdmFsdWU7CiAgICAgICAgIAogICAgICAgICBjaGVja0NvbnNpc3Rl
bmN5KCk7CkBAIC0zOTcsMTUgKzM5NywxNSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAg
ICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CiAgICAgICAgIG1fc3RydWN0dXJlLmFkZChzdHJ1Y3R1
cmUpOwogICAgICAgICAKLSAgICAgICAgbV90eXBlID0gcHJlZGljdGlvbkZyb21TdHJ1Y3R1cmUo
c3RydWN0dXJlKTsKKyAgICAgICAgbV90eXBlID0gc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlKHN0
cnVjdHVyZSk7CiAgICAgICAgIG1fdmFsdWUgPSBKU1ZhbHVlKCk7CiAgICAgICAgIAogICAgICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgc2V0KFByZWRpY3Rl
ZFR5cGUgdHlwZSkKKyAgICB2b2lkIHNldChTcGVjdWxhdGVkVHlwZSB0eXBlKQogICAgIHsKLSAg
ICAgICAgaWYgKHR5cGUgJiBQcmVkaWN0Q2VsbCkKKyAgICAgICAgaWYgKHR5cGUgJiBTcGVjQ2Vs
bCkKICAgICAgICAgICAgIG1fc3RydWN0dXJlLm1ha2VUb3AoKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKQEAgLTQzNSw3ICs0MzUsNyBAQCBzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZSB7CiAgICAgICAgICAgICAqdGhpcyA9IG90aGVyOwogICAgICAgICAgICAg
cmVzdWx0ID0gIW90aGVyLmlzQ2xlYXIoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IHJlc3VsdCB8PSBtZXJnZVByZWRpY3Rpb24obV90eXBlLCBvdGhlci5tX3R5cGUpOworICAgICAg
ICAgICAgcmVzdWx0IHw9IG1lcmdlU3BlY3VsYXRpb24obV90eXBlLCBvdGhlci5tX3R5cGUpOwog
ICAgICAgICAgICAgcmVzdWx0IHw9IG1fc3RydWN0dXJlLmFkZEFsbChvdGhlci5tX3N0cnVjdHVy
ZSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZSAhPSBvdGhlci5tX3ZhbHVlKSB7CiAgICAgICAg
ICAgICAgICAgcmVzdWx0IHw9ICEhbV92YWx1ZTsKQEAgLTQ0NywxMSArNDQ3LDExIEBAIHN0cnVj
dCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0g
ICAgdm9pZCBtZXJnZShQcmVkaWN0ZWRUeXBlIHR5cGUpCisgICAgdm9pZCBtZXJnZShTcGVjdWxh
dGVkVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgbWVyZ2VQcmVkaWN0aW9uKG1fdHlwZSwgdHlw
ZSk7CisgICAgICAgIG1lcmdlU3BlY3VsYXRpb24obV90eXBlLCB0eXBlKTsKICAgICAgICAgCi0g
ICAgICAgIGlmICh0eXBlICYgUHJlZGljdENlbGwpCisgICAgICAgIGlmICh0eXBlICYgU3BlY0Nl
bGwpCiAgICAgICAgICAgICBtX3N0cnVjdHVyZS5tYWtlVG9wKCk7CiAgICAgICAgIG1fdmFsdWUg
PSBKU1ZhbHVlKCk7CiAKQEAgLTQ2MCwxMyArNDYwLDEzIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVl
IHsKICAgICAKICAgICB2b2lkIGZpbHRlcihjb25zdCBTdHJ1Y3R1cmVTZXQmIG90aGVyKQogICAg
IHsKLSAgICAgICAgbV90eXBlICY9IG90aGVyLnByZWRpY3Rpb25Gcm9tU3RydWN0dXJlcygpOwor
ICAgICAgICBtX3R5cGUgJj0gb3RoZXIuc3BlY3VsYXRpb25Gcm9tU3RydWN0dXJlcygpOwogICAg
ICAgICBtX3N0cnVjdHVyZS5maWx0ZXIob3RoZXIpOwogICAgICAgICAKICAgICAgICAgLy8gSXQn
cyBwb3NzaWJsZSB0aGF0IHByaW9yIHRvIHRoZSBhYm92ZSB0d28gc3RhdGVtZW50cyB3ZSBoYWQg
KEZvbywgVE9QKSwgd2hlcmUKLSAgICAgICAgLy8gRm9vIGlzIGEgUHJlZGljdGVkVHlwZSB0aGF0
IGlzIGRpc2pvaW50IHdpdGggdGhlIHBhc3NlZCBTdHJ1Y3R1cmVTZXQuIEluIHRoYXQKKyAgICAg
ICAgLy8gRm9vIGlzIGEgU3BlY3VsYXRlZFR5cGUgdGhhdCBpcyBkaXNqb2ludCB3aXRoIHRoZSBw
YXNzZWQgU3RydWN0dXJlU2V0LiBJbiB0aGF0CiAgICAgICAgIC8vIGNhc2UsIHdlIHdpbGwgbm93
IGhhdmUgKE5vbmUsIFtzb21lU3RydWN0dXJlXSkuIEluIGdlbmVyYWwsIHdlIG5lZWQgdG8gbWFr
ZQotICAgICAgICAvLyBzdXJlIHRoYXQgbmV3IGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0aGUg
UHJlZGljdGVkVHlwZSBuZWVkcyB0byBiZSBmZWQgYmFjaworICAgICAgICAvLyBzdXJlIHRoYXQg
bmV3IGluZm9ybWF0aW9uIGdsZWFuZWQgZnJvbSB0aGUgU3BlY3VsYXRlZFR5cGUgbmVlZHMgdG8g
YmUgZmVkIGJhY2sKICAgICAgICAgLy8gaW50byB0aGUgaW5mb3JtYXRpb24gZ2xlYW5lZCBmcm9t
IHRoZSBTdHJ1Y3R1cmVTZXQuCiAgICAgICAgIG1fc3RydWN0dXJlLmZpbHRlcihtX3R5cGUpOwog
ICAgICAgICAKQEAgLTQ3Niw5ICs0NzYsOSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAgICAg
ICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBmaWx0ZXIoUHJl
ZGljdGVkVHlwZSB0eXBlKQorICAgIHZvaWQgZmlsdGVyKFNwZWN1bGF0ZWRUeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICBpZiAodHlwZSA9PSBQcmVkaWN0VG9wKQorICAgICAgICBpZiAodHlwZSA9
PSBTcGVjVG9wKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3R5cGUgJj0gdHlwZTsK
ICAgICAgICAgCkBAIC00OTksMTEgKzQ5OSwxMSBAQCBzdHJ1Y3QgQWJzdHJhY3RWYWx1ZSB7CiAg
ICAgICAgIGlmIChpc1RvcCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAot
ICAgICAgICBpZiAobWVyZ2VQcmVkaWN0aW9ucyhtX3R5cGUsIHByZWRpY3Rpb25Gcm9tVmFsdWUo
dmFsdWUpKSAhPSBtX3R5cGUpCisgICAgICAgIGlmIChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUs
IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSkgIT0gbV90eXBlKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAKICAgICAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewotICAg
ICAgICAgICAgQVNTRVJUKG1fdHlwZSAmIFByZWRpY3RFbXB0eSk7CisgICAgICAgICAgICBBU1NF
UlQobV90eXBlICYgU3BlY0VtcHR5KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtNTExLDcgKzUxMSw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAKICAgICAgICAgaWYgKCEhdmFsdWUg
JiYgdmFsdWUuaXNDZWxsKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBQcmVkaWN0
Q2VsbCk7CisgICAgICAgICAgICBBU1NFUlQobV90eXBlICYgU3BlY0NlbGwpOwogICAgICAgICAg
ICAgcmV0dXJuIG1fc3RydWN0dXJlLmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KSk7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01MjYsMTEgKzUyNiwxMSBAQCBzdHJ1Y3QgQWJz
dHJhY3RWYWx1ZSB7CiAgICAgICAgIGlmICghIW1fdmFsdWUpCiAgICAgICAgICAgICByZXR1cm4g
bV92YWx1ZSA9PSB2YWx1ZTsKICAgICAgICAgCi0gICAgICAgIGlmIChtZXJnZVByZWRpY3Rpb25z
KG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZSh2YWx1ZSkpICE9IG1fdHlwZSkKKyAgICAgICAg
aWYgKG1lcmdlU3BlY3VsYXRpb25zKG1fdHlwZSwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUp
KSAhPSBtX3R5cGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV90eXBlICYgUHJl
ZGljdEVtcHR5KTsKKyAgICAgICAgICAgIEFTU0VSVChtX3R5cGUgJiBTcGVjRW1wdHkpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC01MzgsNyArNTM4
LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIAogICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZS5pc0NlbGwoKSkgewotICAgICAg
ICAgICAgQVNTRVJUKG1fdHlwZSAmIFByZWRpY3RDZWxsKTsKKyAgICAgICAgICAgIEFTU0VSVCht
X3R5cGUgJiBTcGVjQ2VsbCk7CiAgICAgICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUuY29udGFp
bnModmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgpKTsKICAgICAgICAgfQogICAgICAgICAKQEAg
LTU0NywxNCArNTQ3LDE0IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAKICAgICB2b2lk
IGNoZWNrQ29uc2lzdGVuY3koKSBjb25zdAogICAgIHsKLSAgICAgICAgaWYgKCEobV90eXBlICYg
UHJlZGljdENlbGwpKQorICAgICAgICBpZiAoIShtX3R5cGUgJiBTcGVjQ2VsbCkpCiAgICAgICAg
ICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUuaXNDbGVhcigpKTsKICAgICAgICAgCiAgICAgICAgIGlm
IChpc0NsZWFyKCkpCiAgICAgICAgICAgICBBU1NFUlQoIW1fdmFsdWUpOwogICAgICAgICAKICAg
ICAgICAgaWYgKCEhbV92YWx1ZSkKLSAgICAgICAgICAgIEFTU0VSVChtZXJnZVByZWRpY3Rpb25z
KG1fdHlwZSwgcHJlZGljdGlvbkZyb21WYWx1ZShtX3ZhbHVlKSkgPT0gbV90eXBlKTsKKyAgICAg
ICAgICAgIEFTU0VSVChtZXJnZVNwZWN1bGF0aW9ucyhtX3R5cGUsIHNwZWN1bGF0aW9uRnJvbVZh
bHVlKG1fdmFsdWUpKSA9PSBtX3R5cGUpOwogICAgICAgICAKICAgICAgICAgLy8gTm90ZSB0aGF0
IGl0J3MgcG9zc2libGUgZm9yIGEgcHJlZGljdGlvbiBsaWtlIChGaW5hbCwgW10pLiBUaGlzIHJl
YWxseSBtZWFucyB0aGF0CiAgICAgICAgIC8vIHRoZSB2YWx1ZSBpcyBib3R0b20gYW5kIHRoYXQg
YW55IGNvZGUgdGhhdCB1c2VzIHRoZSB2YWx1ZSBpcyB1bnJlYWNoYWJsZS4gQnV0CkBAIC01NjQs
NyArNTY0LDcgQEAgc3RydWN0IEFic3RyYWN0VmFsdWUgewogICAgIAogICAgIHZvaWQgZHVtcChG
SUxFKiBvdXQpIGNvbnN0CiAgICAgewotICAgICAgICBmcHJpbnRmKG91dCwgIiglcywgIiwgcHJl
ZGljdGlvblRvU3RyaW5nKG1fdHlwZSkpOworICAgICAgICBmcHJpbnRmKG91dCwgIiglcywgIiwg
c3BlY3VsYXRpb25Ub1N0cmluZyhtX3R5cGUpKTsKICAgICAgICAgbV9zdHJ1Y3R1cmUuZHVtcChv
dXQpOwogICAgICAgICBpZiAoISFtX3ZhbHVlKQogICAgICAgICAgICAgZnByaW50ZihvdXQsICIs
ICVzIiwgbV92YWx1ZS5kZXNjcmlwdGlvbigpKTsKQEAgLTU3Miw3ICs1NzIsNyBAQCBzdHJ1Y3Qg
QWJzdHJhY3RWYWx1ZSB7CiAgICAgfQogCiAgICAgU3RydWN0dXJlQWJzdHJhY3RWYWx1ZSBtX3N0
cnVjdHVyZTsKLSAgICBQcmVkaWN0ZWRUeXBlIG1fdHlwZTsKKyAgICBTcGVjdWxhdGVkVHlwZSBt
X3R5cGU7CiAgICAgSlNWYWx1ZSBtX3ZhbHVlOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmgJKHJldmlzaW9uIDExOTYwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxNCArMjgsMTQgQEAKIAogI2luY2x1ZGUgIkRGR0RvdWJsZUZvcm1h
dFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgiCi0jaW5jbHVkZSAi
UHJlZGljdGVkVHlwZS5oIgorI2luY2x1ZGUgIlNwZWN1bGF0ZWRUeXBlLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAogY2xhc3MgQXJndW1lbnRQb3NpdGlvbiB7CiBwdWJs
aWM6CiAgICAgQXJndW1lbnRQb3NpdGlvbigpCi0gICAgICAgIDogbV9wcmVkaWN0aW9uKFByZWRp
Y3ROb25lKQorICAgICAgICA6IG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICAgICAgLCBtX2Rv
dWJsZUZvcm1hdFN0YXRlKEVtcHR5RG91YmxlRm9ybWF0U3RhdGUpCiAgICAgewogICAgIH0KQEAg
LTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFs
c2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlcy5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24obV9wcmVkaWN0
aW9uLCBtX3ZhcmlhYmxlc1tpXS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlU3BlY3VsYXRpb24obV9wcmVkaWN0aW9uLCBtX3ZhcmlhYmxl
c1tpXS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlRG91YmxlRm9ybWF0U3RhdGUobV9kb3VibGVGb3JtYXRTdGF0ZSwgbV92YXJpYWJsZXNb
aV0tPmRvdWJsZUZvcm1hdFN0YXRlKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmICghY2hhbmdl
ZCkKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY2hhbmdlZDsKICAg
ICB9CiAgICAgCi0gICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9wcmVkaWN0aW9uOyB9CisgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlZGljdGlvbjsgfQogICAgIERvdWJsZUZvcm1hdFN0YXRlIGRvdWJsZUZvcm1h
dFN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVGb3JtYXRTdGF0ZTsgfQogICAgIGJvb2wg
c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkgY29uc3QKICAgICB7CkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIFByZWRpY3RlZFR5cGUgbV9wcmVkaWN0
aW9uOworICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbjsKICAgICBEb3VibGVGb3JtYXRT
dGF0ZSBtX2RvdWJsZUZvcm1hdFN0YXRlOwogICAgIAogICAgIFZlY3RvcjxWYXJpYWJsZUFjY2Vz
c0RhdGEqLCAyPiBtX3ZhcmlhYmxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg0LDcgKzI4NCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAo
IWlzQWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRp
Y3Rpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FjdGlvbmFibGVBcnJheVNwZWN1
bGF0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgfHwgIW1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50
ZWdlcigpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZlQmFkQXJndW1lbnRzVXNl
cyhub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDc3LDcgKzQ3Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFtX2dyYXBoW25vZGUuY2hp
bGQyKCldLnByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0FjdGlvbmFibGVB
cnJheVByZWRpY3Rpb24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpCisgICAg
ICAgICAgICAgICAgICAgIGlmICghaXNBY3Rpb25hYmxlQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHx8
ICFtX2dyYXBoW25vZGUuY2hpbGQyKCldLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsOSBAQCBwcml2YXRlOgogICAgIC8v
IEhhbmRsZSBzZXR0aW5nIHRoZSByZXN1bHQgb2YgYW4gaW50cmluc2ljLgogICAgIHZvaWQgc2V0
SW50cmluc2ljUmVzdWx0KGJvb2wgdXNlc1Jlc3VsdCwgaW50IHJlc3VsdE9wZXJhbmQsIE5vZGVJ
bmRleCk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJldHVybiB0cnVlIGlm
IGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNhbGwuCi0gICAgYm9v
bCBoYW5kbGVJbnRyaW5zaWMoYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50
cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uKTsKKyAgICBib29sIGhhbmRsZUludHJpbnNpYyhi
b29sIHVzZXNSZXN1bHQsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMsIGludCByZWdpc3Rl
ck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uKTsKICAgICB2b2lkIGhhbmRsZUdldEJ5SWQoCi0gICAgICAgIGludCBkZXN0aW5h
dGlvbk9wZXJhbmQsIFByZWRpY3RlZFR5cGUsIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyLAorICAgICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVk
VHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsCiAgICAgICAg
IGNvbnN0IEdldEJ5SWRTdGF0dXMmKTsKICAgICAvLyBQcmVwYXJlIHRvIHBhcnNlIGEgYmxvY2su
CiAgICAgdm9pZCBwcmVwYXJlVG9QYXJzZUJsb2NrKCk7CkBAIC0xMTIsNyArMTEyLDcgQEAgcHJp
dmF0ZToKICAgICB0ZW1wbGF0ZTxQaGlTdGFja1R5cGUgc3RhY2tUeXBlPgogICAgIHZvaWQgcHJv
Y2Vzc1BoaVN0YWNrKCk7CiAgICAgCi0gICAgdm9pZCBmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rp
b25zKCk7CisgICAgdm9pZCBmaXhWYXJpYWJsZUFjY2Vzc1NwZWN1bGF0aW9ucygpOwogICAgIC8v
IEFkZCBzcGlsbCBsb2NhdGlvbnMgdG8gbm9kZXMuCiAgICAgdm9pZCBhbGxvY2F0ZVZpcnR1YWxS
ZWdpc3RlcnMoKTsKICAgICAKQEAgLTE2MiwxNyArMTYyLDE3IEBAIHByaXZhdGU6CiAgICAgICAg
IHNldERpcmVjdChtX2lubGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQob3BlcmFuZCksIHZhbHVl
LCBzZXRNb2RlKTsKICAgICB9CiAgICAgCi0gICAgTm9kZUluZGV4IGluamVjdExhenlPcGVyYW5k
UHJlZGljdGlvbihOb2RlSW5kZXggbm9kZUluZGV4KQorICAgIE5vZGVJbmRleCBpbmplY3RMYXp5
T3BlcmFuZFNwZWN1bGF0aW9uKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBO
b2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOwogICAgICAgICBBU1NFUlQobm9kZS5vcCgp
ID09IEdldExvY2FsKTsKICAgICAgICAgQVNTRVJUKG5vZGUuY29kZU9yaWdpbi5ieXRlY29kZUlu
ZGV4ID09IG1fY3VycmVudEluZGV4KTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
ID0gCisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSAKICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fbGF6eU9wZXJhbmRzLnByZWRpY3Rpb24oCiAgICAgICAgICAgICAg
ICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkobV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwo
KSkpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgZGF0YUxvZygiTGF6
eSBvcGVyYW5kIFtAJXUsIGJjIyV1LCByJWRdIHByZWRpY3Rpb246ICVzXG4iLAotICAgICAgICAg
ICAgICAgIG5vZGVJbmRleCwgbV9jdXJyZW50SW5kZXgsIG5vZGUubG9jYWwoKSwgcHJlZGljdGlv
blRvU3RyaW5nKHByZWRpY3Rpb24pKTsKKyAgICAgICAgICAgICAgICBub2RlSW5kZXgsIG1fY3Vy
cmVudEluZGV4LCBub2RlLmxvY2FsKCksIHNwZWN1bGF0aW9uVG9TdHJpbmcocHJlZGljdGlvbikp
OwogI2VuZGlmCiAgICAgICAgIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3QocHJl
ZGljdGlvbik7CiAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CkBAIC0xOTUsNyArMTk1LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAoZmx1c2hDaGlsZC5vcCgpID09IFBoaSkgewog
ICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0
YSA9IGZsdXNoQ2hpbGQudmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAgICAgICAg
IHZhcmlhYmxlQWNjZXNzRGF0YS0+bWVyZ2VJc0NhcHR1cmVkKGlzQ2FwdHVyZWQpOwotICAgICAg
ICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRk
VG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIG5vZGVJbmRleCkp
OworICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFNwZWN1
bGF0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBu
b2RlSW5kZXgpKTsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0VGFpbC5sb2NhbChvcGVyYW5kKSA9IG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgICAgICAgICB9CkBAIC0yMTYsNyArMjE2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBHZXRMb2NhbCkK
ICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gbm9kZVB0ci0+Y2hpbGQxKCkuaW5kZXgo
KTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5qZWN0TGF6eU9w
ZXJhbmRQcmVkaWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhub2RlUHRyLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkpOworICAgICAgICAgICAgICAgIHJldHVybiBp
bmplY3RMYXp5T3BlcmFuZFNwZWN1bGF0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyhu
b2RlUHRyLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSksIG5vZGVJbmRleCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobm9kZVB0ci0+b3AoKSA9PSBHZXRMb2Nh
bCkKQEAgLTIzMyw3ICsyMzMsNyBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgTm9kZUlu
ZGV4IHBoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRhKSk7CiAg
ICAgICAgIG1fbG9jYWxQaGlTdGFjay5hcHBlbmQoUGhpU3RhY2tFbnRyeShtX2N1cnJlbnRCbG9j
aywgcGhpLCBvcGVyYW5kKSk7Ci0gICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5k
UHJlZGljdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NEYXRh
KSwgcGhpKSk7CisgICAgICAgIG5vZGVJbmRleCA9IGluamVjdExhenlPcGVyYW5kU3BlY3VsYXRp
b24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHBoaSkp
OwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmxvY2FsKG9wZXJhbmQp
ID0gbm9kZUluZGV4OwogICAgICAgICAKICAgICAgICAgbV9jdXJyZW50QmxvY2stPnZhcmlhYmxl
c0F0SGVhZC5zZXRMb2NhbEZpcnN0VGltZShvcGVyYW5kLCBub2RlSW5kZXgpOwpAQCAtMjc3LDcg
KzI3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgaWYgKGZsdXNoQ2hpbGQub3AoKSA9
PSBQaGkpIHsKICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZUFjY2Vzc0RhdGEgPSBmbHVzaENoaWxkLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAg
ICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlSXNDYXB0dXJlZChpc0NhcHR1cmVk
KTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9wZXJhbmRQcmVk
aWN0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBu
b2RlSW5kZXgpKTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5qZWN0TGF6eU9w
ZXJhbmRTcGVjdWxhdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nl
c3NEYXRhKSwgbm9kZUluZGV4KSk7CiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudEJsb2Nr
LT52YXJpYWJsZXNBdFRhaWwuYXJndW1lbnQoYXJndW1lbnQpID0gbm9kZUluZGV4OwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAgICAgICAgIH0KQEAgLTI5
Myw3ICsyOTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIC8vIFdlJ3JlIGdldHRpbmcg
YW4gYXJndW1lbnQgaW4gdGhlIGZpcnN0IGJhc2ljIGJsb2NrOyBsaW5rCiAgICAgICAgICAgICAg
ICAgLy8gdGhlIEdldExvY2FsIHRvIHRoZSBTZXRBcmd1bWVudC4KICAgICAgICAgICAgICAgICBB
U1NFUlQobm9kZVB0ci0+bG9jYWwoKSA9PSBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG9w
ZXJhbmQpKTsKLSAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFBy
ZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpKSwgbm9kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgbm9kZUluZGV4ID0gaW5q
ZWN0TGF6eU9wZXJhbmRTcGVjdWxhdGlvbihhZGRUb0dyYXBoKEdldExvY2FsLCBPcEluZm8obm9k
ZVB0ci0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpLCBub2RlSW5kZXgpKTsKICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFyZ3VtZW50KGFyZ3VtZW50KSA9IG5v
ZGVJbmRleDsKICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUluZGV4OwogICAgICAgICAgICAg
fQpAQCAtMzAxLDcgKzMwMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBpZiAoaXNDYXB0dXJl
ZCkgewogICAgICAgICAgICAgICAgIGlmIChub2RlUHRyLT5vcCgpID09IEdldExvY2FsKQogICAg
ICAgICAgICAgICAgICAgICBub2RlSW5kZXggPSBub2RlUHRyLT5jaGlsZDEoKS5pbmRleCgpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9H
cmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNjZXNzRGF0YSgpKSwgbm9k
ZUluZGV4KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluamVjdExhenlPcGVyYW5kU3BlY3Vs
YXRpb24oYWRkVG9HcmFwaChHZXRMb2NhbCwgT3BJbmZvKG5vZGVQdHItPnZhcmlhYmxlQWNjZXNz
RGF0YSgpKSwgbm9kZUluZGV4KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIGlmIChub2RlUHRyLT5vcCgpID09IEdldExvY2FsKQpAQCAtMzE1LDcgKzMxNSw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgTm9kZUluZGV4IHBoaSA9IGFkZFRvR3JhcGgoUGhpLCBPcElu
Zm8odmFyaWFibGVBY2Nlc3NEYXRhKSk7CiAgICAgICAgIG1fYXJndW1lbnRQaGlTdGFjay5hcHBl
bmQoUGhpU3RhY2tFbnRyeShtX2N1cnJlbnRCbG9jaywgcGhpLCBhcmd1bWVudCkpOwotICAgICAg
ICBub2RlSW5kZXggPSBpbmplY3RMYXp5T3BlcmFuZFByZWRpY3Rpb24oYWRkVG9HcmFwaChHZXRM
b2NhbCwgT3BJbmZvKHZhcmlhYmxlQWNjZXNzRGF0YSksIHBoaSkpOworICAgICAgICBub2RlSW5k
ZXggPSBpbmplY3RMYXp5T3BlcmFuZFNwZWN1bGF0aW9uKGFkZFRvR3JhcGgoR2V0TG9jYWwsIE9w
SW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCBwaGkpKTsKICAgICAgICAgbV9jdXJyZW50QmxvY2st
PnZhcmlhYmxlc0F0VGFpbC5hcmd1bWVudChhcmd1bWVudCkgPSBub2RlSW5kZXg7CiAgICAgICAg
IAogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRIZWFkLnNldEFyZ3VtZW50Rmly
c3RUaW1lKGFyZ3VtZW50LCBub2RlSW5kZXgpOwpAQCAtNzI4LDEwICs3MjgsMTAgQEAgcHJpdmF0
ZToKICAgICB7CiAgICAgICAgIEluc3RydWN0aW9uKiBwdXRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJ
bnN0cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7CiAKLSAgICAgICAgUHJlZGljdGVk
VHlwZSBwcmVkaWN0aW9uID0gUHJlZGljdE5vbmU7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBTcGVjTm9uZTsKICAgICAgICAgaWYgKGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChwdXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2NhbGxfcHV0X3Jlc3VsdCkgewogICAg
ICAgICAgICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXggPSBtX2N1cnJlbnRJbmRleCArIE9QQ09E
RV9MRU5HVEgob3BfY2FsbCk7Ci0gICAgICAgICAgICBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlv
bigpOworICAgICAgICAgICAgcHJlZGljdGlvbiA9IGdldFNwZWN1bGF0aW9uKCk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChjdXJyZW50SW5zdHJ1Y3Rp
b25bMV0udS5vcGVyYW5kKSk7CkBAIC03NTAsMjMgKzc1MCwyMyBAQCBwcml2YXRlOgogICAgICAg
ICByZXR1cm4gY2FsbDsKICAgICB9CiAgICAgCi0gICAgUHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0
aW9uV2l0aG91dE9TUkV4aXQoTm9kZUluZGV4IG5vZGVJbmRleCwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKKyAgICBTcGVjdWxhdGVkVHlwZSBnZXRTcGVjdWxhdGlvbldpdGhvdXRPU1JFeGl0KE5v
ZGVJbmRleCBub2RlSW5kZXgsIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgewogICAgICAg
ICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQ
cm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOworICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJ
bmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBkYXRhTG9nKCJE
eW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29k
ZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOworICAgICAgICBkYXRhTG9n
KCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRl
Y29kZUluZGV4LCBzcGVjdWxhdGlvblRvU3RyaW5nKHByZWRpY3Rpb24pKTsKICNlbmRpZgogICAg
ICAgICAKICAgICAgICAgcmV0dXJuIHByZWRpY3Rpb247CiAgICAgfQogCi0gICAgUHJlZGljdGVk
VHlwZSBnZXRQcmVkaWN0aW9uKE5vZGVJbmRleCBub2RlSW5kZXgsIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb24oTm9kZUluZGV4IG5vZGVJ
bmRleCwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKICAgICB7Ci0gICAgICAgIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdChub2RlSW5kZXgsIGJ5
dGVjb2RlSW5kZXgpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0U3Bl
Y3VsYXRpb25XaXRob3V0T1NSRXhpdChub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgpOwogICAgICAg
ICAKLSAgICAgICAgaWYgKHByZWRpY3Rpb24gPT0gUHJlZGljdE5vbmUpIHsKKyAgICAgICAgaWYg
KHByZWRpY3Rpb24gPT0gU3BlY05vbmUpIHsKICAgICAgICAgICAgIC8vIFdlIGhhdmUgbm8gaW5m
b3JtYXRpb24gYWJvdXQgd2hhdCB2YWx1ZXMgdGhpcyBub2RlIGdlbmVyYXRlcy4gR2l2ZSB1cAog
ICAgICAgICAgICAgLy8gb24gZXhlY3V0aW5nIHRoaXMgY29kZSwgc2luY2Ugd2UncmUgbGlrZWx5
IHRvIGRvIG1vcmUgZGFtYWdlIHRoYW4gZ29vZC4KICAgICAgICAgICAgIGFkZFRvR3JhcGgoRm9y
Y2VPU1JFeGl0KTsKQEAgLTc3NSwxNCArNzc1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVy
biBwcmVkaWN0aW9uOwogICAgIH0KICAgICAKLSAgICBQcmVkaWN0ZWRUeXBlIGdldFByZWRpY3Rp
b25XaXRob3V0T1NSRXhpdCgpCisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb25XaXRo
b3V0T1NSRXhpdCgpCiAgICAgewotICAgICAgICByZXR1cm4gZ2V0UHJlZGljdGlvbldpdGhvdXRP
U1JFeGl0KG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRQcm9maWxpbmdJbmRleCk7CisgICAgICAg
IHJldHVybiBnZXRTcGVjdWxhdGlvbldpdGhvdXRPU1JFeGl0KG1fZ3JhcGguc2l6ZSgpLCBtX2N1
cnJlbnRQcm9maWxpbmdJbmRleCk7CiAgICAgfQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgZ2V0
UHJlZGljdGlvbigpCisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb24oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGdldFByZWRpY3Rpb24obV9ncmFwaC5zaXplKCksIG1fY3VycmVudFBy
b2ZpbGluZ0luZGV4KTsKKyAgICAgICAgcmV0dXJuIGdldFNwZWN1bGF0aW9uKG1fZ3JhcGguc2l6
ZSgpLCBtX2N1cnJlbnRQcm9maWxpbmdJbmRleCk7CiAgICAgfQogCiAgICAgTm9kZUluZGV4IG1h
a2VTYWZlKE5vZGVJbmRleCBub2RlSW5kZXgpCkBAIC0xMDIzLDcgKzEwMjMsNyBAQCBwcml2YXRl
OgogICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fcmV0dXJuVmFsdWU7CiAgICAg
ICAgIAotICAgICAgICAvLyBQcmVkaWN0aW9ucyBhYm91dCB2YXJpYWJsZSB0eXBlcyBjb2xsZWN0
ZWQgZnJvbSB0aGUgcHJvZmlsZWQgY29kZSBibG9jaywKKyAgICAgICAgLy8gU3BlY3VsYXRpb25z
IGFib3V0IHZhcmlhYmxlIHR5cGVzIGNvbGxlY3RlZCBmcm9tIHRoZSBwcm9maWxlZCBjb2RlIGJs
b2NrLAogICAgICAgICAvLyB3aGljaCBhcmUgYmFzZWQgb24gT1NSIGV4aXQgcHJvZmlsZXMgdGhh
dCBwYXN0IERGRyBjb21waWxhdGlucyBvZiB0aGlzCiAgICAgICAgIC8vIGNvZGUgYmxvY2sgaGFk
IGdhdGhlcmVkLgogICAgICAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZVBhcnNlciBtX2xhenlP
cGVyYW5kczsKQEAgLTExNTAsMTIgKzExNTAsMTIgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbChJbnRlcnByZQogICAgICAgICBpbnQgcmVzdWx0T3BlcmFuZCA9IDA7IC8vIG1ha2Ug
Y29tcGlsZXIgaGFwcHkKICAgICAgICAgdW5zaWduZWQgbmV4dE9mZnNldCA9IG1fY3VycmVudElu
ZGV4ICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHB1dElu
c3RydWN0aW9uID0gY3VycmVudEluc3RydWN0aW9uICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsKTsK
LSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gUHJlZGljdE5vbmU7CisgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBTcGVjTm9uZTsKICAgICAgICAgaWYgKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChwdXRJbnN0cnVjdGlvbi0+dS5vcGNvZGUpID09IG9wX2NhbGxf
cHV0X3Jlc3VsdCkgewogICAgICAgICAgICAgcmVzdWx0T3BlcmFuZCA9IHB1dEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIHVzZXNSZXN1bHQgPSB0cnVlOwogICAgICAgICAg
ICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXggPSBuZXh0T2Zmc2V0OwotICAgICAgICAgICAgcHJl
ZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBnZXRT
cGVjdWxhdGlvbigpOwogICAgICAgICAgICAgbmV4dE9mZnNldCArPSBPUENPREVfTEVOR1RIKG9w
X2NhbGxfcHV0X3Jlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgSlNGdW5jdGlvbiogZXhwZWN0
ZWRGdW5jdGlvbjsKQEAgLTE0MjMsNyArMTQyMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZU1pbk1heChib29sIHUKIAogLy8gRklYTUU6IFdlIGRlYWQtY29kZS1lbGltaW5hdGUgdW51
c2VkIE1hdGggaW50cmluc2ljcywgYnV0IHRoYXQncyBpbnZhbGlkIGJlY2F1c2UKIC8vIHRoZXkg
bmVlZCB0byBwZXJmb3JtIHRoZSBUb051bWJlciBjb252ZXJzaW9uLCB3aGljaCBjYW4gaGF2ZSBz
aWRlLWVmZmVjdHMuCi1ib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMoYm9vbCB1
c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJl
Z2lzdGVyT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbikKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhib29s
IHVzZXNSZXN1bHQsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMgaW50cmluc2ljLCBpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbikKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewogICAgIGNhc2Ug
QWJzSW50cmluc2ljOiB7CkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWMoYm9vCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAg
ICAgaW50IHRoaXNPcGVyYW5kID0gcmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgw
KTsKLSAgICAgICAgaWYgKCEobV9ncmFwaFtnZXQodGhpc09wZXJhbmQpXS5wcmVkaWN0aW9uKCkg
JiBQcmVkaWN0U3RyaW5nKSkKKyAgICAgICAgaWYgKCEobV9ncmFwaFtnZXQodGhpc09wZXJhbmQp
XS5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgCiAgICAgICAgIGludCBpbmRleE9wZXJhbmQgPSByZWdpc3Rlck9mZnNldCArIGFy
Z3VtZW50VG9PcGVyYW5kKDEpOwpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljKGJvbwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIGludCB0aGlzT3BlcmFuZCA9IHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJh
bmQoMCk7Ci0gICAgICAgIGlmICghKG1fZ3JhcGhbZ2V0KHRoaXNPcGVyYW5kKV0ucHJlZGljdGlv
bigpICYgUHJlZGljdFN0cmluZykpCisgICAgICAgIGlmICghKG1fZ3JhcGhbZ2V0KHRoaXNPcGVy
YW5kKV0ucHJlZGljdGlvbigpICYgU3BlY1N0cmluZykpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAgICAgaW50IGluZGV4T3BlcmFuZCA9IHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1l
bnRUb09wZXJhbmQoMSk7CkBAIC0xNTQ0LDcgKzE1NDQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpoYW5kbGVJbnRyaW5zaWMoYm9vCiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdl
dEJ5SWQoCi0gICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKKyAgICBpbnQg
ZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uLCBOb2RlSW5kZXgg
YmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICBjb25zdCBHZXRCeUlkU3RhdHVz
JiBnZXRCeUlkU3RhdHVzKQogewogICAgIGlmIChnZXRCeUlkU3RhdHVzLmlzU2ltcGxlRGlyZWN0
KCkKQEAgLTE1NTMsNyArMTU1Myw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5
SWQoCiAgICAgICAgICAgICAgICAgCiAgICAgICAgIC8vIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBH
ZXRCeU9mZnNldCBkb2VzIG5vdCBrbm93IHRvIHRlcm1pbmF0ZSBzcGVjdWxhdGl2ZQogICAgICAg
ICAvLyBleGVjdXRpb24gaWYgaXQgZG9lc24ndCBoYXZlIGEgcHJlZGljdGlvbiwgc28gd2UgZG8g
aXQgbWFudWFsbHkuCi0gICAgICAgIGlmIChwcmVkaWN0aW9uID09IFByZWRpY3ROb25lKQorICAg
ICAgICBpZiAocHJlZGljdGlvbiA9PSBTcGVjTm9uZSkKICAgICAgICAgICAgIGFkZFRvR3JhcGgo
Rm9yY2VPU1JFeGl0KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgYWRkVG9HcmFwaChDaGVj
a1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGdldEJ5SWRTdGF0dXMu
c3RydWN0dXJlU2V0KCkpKSwgYmFzZSk7CkBAIC0yMDE4LDcgKzIwMTgsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIC8vID09PSBQcm9wZXJ0eSBh
Y2Nlc3Mgb3BlcmF0aW9ucyA9PT0KIAogICAgICAgICBjYXNlIG9wX2dldF9ieV92YWw6IHsKLSAg
ICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRTcGVjdWxhdGlvbigpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBwcm9wZXJ0eSA9
IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKQEAgLTIwNDMsNyArMjA0Myw3
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
IG1fY3VycmVudFByb2ZpbGluZ0luZGV4ICs9IE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNr
KTsKICAgICAgICAgICAgIEluc3RydWN0aW9uKiBnZXRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJbnN0
cnVjdGlvbiArIE9QQ09ERV9MRU5HVEgob3BfbWV0aG9kX2NoZWNrKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwor
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFNwZWN1bGF0aW9uKCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoZ2V0SW5zdHJ1Y3Rpb24tPnUub3Bjb2RlKSA9PSBvcF9nZXRfYnlfaWQpOwogICAgICAgICAg
ICAgCkBAIC0yMDc5LDcgKzIwNzksNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX2dldF9zY29wZWRfdmFyOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24gPSBnZXRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0
aW9uID0gZ2V0U3BlY3VsYXRpb24oKTsKICAgICAgICAgICAgIGludCBkc3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHNsb3QgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGRlcHRoID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKQEAgLTIwOTcsNyArMjA5Nyw3IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X3B1dF9zY29wZWRfdmFyKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDog
ewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbldp
dGhvdXRPU1JFeGl0KCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0g
Z2V0U3BlY3VsYXRpb25XaXRob3V0T1NSRXhpdCgpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9w
LT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kXTsKQEAg
LTIyMTQsNyArMjIxNCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWdu
ZWQKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6IHsKLSAgICAg
ICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IGdldFByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRTcGVjdWxhdGlvbigpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBOb2RlSW5kZXggZ2V0R2xvYmFsVmFyID0gYWRkVG9HcmFw
aChHZXRHbG9iYWxWYXIsIE9wSW5mbyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSwg
T3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kLCBnZXRHbG9iYWxWYXIpOwpAQCAtMjQ1NSwxMCArMjQ1NSwxMCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIEluc3RydWN0aW9uKiBwdXRJbnN0cnVjdGlvbiA9IGN1cnJlbnRJbnN0cnVjdGlvbiAr
IE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gUHJlZGljdE5vbmU7CisgICAgICAgICAgICBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gU3BlY05vbmU7CiAgICAgICAgICAgICBpZiAoaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKHB1dEluc3RydWN0aW9uLT51Lm9wY29kZSkgPT0gb3BfY2Fs
bF9wdXRfcmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgbV9jdXJyZW50UHJvZmlsaW5nSW5kZXgg
PSBtX2N1cnJlbnRJbmRleCArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKTsKLSAgICAg
ICAgICAgICAgICBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgICAg
IHByZWRpY3Rpb24gPSBnZXRTcGVjdWxhdGlvbigpOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCk7CkBA
IC0yNDkzLDcgKzI0OTMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkCiAgICAgICAgICAgICBMQVNUX09QQ09ERShvcF9qbmVxX3B0cik7CiAKICAgICAgICAgY2Fz
ZSBvcF9yZXNvbHZlOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBn
ZXRQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0g
Z2V0U3BlY3VsYXRpb24oKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmRdOwogCkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KIAogICAgICAgICBjYXNl
IG9wX3Jlc29sdmVfYmFzZTogewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
ID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9IGdldFNwZWN1bGF0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHVuc2lnbmVk
IGlkZW50aWZpZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKIApAQCAtMjUxNSw3ICsyNTE1LDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBvcF9yZXNvbHZlX2dsb2JhbDogewotICAgICAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiA9IGdldFNwZWN1bGF0aW9uKCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIE5vZGVJbmRleCByZXNvbHZlID0gYWRkVG9HcmFwaChSZXNvbHZlR2xvYmFsLCBP
cEluZm8obV9ncmFwaC5tX3Jlc29sdmVHbG9iYWxEYXRhLnNpemUoKSksIE9wSW5mbyhwcmVkaWN0
aW9uKSk7CiAgICAgICAgICAgICBtX2dyYXBoLm1fcmVzb2x2ZUdsb2JhbERhdGEuYXBwZW5kKFJl
c29sdmVHbG9iYWxEYXRhKCkpOwpAQCAtMjU4NSw3ICsyNTg1LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3Vt
ZW50cyA9IHRydWU7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwKICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAotICAgICAgICAgICAgICAgICAgICBH
ZXRNeUFyZ3VtZW50QnlWYWxTYWZlLCBPcEluZm8oMCksIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkp
LAorICAgICAgICAgICAgICAgICAgICBHZXRNeUFyZ3VtZW50QnlWYWxTYWZlLCBPcEluZm8oMCks
IE9wSW5mbyhnZXRTcGVjdWxhdGlvbigpKSwKICAgICAgICAgICAgICAgICAgICAgZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfYXJndW1lbnRfYnlfdmFsKTsKICAgICAgICAgfQpAQCAtMjc2OSw3ICsyNzY5LDcgQEAg
dm9pZCBCeXRlQ29kZVBhcnNlcjo6cHJvY2Vzc1BoaVN0YWNrKCkKICAgICB9CiB9CiAKLXZvaWQg
Qnl0ZUNvZGVQYXJzZXI6OmZpeFZhcmlhYmxlQWNjZXNzUHJlZGljdGlvbnMoKQordm9pZCBCeXRl
Q29kZVBhcnNlcjo6Zml4VmFyaWFibGVBY2Nlc3NTcGVjdWxhdGlvbnMoKQogewogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhLnNpemUoKTsg
KytpKSB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogZGF0YSA9ICZtX2dyYXBoLm1fdmFy
aWFibGVBY2Nlc3NEYXRhW2ldOwpAQCAtMzA5NSw3ICszMDk1LDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2UoKQogICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5j
bGVhcigpOwogICAgIH0KICAgICAKLSAgICBmaXhWYXJpYWJsZUFjY2Vzc1ByZWRpY3Rpb25zKCk7
CisgICAgZml4VmFyaWFibGVBY2Nlc3NTcGVjdWxhdGlvbnMoKTsKICAgICAKICAgICBtX2dyYXBo
Lm1fcHJlc2VydmVkVmFycyA9IG1fcHJlc2VydmVkVmFyczsKICAgICBtX2dyYXBoLm1fbG9jYWxW
YXJzID0gbV9udW1Mb2NhbHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NT
RVBoYXNlLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzOSw4ICs1MzksOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgTm9kZSYgbm9kZSA9IG1fZ3JhcGhbaW5kZXhdOwogICAgICAgICAg
ICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3Bl
cnR5U3RvcmFnZTogewotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rp
b24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgICAg
ICBib29sIG5vZGVIYXNJbnRlZ2VySW5kZXhQcmVkaWN0aW9uID0gISghKGJhc2VQcmVkaWN0aW9u
ICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGljdGlvbik7CisgICAgICAgICAgICAgICAgU3Bl
Y3VsYXRlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRp
Y3Rpb24oKTsKKyAgICAgICAgICAgICAgICBib29sIG5vZGVIYXNJbnRlZ2VySW5kZXhQcmVkaWN0
aW9uID0gISghKGJhc2VQcmVkaWN0aW9uICYgU3BlY0ludDMyKSAmJiBiYXNlUHJlZGljdGlvbik7
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxICYmIGhhc0ludGVn
ZXJJbmRleFByZWRpY3Rpb24gPT0gbm9kZUhhc0ludGVnZXJJbmRleFByZWRpY3Rpb24pCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTU1Nyw3ICs1NTcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKLSAgICAgICAgICAgICAgICBp
ZiAoaXNGaXhlZEluZGV4ZWRTdG9yYWdlT2JqZWN0UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnByZWRpY3Rpb24oKSkgJiYgbV9ncmFwaC5ieVZhbElzUHVyZShub2RlKSkKKyAgICAg
ICAgICAgICAgICBpZiAoaXNGaXhlZEluZGV4ZWRTdG9yYWdlT2JqZWN0U3BlY3VsYXRpb24obV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpICYmIG1fZ3JhcGguYnlWYWxJc1B1cmUo
bm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVy
biBOb05vZGU7CiAKQEAgLTkxMSwxMiArOTExLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlQWNjZXNzRGF0YS0+
c2hvdWxkVXNlRG91YmxlRm9ybWF0KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gdmFyaWFibGVB
Y2Nlc3NEYXRhLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPmFyZ3VtZW50
QXdhcmVQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc0ludDMyU3BlY3Vs
YXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0Jvb2xl
YW5QcmVkaWN0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgICAgICAgICBpZiAoaXNCb29s
ZWFuU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTAyMCw4ICsx
MDIwLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKLSAgICAgICAgICAgIFBy
ZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRp
Y3Rpb24oKTsKLSAgICAgICAgICAgIGJvb2wgbm9kZUhhc0ludGVnZXJJbmRleFByZWRpY3Rpb24g
PSAhKCEoYmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKTsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gbV9ncmFwaFtub2Rl
LmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBib29sIG5vZGVIYXNJbnRlZ2Vy
SW5kZXhQcmVkaWN0aW9uID0gISghKGJhc2VQcmVkaWN0aW9uICYgU3BlY0ludDMyKSAmJiBiYXNl
UHJlZGljdGlvbik7CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChnZXRJbmRleGVkUHJvcGVy
dHlTdG9yYWdlTG9hZEVsaW1pbmF0aW9uKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSwgbm9kZUhhc0lu
dGVnZXJJbmRleFByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcg
KzY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUub3AoKSkgewogICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNO
b3RDcmVhdGVkOiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24o
CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5j
b2RlT3JpZ2luKSkubV90eXBlKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lv
biAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NCwxMyArNzQsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgCiAg
ICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBHZXRCeUlkOiB7Ci0gICAgICAgICAg
ICBpZiAoIWlzSW50MzJQcmVkaWN0aW9uKG1fZ3JhcGhbbV9jb21waWxlSW5kZXhdLnByZWRpY3Rp
b24oKSkpCisgICAgICAgICAgICBpZiAoIWlzSW50MzJTcGVjdWxhdGlvbihtX2dyYXBoW21fY29t
cGlsZUluZGV4XS5wcmVkaWN0aW9uKCkpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgaWYgKGNvZGVCbG9jaygpLT5pZGVudGlmaWVyKG5vZGUuaWRlbnRpZmllck51bWJlcigp
KSAhPSBnbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bGVuZ3RoKQogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgYm9vbCBpc0FycmF5ID0gaXNBcnJheVByZWRpY3Rpb24obV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpOwotICAgICAgICAgICAgYm9vbCBpc0Fy
Z3VtZW50cyA9IGlzQXJndW1lbnRzUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKSk7Ci0gICAgICAgICAgICBib29sIGlzU3RyaW5nID0gaXNTdHJpbmdQcmVkaWN0
aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIGJv
b2wgaXNBcnJheSA9IGlzQXJyYXlTcGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnBy
ZWRpY3Rpb24oKSk7CisgICAgICAgICAgICBib29sIGlzQXJndW1lbnRzID0gaXNBcmd1bWVudHNT
cGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSk7CisgICAgICAg
ICAgICBib29sIGlzU3RyaW5nID0gaXNTdHJpbmdTcGVjdWxhdGlvbihtX2dyYXBoW25vZGUuY2hp
bGQxKCldLnByZWRpY3Rpb24oKSk7CiAgICAgICAgICAgICBib29sIGlzSW50OEFycmF5ID0gbV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKTsKICAgICAgICAg
ICAgIGJvb2wgaXNJbnQxNkFycmF5ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVj
dWxhdGVJbnQxNkFycmF5KCk7CiAgICAgICAgICAgICBib29sIGlzSW50MzJBcnJheSA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpOwpAQCAtMTI5LDEw
ICsxMjksMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZTogewotICAgICAgICAgICAgUHJlZGlj
dGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlv
bigpOwotICAgICAgICAgICAgaWYgKCghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAm
JiBiYXNlUHJlZGljdGlvbikKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGJhc2VQcmVkaWN0
aW9uID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBp
ZiAoKCEoYmFzZVByZWRpY3Rpb24gJiBTcGVjSW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKQogICAg
ICAgICAgICAgICAgIHx8IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJn
dW1lbnRzKCkKLSAgICAgICAgICAgICAgICB8fCAhaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9u
KG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgICAg
IHx8ICFpc0FjdGlvbmFibGVBcnJheVNwZWN1bGF0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0u
cHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgICAgIG5vZGUuc2V0T3BBbmREZWZhdWx0Rmxh
Z3MoTm9wKTsKICAgICAgICAgICAgICAgICBtX2dyYXBoLmNsZWFyQW5kRGVyZWZDaGlsZDEobm9k
ZSk7CiAgICAgICAgICAgICAgICAgbV9ncmFwaC5jbGVhckFuZERlcmVmQ2hpbGQyKG5vZGUpOwpA
QCAtMjg0LDcgKzI4NCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgTm9kZSBuZXdEaXZpc2lvbiA9IG9sZERpdmlzaW9uOwogICAgICAgICAgICAgICAgIG5l
d0RpdmlzaW9uLnNldFJlZkNvdW50KDIpOwotICAgICAgICAgICAgICAgIG5ld0RpdmlzaW9uLnBy
ZWRpY3QoUHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICAgICAgbmV3RGl2aXNpb24ucHJlZGlj
dChTcGVjRG91YmxlKTsKICAgICAgICAgICAgICAgICBOb2RlSW5kZXggbmV3RGl2aXNpb25JbmRl
eCA9IG1fZ3JhcGguc2l6ZSgpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIG9s
ZERpdmlzaW9uLnNldE9wKERvdWJsZUFzSW50MzIpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBpZiAoIW1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgaWYgKGlzQWN0aW9uYWJsZUludE11dGFibGVBcnJheVByZWRpY3Rp
b24obV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgICAgICBp
ZiAoaXNBY3Rpb25hYmxlSW50TXV0YWJsZUFycmF5U3BlY3VsYXRpb24obV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGhbbm9k
ZS5jaGlsZDMoKV0uaXNDb25zdGFudCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMygpXS5zaG91bGRTcGVjdWxhdGVJ
bnRlZ2VyKCkpCkBAIC0zMjYsNyArMzI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBm
aXhEb3VibGVFZGdlKDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGlzQWN0aW9uYWJsZUZsb2F0TXV0YWJsZUFycmF5UHJlZGljdGlvbiht
X2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgICAgIGlmIChp
c0FjdGlvbmFibGVGbG9hdE11dGFibGVBcnJheVNwZWN1bGF0aW9uKG1fZ3JhcGhbbm9kZS5jaGls
ZDEoKV0ucHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2UoMik7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zOTAsNyArMzkwLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgbV9pbnNlcnRpb25TZXQuYXBwZW5kKG1faW5kZXhJbkJsb2Nr
LCByZXN1bHRJbmRleCk7CiAgICAgICAgIAogICAgICAgICBOb2RlJiBpbnQzMlRvRG91YmxlID0g
bV9ncmFwaFtyZXN1bHRJbmRleF07Ci0gICAgICAgIGludDMyVG9Eb3VibGUucHJlZGljdChQcmVk
aWN0RG91YmxlKTsKKyAgICAgICAgaW50MzJUb0RvdWJsZS5wcmVkaWN0KFNwZWNEb3VibGUpOwog
ICAgICAgICBpbnQzMlRvRG91YmxlLnJlZigpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyAr
NzYsNyBAQCBjb25zdCBjaGFyKiBHcmFwaDo6bmFtZU9mVmFyaWFibGVBY2Nlc3NECiAgICAgaWYg
KHZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAqcHRyKysgPSAnKic7
CiAgICAgCi0gICAgcHRyLnN0cmNhdChwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyh2YXJp
YWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKSkpOworICAgIHB0ci5zdHJjYXQoc3BlY3VsYXRp
b25Ub0FiYnJldmlhdGVkU3RyaW5nKHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpKSk7
CiAgICAgCiAgICAgKnB0cisrID0gMDsKICAgICAKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEdy
YXBoOjpkdW1wKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgICAgICBkYXRhTG9nKCIlc0Al
dSVzIiwKICAgICAgICAgICAgICAgICAgICAgdXNlS2luZFRvU3RyaW5nKG1fdmFyQXJnQ2hpbGRy
ZW5bY2hpbGRJZHhdLnVzZUtpbmQoKSksCiAgICAgICAgICAgICAgICAgICAgIG1fdmFyQXJnQ2hp
bGRyZW5bY2hpbGRJZHhdLmluZGV4KCksCi0gICAgICAgICAgICAgICAgICAgIHByZWRpY3Rpb25U
b0FiYnJldmlhdGVkU3RyaW5nKAorICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvblRvQWJi
cmV2aWF0ZWRTdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICBhdChtX3ZhckFyZ0NoaWxk
cmVuW2NoaWxkSWR4XSkucHJlZGljdGlvbigpKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpA
QCAtMTc3LDE5ICsxNzcsMTkgQEAgdm9pZCBHcmFwaDo6ZHVtcChOb2RlSW5kZXggbm9kZUluZGV4
KQogICAgICAgICAgICAgZGF0YUxvZygiJXNAJXUlcyIsCiAgICAgICAgICAgICAgICAgICAgIHVz
ZUtpbmRUb1N0cmluZyhub2RlLmNoaWxkMSgpLnVzZUtpbmQoKSksCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUuY2hpbGQxKCkuaW5kZXgoKSwKLSAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlv
blRvQWJicmV2aWF0ZWRTdHJpbmcoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChub2Rl
LmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKTsKICAgICAgICAgfQogICAgICAgICBpZiAoISFub2Rl
LmNoaWxkMigpKSB7CiAgICAgICAgICAgICBkYXRhTG9nKCIsICVzQCV1JXMiLAogICAgICAgICAg
ICAgICAgICAgICB1c2VLaW5kVG9TdHJpbmcobm9kZS5jaGlsZDIoKS51c2VLaW5kKCkpLAogICAg
ICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMigpLmluZGV4KCksCi0gICAgICAgICAgICAgICAg
ICAgIHByZWRpY3Rpb25Ub0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQyKCkpLnByZWRp
Y3Rpb24oKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvblRvQWJicmV2aWF0ZWRT
dHJpbmcoYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKCEhbm9kZS5jaGlsZDMoKSkgewogICAgICAgICAgICAgZGF0YUxvZygiLCAlc0AldSVz
IiwKICAgICAgICAgICAgICAgICAgICAgdXNlS2luZFRvU3RyaW5nKG5vZGUuY2hpbGQzKCkudXNl
S2luZCgpKSwKICAgICAgICAgICAgICAgICAgICAgbm9kZS5jaGlsZDMoKS5pbmRleCgpLAotICAg
ICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uVG9BYmJyZXZpYXRlZFN0cmluZyhhdChub2RlLmNo
aWxkMygpKS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25U
b0FiYnJldmlhdGVkU3RyaW5nKGF0KG5vZGUuY2hpbGQzKCkpLnByZWRpY3Rpb24oKSkpOwogICAg
ICAgICB9CiAgICAgICAgIGhhc1ByaW50ZWQgPSAhIW5vZGUuY2hpbGQxKCk7CiAgICAgfQpAQCAt
MjY5LDkgKzI2OSw5IEBAIHZvaWQgR3JhcGg6OmR1bXAoTm9kZUluZGV4IG5vZGVJbmRleCkKIAog
ICAgIGlmICghc2tpcHBlZCkgewogICAgICAgICBpZiAobm9kZS5oYXNWYXJpYWJsZUFjY2Vzc0Rh
dGEoKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgcHJlZGljdGluZyAlcywgZG91YmxlIHJhdGlv
ICVsZiVzIiwgcHJlZGljdGlvblRvU3RyaW5nKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnBy
ZWRpY3Rpb24oKSksIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPmRvdWJsZVZvdGVSYXRpbygp
LCBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSA/ICIs
IGZvcmNpbmcgZG91YmxlIiA6ICIiKTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgcHJlZGljdGlu
ZyAlcywgZG91YmxlIHJhdGlvICVsZiVzIiwgc3BlY3VsYXRpb25Ub1N0cmluZyhub2RlLnZhcmlh
YmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpLCBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgp
LT5kb3VibGVWb3RlUmF0aW8oKSwgbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNl
RG91YmxlRm9ybWF0KCkgPyAiLCBmb3JjaW5nIGRvdWJsZSIgOiAiIik7CiAgICAgICAgIGVsc2Ug
aWYgKG5vZGUuaGFzSGVhcFByZWRpY3Rpb24oKSkKLSAgICAgICAgICAgIGRhdGFMb2coIiAgcHJl
ZGljdGluZyAlcyIsIHByZWRpY3Rpb25Ub1N0cmluZyhub2RlLmdldEhlYXBQcmVkaWN0aW9uKCkp
KTsKKyAgICAgICAgICAgIGRhdGFMb2coIiAgcHJlZGljdGluZyAlcyIsIHNwZWN1bGF0aW9uVG9T
dHJpbmcobm9kZS5nZXRIZWFwUHJlZGljdGlvbigpKSk7CiAgICAgfQogICAgIAogICAgIGRhdGFM
b2coIlxuIik7CkBAIC0zODYsNyArMzg2LDcgQEAgdm9pZCBHcmFwaDo6cHJlZGljdEFyZ3VtZW50
VHlwZXMoKQogICAgICAgICBhdChtX2FyZ3VtZW50c1thcmddKS52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+cHJlZGljdChwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKSk7CiAgICAgICAg
IAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygiQXJndW1l
bnQgWyV6dV0gcHJlZGljdGlvbjogJXNcbiIsIGFyZywgcHJlZGljdGlvblRvU3RyaW5nKGF0KG1f
YXJndW1lbnRzW2FyZ10pLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCkpKTsKKyAg
ICAgICAgZGF0YUxvZygiQXJndW1lbnQgWyV6dV0gcHJlZGljdGlvbjogJXNcbiIsIGFyZywgc3Bl
Y3VsYXRpb25Ub1N0cmluZyhhdChtX2FyZ3VtZW50c1thcmddKS52YXJpYWJsZUFjY2Vzc0RhdGEo
KS0+cHJlZGljdGlvbigpKSk7CiAjZW5kaWYKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw5ICsxODcsOSBAQCBw
dWJsaWM6CiAKICAgICBCbG9ja0luZGV4IGJsb2NrSW5kZXhGb3JCeXRlY29kZU9mZnNldChWZWN0
b3I8QmxvY2tJbmRleD4mIGJsb2NrcywgdW5zaWduZWQgYnl0ZWNvZGVCZWdpbik7CiAKLSAgICBQ
cmVkaWN0ZWRUeXBlIGdldEpTQ29uc3RhbnRQcmVkaWN0aW9uKE5vZGUmIG5vZGUpCisgICAgU3Bl
Y3VsYXRlZFR5cGUgZ2V0SlNDb25zdGFudFNwZWN1bGF0aW9uKE5vZGUmIG5vZGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gcHJlZGljdGlvbkZyb21WYWx1ZShub2RlLnZhbHVlT2ZKU0NvbnN0YW50
KG1fY29kZUJsb2NrKSk7CisgICAgICAgIHJldHVybiBzcGVjdWxhdGlvbkZyb21WYWx1ZShub2Rl
LnZhbHVlT2ZKU0NvbnN0YW50KG1fY29kZUJsb2NrKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wg
YWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlJiBhZGQpCkBAIC00MjQsMTcgKzQyNCwxNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBpc1ByZWRpY3RlZE51bWVyaWNhbChOb2RlJiBub2Rl
KQogICAgIHsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gYXQobm9kZS5jaGlsZDEoKSku
cHJlZGljdGlvbigpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gYXQobm9kZS5jaGls
ZDIoKSkucHJlZGljdGlvbigpOwotICAgICAgICByZXR1cm4gaXNOdW1iZXJQcmVkaWN0aW9uKGxl
ZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCk7CisgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IGxlZnQgPSBhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCk7CisgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHJpZ2h0ID0gYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpOworICAgICAgICBy
ZXR1cm4gaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJp
Z2h0KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBieVZhbElzUHVyZShOb2RlJiBub2RlKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVn
ZXIoKQogICAgICAgICAgICAgJiYgKChub2RlLm9wKCkgPT0gUHV0QnlWYWwgfHwgbm9kZS5vcCgp
ID09IFB1dEJ5VmFsQWxpYXMpCi0gICAgICAgICAgICAgICAgPyBpc0FjdGlvbmFibGVNdXRhYmxl
QXJyYXlQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkKLSAgICAgICAg
ICAgICAgICA6IGlzQWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5w
cmVkaWN0aW9uKCkpKTsKKyAgICAgICAgICAgICAgICA/IGlzQWN0aW9uYWJsZU11dGFibGVBcnJh
eVNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkKKyAgICAgICAgICAg
ICAgICA6IGlzQWN0aW9uYWJsZUFycmF5U3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgY2xvYmJlcnNXb3JsZChOb2RlJiBu
b2RlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAko
cmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsOSArMjYwLDkgQEAgcHVibGljOgogICAgIH0K
ICAgICAKICAgICAvLyBIZWxwZXIgbWV0aG9kcyB0byBnZXQgcHJlZGljdGlvbnMKLSAgICBQcmVk
aWN0ZWRUeXBlIGdldFByZWRpY3Rpb24oTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5wcmVkaWN0
aW9uKCk7IH0KLSAgICBQcmVkaWN0ZWRUeXBlIGdldFByZWRpY3Rpb24oTm9kZUluZGV4IG5vZGVJ
bmRleCkgeyByZXR1cm4gZ2V0UHJlZGljdGlvbihncmFwaCgpW25vZGVJbmRleF0pOyB9Ci0gICAg
UHJlZGljdGVkVHlwZSBnZXRQcmVkaWN0aW9uKEVkZ2Ugbm9kZVVzZSkgeyByZXR1cm4gZ2V0UHJl
ZGljdGlvbihub2RlVXNlLmluZGV4KCkpOyB9CisgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3Vs
YXRpb24oTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5wcmVkaWN0aW9uKCk7IH0KKyAgICBTcGVj
dWxhdGVkVHlwZSBnZXRTcGVjdWxhdGlvbihOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBn
ZXRTcGVjdWxhdGlvbihncmFwaCgpW25vZGVJbmRleF0pOyB9CisgICAgU3BlY3VsYXRlZFR5cGUg
Z2V0U3BlY3VsYXRpb24oRWRnZSBub2RlVXNlKSB7IHJldHVybiBnZXRTcGVjdWxhdGlvbihub2Rl
VXNlLmluZGV4KCkpOyB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgIHZvaWQqIGFkZHJl
c3NPZkRvdWJsZUNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTE5NjA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNp
bmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiT3BlcmFuZHMuaCIKLSNpbmNsdWRlICJQcmVkaWN0ZWRUeXBlLmgiCisjaW5jbHVk
ZSAiU3BlY3VsYXRlZFR5cGUuaCIKICNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKIAogbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgICwgY2hpbGRyZW4oQWRqYWNlbmN5TGlzdDo6Rml4ZWQsIGNoaWxkMSwgY2hpbGQy
LCBjaGlsZDMpCiAgICAgICAgICwgbV92aXJ0dWFsUmVnaXN0ZXIoSW52YWxpZFZpcnR1YWxSZWdp
c3RlcikKICAgICAgICAgLCBtX3JlZkNvdW50KDApCi0gICAgICAgICwgbV9wcmVkaWN0aW9uKFBy
ZWRpY3ROb25lKQorICAgICAgICAsIG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICB7CiAgICAg
ICAgIHNldE9wQW5kRGVmYXVsdEZsYWdzKG9wKTsKICAgICAgICAgQVNTRVJUKCEobV9mbGFncyAm
IE5vZGVIYXNWYXJBcmdzKSk7CkBAIC05NSw3ICs5NSw3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAg
ICAgLCBtX3ZpcnR1YWxSZWdpc3RlcihJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKQogICAgICAgICAs
IG1fcmVmQ291bnQoMCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0ubV92YWx1ZSkKLSAgICAgICAg
LCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCisgICAgICAgICwgbV9wcmVkaWN0aW9uKFNwZWNO
b25lKQogICAgIHsKICAgICAgICAgc2V0T3BBbmREZWZhdWx0RmxhZ3Mob3ApOwogICAgICAgICBB
U1NFUlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKQEAgLTEwOSw3ICsxMDksNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgICwgbV9yZWZDb3VudCgwKQogICAgICAgICAsIG1fb3BJbmZv
KGltbTEubV92YWx1ZSkKICAgICAgICAgLCBtX29wSW5mbzIoc2FmZUNhc3Q8dW5zaWduZWQ+KGlt
bTIubV92YWx1ZSkpCi0gICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQorICAgICAg
ICAsIG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICB7CiAgICAgICAgIHNldE9wQW5kRGVmYXVs
dEZsYWdzKG9wKTsKICAgICAgICAgQVNTRVJUKCEobV9mbGFncyAmIE5vZGVIYXNWYXJBcmdzKSk7
CkBAIC0xMjMsNyArMTIzLDcgQEAgc3RydWN0IE5vZGUgewogICAgICAgICAsIG1fcmVmQ291bnQo
MCkKICAgICAgICAgLCBtX29wSW5mbyhpbW0xLm1fdmFsdWUpCiAgICAgICAgICwgbV9vcEluZm8y
KHNhZmVDYXN0PHVuc2lnbmVkPihpbW0yLm1fdmFsdWUpKQotICAgICAgICAsIG1fcHJlZGljdGlv
bihQcmVkaWN0Tm9uZSkKKyAgICAgICAgLCBtX3ByZWRpY3Rpb24oU3BlY05vbmUpCiAgICAgewog
ICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhvcCk7CiAgICAgICAgIEFTU0VSVChtX2ZsYWdz
ICYgTm9kZUhhc1ZhckFyZ3MpOwpAQCAtNTg0LDE3ICs1ODQsMTcgQEAgc3RydWN0IE5vZGUgewog
ICAgICAgICB9CiAgICAgfQogICAgIAotICAgIFByZWRpY3RlZFR5cGUgZ2V0SGVhcFByZWRpY3Rp
b24oKQorICAgIFNwZWN1bGF0ZWRUeXBlIGdldEhlYXBQcmVkaWN0aW9uKCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChoYXNIZWFwUHJlZGljdGlvbigpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFByZWRpY3RlZFR5cGU+KG1fb3BJbmZvMik7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxTcGVjdWxhdGVkVHlwZT4obV9vcEluZm8yKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBwcmVk
aWN0SGVhcChQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgYm9vbCBwcmVkaWN0SGVhcChT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0hlYXBQ
cmVkaWN0aW9uKCkpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIG1lcmdlUHJlZGljdGlvbiht
X29wSW5mbzIsIHByZWRpY3Rpb24pOworICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxhdGlvbiht
X29wSW5mbzIsIHByZWRpY3Rpb24pOwogICAgIH0KICAgICAKICAgICBib29sIGhhc0Z1bmN0aW9u
Q2hlY2tEYXRhKCkKQEAgLTc2NywxMTQgKzc2NywxMTQgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICByZXR1cm4gY2hpbGRyZW4ubnVtQ2hpbGRyZW4oKTsKICAgICB9CiAgICAgCi0gICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uKCkKKyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CiAgICAgfQogICAgIAotICAgIGJvb2wg
cHJlZGljdChQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgYm9vbCBwcmVkaWN0KFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiAgICAgewotICAgICAgICByZXR1cm4gbWVyZ2VQcmVkaWN0
aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CisgICAgICAgIHJldHVybiBtZXJnZVNwZWN1
bGF0aW9uKG1fcHJlZGljdGlvbiwgcHJlZGljdGlvbik7CiAgICAgfQogICAgIAogICAgIGJvb2wg
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpCiAgICAgewotICAgICAgICByZXR1cm4gaXNJbnQzMlBy
ZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzSW50MzJTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZURv
dWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rp
b24oKSk7CisgICAgICAgIHJldHVybiBpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7
CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBpc051bWJlclByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAg
cmV0dXJuIGlzTnVtYmVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAg
ICAgYm9vbCBzaG91bGRTcGVjdWxhdGVCb29sZWFuKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBp
c0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Jvb2xl
YW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0ZpbmFsT2Jq
ZWN0UHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNGaW5hbE9iamVj
dFNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxk
U3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVyKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0Zp
bmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJu
IGlzRmluYWxPYmplY3RPck90aGVyU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAg
ICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVBcnJheSgpCiAgICAgewotICAgICAgICByZXR1
cm4gaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzQXJy
YXlTcGVjdWxhdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3Vs
ZFNwZWN1bGF0ZUFyZ3VtZW50cygpCiAgICAgewotICAgICAgICByZXR1cm4gaXNBcmd1bWVudHNQ
cmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0FyZ3VtZW50c1NwZWN1
bGF0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3Vs
YXRlSW50OEFycmF5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0ludDhBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzSW50OEFycmF5U3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVJbnQx
NkFycmF5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihwcmVk
aWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUludDMyQXJy
YXkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGlj
dGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzSW50MzJBcnJheVNwZWN1bGF0aW9uKHByZWRpY3Rp
b24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgp
CiAgICAgewotICAgICAgICByZXR1cm4gaXNVaW50OEFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9u
KCkpOworICAgICAgICByZXR1cm4gaXNVaW50OEFycmF5U3BlY3VsYXRpb24ocHJlZGljdGlvbigp
KTsKICAgICB9CiAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihwcmVk
aWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNVaW50OENsYW1wZWRBcnJheVNwZWN1bGF0aW9u
KHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlVWlu
dDE2QXJyYXkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzVWludDE2QXJyYXlQcmVkaWN0aW9u
KHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24o
cHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVVaW50
MzJBcnJheSgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNVaW50MzJBcnJheVByZWRpY3Rpb24o
cHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzVWludDMyQXJyYXlTcGVjdWxhdGlvbihw
cmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUZsb2F0
MzJBcnJheSgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9u
KHByZWRpY3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9u
KHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlRmxv
YXQ2NEFycmF5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBpc0Zsb2F0NjRBcnJheVByZWRpY3Rp
b24ocHJlZGljdGlvbigpKTsKKyAgICAgICAgcmV0dXJuIGlzRmxvYXQ2NEFycmF5U3BlY3VsYXRp
b24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVB
cnJheU9yT3RoZXIoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGlzQXJyYXlPck90aGVyUHJlZGlj
dGlvbihwcmVkaWN0aW9uKCkpOworICAgICAgICByZXR1cm4gaXNBcnJheU9yT3RoZXJTcGVjdWxh
dGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0
ZU9iamVjdCgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNPYmplY3RQcmVkaWN0aW9uKHByZWRp
Y3Rpb24oKSk7CisgICAgICAgIHJldHVybiBpc09iamVjdFNwZWN1bGF0aW9uKHByZWRpY3Rpb24o
KSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlQ2VsbCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gaXNDZWxsUHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOworICAgICAgICBy
ZXR1cm4gaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAg
c3RhdGljIGJvb2wgc2hvdWxkU3BlY3VsYXRlSW50ZWdlcihOb2RlJiBvcDEsIE5vZGUmIG9wMikK
QEAgLTkzMiw3ICs5MzIsNyBAQCBwcml2YXRlOgogICAgIHVpbnRwdHJfdCBtX29wSW5mbzsKICAg
ICB1bnNpZ25lZCBtX29wSW5mbzI7CiAgICAgLy8gVGhlIHByZWRpY3Rpb24gYXNjcmliZWQgdG8g
dGhpcyBub2RlIGFmdGVyIHByb3BhZ2F0aW9uLgotICAgIFByZWRpY3RlZFR5cGUgbV9wcmVkaWN0
aW9uOworICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlvbjsKIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTk2
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsMjAgKzgyLDIwIEBAIHB1YmxpYzoKICAg
ICB9CiAgICAgCiBwcml2YXRlOgotICAgIGJvb2wgc2V0UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBl
IHByZWRpY3Rpb24pCisgICAgYm9vbCBzZXRQcmVkaWN0aW9uKFNwZWN1bGF0ZWRUeXBlIHByZWRp
Y3Rpb24pCiAgICAgewogICAgICAgICBBU1NFUlQobV9ncmFwaFttX2NvbXBpbGVJbmRleF0uaGFz
UmVzdWx0KCkpOwogICAgICAgICAKICAgICAgICAgLy8gc2V0UHJlZGljdGlvbigpIGlzIHVzZWQg
d2hlbiB3ZSBrbm93IHRoYXQgdGhlcmUgaXMgbm8gd2F5IHRoYXQgd2UgY2FuIGNoYW5nZQogICAg
ICAgICAvLyBvdXIgbWluZHMgYWJvdXQgd2hhdCB0aGUgcHJlZGljdGlvbiBpcyBnb2luZyB0byBi
ZS4gVGhlcmUgaXMgbm8gc2VtYW50aWMKLSAgICAgICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHNl
dFByZWRpY3Rpb24oKSBhbmQgbWVyZ2VQcmVkaWN0aW9uKCkgb3RoZXIgdGhhbiB0aGUKKyAgICAg
ICAgLy8gZGlmZmVyZW5jZSBiZXR3ZWVuIHNldFByZWRpY3Rpb24oKSBhbmQgbWVyZ2VTcGVjdWxh
dGlvbigpIG90aGVyIHRoYW4gdGhlCiAgICAgICAgIC8vIGluY3JlYXNlZCBjaGVja2luZyB0byB2
YWxpZGF0ZSB0aGlzIHByb3BlcnR5LgotICAgICAgICBBU1NFUlQobV9ncmFwaFttX2NvbXBpbGVJ
bmRleF0ucHJlZGljdGlvbigpID09IFByZWRpY3ROb25lIHx8IG1fZ3JhcGhbbV9jb21waWxlSW5k
ZXhdLnByZWRpY3Rpb24oKSA9PSBwcmVkaWN0aW9uKTsKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGhb
bV9jb21waWxlSW5kZXhdLnByZWRpY3Rpb24oKSA9PSBTcGVjTm9uZSB8fCBtX2dyYXBoW21fY29t
cGlsZUluZGV4XS5wcmVkaWN0aW9uKCkgPT0gcHJlZGljdGlvbik7CiAgICAgICAgIAogICAgICAg
ICByZXR1cm4gbV9ncmFwaFttX2NvbXBpbGVJbmRleF0ucHJlZGljdChwcmVkaWN0aW9uKTsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBtZXJnZVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uKQorICAgIGJvb2wgbWVyZ2VQcmVkaWN0aW9uKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
CiAgICAgewogICAgICAgICBBU1NFUlQobV9ncmFwaFttX2NvbXBpbGVJbmRleF0uaGFzUmVzdWx0
KCkpOwogICAgICAgICAKQEAgLTEzNCwxMyArMTM0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIHN3
aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBKU0NvbnN0YW50OgogICAgICAgICBjYXNlIFdlYWtK
U0NvbnN0YW50OiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24ocHJlZGlj
dGlvbkZyb21WYWx1ZShtX2dyYXBoLnZhbHVlT2ZKU0NvbnN0YW50KG1fY29tcGlsZUluZGV4KSkp
OworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKHNwZWN1bGF0aW9uRnJvbVZh
bHVlKG1fZ3JhcGgudmFsdWVPZkpTQ29uc3RhbnQobV9jb21waWxlSW5kZXgpKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0TG9j
YWw6IHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRh
ID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUg
cHJlZGljdGlvbiA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpOworICAgICAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGlj
dGlvbigpOwogICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24pCiAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAgICAgICAKQEAgLTE2
OCw3ICsxNjgsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEJpdFJTaGlmdDoKICAgICAgICAg
Y2FzZSBCaXRMU2hpZnQ6CiAgICAgICAgIGNhc2UgQml0VVJTaGlmdDogewotICAgICAgICAgICAg
Y2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgIGZsYWdzIHw9IE5v
ZGVVc2VkQXNJbnQ7CiAgICAgICAgICAgICBmbGFncyAmPSB+KE5vZGVVc2VkQXNOdW1iZXIgfCBO
b2RlTmVlZHNOZWdaZXJvKTsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwcml2YXRlOgog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBWYWx1ZVRvSW50MzI6IHsKLSAg
ICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0SW50MzIpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICBm
bGFncyB8PSBOb2RlVXNlZEFzSW50OwogICAgICAgICAgICAgZmxhZ3MgJj0gfihOb2RlVXNlZEFz
TnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhmbGFncyk7CkBAIC0yMDUsMjIgKzIwNSwyMiBA
QCBwcml2YXRlOgogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OiB7
Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOwor
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdzKE5vZGVV
c2VkQXNWYWx1ZSk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZVVzZWRBc0ludCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQXJpdGhNb2Q6IHsKLSAgICAg
ICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGlj
dGlvbigpOwotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDIoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3Vs
YXRlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24obWVyZ2VQcmVkaWN0aW9ucyhsZWZ0LCByaWdodCkp
CisgICAgICAgICAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihtZXJnZVNwZWN1bGF0aW9u
cyhsZWZ0LCByaWdodCkpCiAgICAgICAgICAgICAgICAgICAgICYmIG5vZGVDYW5TcGVjdWxhdGVJ
bnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICAgICAgICAg
IGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVk
aWN0RG91YmxlKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rp
b24oU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGZsYWdzIHw9IE5vZGVVc2VkQXNWYWx1ZTsKQEAgLTIzMSwyOSArMjMxLDI5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBVSW50MzJUb051bWJlcjogewogICAgICAgICAg
ICAgaWYgKG5vZGVDYW5TcGVjdWxhdGVJbnRlZ2VyKG5vZGUuYXJpdGhOb2RlRmxhZ3MoKSkpCi0g
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsK
KyAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0
aW9uKFByZWRpY3ROdW1iZXIpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNOdW1iZXIpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhmbGFncyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgVmFsdWVBZGQ6IHsKLSAgICAgICAgICAg
IFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigp
OwotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIo
KV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5
cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGljdGlvbihyaWdodCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0KSAmJiBpc051
bWJlclNwZWN1bGF0aW9uKHJpZ2h0KSkgewogICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoIShsZWZ0ICYgUHJlZGljdE51bWJlcikgfHwgIShyaWdodCAmIFByZWRpY3ROdW1iZXIpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVj
RG91YmxlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEobGVmdCAmIFNwZWNOdW1iZXIp
IHx8ICEocmlnaHQgJiBTcGVjTnVtYmVyKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBsZWZ0
IG9yIHJpZ2h0IGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIG90aGVyIHRoYW4gYSBudW1iZXIuCi0g
ICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3RTdHJp
bmcpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVj
U3RyaW5nKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdFN0cmluZyB8IFByZWRpY3RJbnQzMiB8IFBy
ZWRpY3REb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGlj
dGlvbihTcGVjU3RyaW5nIHwgU3BlY0ludDMyIHwgU3BlY0RvdWJsZSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpc05vdE5lZ1plcm8obm9kZS5jaGlsZDEo
KS5pbmRleCgpKSB8fCBpc05vdE5lZ1plcm8obm9kZS5jaGlsZDIoKS5pbmRleCgpKSkKQEAgLTI2
NSwxNCArMjY1LDE0IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIEFyaXRoQWRkOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rp
b24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNo
aWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYgKG1fZ3JhcGguYWRkU2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcihub2RlKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVBy
ZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBt
ZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOwor
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91Ymxl
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGlzTm90TmVn
WmVybyhub2RlLmNoaWxkMSgpLmluZGV4KCkpIHx8IGlzTm90TmVnWmVybyhub2RlLmNoaWxkMigp
LmluZGV4KCkpKQpAQCAtMjg0LDE0ICsyODQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhTdWI6IHsKLSAgICAgICAgICAgIFByZWRpY3Rl
ZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAgICAg
ICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGlj
dGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgbGVmdCA9IG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQg
PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKGxlZnQgJiYgcmlnaHQpIHsKICAgICAgICAgICAgICAgICBpZiAobV9ncmFw
aC5hZGRTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQotICAgICAgICAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgICAg
ICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjSW50MzIpOwogICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24o
UHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoaXNO
b3RaZXJvKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkgfHwgaXNOb3RaZXJvKG5vZGUuY2hpbGQyKCku
aW5kZXgoKSkpCkBAIC0zMDUsOSArMzA1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBBcml0
aE5lZ2F0ZToKICAgICAgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rp
b24oKSkgewogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLm5lZ2F0ZVNob3VsZFNwZWN1bGF0
ZUludGVnZXIobm9kZSkpCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVy
Z2VQcmVkaWN0aW9uKFNwZWNJbnQzMik7CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0RG91YmxlKTsKKyAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0RvdWJsZSk7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKQEAgLTMxNSwxNSArMzE1LDE1IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aE1pbjoKICAgICAgICAgY2FzZSBBcml0
aE1heDogewotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0g
bV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7CisgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJl
ZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobGVmdCAmJiByaWdodCkg
ewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25z
KGxlZnQsIHJpZ2h0KSkKKyAgICAgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1l
cmdlU3BlY3VsYXRpb25zKGxlZnQsIHJpZ2h0KSkKICAgICAgICAgICAgICAgICAgICAgJiYgbm9k
ZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkKLSAgICAgICAgICAg
ICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAg
ICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKFByZWRpY3REb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9
IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZmxhZ3MgfD0gTm9kZVVzZWRBc051bWJlcjsKQEAgLTMzMywxNCArMzMzLDE0IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFyaXRoTXVsOiB7Ci0gICAgICAgICAgICBQ
cmVkaWN0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsK
LSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCld
LnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGxlZnQgPSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0KSB7CiAgICAgICAgICAgICAgICAgaWYg
KG1fZ3JhcGgubXVsU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKLSAgICAgICAgICAgICAg
ICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVk
aWN0aW9uKFByZWRpY3REb3VibGUpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1l
cmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Ly8gQXMgc29vbiBhcyBhIG11bHRpcGx5IGhhcHBlbnMsIHdlIGNhbiBlYXNpbHkgZW5kIHVwIGlu
IHRoZSBwYXJ0CkBAIC0zNTUsMTUgKzM1NSwxNSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aERpdjogewotICAgICAgICAgICAgUHJlZGljdGVk
VHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHJpZ2h0ID0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5wcmVkaWN0
aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNo
aWxkMSgpXS5wcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobGVmdCAmJiByaWdodCkgewotICAgICAgICAgICAgICAgIGlmIChpc0ludDMy
UHJlZGljdGlvbihtZXJnZVByZWRpY3Rpb25zKGxlZnQsIHJpZ2h0KSkKKyAgICAgICAgICAgICAg
ICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKG1lcmdlU3BlY3VsYXRpb25zKGxlZnQsIHJpZ2h0KSkK
ICAgICAgICAgICAgICAgICAgICAgJiYgbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0
aE5vZGVGbGFncygpKSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZVByZWRp
Y3Rpb24oUHJlZGljdEludDMyKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRpY3REb3VibGUpOworICAg
ICAgICAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihTcGVjRG91YmxlKTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQXMgc29vbiBhcyBhIG11bHRpcGx5IGhh
cHBlbnMsIHdlIGNhbiBlYXNpbHkgZW5kIHVwIGluIHRoZSBwYXJ0CkBAIC0zNzgsMTcgKzM3OCwx
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0
aFNxcnQ6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihQcmVkaWN0RG91
YmxlKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjRG91YmxlKTsK
ICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5tZXJnZUZsYWdz
KGZsYWdzIHwgTm9kZVVzZWRBc1ZhbHVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aEFiczogewotICAgICAgICAgICAgUHJl
ZGljdGVkVHlwZSBjaGlsZCA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwor
ICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmIChub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihu
b2RlLmFyaXRoTm9kZUZsYWdzKCkpKQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQ
cmVkaWN0aW9uKGNoaWxkKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdERvdWJsZSk7CisgICAgICAgICAgICAgICAgY2hh
bmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNEb3VibGUpOwogCiAgICAgICAgICAgICBmbGFncyAm
PSB+Tm9kZU5lZWRzTmVnWmVybzsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2Rl
LmNoaWxkMSgpXS5tZXJnZUZsYWdzKGZsYWdzKTsKQEAgLTQwOSw3ICs0MDksNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIElzU3RyaW5nOgogICAgICAgICBjYXNlIElzT2JqZWN0OgogICAgICAg
ICBjYXNlIElzRnVuY3Rpb246IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlv
bihQcmVkaWN0Qm9vbGVhbik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
U3BlY0Jvb2xlYW4pOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRGbGFncyhu
b2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC00MjgsNyArNDI4LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRCeVZhbDogewogICAgICAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkKICAgICAgICAg
ICAgICAgICB8fCBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRB
cnJheSgpKQotICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFByZWRp
Y3REb3VibGUpOworICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKFNw
ZWNEb3VibGUpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNoYW5nZWQgfD0g
bWVyZ2VQcmVkaWN0aW9uKG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24oKSk7CiAKQEAgLTQ0NCwxMyAr
NDQ0LDEzIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IEdldE15QXJndW1lbnRzTGVuZ3RoU2FmZTogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQ
cmVkaWN0aW9uKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRp
Y3Rpb24oU3BlY0ludDMyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
ICAgICAKICAgICAgICAgY2FzZSBHZXRQcm9wZXJ0eVN0b3JhZ2U6IAogICAgICAgICBjYXNlIEdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJl
ZGljdGlvbihQcmVkaWN0T3RoZXIpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0
aW9uKFNwZWNPdGhlcik7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlRGVmYXVsdEZsYWdz
KG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ3NCwxMSArNDc0LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENvbnZl
cnRUaGlzOiB7Ci0gICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBl
IHByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsKICAgICAg
ICAgICAgIGlmIChwcmVkaWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZWRpY3Rpb24g
JiB+UHJlZGljdE9iamVjdE1hc2spIHsKLSAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlvbiAm
PSBQcmVkaWN0T2JqZWN0TWFzazsKLSAgICAgICAgICAgICAgICAgICAgcHJlZGljdGlvbiA9IG1l
cmdlUHJlZGljdGlvbnMocHJlZGljdGlvbiwgUHJlZGljdE9iamVjdE90aGVyKTsKKyAgICAgICAg
ICAgICAgICBpZiAocHJlZGljdGlvbiAmIH5TcGVjT2JqZWN0TWFzaykgeworICAgICAgICAgICAg
ICAgICAgICBwcmVkaWN0aW9uICY9IFNwZWNPYmplY3RNYXNrOworICAgICAgICAgICAgICAgICAg
ICBwcmVkaWN0aW9uID0gbWVyZ2VTcGVjdWxhdGlvbnMocHJlZGljdGlvbiwgU3BlY09iamVjdE90
aGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJn
ZVByZWRpY3Rpb24ocHJlZGljdGlvbik7CiAgICAgICAgICAgICB9CkBAIC01MDEsMzAgKzUwMSwz
MCBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFJlc29sdmVCYXNlOgogICAgICAgICBjYXNlIFJl
c29sdmVCYXNlU3RyaWN0UHV0OgogICAgICAgICBjYXNlIFJlc29sdmVHbG9iYWw6IHsKLSAgICAg
ICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG5vZGUuZ2V0SGVhcFByZWRpY3Rpb24o
KTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLmdldEhlYXBQ
cmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IG1lcmdlUHJlZGljdGlvbihwcmVk
aWN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBHZXRTY29wZUNoYWluOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFBy
ZWRpY3Rpb24oUHJlZGljdENlbGxPdGhlcik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFBy
ZWRpY3Rpb24oU3BlY0NlbGxPdGhlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgR2V0Q2FsbGVlOiB7Ci0gICAgICAgICAgICBjaGFu
Z2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEZ1bmN0aW9uKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjRnVuY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENyZWF0ZVRoaXM6CiAgICAgICAg
IGNhc2UgTmV3T2JqZWN0OiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24o
UHJlZGljdEZpbmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlv
bihTcGVjRmluYWxPYmplY3QpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtZXJnZURlZmF1bHRG
bGFncyhub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBOZXdBcnJheTogewotICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVk
aWN0aW9uKFByZWRpY3RBcnJheSk7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rp
b24oU3BlY0FycmF5KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgY2hpbGRJZHggPSBub2Rl
LmZpcnN0Q2hpbGQoKTsKICAgICAgICAgICAgICAgICAgY2hpbGRJZHggPCBub2RlLmZpcnN0Q2hp
bGQoKSArIG5vZGUubnVtQ2hpbGRyZW4oKTsKICAgICAgICAgICAgICAgICAgKytjaGlsZElkeCkg
ewpAQCAtNTM1LDI0ICs1MzUsMjQgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgTmV3QXJyYXlCdWZmZXI6IHsKLSAgICAgICAgICAgIGNoYW5nZWQgfD0g
c2V0UHJlZGljdGlvbihQcmVkaWN0QXJyYXkpOworICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRQ
cmVkaWN0aW9uKFNwZWNBcnJheSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICAgICAgCiAgICAgICAgIGNhc2UgTmV3UmVnZXhwOiB7Ci0gICAgICAgICAgICBjaGFuZ2Vk
IHw9IHNldFByZWRpY3Rpb24oUHJlZGljdE9iamVjdE90aGVyKTsKKyAgICAgICAgICAgIGNoYW5n
ZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjT2JqZWN0T3RoZXIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckF0OiB7Ci0gICAg
ICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdFN0cmluZyk7CisgICAgICAg
ICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oU3BlY1N0cmluZyk7CiAgICAgICAgICAgICBj
aGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VGbGFncyhOb2RlVXNlZEFzVmFs
dWUpOwogICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLm1lcmdl
RmxhZ3MoTm9kZVVzZWRBc051bWJlciB8IE5vZGVVc2VkQXNJbnQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIFN0ckNhdDogewotICAg
ICAgICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFByZWRpY3RTdHJpbmcpOworICAgICAg
ICAgICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNTdHJpbmcpOwogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBjaGlsZElkeCA9IG5vZGUuZmlyc3RDaGlsZCgpOwogICAgICAgICAgICAg
ICAgICBjaGlsZElkeCA8IG5vZGUuZmlyc3RDaGlsZCgpICsgbm9kZS5udW1DaGlsZHJlbigpOwog
ICAgICAgICAgICAgICAgICArK2NoaWxkSWR4KQpAQCAtNTYxLDIwICs1NjEsMjAgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVG9QcmltaXRpdmU6IHsK
LSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgY2hpbGQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCld
LnByZWRpY3Rpb24oKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIGNoaWxkID0gbV9ncmFw
aFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBpZiAoY2hpbGQpIHsK
LSAgICAgICAgICAgICAgICBpZiAoaXNPYmplY3RQcmVkaWN0aW9uKGNoaWxkKSkgeworICAgICAg
ICAgICAgICAgIGlmIChpc09iamVjdFNwZWN1bGF0aW9uKGNoaWxkKSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBJJ2QgbG92ZSB0byBmb2xkIHRoaXMgY2FzZSBpbnRvIHRoZSBjYXNlIGJlbG93
LCBidXQgSSBjYW4ndCwgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmluZyBQ
cmVkaWN0T2JqZWN0TWFzayBmcm9tIHNvbWV0aGluZyB0aGF0IG9ubHkgaGFzIGFuIG9iamVjdAot
ICAgICAgICAgICAgICAgICAgICAvLyBwcmVkaWN0aW9uIGFuZCBub3RoaW5nIGVsc2UgbWVhbnMg
d2UgaGF2ZSBhbiBpbGwtZm9ybWVkIFByZWRpY3RlZFR5cGUKKyAgICAgICAgICAgICAgICAgICAg
Ly8gcmVtb3ZpbmcgU3BlY09iamVjdE1hc2sgZnJvbSBzb21ldGhpbmcgdGhhdCBvbmx5IGhhcyBh
biBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJlZGljdGlvbiBhbmQgbm90aGluZyBl
bHNlIG1lYW5zIHdlIGhhdmUgYW4gaWxsLWZvcm1lZCBTcGVjdWxhdGVkVHlwZQogICAgICAgICAg
ICAgICAgICAgICAvLyAoc3Ryb25nIHByZWRpY3Qtbm9uZSkuIFRoaXMgc2hvdWxkIGJlIGtpbGxl
ZCBvbmNlIHdlIHJlbW92ZSBhbGwgdHJhY2VzCiAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHN0
YXRpYyAoYWthIHdlYWspIHByZWRpY3Rpb25zLgotICAgICAgICAgICAgICAgICAgICBjaGFuZ2Vk
IHw9IG1lcmdlUHJlZGljdGlvbihQcmVkaWN0U3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKGNoaWxkICYgUHJlZGljdE9iamVjdE1hc2spIHsKKyAgICAgICAgICAgICAgICAgICAg
Y2hhbmdlZCB8PSBtZXJnZVByZWRpY3Rpb24oU3BlY1N0cmluZyk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChjaGlsZCAmIFNwZWNPYmplY3RNYXNrKSB7CiAgICAgICAgICAgICAgICAgICAg
IC8vIE9iamVjdHMgZ2V0IHR1cm5lZCBpbnRvIHN0cmluZ3MuIFNvIGlmIHRoZSBpbnB1dCBoYXMg
aGludHMgb2Ygb2JqZWN0bmVzcywKICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG91dHB1dCB3
aWxsIGhhdmUgaGluc3RzIG9mIHN0cmluZ2luZXNzLgogICAgICAgICAgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1lcmdlUHJlZGljdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlUHJl
ZGljdGlvbnMoY2hpbGQgJiB+UHJlZGljdE9iamVjdE1hc2ssIFByZWRpY3RTdHJpbmcpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG1lcmdlU3BlY3VsYXRpb25zKGNoaWxkICYgflNwZWNPYmpl
Y3RNYXNrLCBTcGVjU3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWQgfD0gbWVyZ2VQcmVkaWN0aW9uKGNoaWxkKTsKICAgICAgICAgICAg
IH0KQEAgLTU4MywyMSArNTgzLDIxIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgICAg
IAogICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246IHsKLSAgICAgICAgICAgIGNoYW5nZWQg
fD0gc2V0UHJlZGljdGlvbihQcmVkaWN0T2JqZWN0T3RoZXIpOworICAgICAgICAgICAgY2hhbmdl
ZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNPYmplY3RPdGhlcik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ3JlYXRlQXJndW1lbnRzOiB7
CiAgICAgICAgICAgICAvLyBBdCB0aGlzIHN0YWdlIHdlIGRvbid0IHRyeSB0byBwcmVkaWN0IHdo
ZXRoZXIgdGhlIGFyZ3VtZW50cyBhcmUgb3VycyBvcgogICAgICAgICAgICAgLy8gc29tZW9uZSBl
bHNlJ3MuIFdlIGNvdWxkLCBidXQgd2UgZG9uJ3QsIHlldC4KLSAgICAgICAgICAgIGNoYW5nZWQg
fD0gc2V0UHJlZGljdGlvbihQcmVkaWN0QXJndW1lbnRzKTsKKyAgICAgICAgICAgIGNoYW5nZWQg
fD0gc2V0UHJlZGljdGlvbihTcGVjQXJndW1lbnRzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICAgICAg
Y2FzZSBOZXdGdW5jdGlvbk5vQ2hlY2s6CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb25FeHByZXNz
aW9uOiB7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24oUHJlZGljdEZ1bmN0
aW9uKTsKKyAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVjRnVuY3Rpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNjg5LDcg
KzY4OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogI2lmIERGR19FTkFCTEUoREVCVUdfUFJP
UEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgZGF0YUxvZygiJXNcbiIsIHByZWRpY3Rpb25Ub1N0
cmluZyhtX2dyYXBoW21fY29tcGlsZUluZGV4XS5wcmVkaWN0aW9uKCkpKTsKKyAgICAgICAgZGF0
YUxvZygiJXNcbiIsIHNwZWN1bGF0aW9uVG9TdHJpbmcobV9ncmFwaFttX2NvbXBpbGVJbmRleF0u
cHJlZGljdGlvbigpKSk7CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIG1fY2hhbmdlZCB8PSBj
aGFuZ2VkOwpAQCAtNzg0LDEyICs3ODQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNhc2Ug
VmFsdWVBZGQ6CiAgICAgICAgICAgICBjYXNlIEFyaXRoQWRkOgogICAgICAgICAgICAgY2FzZSBB
cml0aFN1YjogewotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAgICAg
ICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVk
aWN0aW9uKCk7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBtX2dyYXBo
W25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBpc051
bWJlclByZWRpY3Rpb24ocmlnaHQpCisgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3BlY3Vs
YXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKICAgICAgICAgICAgICAg
ICAgICAgJiYgIW1fZ3JhcGguYWRkU2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlKSkKICAgICAg
ICAgICAgICAgICAgICAgYmFsbG90ID0gVmFyaWFibGVBY2Nlc3NEYXRhOjpWb3RlRG91YmxlOwog
ICAgICAgICAgICAgICAgIGVsc2UKQEAgLTgwMSwxMiArODAxLDEyIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEFyaXRoTXVsOiB7
Ci0gICAgICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9
IG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIGxlZnQgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKTsK
KyAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSByaWdodCA9IG1fZ3JhcGhbbm9kZS5jaGls
ZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YTo6QmFsbG90IGJhbGxvdDsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBpZiAoaXNOdW1iZXJQcmVkaWN0aW9uKGxlZnQpICYmIGlzTnVtYmVyUHJlZGlj
dGlvbihyaWdodCkKKyAgICAgICAgICAgICAgICBpZiAoaXNOdW1iZXJTcGVjdWxhdGlvbihsZWZ0
KSAmJiBpc051bWJlclNwZWN1bGF0aW9uKHJpZ2h0KQogICAgICAgICAgICAgICAgICAgICAmJiAh
bV9ncmFwaC5tdWxTaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG5vZGUpKQogICAgICAgICAgICAgICAg
ICAgICBiYWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVEb3VibGU7CiAgICAgICAgICAg
ICAgICAgZWxzZQpAQCAtODIxLDEyICs4MjEsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNh
c2UgQXJpdGhNYXg6CiAgICAgICAgICAgICBjYXNlIEFyaXRoTW9kOgogICAgICAgICAgICAgY2Fz
ZSBBcml0aERpdjogewotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgbGVmdCA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAgICAgICAgICAgICAgIFByZWRpY3Rl
ZFR5cGUgcmlnaHQgPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBsZWZ0ID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5w
cmVkaWN0aW9uKCk7CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcmlnaHQgPSBtX2dy
YXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGE6OkJhbGxvdCBiYWxsb3Q7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyUHJlZGljdGlvbihsZWZ0KSAmJiBp
c051bWJlclByZWRpY3Rpb24ocmlnaHQpCisgICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyU3Bl
Y3VsYXRpb24obGVmdCkgJiYgaXNOdW1iZXJTcGVjdWxhdGlvbihyaWdodCkKICAgICAgICAgICAg
ICAgICAgICAgJiYgIShOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnRlZ2VyKG1fZ3JhcGhbbm9kZS5j
aGlsZDEoKV0sIG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0pCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgJiYgbm9kZS5jYW5TcGVjdWxhdGVJbnRlZ2VyKCkpKQogICAgICAgICAgICAgICAgICAgICBi
YWxsb3QgPSBWYXJpYWJsZUFjY2Vzc0RhdGE6OlZvdGVEb3VibGU7CkBAIC04NTQsMTAgKzg1NCwx
MCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgY2FzZSBTZXRMb2NhbDogewotICAgICAgICAgICAgICAgIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpOwotICAg
ICAgICAgICAgICAgIGlmIChpc0RvdWJsZVByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAg
ICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEo
KV0ucHJlZGljdGlvbigpOworICAgICAgICAgICAgICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQogICAgICAgICAgICAgICAgICAgICBub2RlLnZhcmlhYmxlQWNjZXNzRGF0
YSgpLT52b3RlKFZhcmlhYmxlQWNjZXNzRGF0YTo6Vm90ZURvdWJsZSk7Ci0gICAgICAgICAgICAg
ICAgZWxzZSBpZiAoIWlzTnVtYmVyUHJlZGljdGlvbihwcmVkaWN0aW9uKSB8fCBpc0ludDMyUHJl
ZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNOdW1iZXJT
cGVjdWxhdGlvbihwcmVkaWN0aW9uKSB8fCBpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikp
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPnZvdGUoVmFy
aWFibGVBY2Nlc3NEYXRhOjpWb3RlVmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVJbnRJCiAgICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIAotICAgIFByZWRpY3Rl
ZFR5cGUgdHlwZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlSW5kZXgpLm1fdHlwZTsKKyAgICBTcGVj
dWxhdGVkVHlwZSB0eXBlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGVJbmRleCkubV90eXBlOwogICAg
IE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFs
UmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBp
bmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwpAQCAtMTA3Myw3ICsxMDcz
LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50SQogICAgICAgICBB
U1NFUlRfVU5VU0VEKHNwaWxsRm9ybWF0LCAoc3BpbGxGb3JtYXQgJiBEYXRhRm9ybWF0SlMpIHx8
IHNwaWxsRm9ybWF0ID09IERhdGFGb3JtYXRJbnRlZ2VyKTsKIAogICAgICAgICAvLyBJZiB3ZSBr
bm93IHRoaXMgd2FzIHNwaWxsZWQgYXMgYW4gaW50ZWdlciB3ZSBjYW4gZmlsbCB3aXRob3V0IGNo
ZWNraW5nLgotICAgICAgICBpZiAoIWlzSW50MzJQcmVkaWN0aW9uKHR5cGUpKQorICAgICAgICBp
ZiAoIWlzSW50MzJTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkludDMyVGFnKSkpOwogCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgp
OwpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlSW50SQogICAgICAgICBHUFJSZWcgcGF5bG9hZEdQUiA9IGluZm8ucGF5bG9hZEdQUigpOwog
ICAgICAgICBtX2dwcnMubG9jayh0YWdHUFIpOwogICAgICAgICBtX2dwcnMubG9jayhwYXlsb2Fk
R1BSKTsKLSAgICAgICAgaWYgKCFpc0ludDMyUHJlZGljdGlvbih0eXBlKSkKKyAgICAgICAgaWYg
KCFpc0ludDMyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgbV9ncHJzLnVubG9jayh0YWdHUFIpOwog
ICAgICAgICBtX2dwcnMucmVsZWFzZSh0YWdHUFIpOwpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgRlBS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YgogICAgICAgICByZXR1cm4gZnBy
QWxsb2NhdGUoKTsKICAgICB9CiAKLSAgICBQcmVkaWN0ZWRUeXBlIHR5cGUgPSBtX3N0YXRlLmZv
ck5vZGUobm9kZUluZGV4KS5tX3R5cGU7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fc3Rh
dGUuZm9yTm9kZShub2RlSW5kZXgpLm1fdHlwZTsKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUlu
ZGV4KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFs
UmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9b
dmlydHVhbFJlZ2lzdGVyXTsKQEAgLTExODUsNyArMTE4NSw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKIAogICAgICAgICAgICAgaWYgKHNwaWxsRm9ybWF0ICE9
IERhdGFGb3JtYXRKU0ludGVnZXIgJiYgc3BpbGxGb3JtYXQgIT0gRGF0YUZvcm1hdEludGVnZXIp
IHsKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVh
bFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFpc051bWJlclByZWRpY3Rpb24odHlwZSkpCisgICAgICAgICAgICAgICAgaWYg
KCFpc051bWJlclNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Io
dmlydHVhbFJlZ2lzdGVyKSksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogICAgICAgICAgICAgICAgIG1faml0
LmxvYWREb3VibGUoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgZnBy
KTsKICAgICAgICAgICAgICAgICBoYXNVbmJveGVkRG91YmxlID0gbV9qaXQuanVtcCgpOwpAQCAt
MTIxOSw3ICsxMjE5LDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91
YgogICAgICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRKU0ludGVn
ZXIpIHsKICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6OkVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOwot
ICAgICAgICAgICAgaWYgKCFpc051bWJlclByZWRpY3Rpb24odHlwZSkpCisgICAgICAgICAgICBp
ZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlSW5k
ZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKICAgICAgICAgICAgIHVuYm94RG91
YmxlKHRhZ0dQUiwgcGF5bG9hZEdQUiwgZnByLCBzY3JhdGNoLmZwcigpKTsKICAgICAgICAgICAg
IGhhc1VuYm94ZWREb3VibGUgPSBtX2ppdC5qdW1wKCk7CkBAIC0xMjgwLDcgKzEyODAsNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgICAgIHJldHVybiBh
bGxvY2F0ZSgpOwogICAgIH0KIAotICAgIFByZWRpY3RlZFR5cGUgdHlwZSA9IG1fc3RhdGUuZm9y
Tm9kZShub2RlSW5kZXgpLm1fdHlwZTsKKyAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV9zdGF0
ZS5mb3JOb2RlKG5vZGVJbmRleCkubV90eXBlOwogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5k
ZXgpOwogICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxS
ZWdpc3RlcigpOwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2
aXJ0dWFsUmVnaXN0ZXJdOwpAQCAtMTI5OSw3ICsxMjk5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKChpbmZv
LnNwaWxsRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpIHx8IGluZm8uc3BpbGxGb3JtYXQoKSA9PSBE
YXRhRm9ybWF0Q2VsbCk7Ci0gICAgICAgIGlmICghaXNDZWxsUHJlZGljdGlvbih0eXBlKSkKKyAg
ICAgICAgaWYgKCFpc0NlbGxTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0
ZSgpOwogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVh
bFJlZ2lzdGVyKSwgZ3ByKTsKQEAgLTEzMjAsNyArMTMyMCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICAgICAgR1BSUmVnIHBheWxvYWRHUFIgPSBpbmZv
LnBheWxvYWRHUFIoKTsKICAgICAgICAgbV9ncHJzLmxvY2sodGFnR1BSKTsKICAgICAgICAgbV9n
cHJzLmxvY2socGF5bG9hZEdQUik7Ci0gICAgICAgIGlmICghaXNDZWxsUHJlZGljdGlvbih0eXBl
KSkKKyAgICAgICAgaWYgKCFpc0NlbGxTcGVjdWxhdGlvbih0eXBlKSkKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwg
bm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQ
UiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgIG1fZ3Bycy51bmxv
Y2sodGFnR1BSKTsKICAgICAgICAgbV9ncHJzLnJlbGVhc2UodGFnR1BSKTsKQEAgLTEzNDksNyAr
MTM0OSw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZGF0YUxvZygiU3BlY0Jvb2xAJWQgICAiLCBu
b2RlSW5kZXgpOwogI2VuZGlmCi0gICAgUHJlZGljdGVkVHlwZSB0eXBlID0gbV9zdGF0ZS5mb3JO
b2RlKG5vZGVJbmRleCkubV90eXBlOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3N0YXRl
LmZvck5vZGUobm9kZUluZGV4KS5tX3R5cGU7CiAgICAgTm9kZSYgbm9kZSA9IG1faml0LmdyYXBo
KClbbm9kZUluZGV4XTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9k
ZS52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJh
dGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXTsKQEAgLTEzNzQsNyArMTM3NCw3IEBAIEdQUlJlZyBT
cGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKIAogICAgICAgICBBU1NFUlQoKGluZm8u
c3BpbGxGb3JtYXQoKSAmIERhdGFGb3JtYXRKUykgfHwgaW5mby5zcGlsbEZvcm1hdCgpID09IERh
dGFGb3JtYXRCb29sZWFuKTsKIAotICAgICAgICBpZiAoIWlzQm9vbGVhblByZWRpY3Rpb24odHlw
ZSkpCisgICAgICAgIGlmICghaXNCb29sZWFuU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOwogCiAgICAgICAgIEdQUlJl
ZyBncHIgPSBhbGxvY2F0ZSgpOwpAQCAtMTM5Niw3ICsxMzk2LDcgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogICAgICAgICBHUFJSZWcgcGF5bG9hZEdQUiA9IGlu
Zm8ucGF5bG9hZEdQUigpOwogICAgICAgICBtX2dwcnMubG9jayh0YWdHUFIpOwogICAgICAgICBt
X2dwcnMubG9jayhwYXlsb2FkR1BSKTsKLSAgICAgICAgaWYgKCFpc0Jvb2xlYW5QcmVkaWN0aW9u
KHR5cGUpKQorICAgICAgICBpZiAoIWlzQm9vbGVhblNwZWN1bGF0aW9uKHR5cGUpKQogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxv
YWRHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKIAogICAgICAg
ICBtX2dwcnMudW5sb2NrKHRhZ0dQUik7CkBAIC0xNDM5LDE2ICsxNDM5LDE2IEBAIEpJVENvbXBp
bGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXIKICAgICByZXR1cm4gbm90TnVtYmVyOwog
fQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9k
ZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByZWRpY3Rpb25DaGVja2VyIHByZWRpY3Rp
b25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2Rl
JiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgU3BlY3VsYXRlZFR5cGVDaGVja2Vy
IHNwZWN1bGF0ZWRUeXBlQ2hlY2tlcikKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEo
dGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AyKHRoaXMs
IG5vZGUuY2hpbGQyKCkpOwogICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7CiAgICAgR1BS
UmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsKICAgICAKLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICBpZiAoIXNwZWN1bGF0
ZWRUeXBlQ2hlY2tlcihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7
Ci0gICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQyKCkp
Lm1fdHlwZSkpCisgICAgaWYgKCFzcGVjdWxhdGVkVHlwZUNoZWNrZXIobV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5jaGlsZDIoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIAogICAgIEdQUlRlbXBvcmFyeSByZXN1
bHRQYXlsb2FkKHRoaXMsIG9wMik7CkBAIC0xNDY2LDcgKzE0NjYsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSgKICAgICBFZGdlIGxlZnRDaGlsZCwgRWRn
ZSByaWdodENoaWxkLAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcmVkaWN0aW9u
Q2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCisgICAgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8s
IFNwZWN1bGF0ZWRUeXBlQ2hlY2tlciBzcGVjdWxhdGVkVHlwZUNoZWNrZXIpCiB7CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgSlNWYWx1ZU9wZXJh
bmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQpOwpAQCAtMTQ3Nyw3ICsxNDc3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIEdQUlJlZyBvcDJQYXlsb2FkR1BS
ID0gb3AyLnBheWxvYWRHUFIoKTsKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdwcigp
OwogICAgIAotICAgIGlmICghcHJlZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9yTm9kZShsZWZ0Q2hp
bGQpLm1fdHlwZSkpIHsKKyAgICBpZiAoIXNwZWN1bGF0ZWRUeXBlQ2hlY2tlcihtX3N0YXRlLmZv
ck5vZGUobGVmdENoaWxkKS5tX3R5cGUpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAg
ICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBs
ZWZ0Q2hpbGQuaW5kZXgoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTE0OTMs
OSArMTQ5Myw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAg
ICAKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11
c3QgYmUgYSBjZWxsLiBJZiB0aGUgQ0ZBIGNhbiB0ZWxsIHVzIHRoYXQgdGhlCiAgICAgLy8gcHJv
b2YsIHdoZW4gZmlsdGVyZWQgb24gY2VsbCwgZGVtb25zdHJhdGVzIHRoYXQgd2UgaGF2ZSBhbiBv
YmplY3Qgb2YgdGhlIGRlc2lyZWQgdHlwZQotICAgIC8vIChwcmVkaWN0aW9uQ2hlY2soKSB3aWxs
IHRlc3QgZm9yIEZpbmFsT2JqZWN0IG9yIEFycmF5LCBjdXJyZW50bHkpLCB0aGVuIHdlIGNhbiBz
a2lwIHRoZQorICAgIC8vIChzcGVjdWxhdGlvbkNoZWNrKCkgd2lsbCB0ZXN0IGZvciBGaW5hbE9i
amVjdCBvciBBcnJheSwgY3VycmVudGx5KSwgdGhlbiB3ZSBjYW4gc2tpcCB0aGUKICAgICAvLyBz
cGVjdWxhdGlvbi4KLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUocmln
aHRDaGlsZCkubV90eXBlICYgUHJlZGljdENlbGwpKSB7CisgICAgaWYgKCFzcGVjdWxhdGVkVHlw
ZUNoZWNrZXIobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIFNwZWNDZWxsKSkg
ewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1
ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZC5pbmRleCgpLAogICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMTUxNCw3ICsxNTE0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIAogICAgIC8vIFdlIGtub3cgdGhh
dCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBub3QgYmUgYSBjZWxsLiBDaGVj
ayBpZiB0aGF0IGlzIGVub3VnaCB0bwogICAgIC8vIHByb3ZlIHRoYXQgaXQgaXMgZWl0aGVyIG51
bGwgb3IgdW5kZWZpbmVkLgotICAgIGlmICghaXNPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JO
b2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIH5QcmVkaWN0Q2VsbCkpIHsKKyAgICBpZiAoIWlzT3Ro
ZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUocmlnaHRDaGlsZCkubV90eXBlICYgflNwZWND
ZWxsKSkgewogICAgICAgICBtX2ppdC5tb3ZlKG9wMlRhZ0dQUiwgcmVzdWx0R1BSKTsKICAgICAg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CiAgICAgICAgIApAQCAt
MTUzNyw3ICsxNTM3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2Jq
ZQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RUb09iamVjdE9y
T3RoZXJFcXVhbGl0eSgKICAgICBFZGdlIGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxkLCBOb2Rl
SW5kZXggYnJhbmNoTm9kZUluZGV4LAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQ
cmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCisgICAgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8sIFNwZWN1bGF0ZWRUeXBlQ2hlY2tlciBzcGVjdWxhdGVkVHlwZUNoZWNrZXIpCiB7
CiAgICAgTm9kZSYgYnJhbmNoTm9kZSA9IGF0KGJyYW5jaE5vZGVJbmRleCk7CiAgICAgQmxvY2tJ
bmRleCB0YWtlbiA9IGJyYW5jaE5vZGUudGFrZW5CbG9ja0luZGV4KCk7CkBAIC0xNTUyLDcgKzE1
NTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgR1BS
UmVnIG9wMlBheWxvYWRHUFIgPSBvcDIucGF5bG9hZEdQUigpOwogICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgCi0gICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0
ZS5mb3JOb2RlKGxlZnRDaGlsZCkubV90eXBlKSkgeworICAgIGlmICghc3BlY3VsYXRlZFR5cGVD
aGVja2VyKG1fc3RhdGUuZm9yTm9kZShsZWZ0Q2hpbGQpLm1fdHlwZSkpIHsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjaygKICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZC5pbmRleCgpLAogICAgICAgICAgICAgbV9qaXQuYnJh
bmNoUHRyKApAQCAtMTU2OCw5ICsxNTY4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVBlZXBIb2xlT2JqZQogICAgIAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFu
Y2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIElmIHRoZSBDRkEgY2FuIHRlbGwgdXMgdGhh
dCB0aGUKICAgICAvLyBwcm9vZiwgd2hlbiBmaWx0ZXJlZCBvbiBjZWxsLCBkZW1vbnN0cmF0ZXMg
dGhhdCB3ZSBoYXZlIGFuIG9iamVjdCBvZiB0aGUgZGVzaXJlZCB0eXBlCi0gICAgLy8gKHByZWRp
Y3Rpb25DaGVjaygpIHdpbGwgdGVzdCBmb3IgRmluYWxPYmplY3Qgb3IgQXJyYXksIGN1cnJlbnRs
eSksIHRoZW4gd2UgY2FuIHNraXAgdGhlCisgICAgLy8gKHNwZWN1bGF0aW9uQ2hlY2soKSB3aWxs
IHRlc3QgZm9yIEZpbmFsT2JqZWN0IG9yIEFycmF5LCBjdXJyZW50bHkpLCB0aGVuIHdlIGNhbiBz
a2lwIHRoZQogICAgIC8vIHNwZWN1bGF0aW9uLgotICAgIGlmICghcHJlZGljdGlvbkNoZWNrKG1f
c3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiBQcmVkaWN0Q2VsbCkpIHsKKyAgICBp
ZiAoIXNwZWN1bGF0ZWRUeXBlQ2hlY2tlcihtX3N0YXRlLmZvck5vZGUocmlnaHRDaGlsZCkubV90
eXBlICYgU3BlY0NlbGwpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAg
ICBCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENo
aWxkLmluZGV4KCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0xNTg2LDcgKzE1
ODYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgCiAg
ICAgLy8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IG5v
dCBiZSBhIGNlbGwuIENoZWNrIGlmIHRoYXQgaXMgZW5vdWdoIHRvCiAgICAgLy8gcHJvdmUgdGhh
dCBpdCBpcyBlaXRoZXIgbnVsbCBvciB1bmRlZmluZWQuCi0gICAgaWYgKGlzT3RoZXJQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiB+UHJlZGljdENlbGwpKQor
ICAgIGlmIChpc090aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1f
dHlwZSAmIH5TcGVjQ2VsbCkpCiAgICAgICAgIHJpZ2h0Tm90Q2VsbC5saW5rKCZtX2ppdCk7CiAg
ICAgZWxzZSB7CiAgICAgICAgIGp1bXAobm90VGFrZW4sIEZvcmNlSnVtcCk7CkBAIC0xNjkyLDEx
ICsxNjkyLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90KE4KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3Bl
Y3VsYXRlRmluYWxPYmplY3RPck90aGVyKCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVjdE9yT3Ro
ZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0Zp
bmFsT2JqZWN0T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpOworICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5j
aGlsZDEoKSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyU3Bl
Y3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVBcnJheU9yT3RoZXIoKSkgewotICAgICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3Qobm9kZS5jaGlsZDEoKSwgJkpTQXJyYXk6OnNfaW5mbywgIWlzQXJyYXlPck90aGVyUHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNv
bXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCAmSlNBcnJheTo6c19p
bmZvLCAhaXNBcnJheU9yT3RoZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5vZGUu
Y2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgewpAQCAtMTc4Nyw5ICsxNzg3LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlJiBubwogCiAgICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7Ci0gICAgICAgIGVtaXRPYmpl
Y3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgJkpTRmluYWxP
YmplY3Q6OnNfaW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGVtaXRPYmplY3RPck90aGVy
QnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgJkpTRmluYWxPYmplY3Q6OnNf
aW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKLSAgICAgICAgZW1pdE9iamVjdE9yT3Ro
ZXJCcmFuY2gobm9kZS5jaGlsZDEoKSwgdGFrZW4sIG5vdFRha2VuLCAmSlNBcnJheTo6c19pbmZv
LCAhaXNBcnJheU9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKTsKKyAgICAgICAgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gobm9kZS5jaGlsZDEo
KSwgdGFrZW4sIG5vdFRha2VuLCAmSlNBcnJheTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJTcGVj
dWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgfSBl
bHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSkgewogICAg
ICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKSB7CiAg
ICAgICAgICAgICBib29sIGludmVydCA9IGZhbHNlOwpAQCAtMTg2NCwxMSArMTg2NCwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
CiAgICAgY2FzZSBHZXRMb2NhbDogewotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24g
PSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0aW9uKCk7CisgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5wcmVkaWN0
aW9uKCk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gYmxvY2soKS0+dmFsdWVzQXRI
ZWFkLm9wZXJhbmQobm9kZS5sb2NhbCgpKTsKIAogICAgICAgICAvLyBJZiB3ZSBoYXZlIG5vIHBy
ZWRpY3Rpb24gZm9yIHRoaXMgbG9jYWwsIHRoZW4gZG9uJ3QgYXR0ZW1wdCB0byBjb21waWxlLgot
ICAgICAgICBpZiAocHJlZGljdGlvbiA9PSBQcmVkaWN0Tm9uZSkgeworICAgICAgICBpZiAocHJl
ZGljdGlvbiA9PSBTcGVjTm9uZSkgewogICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVF
eGVjdXRpb24oSW5hZGVxdWF0ZUNvdmVyYWdlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE4OTAsNyArMTg5MCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rp
b24ocHJlZGljdGlvbikpIHsKKyAgICAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJl
ZGljdGlvbikpIHsKICAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwog
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2Rl
LmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOwogCkBAIC0xOTAyLDcgKzE5MDIsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVk
aWN0aW9uKSkgeworICAgICAgICAgICAgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkgewogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwo
KSksIHJlc3VsdC5ncHIoKSk7CiAKQEAgLTE5MTQsNyArMTkxNCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlv
bikpIHsKKyAgICAgICAgICAgIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0aW9uKSkg
ewogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSks
IHJlc3VsdC5ncHIoKSk7CiAKQEAgLTE5MzksNyArMTkzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgbV9ncHJzLnJldGFpbih0YWcuZ3ByKCks
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckpTKTsKIAogICAgICAgICBEYXRhRm9ybWF0IGZv
cm1hdDsKLSAgICAgICAgaWYgKGlzQ2VsbFByZWRpY3Rpb24odmFsdWUubV90eXBlKQorICAgICAg
ICBpZiAoaXNDZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBlKQogICAgICAgICAgICAgJiYgIW5v
ZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAgIGZvcm1h
dCA9IERhdGFGb3JtYXRKU0NlbGw7CiAgICAgICAgIGVsc2UKQEAgLTIwMDUsNyArMjAwNSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAg
ICB2YWx1ZVNvdXJjZVJlZmVyZW5jZUZvck9wZXJhbmQobm9kZS5sb2NhbCgpKSA9IFZhbHVlU291
cmNlKERvdWJsZUluUmVnaXN0ZXJGaWxlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG5vZGUu
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7CisgICAgICAg
ICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gbm9kZS52YXJpYWJsZUFjY2Vzc0Rh
dGEoKS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKTsKICAgICAgICAgICAgIGlmIChtX2dlbmVy
YXRpb25JbmZvW2F0KG5vZGUuY2hpbGQxKCkpLnZpcnR1YWxSZWdpc3RlcigpXS5yZWdpc3RlckZv
cm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpIHsKICAgICAgICAgICAgICAgICBEb3VibGVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlRG91YmxlKHZhbHVlLmZwcigpLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2Fs
KCkpKTsKQEAgLTIwMTMsMjQgKzIwMTMsMjQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3Bl
cmFuZChub2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoRG91YmxlSW5SZWdpc3RlckZpbGUpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGlz
SW50MzJQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgU3BlY3VsYXRl
SW50ZWdlck9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICAg
ICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9k
ZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwog
ICAgICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3BlcmFuZChub2RlLmxvY2Fs
KCkpID0gVmFsdWVTb3VyY2UoSW50MzJJblJlZ2lzdGVyRmlsZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNBcnJheVByZWRpY3Rpb24o
cHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChpc0FycmF5U3BlY3VsYXRpb24ocHJl
ZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxs
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQUlJlZyBjZWxsR1BSID0g
Y2VsbC5ncHIoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICAgICAgICAgIGlmICgh
aXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
KQogICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxs
R1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0
cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKICAgICAg
ICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICAgICAgdmFs
dWVTb3VyY2VSZWZlcmVuY2VGb3JPcGVyYW5kKG5vZGUubG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShD
ZWxsSW5SZWdpc3RlckZpbGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsK
KyAgICAgICAgICAgIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewog
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUuZ3ByKCksIEpJ
VENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKQEAgLTIxMjgsNyArMjEyOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
Q2hlY2tOdW1iZXI6IHsKLSAgICAgICAgaWYgKCFpc051bWJlclByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgaWYgKCFpc051bWJlclNw
ZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CiAgICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIG9wMS50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMy
VGFnKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApAQCAtMjMzMiw3ICsyMzMyLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIo
KSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVBcnJheVByZWRpY3Rp
b24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgeworICAgICAgICBpZiAoIWF0KG5v
ZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAhaXNBY3Rpb25hYmxlQXJy
YXlTcGVjdWxhdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7CiAgICAgICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOyAvLyBT
YXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9iYWJseSBiZSByaWdodC4K
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkp
OwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwpAQCAtMjM1NSw3ICsy
MzU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSku
cHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSA9PSBTcGVjU3RyaW5nKSB7CiAgICAgICAgICAgICBjb21waWxl
R2V0QnlWYWxPblN0cmluZyhub2RlKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzYzLDYzICsyMzYzLDYzIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7
Ci0gICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFs
RGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBpc0lu
dDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkg
PyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNp
Z25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFy
cmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXpl
b2YoaW50OF90KSwgaXNJbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFy
cmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29t
cGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAg
ICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNj
cmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgaXNJbnQxNkFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVT
cGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7Cisg
ICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0
YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50MTZfdCksIGlzSW50
MTZBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
ID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBT
aWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZUludDMyQXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwg
c2l6ZW9mKGludDMyX3QpLCBpc0ludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5
cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBp
bGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQzMl90KSwgaXNJbnQzMkFycmF5U3BlY3VsYXRp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlU
eXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkp
OwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgp
KSB7Ci0gICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xv
YmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDhfdCks
IGlzVWludDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVj
a3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbklu
dFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBu
b2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6
IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGF0KG5vZGUu
Y2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCkpIHsKLSAgICAgICAg
ICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVp
bnQ4Q2xhbXBlZEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWlu
dDhDbGFtcGVkQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hl
Y2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25J
bnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlw
dG9yKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OENsYW1wZWRBcnJheVNwZWN1bGF0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5
VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJy
YXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQxNkFycmF5KCkpIHsKLSAgICAgICAgICAg
IGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQx
NkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDE2X3QpLCBpc1VpbnQxNkFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlw
ZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRU
eXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSht
X2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2Yo
dWludDE2X3QpLCBpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRB
cnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1f
Y29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7
ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21w
aWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJh
eURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJheVByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJy
YXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRB
cnJheSk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKHVpbnQz
Ml90KSwgaXNVaW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlT
cGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBp
bGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAg
ICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5
RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBpc0Zsb2F0MzJBcnJheVByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlU
eXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOworICAgICAgICAgICAgY29t
cGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMy
QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihmbG9hdCksIGlzRmxvYXQzMkFycmF5U3Bl
Y3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOwogICAgICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAo
YXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKLSAgICAg
ICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEo
KS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwgaXNGbG9h
dDY0QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
ID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsK
KyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2Jh
bERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwg
aXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0No
ZWNrcyk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCkBAIC0yNDQwLDcgKzI0NDAs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgICAg
ICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQorICAgICAgICAgICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5j
aGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVn
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhP
ZmZzZXQoKSkpKTsKICAgICAgICAgfQpAQCAtMjQ2Niw3ICsyNDY2LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAg
ICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKQotICAgICAg
ICAgICAgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24oYXQobm9kZS5jaGls
ZDEoKSkucHJlZGljdGlvbigpKQorICAgICAgICAgICAgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVB
cnJheVNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkKICAgICAgICAg
ICAgIHx8IGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFyZ3VtZW50cygpKSB7CiAg
ICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkp
OyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9iYWJseSBiZSBy
aWdodC4KICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hp
bGQyKCkpOwpAQCAtMjQ4Nyw2MyArMjQ4Nyw2MyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9w
ZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlW
YWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRv
cigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCksIGlz
SW50OEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywg
U2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdw
cigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCksIGlzSW50OEFycmF5U3Bl
Y3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVk
QXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MTZB
cnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1f
aml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJv
cGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgaXNJbnQxNkFycmF5UHJlZGljdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5
cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7
CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2Jh
bERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3By
KCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgaXNJbnQxNkFycmF5U3BlY3VsYXRpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0No
ZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEo
KS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5v
ZGUsIHNpemVvZihpbnQzMl90KSwgaXNJbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBB
bGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBj
b21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJB
cnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVv
ZihpbnQzMl90KSwgaXNJbnQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRB
cnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2Nv
bXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAg
ICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGls
ZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxl
UHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURl
c2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50
OF90KSwgaXNVaW50OEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3Bl
Y0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRv
cigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBp
c1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNr
cywgVW5zaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAK
ICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3Vs
ZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRC
eVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJh
eURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1
aW50OF90KSwgaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlw
ZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSwgQ2xhbXBSb3VuZGluZyk7Cisg
ICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERh
dGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5
LmdwcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhDbGFtcGVkQXJyYXlTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJh
eVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFy
cmF5LCBDbGFtcFJvdW5kaW5nKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgp
KSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmds
b2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5
LmdwcigpLCBub2RlLCBzaXplb2YodWludDE2X3QpLCBpc1VpbnQxNkFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVT
cGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsK
KyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFs
RGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3By
KCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIGlzVWludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVj
Q2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKICAg
ICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsK
LSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFs
RGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3By
KCksIG5vZGUsIHNpemVvZih1aW50MzJfdCksIGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWND
aGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwg
bm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVj
ayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKLSAg
ICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxE
YXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3By
KCksIG5vZGUsIHNpemVvZihmbG9hdCksIGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hl
Y2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcyk7CisgICAgICAgICAgICBjb21waWxlUHV0QnlW
YWxGb3JGbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNj
cmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZmxvYXQp
LCBpc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVj
Q2hlY2tzKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0
NjRBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJy
YXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3By
KCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwgaXNGbG9hdDY0QXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBl
ZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAgICAg
ICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCkt
PmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5v
ZGUsIHNpemVvZihkb3VibGUpLCBpc0Zsb2F0NjRBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6
IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2th
eSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAg
ICAKQEAgLTI1NjgsNyArMjU2OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKIAogICAgICAgICAvLyBDaGVjayB0aGF0IGJhc2UgaXMgYW4gYXJyYXksIGFuZCB0
aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92ZWN0b3IgKDwgbV92ZWN0b3JMZW5n
dGgpLgogICAgICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3RlZCB0aGUgYmFzZSB0byBiZSB0eXBl
IGFycmF5LCB3ZSBjYW4gc2tpcCB0aGUgY2hlY2suCi0gICAgICAgIGlmICghaXNBcnJheVByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgIGlm
ICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KCZKU0FycmF5OjpzX2luZm8pKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsKQEAgLTI2MTQsNyAr
MjYxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBBU1NFUlQoaXNBY3Rp
b25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9u
KCkpKTsKKyAgICAgICAgQVNTRVJUKGlzQWN0aW9uYWJsZU11dGFibGVBcnJheVNwZWN1bGF0aW9u
KGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpOwogICAgICAgICBBU1NFUlQoYXQobm9k
ZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpKTsKIAogICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwpAQCAtMjc2OSw3ICsyNzY5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAK
ICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIsIHZhbHVlVGFnR1BSLCBub2RlLmNoaWxkMigp
LCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc3RvcmFnZUdQUiwgc3RvcmFnZUxlbmd0
aEdQUik7CiAKLSAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsK
ICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
YmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7CkBAIC0yODA3
LDcgKzI4MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKICAgICAgICAgR1BSUmVn
IHN0b3JhZ2VMZW5ndGhHUFIgPSBzdG9yYWdlTGVuZ3RoLmdwcigpOwogICAgICAgICAKLSAgICAg
ICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAg
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJh
eTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7CkBAIC0yOTUzLDcgKzI5NTMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAg
ICBvcDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlICYgfihQcmVkaWN0TnVtYmVyIHwgUHJlZGljdEJvb2xlYW4pKSkg
eworICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlICYg
fihTcGVjTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkgewogICAgICAgICAgICAgbV9qaXQubW92ZShv
cDFUYWdHUFIsIHJlc3VsdFRhZ0dQUik7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxv
YWRHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICB9IGVsc2UgewpAQCAtMzA1OSw3ICsz
MDU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0K
ICAgICAgICAgCiAgICAgY2FzZSBDb252ZXJ0VGhpczogewotICAgICAgICBpZiAoaXNPYmplY3RQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAg
ICAgIGlmIChpc09iamVjdFNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUo
dGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRo
aXMsIHRoaXNWYWx1ZSk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHRoaXNWYWx1ZS5ncHIoKSwg
cmVzdWx0LmdwcigpKTsKQEAgLTMwNjcsNyArMzA2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBpZiAoaXNPdGhlclByZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpKSkgeworICAgICAgICBpZiAoaXNPdGhlclNwZWN1bGF0aW9uKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHRoaXNW
YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3Jh
dGNoKHRoaXMpOwogICAgICAgICAgICAgCkBAIC0zMDg2LDExICszMDg2LDExIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoaXNPYmplY3RQcmVkaWN0aW9uKGF0KG5vZGUu
Y2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgaWYgKGlzT2JqZWN0U3BlY3VsYXRp
b24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAgU3BlY3Vs
YXRlQ2VsbE9wZXJhbmQgdGhpc1ZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAg
ICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKCFpc09iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBpZiAoIWlzT2JqZWN0U3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbCh0aGlz
VmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVx
dWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZv
T2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykp
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB0
aGlzVmFsdWUpOwpAQCAtMzIyMCw3ICszMjIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGlmIChpc0NlbGxQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rp
b24oKSkpIHsKKyAgICAgICAgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkp
LnByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0VGFn
KHRoaXMsIGJhc2UpOwogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhp
cyk7CkBAIC0zMjc0LDcgKzMyNzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAg
ICAgaWYgKGlzQ2VsbFByZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkg
eworICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGlj
dGlvbigpKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIg
PSBiYXNlLmdwcigpOwpAQCAtMzMyMyw3ICszMzIzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7
CiAgICAgICAgIAotICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQ
UiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkp
OwogICAgICAgICAKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKQEAgLTMzNTAs
NyArMzM1MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0
R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFpc1N0cmluZ1ByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgIGlm
ICghaXNTdHJpbmdTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWQzMihN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHJlc3VsdEdQUik7CkBAIC0zMzYwLDM5ICszMzYwLDM5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIEdldEludDhBcnJheUxl
bmd0aDogewotICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxE
YXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50OEFycmF5UHJlZGljdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBp
bGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3Jp
cHRvcigpLCBub2RlLCAhaXNJbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdl
dEludDE2QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNJbnQx
NkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7
CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+
aW50MTZBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50MTZBcnJheVNwZWN1bGF0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgR2V0SW50MzJBcnJheUxlbmd0aDogewotICAgICAgICBjb21waWxlR2V0
VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlEZXNjcmlwdG9y
KCksIG5vZGUsICFpc0ludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9q
aXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNJbnQzMkFy
cmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRVaW50OEFycmF5TGVuZ3RoOiB7Ci0g
ICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+dWlu
dDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzVWludDhBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlR2V0VHlw
ZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCks
IG5vZGUsICFpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdldFVpbnQ4
Q2xhbXBlZEFycmF5TGVuZ3RoOiB7Ci0gICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3Ro
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUs
ICFpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0
Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc1Vp
bnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRVaW50MTZBcnJh
eUxlbmd0aDogewotICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50MTZBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAg
ICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFy
cmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50MTZBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgR2V0VWludDMyQXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5cGVk
QXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKSwg
bm9kZSwgIWlzVWludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzVWludDMyQXJy
YXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdldEZsb2F0MzJBcnJheUxlbmd0aDogewot
ICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmZs
b2F0MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzRmxvYXQzMkFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVH
ZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3Jp
cHRvcigpLCBub2RlLCAhaXNGbG9hdDMyQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IEdldEZsb2F0NjRBcnJheUxlbmd0aDogewotICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxl
bmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwg
IWlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2Jh
bERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNGbG9hdDY0QXJyYXlT
cGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzQwNiw3ICszNDA2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6IHsKICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSYgdmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSk7CiAgICAgICAgIGlmICh2YWx1ZS5tX3N0cnVjdHVyZS5pc1N1YnNldE9mKG5vZGUuc3RydWN0
dXJlU2V0KCkpCi0gICAgICAgICAgICAmJiBpc0NlbGxQcmVkaWN0aW9uKHZhbHVlLm1fdHlwZSkp
IHsKKyAgICAgICAgICAgICYmIGlzQ2VsbFNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpIHsKICAg
ICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC0zODY0LDcgKzM4NjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENoZWNrQXJndW1lbnRz
Tm90Q3JlYXRlZDogewotICAgICAgICBBU1NFUlQoIWlzRW1wdHlQcmVkaWN0aW9uKAorICAgICAg
ICBBU1NFUlQoIWlzRW1wdHlTcGVjdWxhdGlvbigKICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFi
bGVzKCkub3BlcmFuZCgKICAgICAgICAgICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1Jl
Z2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpLm1fdHlwZSkpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKApAQCAtMzg4MSw3ICszODgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAg
ICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKLSAgICAgICAgaWYg
KCFpc0VtcHR5UHJlZGljdGlvbigKKyAgICAgICAgaWYgKCFpc0VtcHR5U3BlY3VsYXRpb24oCiAg
ICAgICAgICAgICAgICAgbV9zdGF0ZS52YXJpYWJsZXMoKS5vcGVyYW5kKAogICAgICAgICAgICAg
ICAgICAgICBtX2ppdC5ncmFwaCgpLmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdp
bikpLm1fdHlwZSkpIHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCkBAIC0zOTQyLDcg
KzM5NDIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAg
ICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgCi0gICAg
ICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24oCisgICAgICAgIGlmICghaXNFbXB0eVNwZWN1bGF0
aW9uKAogICAgICAgICAgICAgICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNv
ZGVPcmlnaW4pKS5tX3R5cGUpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJCiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQogICAgIGRhdGFMb2coIlNwZWNJbnRAJWQgICAiLCBub2RlSW5kZXgpOwog
I2VuZGlmCi0gICAgUHJlZGljdGVkVHlwZSB0eXBlID0gbV9zdGF0ZS5mb3JOb2RlKG5vZGVJbmRl
eCkubV90eXBlOworICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZUluZGV4KS5tX3R5cGU7CiAgICAgTm9kZSYgbm9kZSA9IGF0KG5vZGVJbmRleCk7CiAgICAgVmly
dHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVhbFJlZ2lzdGVyKCk7CiAg
ICAgR2VuZXJhdGlvbkluZm8mIGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW3ZpcnR1YWxSZWdpc3Rl
cl07CkBAIC0xMDg2LDcgKzEwODYsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVJbnRJCiAgICAgICAgIC8vIENoZWNrIHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyLgogICAg
ICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsK
LSAgICAgICAgaWYgKCFpc0ludDMyUHJlZGljdGlvbih0eXBlKSkKKyAgICAgICAgaWYgKCFpc0lu
dDMyU3BlY3VsYXRpb24odHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKGdwciksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpCZWxvdywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAg
ICAgICAgaW5mby5maWxsSlNWYWx1ZShncHIsIERhdGFGb3JtYXRKU0ludGVnZXIpOwogICAgICAg
ICAvLyBJZiAhc3RyaWN0IHdlJ3JlIGRvbmUsIHJldHVybi4KQEAgLTExNzUsNyArMTE3NSw3IEBA
IEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWIKICNpZiBERkdfRU5BQkxF
KERFQlVHX1ZFUkJPU0UpCiAgICAgZGF0YUxvZygiU3BlY0RvdWJsZUAlZCAgICIsIG5vZGVJbmRl
eCk7CiAjZW5kaWYKLSAgICBQcmVkaWN0ZWRUeXBlIHR5cGUgPSBtX3N0YXRlLmZvck5vZGUobm9k
ZUluZGV4KS5tX3R5cGU7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fc3RhdGUuZm9yTm9k
ZShub2RlSW5kZXgpLm1fdHlwZTsKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIo
KTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJl
Z2lzdGVyXTsKQEAgLTEyNjAsNyArMTI2MCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6Zmls
bFNwZWN1bGF0ZURvdWIKIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwganNWYWx1ZUdwciwg
R1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKIAotICAgICAgICBpZiAoIWlzTnVtYmVy
UHJlZGljdGlvbih0eXBlKSkKKyAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHR5cGUp
KQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhqc1Zh
bHVlR3ByKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpa
ZXJvLCBqc1ZhbHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKIAogICAg
ICAgICAvLyBGaXJzdCwgaWYgd2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGRvdWJsZSBlbmNvZGVkIGFz
IGEgSlNWYWx1ZQpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpm
aWxsU3BlY3VsYXRlQ2VsbAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBkYXRh
TG9nKCJTcGVjQ2VsbEAlZCAgICIsIG5vZGVJbmRleCk7CiAjZW5kaWYKLSAgICBQcmVkaWN0ZWRU
eXBlIHR5cGUgPSBtX3N0YXRlLmZvck5vZGUobm9kZUluZGV4KS5tX3R5cGU7CisgICAgU3BlY3Vs
YXRlZFR5cGUgdHlwZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlSW5kZXgpLm1fdHlwZTsKICAgICBO
b2RlJiBub2RlID0gYXQobm9kZUluZGV4KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJl
Z2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5m
byA9IG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXTsKQEAgLTEzNTgsNyArMTM1OCw3
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIp
OwogCiAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoZ3ByLCBEYXRhRm9ybWF0SlMpOwotICAgICAg
ICBpZiAoIWlzQ2VsbFByZWRpY3Rpb24odHlwZSkpCisgICAgICAgIGlmICghaXNDZWxsU3BlY3Vs
YXRpb24odHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVSZWdzKGdwciksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgaW5m
by5maWxsSlNWYWx1ZShncHIsIERhdGFGb3JtYXRKU0NlbGwpOwogICAgICAgICByZXR1cm4gZ3By
OwpAQCAtMTM3NCw3ICsxMzc0LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlQ2VsbAogICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBp
bmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwotICAgICAgICBpZiAoIWlzQ2Vs
bFByZWRpY3Rpb24odHlwZSkpCisgICAgICAgIGlmICghaXNDZWxsU3BlY3VsYXRpb24odHlwZSkp
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciks
IG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
Z3ByLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgaW5mby5maWxsSlNWYWx1
ZShncHIsIERhdGFGb3JtYXRKU0NlbGwpOwogICAgICAgICByZXR1cm4gZ3ByOwpAQCAtMTQwMyw3
ICsxNDAzLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbAogI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICBkYXRhTG9nKCJTcGVjQm9vbEAlZCAgICIs
IG5vZGVJbmRleCk7CiAjZW5kaWYKLSAgICBQcmVkaWN0ZWRUeXBlIHR5cGUgPSBtX3N0YXRlLmZv
ck5vZGUobm9kZUluZGV4KS5tX3R5cGU7CisgICAgU3BlY3VsYXRlZFR5cGUgdHlwZSA9IG1fc3Rh
dGUuZm9yTm9kZShub2RlSW5kZXgpLm1fdHlwZTsKICAgICBOb2RlJiBub2RlID0gYXQobm9kZUlu
ZGV4KTsKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFs
UmVnaXN0ZXIoKTsKICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJhdGlvbkluZm9b
dmlydHVhbFJlZ2lzdGVyXTsKQEAgLTE0MzMsNyArMTQzMyw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2wKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogCiAgICAgICAgIGluZm8uZmls
bEpTVmFsdWUoZ3ByLCBEYXRhRm9ybWF0SlMpOwotICAgICAgICBpZiAoIWlzQm9vbGVhblByZWRp
Y3Rpb24odHlwZSkpIHsKKyAgICAgICAgaWYgKCFpc0Jvb2xlYW5TcGVjdWxhdGlvbih0eXBlKSkg
ewogICAgICAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQz
Ml90PihWYWx1ZUZhbHNlKSksIGdwcik7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4ofjEpKSksIFNwZWN1bGF0aW9uUmVjb3ZlcnkoQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2ss
IGdwciwgSW52YWxpZEdQUlJlZykpOwogICAgICAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJ
bW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIGdwcik7CkBAIC0xNDUyLDcg
KzE0NTIsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAg
Y2FzZSBEYXRhRm9ybWF0SlM6IHsKICAgICAgICAgR1BSUmVnIGdwciA9IGluZm8uZ3ByKCk7CiAg
ICAgICAgIG1fZ3Bycy5sb2NrKGdwcik7Ci0gICAgICAgIGlmICghaXNCb29sZWFuUHJlZGljdGlv
bih0eXBlKSkgeworICAgICAgICBpZiAoIWlzQm9vbGVhblNwZWN1bGF0aW9uKHR5cGUpKSB7CiAg
ICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+
KFZhbHVlRmFsc2UpKSwgZ3ByKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90
Pih+MSkpKSwgU3BlY3VsYXRpb25SZWNvdmVyeShCb29sZWFuU3BlY3VsYXRpb25DaGVjaywgZ3By
LCBJbnZhbGlkR1BSUmVnKSk7CiAgICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMy
KHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgZ3ByKTsKQEAgLTE0OTksNyArMTQ5
OSw3IEBAIEpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpjb252ZXIKICAgICByZXR1
cm4gbm90TnVtYmVyOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1
YWxpdHkoTm9kZSYgbm9kZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByZWRpY3Rpb25D
aGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RFcXVhbGl0eShOb2RlJiBub2RlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgU3BlY3Vs
YXRlZFR5cGVDaGVja2VyIHNwZWN1bGF0ZWRUeXBlQ2hlY2tlcikKIHsKICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwpAQCAtMTUwOSw5ICsxNTA5LDkgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQogICAgIEdQUlJlZyBvcDJHUFIg
PSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAK
LSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSkKKyAgICBpZiAoIXNwZWN1bGF0ZWRUeXBlQ2hlY2tlcihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyhvcDFHUFIpLCBub2RlLmNoaWxkMSgpLmluZGV4KCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKGNsYXNzSW5mbykpKTsKLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSkKKyAgICBpZiAoIXNwZWN1bGF0ZWRUeXBlQ2hl
Y2tlcihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSkKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCBub2RlLmNoaWxkMigp
LmluZGV4KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICAKICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBmYWxzZUNhc2UgPSBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIG9wMkdQUik7CkBAIC0xNTI2LDcgKzE1MjYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpCiAKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSgKICAgICBFZGdlIGxlZnRD
aGlsZCwgRWRnZSByaWdodENoaWxkLAotICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQ
cmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCisgICAgY29uc3QgQ2xhc3NJbmZvKiBj
bGFzc0luZm8sIFNwZWN1bGF0ZWRUeXBlQ2hlY2tlciBzcGVjdWxhdGVkVHlwZUNoZWNrZXIpCiB7
CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIGxlZnRDaGlsZCk7CiAgICAgSlNW
YWx1ZU9wZXJhbmQgb3AyKHRoaXMsIHJpZ2h0Q2hpbGQpOwpAQCAtMTUzNiw3ICsxNTM2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIEdQUlJlZyBvcDJH
UFIgPSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAg
ICAKLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobGVmdENoaWxkKS5t
X3R5cGUpKSB7CisgICAgaWYgKCFzcGVjdWxhdGVkVHlwZUNoZWNrZXIobV9zdGF0ZS5mb3JOb2Rl
KGxlZnRDaGlsZCkubV90eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbGVmdENoaWxkLmluZGV4KCksCiAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0xNTUyLDkgKzE1NTIsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgCiAgICAgLy8gV2Uga25vdyB0
aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4gSWYgdGhl
IENGQSBjYW4gdGVsbCB1cyB0aGF0IHRoZQogICAgIC8vIHByb29mLCB3aGVuIGZpbHRlcmVkIG9u
IGNlbGwsIGRlbW9uc3RyYXRlcyB0aGF0IHdlIGhhdmUgYW4gb2JqZWN0IG9mIHRoZSBkZXNpcmVk
IHR5cGUKLSAgICAvLyAocHJlZGljdGlvbkNoZWNrKCkgd2lsbCB0ZXN0IGZvciBGaW5hbE9iamVj
dCBvciBBcnJheSwgY3VycmVudGx5KSwgdGhlbiB3ZSBjYW4gc2tpcCB0aGUKKyAgICAvLyAoc3Bl
Y3VsYXRpb25DaGVjaygpIHdpbGwgdGVzdCBmb3IgRmluYWxPYmplY3Qgb3IgQXJyYXksIGN1cnJl
bnRseSksIHRoZW4gd2UgY2FuIHNraXAgdGhlCiAgICAgLy8gc3BlY3VsYXRpb24uCi0gICAgaWYg
KCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIFBy
ZWRpY3RDZWxsKSkgeworICAgIGlmICghc3BlY3VsYXRlZFR5cGVDaGVja2VyKG1fc3RhdGUuZm9y
Tm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiBTcGVjQ2VsbCkpIHsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0
Q2hpbGQuaW5kZXgoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTE1NzMsNyAr
MTU3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAK
ICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3Qg
bm90IGJlIGEgY2VsbC4gQ2hlY2sgaWYgdGhhdCBpcyBlbm91Z2ggdG8KICAgICAvLyBwcm92ZSB0
aGF0IGl0IGlzIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZC4KLSAgICBpZiAoIWlzT3RoZXJQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiB+UHJlZGljdENlbGwp
KSB7CisgICAgaWYgKCFpc090aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hp
bGQpLm1fdHlwZSAmIH5TcGVjQ2VsbCkpIHsKICAgICAgICAgbV9qaXQubW92ZShvcDJHUFIsIHJl
c3VsdEdQUik7CiAgICAgICAgIG1faml0LmFuZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKH5UYWdCaXRVbmRlZmluZWQpLCByZXN1bHRHUFIpOwogICAgICAgICAKQEAgLTE1OTYsNyAr
MTU5Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKIAogdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1
YWxpdHkoCiAgICAgRWRnZSBsZWZ0Q2hpbGQsIEVkZ2UgcmlnaHRDaGlsZCwgTm9kZUluZGV4IGJy
YW5jaE5vZGVJbmRleCwKLSAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgUHJlZGljdGlv
bkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQorICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZv
LCBTcGVjdWxhdGVkVHlwZUNoZWNrZXIgc3BlY3VsYXRlZFR5cGVDaGVja2VyKQogewogICAgIE5v
ZGUmIGJyYW5jaE5vZGUgPSBhdChicmFuY2hOb2RlSW5kZXgpOwogICAgIEJsb2NrSW5kZXggdGFr
ZW4gPSBicmFuY2hOb2RlLnRha2VuQmxvY2tJbmRleCgpOwpAQCAtMTYxMCw3ICsxNjEwLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIEdQUlJlZyBvcDJH
UFIgPSBvcDIuZ3ByKCk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAg
ICAKLSAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobGVmdENoaWxkKS5t
X3R5cGUpKSB7CisgICAgaWYgKCFzcGVjdWxhdGVkVHlwZUNoZWNrZXIobV9zdGF0ZS5mb3JOb2Rl
KGxlZnRDaGlsZCkubV90eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAg
ICAgICAgQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbGVmdENoaWxkLmluZGV4KCksCiAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCkBAIC0xNjI2LDkgKzE2MjYsOSBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgCiAgICAgLy8gV2Uga25vdyB0
aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4gSWYgdGhl
IENGQSBjYW4gdGVsbCB1cyB0aGF0IHRoZQogICAgIC8vIHByb29mLCB3aGVuIGZpbHRlcmVkIG9u
IGNlbGwsIGRlbW9uc3RyYXRlcyB0aGF0IHdlIGhhdmUgYW4gb2JqZWN0IG9mIHRoZSBkZXNpcmVk
IHR5cGUKLSAgICAvLyAocHJlZGljdGlvbkNoZWNrKCkgd2lsbCB0ZXN0IGZvciBGaW5hbE9iamVj
dCBvciBBcnJheSwgY3VycmVudGx5KSwgdGhlbiB3ZSBjYW4gc2tpcCB0aGUKKyAgICAvLyAoc3Bl
Y3VsYXRpb25DaGVjaygpIHdpbGwgdGVzdCBmb3IgRmluYWxPYmplY3Qgb3IgQXJyYXksIGN1cnJl
bnRseSksIHRoZW4gd2UgY2FuIHNraXAgdGhlCiAgICAgLy8gc3BlY3VsYXRpb24uCi0gICAgaWYg
KCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIFBy
ZWRpY3RDZWxsKSkgeworICAgIGlmICghc3BlY3VsYXRlZFR5cGVDaGVja2VyKG1fc3RhdGUuZm9y
Tm9kZShyaWdodENoaWxkKS5tX3R5cGUgJiBTcGVjQ2VsbCkpIHsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0
Q2hpbGQuaW5kZXgoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFB0cigKQEAgLTE2NDQsNyAr
MTY0NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAK
ICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3Qg
bm90IGJlIGEgY2VsbC4gQ2hlY2sgaWYgdGhhdCBpcyBlbm91Z2ggdG8KICAgICAvLyBwcm92ZSB0
aGF0IGl0IGlzIGVpdGhlciBudWxsIG9yIHVuZGVmaW5lZC4KLSAgICBpZiAoaXNPdGhlclByZWRp
Y3Rpb24obV9zdGF0ZS5mb3JOb2RlKHJpZ2h0Q2hpbGQpLm1fdHlwZSAmIH5QcmVkaWN0Q2VsbCkp
CisgICAgaWYgKGlzT3RoZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUocmlnaHRDaGlsZCku
bV90eXBlICYgflNwZWNDZWxsKSkKICAgICAgICAgcmlnaHROb3RDZWxsLmxpbmsoJm1faml0KTsK
ICAgICBlbHNlIHsKICAgICAgICAganVtcChub3RUYWtlbiwgRm9yY2VKdW1wKTsKQEAgLTE3Mzks
MTEgKzE3MzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9kZSkKIHsKICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmluYWxPYmplY3RPck90aGVy
KCkpIHsKLSAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQx
KCksICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21w
aWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgJkpTRmluYWxPYmplY3Q6
OnNfaW5mbywgIWlzRmluYWxPYmplY3RPck90aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIoKSkgewotICAg
ICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgJkpTQXJy
YXk6OnNfaW5mbywgIWlzQXJyYXlPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNh
bE5vdChub2RlLmNoaWxkMSgpLCAmSlNBcnJheTo6c19pbmZvLCAhaXNBcnJheU9yT3RoZXJTcGVj
dWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0
ZUludGVnZXIoKSkgewpAQCAtMTc2Niw5ICsxNzY2LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUxvZ2ljYWxOb3QoTgogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFBy
ZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faml0LmdldFByZWRpY3Rpb24obm9kZS5jaGlsZDEo
KSk7Ci0gICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlvbikpIHsKLSAgICAgICAg
aWYgKGlzQm9vbGVhblByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpIHsKKyAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9qaXQuZ2V0U3BlY3Vs
YXRpb24obm9kZS5jaGlsZDEoKSk7CisgICAgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pKSB7CisgICAgICAgIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlQm9vbGVh
bk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMsIHZhbHVlKTsKICAgICAgICAgICAgIApAQCAtMTg0MSw5ICsxODQx
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlJiBubwogICAgIEJsb2Nr
SW5kZXggbm90VGFrZW4gPSBub2RlLm5vdFRha2VuQmxvY2tJbmRleCgpOwogICAgIAogICAgIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkg
ewotICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwg
bm90VGFrZW4sICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAg
ICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0YWtlbiwgbm90VGFrZW4s
ICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sICFpc0ZpbmFsT2JqZWN0T3JPdGhlclNwZWN1bGF0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICB9IGVsc2UgaWYg
KGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFycmF5T3JPdGhlcigpKSB7Ci0gICAg
ICAgIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtl
biwgJkpTQXJyYXk6OnNfaW5mbywgIWlzQXJyYXlPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGVtaXRPYmplY3RPck90aGVy
QnJhbmNoKG5vZGUuY2hpbGQxKCksIHRha2VuLCBub3RUYWtlbiwgJkpTQXJyYXk6OnNfaW5mbywg
IWlzQXJyYXlPck90aGVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlTnVtYmVyKCkpIHsKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZUludGVnZXIoKSkgewogICAgICAgICAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsKQEAgLTE4
NzAsMTAgKzE4NzAsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEJyYW5jaChOb2RlJiBu
bwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAg
ICAgICAgR1BSUmVnIHZhbHVlR1BSID0gdmFsdWUuZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBi
b29sIHByZWRpY3RCb29sZWFuID0gaXNCb29sZWFuUHJlZGljdGlvbihtX2ppdC5nZXRQcmVkaWN0
aW9uKG5vZGUuY2hpbGQxKCkpKTsKKyAgICAgICAgYm9vbCBwcmVkaWN0Qm9vbGVhbiA9IGlzQm9v
bGVhblNwZWN1bGF0aW9uKG1faml0LmdldFNwZWN1bGF0aW9uKG5vZGUuY2hpbGQxKCkpKTsKICAg
ICAKICAgICAgICAgaWYgKHByZWRpY3RCb29sZWFuKSB7Ci0gICAgICAgICAgICBpZiAoaXNCb29s
ZWFuUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgewor
ICAgICAgICAgICAgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKSB7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlJl
c3VsdENvbmRpdGlvbiBjb25kaXRpb24gPSBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybzsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAodGFrZW4gPT0gbmV4dEJsb2NrKCkpIHsK
QEAgLTE5NDAsMTEgKzE5NDAsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgR2V0TG9jYWw6IHsKLSAgICAgICAg
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJl
ZGljdGlvbigpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gbm9kZS52YXJp
YWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2
YWx1ZSA9IGJsb2NrKCktPnZhbHVlc0F0SGVhZC5vcGVyYW5kKG5vZGUubG9jYWwoKSk7CiAKICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBubyBwcmVkaWN0aW9uIGZvciB0aGlzIGxvY2FsLCB0aGVuIGRv
bid0IGF0dGVtcHQgdG8gY29tcGlsZS4KLSAgICAgICAgaWYgKHByZWRpY3Rpb24gPT0gUHJlZGlj
dE5vbmUpIHsKKyAgICAgICAgaWYgKHByZWRpY3Rpb24gPT0gU3BlY05vbmUpIHsKICAgICAgICAg
ICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0x
OTY2LDcgKzE5NjYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbih2YWx1ZS5tX3R5cGUpKSB7CisgICAgICAg
ICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpIHsKICAgICAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihub2RlLmxvY2FsKCkpLCByZXN1bHQuZ3ByKCkp
OwogICAgICAgICAgICAgICAgIApAQCAtMTk5MCw5ICsxOTkwLDkgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBEYXRhRm9ybWF0IGZvcm1hdDsKICAg
ICAgICAgaWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCktPmlzQ2FwdHVyZWQoKSkKICAgICAg
ICAgICAgIGZvcm1hdCA9IERhdGFGb3JtYXRKUzsKLSAgICAgICAgZWxzZSBpZiAoaXNDZWxsUHJl
ZGljdGlvbih2YWx1ZS5tX3R5cGUpKQorICAgICAgICBlbHNlIGlmIChpc0NlbGxTcGVjdWxhdGlv
bih2YWx1ZS5tX3R5cGUpKQogICAgICAgICAgICAgZm9ybWF0ID0gRGF0YUZvcm1hdEpTQ2VsbDsK
LSAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbih2YWx1ZS5tX3R5cGUpKQorICAg
ICAgICBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbih2YWx1ZS5tX3R5cGUpKQogICAgICAg
ICAgICAgZm9ybWF0ID0gRGF0YUZvcm1hdEpTQm9vbGVhbjsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgZm9ybWF0ID0gRGF0YUZvcm1hdEpTOwpAQCAtMjA1OSwyNSArMjA1OSwyNSBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIAotICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBw
cmVkaWN0ZWRUeXBlID0gbm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRBd2FyZVBy
ZWRpY3Rpb24oKTsKLSAgICAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0ZWRU
eXBlKSkgeworICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGVkVHlwZSA9IG5vZGUu
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7CisgICAgICAg
ICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7
CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6
OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOwogICAgICAgICAgICAgICAgIHZhbHVlU291cmNlUmVmZXJlbmNlRm9yT3Bl
cmFuZChub2RlLmxvY2FsKCkpID0gVmFsdWVTb3VyY2UoSW50MzJJblJlZ2lzdGVyRmlsZSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgICAgIGlmIChpc0FycmF5
U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgICAgIEdQ
UlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWlzQXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAg
ICAgICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxs
R1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0
cihjZWxsR1BSLCBKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpKTsKICAgICAg
ICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICAgICAgdmFs
dWVTb3VyY2VSZWZlcmVuY2VGb3JPcGVyYW5kKG5vZGUubG9jYWwoKSkgPSBWYWx1ZVNvdXJjZShD
ZWxsSW5SZWdpc3RlckZpbGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsK
KyAgICAgICAgICAgIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewog
ICAgICAgICAgICAgICAgIFNwZWN1bGF0ZUJvb2xlYW5PcGVyYW5kIGJvb2xlYW4odGhpcywgbm9k
ZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoYm9vbGVhbi5ncHIo
KSwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2NhbCgpKSk7CiAgICAgICAgICAgICAg
ICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwpAQCAtMjE3Niw3ICsyMTc2LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBDaGVja051bWJlcjogewotICAgICAgICBpZiAoIWlzTnVtYmVyUHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICBpZiAoIWlzTnVt
YmVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsK
ICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBvcDEuZ3ByKCksIEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApAQCAtMjM3Niw3
ICsyMzc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghYXQobm9k
ZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVBcnJh
eVByZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgeworICAgICAgICBp
ZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAhaXNBY3Rp
b25hYmxlQXJyYXlTcGVjdWxhdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7
CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwog
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7
CiAgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CkBAIC0yMzk3LDcgKzIz
OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CisgICAgICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgPT0gU3BlY1N0cmluZykgewogICAgICAgICAgICAg
Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcobm9kZSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGls
ZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjQwNSw2MyArMjQwNSw2MyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsK
LSAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxE
YXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCksIGlzSW50
OEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/
IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2ln
bmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJy
YXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVv
ZihpbnQ4X3QpLCBpc0ludDhBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJy
YXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21w
aWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAg
ICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQx
KCkpLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZUdl
dEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2Ny
aXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBpc0ludDE2QXJyYXlQcmVkaWN0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNw
ZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKKyAg
ICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgaXNJbnQx
NkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkg
PyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNp
Z25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlSW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVk
QXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBz
aXplb2YoaW50MzJfdCksIGlzSW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlw
ZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGls
ZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURl
c2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDMyX3QpLCBpc0ludDMyQXJyYXlTcGVjdWxhdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5
cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7
CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDhBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgp
LT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhB
cnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBO
b1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2ln
bmVkVHlwZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJy
YXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXpl
b2YodWludDhfdCksIGlzVWludDhBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVk
QXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFt
X2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgIAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBp
bGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBl
ZEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhDbGFtcGVk
QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8g
Tm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNp
Z25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFy
cmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCksIG5v
ZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OENsYW1wZWRBcnJheVNwZWN1bGF0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWND
aGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAg
ICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQx
KCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQxNkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVH
ZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVz
Y3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDE2X3QpLCBpc1VpbnQxNkFycmF5UHJlZGljdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5
cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5
KTsKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheShtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDE2X3Qp
LCBpc1VpbnQxNkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWND
aGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVVaW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlR2V0QnlW
YWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0
b3IoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJheVByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3Bl
Y0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7Cisg
ICAgICAgICAgICBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0
YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNV
aW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tz
LCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVHZXRCeVZhbE9u
RmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRv
cigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0No
ZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOworICAgICAgICAgICAgY29tcGlsZUdldEJ5
VmFsT25GbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNj
cmlwdG9yKCksIG5vZGUsIHNpemVvZihmbG9hdCksIGlzRmxvYXQzMkFycmF5U3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBl
U3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOwogICAgICAgICAgICAgaWYgKCFt
X2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5j
aGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNv
bXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2
NEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwgaXNGbG9hdDY0QXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBl
ZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAgICAg
ICAgIGNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+
ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwgaXNGbG9hdDY0
QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/
IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcyk7CiAg
ICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCkBAIC0yNDgwLDcgKzI0ODAsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGlmICghbV9jb21w
aWxlT2theSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoIWlzQXJyYXlQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICBp
ZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
YmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJ
bmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19p
bmZvKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5Ojp2
ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKIApAQCAtMjUwMSw3ICsyNTAxLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmICghYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3Bl
Y3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKGF0
KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAgaWYgKCFhdChub2RlLmNo
aWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVB
cnJheVNwZWN1bGF0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKICAgICAg
ICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgYXJnMyh0aGlzLCBub2RlLmNoaWxkMygpKTsKQEAgLTI1MzQsNyAr
MjUzNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgIGlmICghaXNBcmd1bWVudHNQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgICAgICAgICBpZiAoIWlzQXJndW1lbnRzU3BlY3Vs
YXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKICAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgICBCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwKICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoUHRyKApAQCAtMjU3OCw2MSArMjU3OCw2MSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJy
YXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVy
dHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBpc0ludDhBcnJheVByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3Bl
Y0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5v
ZGUsIHNpemVvZihpbnQ4X3QpLCBpc0ludDhBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFs
bFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlm
ICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBi
cmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkgewotICAgICAgICAgICAg
Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2
QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXpl
b2YoaW50MTZfdCksIGlzSW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRB
cnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZVB1
dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNj
cmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoaW50MTZf
dCksIGlzSW50MTZBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVj
Q2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2th
eSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAg
ICAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVj
dWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5
cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNl
LmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDMyX3QpLCBpc0ludDMyQXJy
YXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9U
eXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRU
eXBlZEFycmF5KTsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXko
bV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBw
cm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDMyX3QpLCBpc0ludDMyQXJyYXlTcGVjdWxh
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJh
eVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJh
eSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5
KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0
eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQ4X3QpLCBpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKG1f
c3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNw
ZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwor
ICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxE
YXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5Lmdwcigp
LCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVj
ayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAg
ICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4Q2xhbXBlZEFycmF5KCkpIHsKLSAgICAg
ICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgp
LT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3By
KCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBl
U3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSwg
Q2xhbXBSb3VuZGluZyk7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFy
cmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNjcmlwdG9yKCksIGJh
c2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIGlzVWludDhD
bGFtcGVkQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNr
cywgVW5zaWduZWRUeXBlZEFycmF5LCBDbGFtcFJvdW5kaW5nKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZVVpbnQxNkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5
cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgYmFz
ZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIGlzVWludDE2
QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8g
Tm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNp
Z25lZFR5cGVkQXJyYXkpOworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRB
cnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdw
cigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQxNl90KSwgaXNVaW50MTZBcnJh
eVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9U
eXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25l
ZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRl
VWludDMyQXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRB
cnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdw
cigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJh
eVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5
cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVk
VHlwZWRBcnJheSk7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCks
IHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDMyX3QpLCBpc1VpbnQzMkFycmF5U3Bl
Y3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFVuc2lnbmVkVHlw
ZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9h
dDMyQXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFy
cmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdw
cigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGZsb2F0KSwgaXNGbG9hdDMyQXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBl
ZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAgICAg
ICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCkt
PmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5v
ZGUsIHNpemVvZihmbG9hdCksIGlzRmxvYXQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDog
QWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg
IAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2Ny
aXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihkb3VibGUp
LCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWND
aGVja3MpOworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1f
aml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBw
cm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGRvdWJsZSksIGlzRmxvYXQ2NEFycmF5U3BlY3Vs
YXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJy
YXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MpOwogICAgICAgICAgICAg
aWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGJyZWFrOyAgICAgICAgICAgIApAQCAtMjY1Niw3ICsyNjU2LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAgICAgIC8vIENoZWNrIHRoYXQgYmFzZSBp
cyBhbiBhcnJheSwgYW5kIHRoYXQgcHJvcGVydHkgaXMgY29udGFpbmVkIHdpdGhpbiBtX3ZlY3Rv
ciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAgICAgICAgIC8vIElmIHdlIGhhdmUgcHJlZGljdGVkIHRo
ZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXksIHdlIGNhbiBza2lwIHRoZSBjaGVjay4KLSAgICAgICAg
aWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkKKyAgICAgICAgaWYgKCFpc0FycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwpAQCAtMjcwMSw3
ICsyNzAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIEFTU0VSVChpc0Fj
dGlvbmFibGVNdXRhYmxlQXJyYXlQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rp
b24oKSkpOworICAgICAgICBBU1NFUlQoaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5U3BlY3VsYXRp
b24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7CiAgICAgICAgIEFTU0VSVChhdChu
b2RlLmNoaWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpOwogCiAgICAgICAgIFNwZWN1
bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CkBAIC0yODUzLDcgKzI4
NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IAogICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVHUFIsIG5vZGUuY2hpbGQyKCks
IFdyaXRlQmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3Ro
R1BSKTsKIAotICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAg
ICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5
OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKQEAgLTI4OTEsNyArMjg5MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHN0
b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOwogICAgICAgICBHUFJSZWcgc3RvcmFnZUxlbmd0aEdQ
UiA9IHN0b3JhZ2VMZW5ndGguZ3ByKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoIWlzQXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAg
ICBpZiAoIWlzQXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJl
Z3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6
c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BS
KTsKQEAgLTMwMTgsNyArMzAxOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAg
IGlmICghKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUgJiB+KFByZWRpY3RO
dW1iZXIgfCBQcmVkaWN0Qm9vbGVhbikpKQorICAgICAgICBpZiAoIShtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlICYgfihTcGVjTnVtYmVyIHwgU3BlY0Jvb2xlYW4pKSkKICAg
ICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIsIEdQUkluZm86
OnRhZ01hc2tSZWdpc3Rlcik7CkBAIC0zMTEyLDcgKzMxMTIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIENvbnZl
cnRUaGlzOiB7Ci0gICAgICAgIGlmIChpc09iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKKyAgICAgICAgaWYgKGlzT2JqZWN0U3BlY3VsYXRp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKICAgICAgICAgICAg
IFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHRoaXNWYWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgdGhpc1ZhbHVlKTsKICAgICAgICAg
ICAgIG1faml0Lm1vdmUodGhpc1ZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOwpAQCAtMzEyMCwx
MyArMzEyMCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGlzT3Ro
ZXJQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSkpIHsKKyAgICAgICAg
aWYgKGlzT3RoZXJTcGVjdWxhdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7
CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB0aGlzVmFsdWUodGhpcywgbm9kZS5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzLCB0aGlzVmFsdWUpOwog
ICAgICAgICAgICAgR1BSUmVnIHRoaXNWYWx1ZUdQUiA9IHRoaXNWYWx1ZS5ncHIoKTsKICAgICAg
ICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgaWYgKCFpc090aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICAgICAgaWYgKCFpc090aGVyU3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKICAgICAgICAgICAgICAg
ICBtX2ppdC5tb3ZlKHRoaXNWYWx1ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAg
bV9qaXQuYW5kUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5l
ZCksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oVmFsdWVOdWxsKSkpKTsKQEAg
LTMxMzcsMTMgKzMxMzcsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlm
IChpc09iamVjdFByZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgewor
ICAgICAgICBpZiAoaXNPYmplY3RTcGVjdWxhdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0
aW9uKCkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCB0aGlzVmFsdWUodGhp
cywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMs
IHRoaXNWYWx1ZSk7CiAgICAgICAgICAgICBHUFJSZWcgdGhpc1ZhbHVlR1BSID0gdGhpc1ZhbHVl
LmdwcigpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFpc09iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBpZiAoIWlzT2JqZWN0
U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0aGlzVmFs
dWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFs
LCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHJlc3Vs
dEdQUik7CkBAIC0zMjY1LDcgKzMyNjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKGlzQ2VsbFByZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigp
KSkgeworICAgICAgICBpZiAoaXNDZWxsU3BlY3VsYXRpb24oYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpKSkgewogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
YmFzZSk7CiAgICAgICAgICAgICAKQEAgLTMzMTUsNyArMzMxNSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIAotICAgICAgICBpZiAoaXNDZWxsUHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgp
KS5wcmVkaWN0aW9uKCkpKSB7CisgICAgICAgIGlmIChpc0NlbGxTcGVjdWxhdGlvbihhdChub2Rl
LmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VH
UFIgPSBiYXNlLmdwcigpOwogCkBAIC0zMzYyLDcgKzMzNjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAg
Ci0gICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpCisgICAgICAgIGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUu
Zm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIAogICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQXJyYXk6OnN0b3Jh
Z2VPZmZzZXQoKSksIHJlc3VsdEdQUik7CkBAIC0zMzg2LDcgKzMzODYsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0g
YmFzZS5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAg
ICAgICAgCi0gICAgICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICBpZiAoIWlzU3RyaW5nU3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTU3RyaW5nOjpzX2luZm8pKSk7CiAgICAgICAgIAogICAg
ICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNTdHJp
bmc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1bHRHUFIpOwpAQCAtMzM5NiwzOSArMzM5NiwzOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAg
Y2FzZSBHZXRJbnQ4QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlM
ZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFp
c0ludDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpOworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRh
KCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzSW50OEFycmF5U3BlY3VsYXRpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBHZXRJbnQxNkFycmF5TGVuZ3RoOiB7Ci0gICAgICAgIGNvbXBpbGVH
ZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0
b3IoKSwgbm9kZSwgIWlzSW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aCht
X2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0ludDE2
QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdldEludDMyQXJyYXlMZW5ndGg6IHsK
LSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5p
bnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNJbnQzMkFycmF5UHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVHZXRU
eXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3Io
KSwgbm9kZSwgIWlzSW50MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR2V0VWlu
dDhBcnJheUxlbmd0aDogewotICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2pp
dC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc1VpbnQ4QXJy
YXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKKyAg
ICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50
OEFycmF5RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50OEFycmF5U3BlY3VsYXRpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgY2FzZSBHZXRVaW50OENsYW1wZWRBcnJheUxlbmd0aDogewotICAgICAgICBjb21waWxl
R2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFycmF5
RGVzY3JpcHRvcigpLCBub2RlLCAhaXNVaW50OENsYW1wZWRBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlR2V0VHlw
ZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4Q2xhbXBlZEFycmF5RGVzY3Jp
cHRvcigpLCBub2RlLCAhaXNVaW50OENsYW1wZWRBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAg
IGNhc2UgR2V0VWludDE2QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJy
YXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgbm9k
ZSwgIWlzVWludDE2QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5tX3R5cGUpKTsKKyAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xv
YmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzVWludDE2QXJyYXlT
cGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEdldFVpbnQzMkFycmF5TGVuZ3RoOiB7Ci0gICAg
ICAgIGNvbXBpbGVHZXRUeXBlZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMy
QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc1VpbnQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRl
LmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAgIGNvbXBpbGVHZXRUeXBl
ZEFycmF5TGVuZ3RoKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCks
IG5vZGUsICFpc1VpbnQzMkFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHZXRGbG9h
dDMyQXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9q
aXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsICFpc0Zsb2F0
MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
OworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJheUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCkt
PmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgIWlzRmxvYXQzMkFycmF5U3BlY3VsYXRp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBHZXRGbG9hdDY0QXJyYXlMZW5ndGg6IHsKLSAgICAgICAgY29t
cGlsZUdldFR5cGVkQXJyYXlMZW5ndGgobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlE
ZXNjcmlwdG9yKCksIG5vZGUsICFpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JO
b2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxlR2V0VHlwZWRBcnJh
eUxlbmd0aChtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgbm9k
ZSwgIWlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDaGVja0Z1bmN0
aW9uOiB7CkBAIC0zNDQwLDcgKzM0NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgY2FzZSBDaGVja1N0cnVjdHVyZTogewogICAgICAgICBBYnN0cmFj
dFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAg
aWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzU3Vic2V0T2Yobm9kZS5zdHJ1Y3R1cmVTZXQoKSkKLSAg
ICAgICAgICAgICYmIGlzQ2VsbFByZWRpY3Rpb24odmFsdWUubV90eXBlKSkgeworICAgICAgICAg
ICAgJiYgaXNDZWxsU3BlY3VsYXRpb24odmFsdWUubV90eXBlKSkgewogICAgICAgICAgICAgbm9S
ZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTM4ODYsNyArMzg4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghaXNFbXB0eVBy
ZWRpY3Rpb24oCisgICAgICAgIGlmICghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAg
ICAgIG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCgKICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuZ3JhcGgoKS5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKS5tX3R5cGUp
KSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKApAQCAtMzk0NSw3ICszOTQ1LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcg
aW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIGlmICghaXNFbXB0eVByZWRpY3Rpb24oCisgICAg
ICAgIGlmICghaXNFbXB0eVNwZWN1bGF0aW9uKAogICAgICAgICAgICAgICAgIG1fc3RhdGUudmFy
aWFibGVzKCkub3BlcmFuZCgKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5hcmd1
bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKS5tX3R5cGUpKSB7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKApAQCAtNDAzOCw3ICs0MDM4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVj
a0FyZ3VtZW50c05vdENyZWF0ZWQ6IHsKLSAgICAgICAgQVNTRVJUKCFpc0VtcHR5UHJlZGljdGlv
bigKKyAgICAgICAgQVNTRVJUKCFpc0VtcHR5U3BlY3VsYXRpb24oCiAgICAgICAgICAgICBtX3N0
YXRlLnZhcmlhYmxlcygpLm9wZXJhbmQoCiAgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5h
cmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKS5tX3R5cGUpKTsKICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjky
LDcgKzI5Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKICAg
ICAKICAgICBKSVRDb21waWxlcjo6SnVtcCByaHNOb3RDZWxsOwogICAgIGJvb2wgaGFkQ2VsbENo
ZWNrID0gZmFsc2U7Ci0gICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5pbmRleCgpKSAmJiAh
aXNDZWxsUHJlZGljdGlvbihtX2ppdC5nZXRQcmVkaWN0aW9uKHZhbHVlVXNlLmluZGV4KCkpKSkg
eworICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2UuaW5kZXgoKSkgJiYgIWlzQ2VsbFNwZWN1
bGF0aW9uKG1faml0LmdldFNwZWN1bGF0aW9uKHZhbHVlVXNlLmluZGV4KCkpKSkgewogICAgICAg
ICBoYWRDZWxsQ2hlY2sgPSB0cnVlOwogICAgICAgICByaHNOb3RDZWxsID0gbV9qaXQuYnJhbmNo
SWZOb3RDZWxsKHZhbHVlR1BSKTsKICAgICB9CkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEpTQ2VsbAogI2lmIEVOQUJMRShHR0MpCiAgICAgSklU
Q29tcGlsZXI6Okp1bXAgcmhzTm90Q2VsbDsKICAgICBib29sIGhhZENlbGxDaGVjayA9IGZhbHNl
OwotICAgIGlmICghaXNLbm93bkNlbGwodmFsdWVVc2UuaW5kZXgoKSkgJiYgIWlzQ2VsbFByZWRp
Y3Rpb24obV9qaXQuZ2V0UHJlZGljdGlvbih2YWx1ZVVzZS5pbmRleCgpKSkpIHsKKyAgICBpZiAo
IWlzS25vd25DZWxsKHZhbHVlVXNlLmluZGV4KCkpICYmICFpc0NlbGxTcGVjdWxhdGlvbihtX2pp
dC5nZXRTcGVjdWxhdGlvbih2YWx1ZVVzZS5pbmRleCgpKSkpIHsKICAgICAgICAgaGFkQ2VsbENo
ZWNrID0gdHJ1ZTsKICAgICAgICAgcmhzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2
YWx1ZUdQUik7CiAgICAgfQpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVQZWVwSG9sZURvdWIKICAgICBqdW1wKG5vdFRha2VuKTsKIH0KIAotdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgTm9k
ZUluZGV4IGJyYW5jaE5vZGVJbmRleCwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFByZWRp
Y3Rpb25DaGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFuY2hOb2Rl
SW5kZXgsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBTcGVjdWxhdGVkVHlwZUNoZWNrZXIg
c3BlY3VsYXRlZFR5cGVDaGVja2VyKQogewogICAgIE5vZGUmIGJyYW5jaE5vZGUgPSBhdChicmFu
Y2hOb2RlSW5kZXgpOwogICAgIEJsb2NrSW5kZXggdGFrZW4gPSBicmFuY2hOb2RlLnRha2VuQmxv
Y2tJbmRleCgpOwpAQCAtODQ3LDkgKzg0Nyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVQZWVwSG9sZU9iamUKICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOwogICAgIEdQUlJl
ZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CiAgICAgCi0gICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgaWYgKCFzcGVjdWxhdGVk
VHlwZUNoZWNrZXIobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbm9kZS5jaGlsZDEoKS5pbmRleCgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIsIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0lu
Zm8pKSk7Ci0gICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQyKCkpLm1fdHlwZSkpCisgICAgaWYgKCFzcGVjdWxhdGVkVHlwZUNoZWNrZXIobV9zdGF0ZS5m
b3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpCiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5jaGlsZDIo
KS5pbmRleCgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgCiAgICAgYnJh
bmNoUHRyKGNvbmRpdGlvbiwgb3AxR1BSLCBvcDJHUFIsIHRha2VuKTsKQEAgLTkwOSwzMiArOTA5
LDMyIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZUJyYW4KICAgICAgICAg
ICAgICAgICAgICAgYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSkgewogICAg
ICAgICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KAogICAgICAgICAgICAg
ICAgICAgICBub2RlLCBicmFuY2hOb2RlSW5kZXgsICZKU0ZpbmFsT2JqZWN0OjpzX2luZm8sCi0g
ICAgICAgICAgICAgICAgICAgIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAoTm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKSB7CiAgICAgICAgICAgICAg
ICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkoCiAgICAgICAgICAgICAgICAgICAgIG5v
ZGUsIGJyYW5jaE5vZGVJbmRleCwgJkpTQXJyYXk6OnNfaW5mbywKLSAgICAgICAgICAgICAgICAg
ICAgaXNBcnJheVByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICBpc0FycmF5U3BlY3Vs
YXRpb24pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRT
cGVjdWxhdGVGaW5hbE9iamVjdCgpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGF0KG5vZGUu
Y2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7CiAgICAgICAg
ICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkoCiAg
ICAgICAgICAgICAgICAgICAgIG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCksIGJyYW5jaE5v
ZGVJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNG
aW5hbE9iamVjdFByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgICAgICAmSlNGaW5hbE9iamVj
dDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0U3BlY3VsYXRpb24pOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIo
KQogICAgICAgICAgICAgICAgICAgICAgICAmJiBhdChub2RlLmNoaWxkMigpKS5zaG91bGRTcGVj
dWxhdGVGaW5hbE9iamVjdCgpKSB7CiAgICAgICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2Jq
ZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkoCiAgICAgICAgICAgICAgICAgICAgIG5vZGUuY2hp
bGQyKCksIG5vZGUuY2hpbGQxKCksIGJyYW5jaE5vZGVJbmRleCwKLSAgICAgICAgICAgICAgICAg
ICAgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAg
ICAgICAgICAgICAgICAgICAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0U3Bl
Y3VsYXRpb24pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91
bGRTcGVjdWxhdGVBcnJheSgpCiAgICAgICAgICAgICAgICAgICAgICAgICYmIGF0KG5vZGUuY2hp
bGQyKCkpLnNob3VsZFNwZWN1bGF0ZUFycmF5T3JPdGhlcigpKSB7CiAgICAgICAgICAgICAgICAg
Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkoCiAgICAgICAgICAg
ICAgICAgICAgIG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCksIGJyYW5jaE5vZGVJbmRleCwK
LSAgICAgICAgICAgICAgICAgICAgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24p
OworICAgICAgICAgICAgICAgICAgICAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5U3BlY3VsYXRp
b24pOwogICAgICAgICAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVj
dWxhdGVBcnJheU9yT3RoZXIoKQogICAgICAgICAgICAgICAgICAgICAgICAmJiBhdChub2RlLmNo
aWxkMigpKS5zaG91bGRTcGVjdWxhdGVBcnJheSgpKSB7CiAgICAgICAgICAgICAgICAgY29tcGls
ZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkoCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUuY2hpbGQyKCksIG5vZGUuY2hpbGQxKCksIGJyYW5jaE5vZGVJbmRleCwKLSAgICAg
ICAgICAgICAgICAgICAgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24pOworICAg
ICAgICAgICAgICAgICAgICAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5U3BlY3VsYXRpb24pOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBub25TcGVjdWxhdGl2ZVBlZXBo
b2xlQnJhbmNoKG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgY29uZGl0aW9uLCBvcGVyYXRpb24pOwog
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTkxLDcgKzk5MSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICAgICAgaWYgKG5vZGVJbmRleCA9
PSBOb05vZGUgfHwgbV9qaXQuY29kZUJsb2NrKCktPmFyZ3VtZW50SXNDYXB0dXJlZChpKSkKICAg
ICAgICAgICAgIG1fYXJndW1lbnRzW2ldID0gVmFsdWVTb3VyY2UoVmFsdWVJblJlZ2lzdGVyRmls
ZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fYXJndW1lbnRzW2ldID0gVmFsdWVTb3Vy
Y2U6OmZvclByZWRpY3Rpb24oYXQobm9kZUluZGV4KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+cHJl
ZGljdGlvbigpKTsKKyAgICAgICAgICAgIG1fYXJndW1lbnRzW2ldID0gVmFsdWVTb3VyY2U6OmZv
clNwZWN1bGF0aW9uKGF0KG5vZGVJbmRleCkudmFyaWFibGVBY2Nlc3NEYXRhKCktPnByZWRpY3Rp
b24oKSk7CiAgICAgfQogICAgIAogICAgIG1fc3RhdGUucmVzZXQoKTsKQEAgLTEwMTEsNyArMTAx
MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYKICAgICAgICAg
ZWxzZSBpZiAoYXQobm9kZUluZGV4KS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVXNlRG91
YmxlRm9ybWF0KCkpCiAgICAgICAgICAgICBtX3ZhcmlhYmxlc1tpXSA9IFZhbHVlU291cmNlKERv
dWJsZUluUmVnaXN0ZXJGaWxlKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV92YXJpYWJs
ZXNbaV0gPSBWYWx1ZVNvdXJjZTo6Zm9yUHJlZGljdGlvbihhdChub2RlSW5kZXgpLnZhcmlhYmxl
QWNjZXNzRGF0YSgpLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpKTsKKyAgICAgICAgICAgIG1f
dmFyaWFibGVzW2ldID0gVmFsdWVTb3VyY2U6OmZvclNwZWN1bGF0aW9uKGF0KG5vZGVJbmRleCku
dmFyaWFibGVBY2Nlc3NEYXRhKCktPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCkpOwogICAgIH0K
ICAgICAKICAgICBtX2xhc3RTZXRPcGVyYW5kID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKTsKQEAgLTEwNTMsMTEgKzEwNTMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShCYXNpY0Jsb2NrJgogICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVTb3VyY2UgdmFsdWVT
b3VyY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRQb3NpdGlvbi5zaG91
bGRVc2VEb3VibGVGb3JtYXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNv
dXJjZSA9IFZhbHVlU291cmNlKERvdWJsZUluUmVnaXN0ZXJGaWxlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGlzSW50MzJQcmVkaWN0aW9uKGFyZ3VtZW50UG9zaXRpb24ucHJl
ZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzSW50MzJTcGVj
dWxhdGlvbihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShJbnQzMkluUmVnaXN0ZXJGaWxl
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKGFy
Z3VtZW50UG9zaXRpb24ucHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShD
ZWxsSW5SZWdpc3RlckZpbGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNC
b29sZWFuUHJlZGljdGlvbihhcmd1bWVudFBvc2l0aW9uLnByZWRpY3Rpb24oKSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihhcmd1bWVudFBv
c2l0aW9uLnByZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVT
b3VyY2UgPSBWYWx1ZVNvdXJjZShCb29sZWFuSW5SZWdpc3RlckZpbGUpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU291cmNl
ID0gVmFsdWVTb3VyY2UoVmFsdWVJblJlZ2lzdGVyRmlsZSk7CkBAIC0xMTc0LDEyOSArMTE3NCwx
MjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hlY2tBcmd1bWVudFR5cGVzKAogICAgICAgICAK
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSBub2RlLnZh
cmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lz
dGVyID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpOwotICAgICAgICBQcmVkaWN0ZWRUeXBl
IHByZWRpY3RlZFR5cGUgPSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnByZWRpY3Rpb24oKTsKKyAgICAg
ICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGVkVHlwZSA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJl
ZGljdGlvbigpOwogCiAgICAgICAgIEpTVmFsdWVTb3VyY2UgdmFsdWVTb3VyY2UgPSBKU1ZhbHVl
U291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlcikpOwogICAgICAg
ICAKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJl
ZGljdGVkVHlwZSkpCisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGVkVHlw
ZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJS
ZWdpc3RlcikpOwotICAgICAgICBlbHNlIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRU
eXBlKSkgeworICAgICAgICBlbHNlIGlmIChpc0FycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlw
ZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0
ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVT
b3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9u
WmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwotICAgICAgICB9IGVsc2UgaWYg
KGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgfSBlbHNlIGlm
IChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BS
VGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAg
ICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZh
bHNlKSksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJf
dD4ofjEpKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSW50OEFycmF5UHJlZGljdGlvbihwcmVk
aWN0ZWRUeXBlKSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzSW50OEFycmF5U3BlY3VsYXRpb24o
cHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwog
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2Rl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJh
eURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0ludDE2
QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXNJ
bnQxNkFycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6
Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoaXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewor
ICAgICAgICB9IGVsc2UgaWYgKGlzSW50MzJBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigp
Lm1fY2xhc3NJbmZvKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhBcnJheVByZWRpY3Rp
b24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQ4QXJyYXlTcGVj
dWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZz
ZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
dWludDhBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNlIGlm
IChpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAg
ICB9IGVsc2UgaWYgKGlzVWludDhDbGFtcGVkQXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBl
KSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRl
bXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNv
dXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhDbGFtcGVkQXJyYXlEZXNj
cmlwdG9yKCkubV9jbGFzc0luZm8pKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MTZBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQx
NkFycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xh
c3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwotICAgICAg
ICB9IGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7Cisg
ICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MzJBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUp
KSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVt
cC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291
cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblpl
cm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3Io
KS5tX2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc0Zsb2F0MzJBcnJheVByZWRp
Y3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc0Zsb2F0MzJBcnJh
eVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkg
dGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01h
c2tSZWdpc3RlcikpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1
ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5m
b09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7Ci0gICAgICAgIH0g
ZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAg
ICAgIH0gZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkg
ewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2pp
dC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAu
Z3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJj
ZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
dGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigp
Lm1fY2xhc3NJbmZvKSkpOwogICAgICAgICB9CiAjZWxzZQotICAgICAgICBpZiAoaXNJbnQzMlBy
ZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpCisgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24o
cHJlZGljdGVkVHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZh
bHVlU291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9u
KHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlTcGVjdWxhdGlvbihw
cmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAg
ICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0
ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
dmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVn
aXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpj
bGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5
OjpzX2luZm8pKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVk
aWN0ZWRUeXBlKSkKKyAgICAgICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVk
aWN0ZWRUeXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVT
b3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpCb29sZWFuVGFnKSkpOwotICAgICAgICBlbHNlIGlmIChpc0ludDhBcnJheVByZWRpY3Rp
b24ocHJlZGljdGVkVHlwZSkpIHsKKyAgICAgICAgZWxzZSBpZiAoaXNJbnQ4QXJyYXlTcGVjdWxh
dGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fY2xhc3NJbmZvKSkpOwot
ICAgICAgICB9IGVsc2UgaWYgKGlzSW50MTZBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKKyAgICAgICAgfSBlbHNlIGlmIChpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRU
eXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1w
LmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3Vy
Y2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0
ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAg
IG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0
ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVT
b3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9P
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNl
IGlmIChpc0ludDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIH0g
ZWxzZSBpZiAoaXNJbnQzMkFycmF5U3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMy
KEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5kZXgs
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7CiAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVlU291cmNlLCBub2RlSW5k
ZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJyYXlE
ZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFy
cmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzVWlu
dDhBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRvcigpLm1f
Y2xhc3NJbmZvKSkpOwotICAgICAgICB9IGVsc2UgaWYgKGlzVWludDhDbGFtcGVkQXJyYXlQcmVk
aWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OENsYW1w
ZWRBcnJheVNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpw
YXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0
b3IoKS5tX2NsYXNzSW5mbykpKTsKLSAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQxNkFycmF5UHJl
ZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgeworICAgICAgICB9IGVsc2UgaWYgKGlzVWludDE2QXJy
YXlTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5
IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zv
cih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9h
ZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCkubV9jbGFz
c0luZm8pKSk7Ci0gICAgICAgIH0gIGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CisgICAgICAgIH0gIGVsc2UgaWYgKGlzVWludDMyQXJyYXlTcGVjdWxh
dGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFs
UmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0
dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgdmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSwgSlND
ZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7
Ci0gICAgICAgIH0gIGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRU
eXBlKSkgeworICAgICAgICB9ICBlbHNlIGlmIChpc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKHBy
ZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAg
ICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3Rl
ciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCB2
YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAg
ICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdp
c3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCB2YWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV9jbGFzc0luZm8pKSk7Ci0gICAg
ICAgIH0gICBlbHNlIGlmIChpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKKyAgICAgICAgfSAgIGVsc2UgaWYgKGlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24ocHJlZGlj
dGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAg
ICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwg
dGVtcC5ncHIoKSk7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIHZhbHVl
U291cmNlLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CkBAIC0xNTI2
LDggKzE1MjYsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hhckNvZGVBCiAg
ICAgR1BSUmVnIGluZGV4UmVnID0gaW5kZXguZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcg
PSBzdG9yYWdlLmdwcigpOwogICAgIAotICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7Ci0gICAgICAgIEFTU0VSVCghKGF0
KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSAmIFByZWRpY3RTdHJpbmcpKTsKKyAgICBpZiAo
IWlzU3RyaW5nU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpIHsKKyAgICAgICAgQVNTRVJUKCEoYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpICYg
U3BlY1N0cmluZykpOwogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21w
aWxlSW5kZXgpOwogICAgICAgICByZXR1cm47CkBAIC0xNTY1LDggKzE1NjUsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0CiAgICAgR1BSUmVnIHByb3BlcnR5UmVn
ID0gcHJvcGVydHkuZ3ByKCk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigp
OwogCi0gICAgaWYgKCFpc1N0cmluZ1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpIHsKLSAgICAgICAgQVNTRVJUKCEoYXQobm9kZS5jaGlsZDEoKSkucHJl
ZGljdGlvbigpICYgUHJlZGljdFN0cmluZykpOworICAgIGlmICghaXNTdHJpbmdTcGVjdWxhdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgICAgICBBU1NF
UlQoIShhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgJiBTcGVjU3RyaW5nKSk7CiAgICAg
ICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUpOwogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAg
IHJldHVybjsKQEAgLTE3MDAsNyArMTcwMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZVRvSW50MzIKIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGdwciwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKIAotICAgICAgICAgICAgaWYgKCFpc051bWJl
clByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAg
ICAgICAgICBpZiAoIWlzTnVtYmVyU3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hp
bGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlUmVncyhncHIpLCBub2RlLmNoaWxkMSgpLmluZGV4KCksIG1faml0LmJyYW5jaFRl
c3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKSk7CiAKICAgICAgICAgICAgIC8vIEZpcnN0LCBpZiB3ZSBnZXQgaGVyZSB3ZSBoYXZl
IGEgZG91YmxlIGVuY29kZWQgYXMgYSBKU1ZhbHVlCkBAIC0xNzM3LDcgKzE3MzcsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAKICAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgICAgICAgICBpZiAoIWlzTnVtYmVyU3BlY3Vs
YXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBw
YXlsb2FkR1BSKSwgbm9kZS5jaGlsZDEoKS5pbmRleCgpLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dl
c3RUYWcpKSk7CiAKICAgICAgICAgICAgICAgICB1bmJveERvdWJsZSh0YWdHUFIsIHBheWxvYWRH
UFIsIGZwciwgc2NyYXRjaC5mcHIoKSk7CkBAIC0xODQ5LDcgKzE4NDksNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgfQogI2VuZGlmCiAgICAgCi0gICAg
aWYgKGlzSW50MzJQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUpKSB7CisgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkgewogICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEo
dGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwgcmVzdWx0LmZw
cigpKTsKQEAgLTE4NzAsNyArMTg3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnQzMlRvRG91YmwKICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIgPSBtX2ppdC5icmFu
Y2hQdHIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG9wMUdQUiwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICAKLSAgICBpZiAoIWlzTnVtYmVyUHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgeworICAgIGlm
ICghaXNOdW1iZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90
eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgQmFkVHlwZSwg
SlNWYWx1ZVJlZ3Mob3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIG9wMUdQUiwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKSk7CkBAIC0xODk0LDcgKzE4OTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlSW50MzJUb0RvdWJsCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNJbnRlZ2Vy
ID0gbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgb3AxVGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKICAgICAKLSAgICBpZiAoIWlz
TnVtYmVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkg
eworICAgIGlmICghaXNOdW1iZXJTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAg
QmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSKSwgbm9kZS5jaGls
ZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIG9wMVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Okxvd2VzdFRhZykpKTsKQEAg
LTIyNjksOCArMjI2OSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9m
Rm8KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTm9kZSYgbm9kZSkK
IHsKLSAgICBpZiAoKCEhKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSAmIH5QcmVkaWN0
Q2VsbCkKLSAgICAgICAgICYmICEhKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5
cGUgJiB+UHJlZGljdENlbGwpKQorICAgIGlmICgoISEoYXQobm9kZS5jaGlsZDEoKSkucHJlZGlj
dGlvbigpICYgflNwZWNDZWxsKQorICAgICAgICAgJiYgISEobV9zdGF0ZS5mb3JOb2RlKG5vZGUu
Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjQ2VsbCkpCiAgICAgICAgIHx8IGF0KG5vZGUuY2hpbGQx
KCkpLmFkanVzdGVkUmVmQ291bnQoKSA9PSAxKSB7CiAgICAgICAgIC8vIEl0IG1pZ2h0IG5vdCBi
ZSBhIGNlbGwuIFNwZWN1bGF0ZSBsZXNzIGFnZ3Jlc3NpdmVseS4KICAgICAgICAgLy8gT3I6IGl0
IG1pZ2h0IG9ubHkgYmUgdXNlZCBvbmNlIChpLmUuIGJ5IHVzKSwgc28gd2UgZ2V0IHplcm8gYmVu
ZWZpdApAQCAtMjgwNCwxMiArMjgwNCwxMiBAQCBib29sIFNwZWN1bGF0aXZlSklUOjpjb21wYXJl
KE5vZGUmIG5vZGUsCiAgICAgCiAgICAgaWYgKG5vZGUub3AoKSA9PSBDb21wYXJlRXEpIHsKICAg
ICAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KGF0KG5vZGUuY2hpbGQx
KCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVPYmplY3RFcXVh
bGl0eShub2RlLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlv
bik7CisgICAgICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTRmluYWxPYmpl
Y3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKE5vZGU6OnNob3VsZFNw
ZWN1bGF0ZUFycmF5KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKLSAg
ICAgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNBcnJheTo6c19pbmZvLCBp
c0FycmF5UHJlZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9k
ZSwgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI4MTcsNyArMjgxNyw3IEBAIGJv
b2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwKICAgICAgICAgICAgICYmIGF0
KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhlcigpKSB7CiAg
ICAgICAgICAgICBjb21waWxlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkoCiAgICAgICAg
ICAgICAgICAgbm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSwgJkpTRmluYWxPYmplY3Q6OnNf
aW5mbywKLSAgICAgICAgICAgICAgICBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CisgICAgICAg
ICAgICAgICAgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI4MjUsNyArMjgyNSw3IEBAIGJvb2wgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwKICAgICAgICAgICAgICYmIGF0KG5vZGUu
Y2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIGNv
bXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSgKICAgICAgICAgICAgICAgICBub2Rl
LmNoaWxkMigpLCBub2RlLmNoaWxkMSgpLCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLAotICAgICAg
ICAgICAgICAgIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICBpc0Zp
bmFsT2JqZWN0U3BlY3VsYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9CiAgICAgICAgIApAQCAtMjgzMyw3ICsyODMzLDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGFyZShOb2RlJiBub2RlLAogICAgICAgICAgICAgJiYgYXQobm9kZS5jaGlsZDIoKSkuc2hv
dWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsKICAgICAgICAgICAgIGNvbXBpbGVPYmplY3RU
b09iamVjdE9yT3RoZXJFcXVhbGl0eSgKICAgICAgICAgICAgICAgICBub2RlLmNoaWxkMSgpLCBu
b2RlLmNoaWxkMigpLCAmSlNBcnJheTo6c19pbmZvLAotICAgICAgICAgICAgICAgIGlzQXJyYXlQ
cmVkaWN0aW9uKTsKKyAgICAgICAgICAgICAgICBpc0FycmF5U3BlY3VsYXRpb24pOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMjg0MSw3ICsyODQx
LDcgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGFyZShOb2RlJiBub2RlLAogICAgICAgICAg
ICAgJiYgYXQobm9kZS5jaGlsZDIoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXkoKSkgewogICAgICAg
ICAgICAgY29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KAogICAgICAgICAgICAg
ICAgIG5vZGUuY2hpbGQyKCksIG5vZGUuY2hpbGQxKCksICZKU0FycmF5OjpzX2luZm8sCi0gICAg
ICAgICAgICAgICAgaXNBcnJheVByZWRpY3Rpb24pOworICAgICAgICAgICAgICAgIGlzQXJyYXlT
cGVjdWxhdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yOTgxLDE0ICsyOTgxLDE0IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJp
Y3RFcShOb2QKICAgICAgICAgdW5zaWduZWQgYnJhbmNoSW5kZXhJbkJsb2NrID0gZGV0ZWN0UGVl
cEhvbGVCcmFuY2goKTsKICAgICAgICAgaWYgKGJyYW5jaEluZGV4SW5CbG9jayAhPSBVSU5UX01B
WCkgewogICAgICAgICAgICAgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IG1faml0LmdyYXBo
KCkubV9ibG9ja3NbbV9ibG9ja10tPmF0KGJyYW5jaEluZGV4SW5CbG9jayk7Ci0gICAgICAgICAg
ICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZK
U0ZpbmFsT2JqZWN0OjpzX2luZm8sIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAgICAgICAg
ICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwg
JkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAg
ICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMigp
KTsKICAgICAgICAgICAgIG1faW5kZXhJbkJsb2NrID0gYnJhbmNoSW5kZXhJbkJsb2NrOwogICAg
ICAgICAgICAgbV9jb21waWxlSW5kZXggPSBicmFuY2hOb2RlSW5kZXg7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9k
ZSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAg
ICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywg
aXNGaW5hbE9iamVjdFNwZWN1bGF0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
ICAgICAKQEAgLTI5OTYsMTQgKzI5OTYsMTQgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN0cmljdEVxKE5vZAogICAgICAgICB1bnNpZ25lZCBicmFuY2hJbmRleEluQmxvY2sgPSBkZXRl
Y3RQZWVwSG9sZUJyYW5jaCgpOwogICAgICAgICBpZiAoYnJhbmNoSW5kZXhJbkJsb2NrICE9IFVJ
TlRfTUFYKSB7CiAgICAgICAgICAgICBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4ID0gbV9qaXQu
Z3JhcGgoKS5tX2Jsb2Nrc1ttX2Jsb2NrXS0+YXQoYnJhbmNoSW5kZXhJbkJsb2NrKTsKLSAgICAg
ICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRl
eCwgJkpTQXJyYXk6OnNfaW5mbywgaXNBcnJheVByZWRpY3Rpb24pOworICAgICAgICAgICAgY29t
cGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCAmSlNBcnJh
eTo6c19pbmZvLCBpc0FycmF5U3BlY3VsYXRpb24pOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hp
bGQxKCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgbV9p
bmRleEluQmxvY2sgPSBicmFuY2hJbmRleEluQmxvY2s7CiAgICAgICAgICAgICBtX2NvbXBpbGVJ
bmRleCA9IGJyYW5jaE5vZGVJbmRleDsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9Ci0gICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAmSlNBcnJheTo6c19pbmZv
LCBpc0FycmF5UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2Rl
LCAmSlNBcnJheTo6c19pbmZvLCBpc0FycmF5U3BlY3VsYXRpb24pOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIApAQCAtMzAyMiw4ICszMDIyLDggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgogICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwog
ICAgIAotICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigp
KS5wcmVkaWN0aW9uKCk7Ci0gICAgaWYgKCEoYmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIp
ICYmIGJhc2VQcmVkaWN0aW9uKSB7CisgICAgU3BlY3VsYXRlZFR5cGUgYmFzZVByZWRpY3Rpb24g
PSBhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCk7CisgICAgaWYgKCEoYmFzZVByZWRpY3Rp
b24gJiBTcGVjSW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxl
SW5kZXgpOwpAQCAtMzAzNCw4ICszMDM0LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEluZGV4ZWRQcgogICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5ncHIoKTsKICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJndW1lbnRzKCkpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxk
MSgpKS5wcmVkaWN0aW9uKCkgPT0gUHJlZGljdFN0cmluZykgewotICAgICAgICBpZiAoIWlzU3Ry
aW5nUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAg
ICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSA9PSBTcGVjU3RyaW5n
KSB7CisgICAgICAgIGlmICghaXNTdHJpbmdTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cigmSlNTdHJpbmc6OnNfaW5mbykpKTsKIAogICAgICAgICBtX2ppdC5s
b2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTU3RyaW5nOjpvZmZzZXRP
ZlZhbHVlKCkpLCBzdG9yYWdlUmVnKTsKQEAgLTMwNDYsNTEgKzMwNDYsNTEgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEluZGV4ZWRQcgogICAgICAgICBtX2ppdC5sb2FkUHRyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIFN0cmluZ0ltcGw6OmRhdGFPZmZzZXQo
KSksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlSW50OEFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0
b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3Io
KTsKLSAgICAgICAgaWYgKCFpc0ludDhBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgIGlmICghaXNJbnQ4QXJyYXlTcGVjdWxhdGlv
bihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJl
ZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJ
bmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBl
bHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsK
ICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5n
bG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCk7Ci0gICAgICAgIGlmICghaXNJbnQx
NkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
KyAgICAgICAgaWYgKCFpc0ludDE2QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9z
dG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRB
cnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDMyQXJy
YXlEZXNjcmlwdG9yKCk7Ci0gICAgICAgIGlmICghaXNJbnQzMkFycmF5UHJlZGljdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc0ludDMy
QXJyYXlTcGVjdWxhdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2Vs
bDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNj
cmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFn
ZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVV
aW50OEFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCk7Ci0gICAg
ICAgIGlmICghaXNVaW50OEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc1VpbnQ4QXJyYXlTcGVjdWxhdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkp
OwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcs
IGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlm
IChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50OENsYW1wZWRBcnJheSgpKSB7
CiAgICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQu
Z2xvYmFsRGF0YSgpLT51aW50OENsYW1wZWRBcnJheURlc2NyaXB0b3IoKTsKLSAgICAgICAgaWYg
KCFpc1VpbnQ4Q2xhbXBlZEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGls
ZDEoKSkubV90eXBlKSkKKyAgICAgICAgaWYgKCFpc1VpbnQ4Q2xhbXBlZEFycmF5U3BlY3VsYXRp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VS
ZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFn
ZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkgewogICAgICAgICBjb25zdCBUeXBlZEFycmF5
RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlE
ZXNjcmlwdG9yKCk7Ci0gICAgICAgIGlmICghaXNVaW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgIGlmICghaXNVaW50MTZB
cnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQog
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2Ny
aXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgZGVzY3JpcHRvci5tX3N0b3JhZ2VPZmZzZXQpLCBzdG9yYWdl
UmVnKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVp
bnQzMkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpOwotICAg
ICAgICBpZiAoIWlzVWludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQorICAgICAgICBpZiAoIWlzVWludDMyQXJyYXlTcGVjdWxhdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZv
KSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNl
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgewog
ICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmds
b2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpOwotICAgICAgICBpZiAoIWlzRmxv
YXQzMkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSkKKyAgICAgICAgaWYgKCFpc0Zsb2F0MzJBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7CiAgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgZGVzY3JpcHRv
ci5tX3N0b3JhZ2VPZmZzZXQpLCBzdG9yYWdlUmVnKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUu
Y2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7CiAgICAgICAgIGNvbnN0
IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgpLT5m
bG9hdDY0QXJyYXlEZXNjcmlwdG9yKCk7Ci0gICAgICAgIGlmICghaXNGbG9hdDY0QXJyYXlQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQorICAgICAgICBp
ZiAoIWlzRmxvYXQ2NEFycmF5U3BlY3VsYXRpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpCiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoZGVzY3JpcHRvci5tX2NsYXNzSW5mbykpKTsKICAgICAgICAgbV9qaXQubG9hZFB0
cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9m
ZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghaXNBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAg
IGlmICghaXNBcnJheVNwZWN1bGF0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJl
ZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFn
ZVJlZyk7CiAgICAgfQpAQCAtMzExOCw3ICszMTE4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsT25BcgogICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIGlmICghaXNBcmd1bWVudHNQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CisgICAgaWYgKCFpc0FyZ3VtZW50c1NwZWN1bGF0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CiAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5j
aFB0cigKQEAgLTMxODYsNyArMzE4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRBcmd1bWVudHMKICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgIHJldHVybjsKICAg
ICAKLSAgICBpZiAoIWlzQXJndW1lbnRzUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkgeworICAgIGlmICghaXNBcmd1bWVudHNTcGVjdWxhdGlvbihtX3N0
YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgewogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAogICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZVJlZyksIG5vZGUuY2hpbGQxKCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hQdHIoCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShy
ZXZpc2lvbiAxMTk2MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDEzICs4MSwxMyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFTU0VSVChraW5kKCkgPT0gSGF2ZU5vZGUpOwogICAgIH0KICAgICAKLSAgICBzdGF0aWMg
VmFsdWVTb3VyY2UgZm9yUHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAg
c3RhdGljIFZhbHVlU291cmNlIGZvclNwZWN1bGF0aW9uKFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rp
b24pCiAgICAgewotICAgICAgICBpZiAoaXNJbnQzMlByZWRpY3Rpb24ocHJlZGljdGlvbikpCisg
ICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGlvbikpCiAgICAgICAgICAgICBy
ZXR1cm4gVmFsdWVTb3VyY2UoSW50MzJJblJlZ2lzdGVyRmlsZSk7Ci0gICAgICAgIGlmIChpc0Fy
cmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAgaWYgKGlzQXJyYXlTcGVjdWxhdGlv
bihwcmVkaWN0aW9uKSkKICAgICAgICAgICAgIHJldHVybiBWYWx1ZVNvdXJjZShDZWxsSW5SZWdp
c3RlckZpbGUpOwotICAgICAgICBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0aW9uKSkK
KyAgICAgICAgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQogICAgICAgICAg
ICAgcmV0dXJuIFZhbHVlU291cmNlKEJvb2xlYW5JblJlZ2lzdGVyRmlsZSk7CiAgICAgICAgIHJl
dHVybiBWYWx1ZVNvdXJjZShWYWx1ZUluUmVnaXN0ZXJGaWxlKTsKICAgICB9CkBAIC0yMDM0LDEy
ICsyMDM0LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGNvbXBpbGVQZWVwSG9sZUJyYW5jaChOb2Rl
JiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVyOjpE
b3VibGVDb25kaXRpb24sIFNfREZHT3BlcmF0aW9uX0VKSik7CiAgICAgdm9pZCBjb21waWxlUGVl
cEhvbGVJbnRlZ2VyQnJhbmNoKE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBKSVRD
b21waWxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CiAgICAgdm9pZCBjb21waWxlUGVlcEhvbGVE
b3VibGVCcmFuY2goTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIEpJVENvbXBpbGVy
OjpEb3VibGVDb25kaXRpb24pOwotICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxp
dHkoTm9kZSYsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyosIFBy
ZWRpY3Rpb25DaGVja2VyKTsKKyAgICB2b2lkIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5
KE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qLCBTcGVj
dWxhdGVkVHlwZUNoZWNrZXIpOwogICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmpl
Y3RPck90aGVyRXF1YWxpdHkoCi0gICAgICAgIEVkZ2UgbGVmdENoaWxkLCBFZGdlIHJpZ2h0Q2hp
bGQsIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXgsIGNvbnN0IENsYXNzSW5mbyosIFByZWRpY3Rp
b25DaGVja2VyKTsKLSAgICB2b2lkIGNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiwgY29uc3Qg
Q2xhc3NJbmZvKiwgUHJlZGljdGlvbkNoZWNrZXIpOworICAgICAgICBFZGdlIGxlZnRDaGlsZCwg
RWRnZSByaWdodENoaWxkLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBjb25zdCBDbGFzc0lu
Zm8qLCBTcGVjdWxhdGVkVHlwZUNoZWNrZXIpOworICAgIHZvaWQgY29tcGlsZU9iamVjdEVxdWFs
aXR5KE5vZGUmLCBjb25zdCBDbGFzc0luZm8qLCBTcGVjdWxhdGVkVHlwZUNoZWNrZXIpOwogICAg
IHZvaWQgY29tcGlsZU9iamVjdFRvT2JqZWN0T3JPdGhlckVxdWFsaXR5KAotICAgICAgICBFZGdl
IGxlZnRDaGlsZCwgRWRnZSByaWdodENoaWxkLCBjb25zdCBDbGFzc0luZm8qLCBQcmVkaWN0aW9u
Q2hlY2tlcik7CisgICAgICAgIEVkZ2UgbGVmdENoaWxkLCBFZGdlIHJpZ2h0Q2hpbGQsIGNvbnN0
IENsYXNzSW5mbyosIFNwZWN1bGF0ZWRUeXBlQ2hlY2tlcik7CiAgICAgdm9pZCBjb21waWxlVmFs
dWVBZGQoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KEVk
Z2UgdmFsdWUsIGNvbnN0IENsYXNzSW5mbyosIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spOwog
ICAgIHZvaWQgY29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCShyZXZpc2lvbiAxMTk2
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiREZHRG91YmxlRm9y
bWF0U3RhdGUuaCIKICNpbmNsdWRlICJERkdOb2RlRmxhZ3MuaCIKICNpbmNsdWRlICJPcGVyYW5k
cy5oIgotI2luY2x1ZGUgIlByZWRpY3RlZFR5cGUuaCIKKyNpbmNsdWRlICJTcGVjdWxhdGVkVHlw
ZS5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlvbkZpbmQuaD4KQEAgLTQzLDggKzQzLDggQEAgcHVibGlj
OgogCiAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKCkKICAgICAgICAgOiBtX2xvY2FsKHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKSkpCi0g
ICAgICAgICwgbV9wcmVkaWN0aW9uKFByZWRpY3ROb25lKQotICAgICAgICAsIG1fYXJndW1lbnRB
d2FyZVByZWRpY3Rpb24oUHJlZGljdE5vbmUpCisgICAgICAgICwgbV9wcmVkaWN0aW9uKFNwZWNO
b25lKQorICAgICAgICAsIG1fYXJndW1lbnRBd2FyZVByZWRpY3Rpb24oU3BlY05vbmUpCiAgICAg
ICAgICwgbV9mbGFncygwKQogICAgICAgICAsIG1fZG91YmxlRm9ybWF0U3RhdGUoRW1wdHlEb3Vi
bGVGb3JtYXRTdGF0ZSkKICAgICAgICAgLCBtX2lzQ2FwdHVyZWQoZmFsc2UpCkBAIC01NSw4ICs1
NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEoVmlydHVhbFJlZ2lz
dGVyIGxvY2FsLCBib29sIGlzQ2FwdHVyZWQpCiAgICAgICAgIDogbV9sb2NhbChsb2NhbCkKLSAg
ICAgICAgLCBtX3ByZWRpY3Rpb24oUHJlZGljdE5vbmUpCi0gICAgICAgICwgbV9hcmd1bWVudEF3
YXJlUHJlZGljdGlvbihQcmVkaWN0Tm9uZSkKKyAgICAgICAgLCBtX3ByZWRpY3Rpb24oU3BlY05v
bmUpCisgICAgICAgICwgbV9hcmd1bWVudEF3YXJlUHJlZGljdGlvbihTcGVjTm9uZSkKICAgICAg
ICAgLCBtX2ZsYWdzKDApCiAgICAgICAgICwgbV9kb3VibGVGb3JtYXRTdGF0ZShFbXB0eURvdWJs
ZUZvcm1hdFN0YXRlKQogICAgICAgICAsIG1faXNDYXB0dXJlZChpc0NhcHR1cmVkKQpAQCAtMTA0
LDMzICsxMDQsMzMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pc0FyZ3VtZW50c0FsaWFz
OwogICAgIH0KICAgICAKLSAgICBib29sIHByZWRpY3QoUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
KQorICAgIGJvb2wgcHJlZGljdChTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiBzZWxmID0gZmluZCgpOwotICAgICAgICBib29sIHJl
c3VsdCA9IG1lcmdlUHJlZGljdGlvbihzZWxmLT5tX3ByZWRpY3Rpb24sIHByZWRpY3Rpb24pOwor
ICAgICAgICBib29sIHJlc3VsdCA9IG1lcmdlU3BlY3VsYXRpb24oc2VsZi0+bV9wcmVkaWN0aW9u
LCBwcmVkaWN0aW9uKTsKICAgICAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAgICAgIG1lcmdlUHJl
ZGljdGlvbihtX2FyZ3VtZW50QXdhcmVQcmVkaWN0aW9uLCBtX3ByZWRpY3Rpb24pOworICAgICAg
ICAgICAgbWVyZ2VTcGVjdWxhdGlvbihtX2FyZ3VtZW50QXdhcmVQcmVkaWN0aW9uLCBtX3ByZWRp
Y3Rpb24pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBQcmVkaWN0
ZWRUeXBlIG5vblVuaWZpZWRQcmVkaWN0aW9uKCkKKyAgICBTcGVjdWxhdGVkVHlwZSBub25Vbmlm
aWVkUHJlZGljdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOwogICAg
IH0KICAgICAKLSAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24oKQorICAgIFNwZWN1bGF0ZWRU
eXBlIHByZWRpY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZpbmQoKS0+bV9wcmVkaWN0
aW9uOwogICAgIH0KICAgICAKLSAgICBQcmVkaWN0ZWRUeXBlIGFyZ3VtZW50QXdhcmVQcmVkaWN0
aW9uKCkKKyAgICBTcGVjdWxhdGVkVHlwZSBhcmd1bWVudEF3YXJlUHJlZGljdGlvbigpCiAgICAg
ewogICAgICAgICByZXR1cm4gZmluZCgpLT5tX2FyZ3VtZW50QXdhcmVQcmVkaWN0aW9uOwogICAg
IH0KICAgICAKLSAgICBib29sIG1lcmdlQXJndW1lbnRBd2FyZVByZWRpY3Rpb24oUHJlZGljdGVk
VHlwZSBwcmVkaWN0aW9uKQorICAgIGJvb2wgbWVyZ2VBcmd1bWVudEF3YXJlUHJlZGljdGlvbihT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1lcmdlUHJl
ZGljdGlvbihmaW5kKCktPm1fYXJndW1lbnRBd2FyZVByZWRpY3Rpb24sIHByZWRpY3Rpb24pOwor
ICAgICAgICByZXR1cm4gbWVyZ2VTcGVjdWxhdGlvbihmaW5kKCktPm1fYXJndW1lbnRBd2FyZVBy
ZWRpY3Rpb24sIHByZWRpY3Rpb24pOwogICAgIH0KICAgICAKICAgICB2b2lkIGNsZWFyVm90ZXMo
KQpAQCAtMTYxLDEyICsxNjEsMTIgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgLy8gSWYg
dGhlIHZhcmlhYmxlIGlzIG5vdCBhIG51bWJlciBwcmVkaWN0aW9uLCB0aGVuIHRoaXMgZG9lc24n
dAogICAgICAgICAvLyBtYWtlIGFueSBzZW5zZS4KLSAgICAgICAgaWYgKCFpc051bWJlclByZWRp
Y3Rpb24ocHJlZGljdGlvbigpKSkKKyAgICAgICAgaWYgKCFpc051bWJlclNwZWN1bGF0aW9uKHBy
ZWRpY3Rpb24oKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAogICAgICAg
ICAvLyBJZiB0aGUgdmFyaWFibGUgaXMgcHJlZGljdGVkIHRvIGhvbGQgb25seSBkb3VibGVzLCB0
aGVuIGl0J3MgYQogICAgICAgICAvLyBuby1icmFpbmVyOiBpdCBzaG91bGQgYmUgZm9ybWF0dGVk
IGFzIGEgZG91YmxlLgotICAgICAgICBpZiAoaXNEb3VibGVQcmVkaWN0aW9uKHByZWRpY3Rpb24o
KSkpCisgICAgICAgIGlmIChpc0RvdWJsZVNwZWN1bGF0aW9uKHByZWRpY3Rpb24oKSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoZSB2YXJpYWJs
ZSBpcyBrbm93biB0byBiZSB1c2VkIGFzIGFuIGludGVnZXIsIHRoZW4gYmUgc2FmZSAtCkBAIC0y
MjUsNyArMjI1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAobV9kb3VibGVGb3JtYXRTdGF0ZSAh
PSBVc2luZ0RvdWJsZUZvcm1hdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
Ci0gICAgICAgIHJldHVybiBtZXJnZVByZWRpY3Rpb24obV9wcmVkaWN0aW9uLCBQcmVkaWN0RG91
YmxlKTsKKyAgICAgICAgcmV0dXJuIG1lcmdlU3BlY3VsYXRpb24obV9wcmVkaWN0aW9uLCBTcGVj
RG91YmxlKTsKICAgICB9CiAgICAgCiAgICAgTm9kZUZsYWdzIGZsYWdzKCkgY29uc3QgeyByZXR1
cm4gbV9mbGFnczsgfQpAQCAtMjQ2LDggKzI0Niw4IEBAIHByaXZhdGU6CiAgICAgLy8gdXNhZ2Ug
Zm9yIHZhcmlhYmxlIGFjY2VzcyBub2RlcyBkbyBiZSBzaWduaWZpY2FudC4KIAogICAgIFZpcnR1
YWxSZWdpc3RlciBtX2xvY2FsOwotICAgIFByZWRpY3RlZFR5cGUgbV9wcmVkaWN0aW9uOwotICAg
IFByZWRpY3RlZFR5cGUgbV9hcmd1bWVudEF3YXJlUHJlZGljdGlvbjsKKyAgICBTcGVjdWxhdGVk
VHlwZSBtX3ByZWRpY3Rpb247CisgICAgU3BlY3VsYXRlZFR5cGUgbV9hcmd1bWVudEF3YXJlUHJl
ZGljdGlvbjsKICAgICBOb2RlRmxhZ3MgbV9mbGFnczsKICAgICAKICAgICBmbG9hdCBtX3ZvdGVz
WzJdOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>