<?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>149542</bug_id>
          
          <creation_ts>2015-09-24 14:54:54 -0700</creation_ts>
          <short_desc>Remove the use of &quot;Immediate&quot; in JIT function names.</short_desc>
          <delta_ts>2015-09-24 17:17:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1128591</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-24 14:54:54 -0700</bug_when>
    <thetext>We will rename the following:
    isOperandConstantImmediateDouble =&gt; isOperandConstantDouble
    getOperandConstantImmediateInt =&gt; getOperandConstantInt
    getConstantOperandImmediateInt =&gt; getOperandConstantInt

    emitJumpIfImmediateInteger =&gt; emitJumpIfInt
    emitJumpIfNotImmediateInteger =&gt; emitJumpIfNotInt
    emitJumpIfNotImmediateIntegers =&gt; emitJumpIfNotInt
    emitPatchableJumpIfNotImmediateInteger =&gt; emitPatchableJumpIfNotInt
    emitJumpSlowCaseIfNotImmediateInteger =&gt; emitJumpSlowCaseIfNotInt
    emitJumpSlowCaseIfNotImmediateNumber =&gt; emitJumpSlowCaseIfNotNumber
    emitJumpSlowCaseIfNotImmediateIntegers =&gt; emitJumpSlowCaseIfNotInt
    emitFastArithReTagImmediate =&gt; emitTagInt
    emitTagAsBoolImmediate =&gt; emitTagBool

    isOperandConstantImmediateInt =&gt; isOperandConstantInt
    isOperandConstantImmediateChar =&gt; isOperandConstantChar

    emitJumpIfImmediateNumber =&gt; emitJumpIfNumber
    emitJumpIfNotImmediateNumber =&gt; emitJumpIfNotNumber
    emitFastArithImmToInt - Deleted because this is an empty function.
    emitFastArithIntToImmNoCheck =&gt; emitTagInt
    emitPutImmediateToCallFrameHeader =&gt; emitPutToCallFrameHeader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128592</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-24 15:02:49 -0700</bug_when>
    <thetext>One more:
    emitPutImmediateToCallFrameHeader =&gt; emitPutToCallFrameHeader</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128598</commentid>
    <comment_count>2</comment_count>
      <attachid>261899</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-24 15:48:51 -0700</bug_when>
    <thetext>Created attachment 261899
the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128599</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-24 15:51:08 -0700</bug_when>
    <thetext>Attachment 261899 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JIT.h:466:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:68:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/jit/JSInterfaceJIT.h:69:  The parameter name &quot;reg&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 14 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>1128601</commentid>
    <comment_count>4</comment_count>
      <attachid>261900</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-09-24 15:55:01 -0700</bug_when>
    <thetext>Created attachment 261900
fix 2: fixed style issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128611</commentid>
    <comment_count>5</comment_count>
      <attachid>261900</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-09-24 16:32:28 -0700</bug_when>
    <thetext>Comment on attachment 261900
fix 2: fixed style issues.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128622</commentid>
    <comment_count>6</comment_count>
      <attachid>261900</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-24 17:17:37 -0700</bug_when>
    <thetext>Comment on attachment 261900
fix 2: fixed style issues.

Clearing flags on attachment: 261900

Committed r190230: &lt;http://trac.webkit.org/changeset/190230&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128623</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-24 17:17:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261899</attachid>
            <date>2015-09-24 15:48:51 -0700</date>
            <delta_ts>2015-09-24 15:55:01 -0700</delta_ts>
            <desc>the fix.</desc>
            <filename>bug-149542.patch</filename>
            <type>text/plain</type>
            <size>69316</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MSBA
QAorMjAxNS0wOS0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHRoZSB1c2Ugb2YgIkltbWVkaWF0ZSIgaW4gSklUIGZ1bmN0aW9uIG5hbWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTQyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugd2lsbCByZW5h
bWUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRl
RG91YmxlID0+IGlzT3BlcmFuZENvbnN0YW50RG91YmxlCisgICAgICAgICAgICBpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludCA9PiBpc09wZXJhbmRDb25zdGFudEludAorICAgICAgICAgICAg
aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyID0+IGlzT3BlcmFuZENvbnN0YW50Q2hhcgor
CisgICAgICAgICAgICBnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQgPT4gZ2V0T3BlcmFu
ZENvbnN0YW50SW50CisgICAgICAgICAgICBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQg
PT4gZ2V0T3BlcmFuZENvbnN0YW50SW50CisKKyAgICAgICAgICAgIGVtaXRKdW1wSWZJbW1lZGlh
dGVJbnRlZ2VyID0+IGVtaXRKdW1wSWZJbnQKKyAgICAgICAgICAgIGVtaXRKdW1wSWZOb3RJbW1l
ZGlhdGVJbnRlZ2VyID0+IGVtaXRKdW1wSWZOb3RJbnQKKyAgICAgICAgICAgIGVtaXRKdW1wSWZO
b3RJbW1lZGlhdGVJbnRlZ2VycyA9PiBlbWl0SnVtcElmTm90SW50CisgICAgICAgICAgICBlbWl0
UGF0Y2hhYmxlSnVtcElmTm90SW1tZWRpYXRlSW50ZWdlciA9PiBlbWl0UGF0Y2hhYmxlSnVtcElm
Tm90SW50CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2Vy
ID0+IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludAorICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tZWRpYXRlTnVtYmVyID0+IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51bWJlcgorICAg
ICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcnMgPT4gZW1pdEp1
bXBTbG93Q2FzZUlmTm90SW50CisgICAgICAgICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlh
dGUgPT4gZW1pdFRhZ0ludAorICAgICAgICAgICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZSA9PiBl
bWl0VGFnQm9vbAorICAgICAgICAgICAgZW1pdEp1bXBJZkltbWVkaWF0ZU51bWJlciA9PiBlbWl0
SnVtcElmTnVtYmVyCisgICAgICAgICAgICBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyID0+
IGVtaXRKdW1wSWZOb3ROdW1iZXIKKyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludCAt
IERlbGV0ZWQgYmVjYXVzZSB0aGlzIGlzIGFuIGVtcHR5IGZ1bmN0aW9uLgorICAgICAgICAgICAg
ZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayA9PiBlbWl0VGFnSW50CisgICAgICAgICAgICBl
bWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIgPT4gZW1pdFB1dFRvQ2FsbEZyYW1lSGVh
ZGVyCisKKyAgICAgICAgVGhpcyBpcyBwdXJlbHkgYSByZWZhY3RvcmluZyBwYXRjaCB0byBkbyB0
aGUgcmVuYW1pbmcuICBUaGVyZSBpcyBubyBiZWhhdmlvcgorICAgICAgICBjaGFuZ2UuCisKKyAg
ICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpjb21waWxlRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpj
b21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRUb0NhbGxGcmFt
ZUhlYWRlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFB1dEltbWVkaWF0
ZVRvQ2FsbEZyYW1lSGVhZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTdG9yZUNlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
dFNsb3dDYXNlKToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbHNo
aWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JzaGlmdCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vy
c2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Vyc2hpZnQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfdW5zaWduZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBT
bG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdGFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZUJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9w
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbXVs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZGl2KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfY29tcGFyZUFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFu
ZEp1bXBTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2xzaGlmdCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
UmlnaHRTaGlmdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2JpdGFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0b3IpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfYml0eG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9iaXR4
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zdWIpOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZUdldEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjppc09wZXJhbmRDb25zdGFudERvdWJsZSk6CisgICAgICAgIChKU0M6
OkpJVDo6aXNPcGVyYW5kQ29uc3RhbnRDaGFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmlzT3BlcmFuZENvbnN0
YW50SW50KToKKyAgICAgICAgKEpTQzo6SklUOjpnZXRPcGVyYW5kQ29uc3RhbnRJbnQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0TG9hZEludDMyVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1w
SWZJbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZOb3RJbnQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBT
bG93Q2FzZUlmTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VGFnQm9vbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJ
bnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmdldE9wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6Z2V0Q29uc3RhbnRPcGVyYW5k
SW1tZWRpYXRlSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmSW1t
ZWRpYXRlSW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZk5v
dEltbWVkaWF0ZUludGVnZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQYXRj
aGFibGVKdW1wSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklUOjplbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcnMpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVn
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1lZGlhdGVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGYXN0QXJp
dGhSZVRhZ0ltbWVkaWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFRhZ0Fz
Qm9vbEltbWVkaWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2lzX2Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNf
bnVtYmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9pc19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfamZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXR4b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfYml0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVf
dHlwZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5
UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZh
bCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0M6OkpTSW50
ZXJmYWNlSklUOjplbWl0SnVtcElmTm90SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZh
Y2VKSVQ6OmVtaXRKdW1wSWZOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6
ZW1pdEp1bXBJZk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0
TG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0VGFnSW50KToK
KyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcik6
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmSW1tZWRpYXRlTnVtYmVy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RJ
bW1lZGlhdGVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6
ZW1pdEZhc3RBcml0aEltbVRvSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcmZh
Y2VKSVQ6OmVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpT
Qzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvbkNvbXBp
bGVyLmg6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjpzdGFydEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmVuZEZ1bmN0aW9uKToKKwog
MjAxNS0wOS0yNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbRVM2XSBJbXBsZW1lbnQgdGFpbCBjYWxscyBpbiB0aGUgREZHCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTkwMjEyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnko
KQogICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlvdXQu
IChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFsIHJl
dHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgogICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1l
SGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKIH0KIAogdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxOTAy
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgcHVibGljOgogICAgICAgICBzdG9yZVB0cihm
cm9tLCBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihS
ZWdpc3RlcikpKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFt
ZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkp
CisgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIoVHJ1
c3RlZEltbVB0cih2YWx1ZSksIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVu
dHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDE5MDIxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDcgKzUxMCw3IEBAIENvbXBpbGF0aW9uUmVz
dWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAgICAgbm9wKCk7CiAKICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlciht
X2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIobV9jb2RlQmxvY2ssIEpTU3RhY2s6OkNvZGVCbG9jayk7CiAKICAgICBMYWJlbCBiZWdp
bkxhYmVsKHRoaXMpOwogCkBAIC01NjYsNyArNTY2LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklU
Ojpwcml2YXRlQ29tcGlsZShKSQogICAgICAgICBhcml0eUNoZWNrID0gbGFiZWwoKTsKICAgICAg
ICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgJm1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0Jl
SW5saW5lZCk7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgICAgIGVtaXRQ
dXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJs
b2NrKTsKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0
YWNrOjpDb2RlQmxvY2spOwogCiAgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlua1RvKGJl
Z2luTGFiZWwsIHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAx
OTAyMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjMsNyArMzIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZW51bSBDb21w
aWxlT3BTdHJpY3RFcVR5cGUgeyBPcFN0cmljdEVxLCBPcE5TdHJpY3RFcSB9OwogICAgICAgICB2
b2lkIGNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQ29tcGlsZU9w
U3RyaWN0RXFUeXBlIHR5cGUpOwotICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW1tZWRp
YXRlRG91YmxlKGludCBzcmMpOworICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50RG91Ymxl
KGludCBzcmMpOwogICAgICAgICAKICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZShpbnQgaW5k
ZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91
YmxlKGludCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW51bSBGaW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFs
LCBLbm93bk5vdEZpbmFsIH07CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBib29s
IGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChpbnQgb3AxLCBpbnQgb3AyLCBpbnQmIG9w
LCBpbnQzMl90JiBjb25zdGFudCk7CisgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW50
KGludCBvcDEsIGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIAogICAgICAg
ICB2b2lkIGVtaXRMb2FkVGFnKGludCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcpOwogICAgICAgICB2
b2lkIGVtaXRMb2FkUGF5bG9hZChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCk7CkBAIC00
NDgsMjQgKzQ0OCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBwYXlsb2FkKTsKICAgICAgICAgfQogCi0gICAgICAgIGludDMyX3Qg
Z2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KGludCBzcmMpOworICAgICAgICBpbnQzMl90
IGdldE9wZXJhbmRDb25zdGFudEludChpbnQgc3JjKTsKIAogICAgICAgICBKdW1wIGVtaXRKdW1w
SWZKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZkJvdGhKU0NlbGxz
KFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVtaXRK
dW1wU2xvd0Nhc2VJZkpTQ2VsbChSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQsIGludCBWUmVnKTsKLSAgICAgICAgSnVtcCBlbWl0
SnVtcElmSW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEKTsKLSAgICAgICAgSnVtcCBlbWl0SnVt
cElmTm90SW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEKTsKLSAgICAgICAgSnVtcCBlbWl0SnVt
cElmTm90SW1tZWRpYXRlSW50ZWdlcnMoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJ
RCk7Ci0gICAgICAgIFBhdGNoYWJsZUp1bXAgZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEltbWVkaWF0
ZUludGVnZXIoUmVnaXN0ZXJJRCk7Ci0gICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEKTsKLSAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbW1lZGlhdGVOdW1iZXIoUmVnaXN0ZXJJRCk7Ci0gICAgICAgIHZvaWQgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcnMoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwg
UmVnaXN0ZXJJRCk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJZkludChSZWdpc3RlcklEKTsKKyAg
ICAgICAgSnVtcCBlbWl0SnVtcElmTm90SW50KFJlZ2lzdGVySUQpOworICAgICAgICBKdW1wIGVt
aXRKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCBzY3JhdGNo
KTsKKyAgICAgICAgUGF0Y2hhYmxlSnVtcCBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KFJlZ2lz
dGVySUQpOworICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChSZWdpc3RlcklE
KTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCk7
CisgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRo
UmVUYWdJbW1lZGlhdGUoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCk7Ci0KLSAgICAg
ICAgdm9pZCBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKFJlZ2lzdGVySUQgcmVnKTsKKyAgICAgICAg
dm9pZCBlbWl0VGFnQm9vbChSZWdpc3RlcklEIHJlZyk7CiAgICAgICAgIHZvaWQgY29tcGlsZUJp
bmFyeUFyaXRoT3AoT3Bjb2RlSUQsIGludCBkc3QsIGludCBzcmMxLCBpbnQgc3JjMiwgT3BlcmFu
ZFR5cGVzIG9waSk7CiAgICAgICAgIHZvaWQgY29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShJ
bnN0cnVjdGlvbiosIE9wY29kZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiwg
aW50IGRzdCwgaW50IHNyYzEsIGludCBzcmMyLCBPcGVyYW5kVHlwZXMsIGJvb2wgb3AxSGFzSW1t
ZWRpYXRlSW50RmFzdENhc2UsIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpOwogCkBA
IC02OTIsOCArNjkwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZW1pdFB1dElu
dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyRW50cnkpOwogCiAgICAgICAgIEpTVmFsdWUgZ2V0Q29uc3RhbnRPcGVyYW5kKGludCBzcmMp
OwotICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KGludCBzcmMpOwot
ICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcihpbnQgc3JjKTsKKyAg
ICAgICAgYm9vbCBpc09wZXJhbmRDb25zdGFudEludChpbnQgc3JjKTsKKyAgICAgICAgYm9vbCBp
c09wZXJhbmRDb25zdGFudENoYXIoaW50IHNyYyk7CiAKICAgICAgICAgSnVtcCBnZXRTbG93Q2Fz
ZShWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogICAgICAgICB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
CShyZXZpc2lvbiAxOTAyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRo
bWV0aWMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQgbwogICAgIEp1bXBMaXN0IG5vdEludDMyT3Ay
OwogCiAgICAgLy8gQ2hhcmFjdGVyIGxlc3MuCi0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlQ2hhcihvcDEpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50Q2hhcihvcDEpKSB7
CiAgICAgICAgIGVtaXRMb2FkKG9wMiwgcmVnVDEsIHJlZ1QwKTsKICAgICAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRh
ZykpKTsKICAgICAgICAgSnVtcExpc3QgZmFpbHVyZXM7CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
SklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlEIG8KICAgICAgICAgYWRkSnVtcChicmFu
Y2gzMihjb21tdXRlKGNvbmRpdGlvbiksIHJlZ1QwLCBJbW0zMihhc1N0cmluZyhnZXRDb25zdGFu
dE9wZXJhbmQob3AxKSktPnRyeUdldFZhbHVlKClbMF0pKSwgdGFyZ2V0KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyKG9wMikp
IHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRDaGFyKG9wMikpIHsKICAgICAgICAgZW1pdExv
YWQob3AxLCByZWdUMSwgcmVnVDApOwogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICBK
dW1wTGlzdCBmYWlsdXJlczsKQEAgLTEwMSwxMSArMTAxLDExIEBAIHZvaWQgSklUOjplbWl0X2Nv
bXBhcmVBbmRKdW1wKE9wY29kZUlEIG8KICAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb25kaXRp
b24sIHJlZ1QwLCBJbW0zMihhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQob3AyKSktPnRyeUdl
dFZhbHVlKClbMF0pKSwgdGFyZ2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0gCi0gICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsKKyAgICBpZiAoaXNPcGVyYW5k
Q29uc3RhbnRJbnQob3AxKSkgewogICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1QzLCByZWdUMik7
CiAgICAgICAgIG5vdEludDMyT3AyLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgYWRkSnVtcChicmFuY2gz
Mihjb21tdXRlKGNvbmRpdGlvbiksIHJlZ1QyLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3Ax
KS5hc0ludDMyKCkpKSwgdGFyZ2V0KTsKLSAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50
SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50
KG9wMikpIHsKICAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOwogICAgICAgICBu
b3RJbnQzMk9wMS5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29uZGl0aW9u
LCByZWdUMCwgSW1tMzIoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpKSksIHRhcmdl
dCk7CkBAIC0xMjQsMjggKzEyNCwyOCBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChP
cGNvZGVJRCBvCiAgICAgSnVtcCBlbmQgPSBqdW1wKCk7CiAKICAgICAvLyBEb3VibGUgbGVzcy4K
LSAgICBlbWl0QmluYXJ5RG91YmxlT3Aob3Bjb2RlLCB0YXJnZXQsIG9wMSwgb3AyLCBPcGVyYW5k
VHlwZXMoKSwgbm90SW50MzJPcDEsIG5vdEludDMyT3AyLCAhaXNPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVJbnQob3AxKSwgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSB8fCAhaXNP
cGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSk7CisgICAgZW1pdEJpbmFyeURvdWJsZU9w
KG9wY29kZSwgdGFyZ2V0LCBvcDEsIG9wMiwgT3BlcmFuZFR5cGVzKCksIG5vdEludDMyT3AxLCBu
b3RJbnQzMk9wMiwgIWlzT3BlcmFuZENvbnN0YW50SW50KG9wMSksIGlzT3BlcmFuZENvbnN0YW50
SW50KG9wMSkgfHwgIWlzT3BlcmFuZENvbnN0YW50SW50KG9wMikpOwogICAgIGVuZC5saW5rKHRo
aXMpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wMSwgaW50
IG9wMiwgdW5zaWduZWQgdGFyZ2V0LCBEb3VibGVDb25kaXRpb24sIHNpemVfdCAoSklUX09QRVJB
VElPTiAqb3BlcmF0aW9uKShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUpLCBib29sIGludmVydCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikK
IHsKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyKG9wMSkgfHwgaXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyKG9wMikpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3Rh
bnRDaGFyKG9wMSkgfHwgaXNPcGVyYW5kQ29uc3RhbnRDaGFyKG9wMikpIHsKICAgICAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmICghc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKLSAgICAgICAgICAg
IGlmICghaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29u
c3RhbnRJbW1lZGlhdGVJbnQob3AyKSkKKyAgICAgICAgICAgIGlmICghaXNPcGVyYW5kQ29uc3Rh
bnRJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkKICAgICAgICAgICAgICAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAgICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAoIWlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsKKyAgICAgICAgICAg
IGlmICghaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkgewogICAgICAgICAgICAgICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsgLy8gZG91YmxlIGNoZWNrCiAgICAgICAgICAgICAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkgfHwgIWlzT3BlcmFuZENvbnN0YW50
SW1tZWRpYXRlSW50KG9wMikpCisgICAgICAgICAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQo
b3AxKSB8fCAhaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkKICAgICAgICAgICAgICAgICBsaW5r
U2xvd0Nhc2UoaXRlcik7IC8vIGRvdWJsZSBjaGVjawogICAgICAgICB9CiAgICAgfQpAQCAtMTYz
LDcgKzE2Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2xzaGlmdChJbnN0cnVjdGlvbiogY3UKICAg
ICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBpbnQgb3Ay
ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIGlmIChpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50
KG9wMikpIHsKICAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwgcmVnVDApOwogICAgICAgICBh
ZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVl
OjpJbnQzMlRhZykpKTsKICAgICAgICAgbHNoaWZ0MzIoSW1tMzIoZ2V0Q29uc3RhbnRPcGVyYW5k
KG9wMikuYXNJbnQzMigpKSwgcmVnVDApOwpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2xzaGlmdChJbnN0cnVjdGlvbiogY3UKICAgICB9CiAKICAgICBlbWl0TG9hZDIob3Ax
LCByZWdUMSwgcmVnVDAsIG9wMiwgcmVnVDMsIHJlZ1QyKTsKLSAgICBpZiAoIWlzT3BlcmFuZENv
bnN0YW50SW1tZWRpYXRlSW50KG9wMSkpCisgICAgaWYgKCFpc09wZXJhbmRDb25zdGFudEludChv
cDEpKQogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0
ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihO
b3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICBs
c2hpZnQzMihyZWdUMiwgcmVnVDApOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24KICAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZDsKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZDsKIAotICAgIGlmICghaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSAm
JiAhaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkKKyAgICBpZiAoIWlzT3BlcmFu
ZENvbnN0YW50SW50KG9wMSkgJiYgIWlzT3BlcmFuZENvbnN0YW50SW50KG9wMikpCiAgICAgICAg
IGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRl
cik7IC8vIGludDMyIGNoZWNrCiAKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIEpJVDo6ZW1pdFJp
Z2h0U2hpZnQoSW5zdHJ1Y3Rpb24qIGN1CiAKICAgICAvLyBTbG93IGNhc2Ugb2YgcnNoaWZ0IG1h
a2VzIGFzc3VtcHRpb25zIGFib3V0IHdoYXQgcmVnaXN0ZXJzIGhvbGQgdGhlCiAgICAgLy8gc2hp
ZnQgYXJndW1lbnRzLCBzbyBhbnkgY2hhbmdlcyBtdXN0IGJlIHVwZGF0ZWQgdGhlcmUgYXMgd2Vs
bC4KLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgeworICAgIGlm
IChpc09wZXJhbmRDb25zdGFudEludChvcDIpKSB7CiAgICAgICAgIGVtaXRMb2FkKG9wMSwgcmVn
VDEsIHJlZ1QwKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1Qx
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgICAgIGludCBzaGlmdCA9
IGdldENvbnN0YW50T3BlcmFuZChvcDIpLmFzSW50MzIoKSAmIDB4MWY7CkBAIC0yMTUsNyArMjE1
LDcgQEAgdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0KEluc3RydWN0aW9uKiBjdQogICAgICAgICBl
bWl0U3RvcmVJbnQzMihkc3QsIHJlZ1QwLCBkc3QgPT0gb3AxKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBlbWl0TG9hZDIob3AxLCByZWdUMSwgcmVnVDAsIG9wMiwgcmVnVDMsIHJlZ1QyKTsKLSAg
ICAgICAgaWYgKCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKQorICAgICAgICBp
ZiAoIWlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpCiAgICAgICAgICAgICBhZGRTbG93Q2FzZShi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykp
KTsKICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAgICAgIGlmIChpc1Vuc2lnbmVkKQpAQCAt
MjMxLDcgKzIzMSw3IEBAIHZvaWQgSklUOjplbWl0UmlnaHRTaGlmdFNsb3dDYXNlKEluc3RydWMK
ICAgICBpbnQgZHN0ID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKICAgICBpbnQg
b3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBpbnQgb3AyID0gY3Vy
cmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVJbnQob3AyKSkgeworICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDIpKSB7
CiAgICAgICAgIGludCBzaGlmdCA9IGdldENvbnN0YW50T3BlcmFuZChvcDIpLmFzSW50MzIoKSAm
IDB4MWY7CiAgICAgICAgIC8vIG9wMSA9IHJlZ1QxOnJlZ1QwCiAgICAgICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIEpJVDo6ZW1p
dFJpZ2h0U2hpZnRTbG93Q2FzZShJbnN0cnVjCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gb3Ax
ID0gcmVnVDE6cmVnVDAKICAgICAgICAgLy8gb3AyID0gcmVnVDM6cmVnVDIKLSAgICAgICAgaWYg
KCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CisgICAgICAgIGlmICghaXNP
cGVyYW5kQ29uc3RhbnRJbnQob3AxKSkgewogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OyAvLyBpbnQzMiBjaGVjayAtLSBvcDEgaXMgbm90IGFuIGludAogICAgICAgICAgICAgaWYgKHN1
cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkpIHsKICAgICAgICAgICAgICAgICBKdW1wTGlz
dCBmYWlsdXJlczsKQEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRhbmQo
SW5zdHJ1Y3Rpb24qIGN1CiAKICAgICBpbnQgb3A7CiAgICAgaW50MzJfdCBjb25zdGFudDsKLSAg
ICBpZiAoZ2V0T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSwgb3AyLCBvcCwgY29uc3Rh
bnQpKSB7CisgICAgaWYgKGdldE9wZXJhbmRDb25zdGFudEludChvcDEsIG9wMiwgb3AsIGNvbnN0
YW50KSkgewogICAgICAgICBlbWl0TG9hZChvcCwgcmVnVDEsIHJlZ1QwKTsKICAgICAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
SW50MzJUYWcpKSk7CiAgICAgICAgIGFuZDMyKEltbTMyKGNvbnN0YW50KSwgcmVnVDApOwpAQCAt
MzU1LDcgKzM1NSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9iaXRhbmQoSW5zdHJ1Y3Rpb24K
ICAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAgICBpbnQg
b3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIGlmICghaXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlh
dGVJbnQob3AyKSkKKyAgICBpZiAoIWlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkgJiYgIWlzT3Bl
cmFuZENvbnN0YW50SW50KG9wMikpCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50
MzIgY2hlY2sKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAKQEAgLTM3
Myw3ICszNzMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihJbnN0cnVjdGlvbiogY3VyCiAK
ICAgICBpbnQgb3A7CiAgICAgaW50MzJfdCBjb25zdGFudDsKLSAgICBpZiAoZ2V0T3BlcmFuZENv
bnN0YW50SW1tZWRpYXRlSW50KG9wMSwgb3AyLCBvcCwgY29uc3RhbnQpKSB7CisgICAgaWYgKGdl
dE9wZXJhbmRDb25zdGFudEludChvcDEsIG9wMiwgb3AsIGNvbnN0YW50KSkgewogICAgICAgICBl
bWl0TG9hZChvcCwgcmVnVDEsIHJlZ1QwKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIo
Tm90RXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7CiAgICAg
ICAgIG9yMzIoSW1tMzIoY29uc3RhbnQpLCByZWdUMCk7CkBAIC0zOTMsNyArMzkzLDcgQEAgdm9p
ZCBKSVQ6OmVtaXRTbG93X29wX2JpdG9yKEluc3RydWN0aW9uKgogICAgIGludCBvcDEgPSBjdXJy
ZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgaWYgKCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0
ZUludChvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKQorICAgIGlm
ICghaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbnQob3Ay
KSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtT
bG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKIApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2JpdHhvcihJbnN0cnVjdGlvbiogY3UKIAogICAgIGludCBvcDsKICAgICBp
bnQzMl90IGNvbnN0YW50OwotICAgIGlmIChnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQo
b3AxLCBvcDIsIG9wLCBjb25zdGFudCkpIHsKKyAgICBpZiAoZ2V0T3BlcmFuZENvbnN0YW50SW50
KG9wMSwgb3AyLCBvcCwgY29uc3RhbnQpKSB7CiAgICAgICAgIGVtaXRMb2FkKG9wLCByZWdUMSwg
cmVnVDApOwogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgeG9yMzIoSW1tMzIoY29u
c3RhbnQpLCByZWdUMCk7CkBAIC00MzEsNyArNDMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2JpdHhvcihJbnN0cnVjdGlvbgogICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwogICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
OwogCi0gICAgaWYgKCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpICYmICFpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKQorICAgIGlmICghaXNPcGVyYW5kQ29uc3Rh
bnRJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkKICAgICAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8g
aW50MzIgY2hlY2sKIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2FkZChJ
bnN0cnVjdGlvbiogY3VycmUKIAogICAgIGludCBvcDsKICAgICBpbnQzMl90IGNvbnN0YW50Owot
ICAgIGlmIChnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxLCBvcDIsIG9wLCBjb25z
dGFudCkpIHsKKyAgICBpZiAoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSwgb3AyLCBvcCwgY29u
c3RhbnQpKSB7CiAgICAgICAgIGVtaXRBZGQzMkNvbnN0YW50KGRzdCwgb3AsIGNvbnN0YW50LCBv
cCA9PSBvcDEgPyB0eXBlcy5maXJzdCgpIDogdHlwZXMuc2Vjb25kKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9hZGQo
SW5zdHJ1Y3Rpb24qIGMKIAogICAgIGludCBvcDsKICAgICBpbnQzMl90IGNvbnN0YW50OwotICAg
IGlmIChnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxLCBvcDIsIG9wLCBjb25zdGFu
dCkpIHsKKyAgICBpZiAoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSwgb3AyLCBvcCwgY29uc3Rh
bnQpKSB7CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gb3ZlcmZsb3cgY2hlY2sKIAog
ICAgICAgICBpZiAoIXN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKQpAQCAtNjA0LDcgKzYwNCw3IEBA
IHZvaWQgSklUOjplbWl0X29wX3N1YihJbnN0cnVjdGlvbiogY3VycmUKICAgICBKdW1wTGlzdCBu
b3RJbnQzMk9wMTsKICAgICBKdW1wTGlzdCBub3RJbnQzMk9wMjsKIAotICAgIGlmIChpc09wZXJh
bmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50
SW50KG9wMikpIHsKICAgICAgICAgZW1pdFN1YjMyQ29uc3RhbnQoZHN0LCBvcDEsIGdldENvbnN0
YW50T3BlcmFuZChvcDIpLmFzSW50MzIoKSwgdHlwZXMuZmlyc3QoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC02NjEsNyArNjYxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3N1YihJ
bnN0cnVjdGlvbiogYwogICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUludChjdXJy
ZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAotICAgIGlmIChpc09wZXJhbmRDb25zdGFu
dEltbWVkaWF0ZUludChvcDIpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMikp
IHsKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBvdmVyZmxvdyBjaGVjawogCiAgICAg
ICAgIGlmICghc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkgfHwgIXR5cGVzLmZpcnN0KCkuZGVmaW5p
dGVseUlzTnVtYmVyKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRo
bWV0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJp
dGhtZXRpYy5jcHAJKHJldmlzaW9uIDE5MDIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NiwxNSArMTk2LDE1IEBA
IHZvaWQgSklUOjplbWl0X29wX25lZ2F0ZShJbnN0cnVjdGlvbiogY3UKIAogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoc3JjLCByZWdUMCk7CiAKLSAgICBKdW1wIHNyY05vdEludCA9IGVtaXRK
dW1wSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKKyAgICBKdW1wIHNyY05vdEludCA9IGVt
aXRKdW1wSWZOb3RJbnQocmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihaZXJv
LCByZWdUMCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKSk7CiAgICAgbmVnMzIocmVnVDApOwot
ICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShyZWdUMCwgcmVnVDApOworICAgIGVtaXRU
YWdJbnQocmVnVDAsIHJlZ1QwKTsKIAogICAgIEp1bXAgZW5kID0ganVtcCgpOwogCiAgICAgc3Jj
Tm90SW50LmxpbmsodGhpcyk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlTnVt
YmVyKHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIocmVnVDApOwogCiAg
ICAgbW92ZShUcnVzdGVkSW1tNjQoKGludDY0X3QpMHg4MDAwMDAwMDAwMDAwMDAwdWxsKSwgcmVn
VDEpOwogICAgIHhvcjY0KHJlZ1QxLCByZWdUMCk7CkBAIC0yMjksMTMgKzIyOSwxMSBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF9sc2hpZnQoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgaW50IG9wMiA9IGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
cyhvcDEsIHJlZ1QwLCBvcDIsIHJlZ1QyKTsKLSAgICAvLyBGSVhNRTogd291bGQgd2UgYmUgYmV0
dGVyIHVzaW5nICdlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2Vycyc/IC0gd2Ug
KnByb2JhYmx5KiBvdWdodCB0byBiZSBjb25zaXN0ZW50LgotICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElt
bWVkaWF0ZUludGVnZXIocmVnVDIpOwotICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChyZWdUMCk7
Ci0gICAgZW1pdEZhc3RBcml0aEltbVRvSW50KHJlZ1QyKTsKKyAgICAvLyBGSVhNRTogd291bGQg
d2UgYmUgYmV0dGVyIHVzaW5nIGEgJ2VtaXRKdW1wU2xvd0Nhc2VJZk5vdEludCcgdGhhdCB0ZXN0
cyBib3RoIHZhbHVlcyBhdCBvbmNlPyAtIHdlICpwcm9iYWJseSogb3VnaHQgdG8gYmUgY29uc2lz
dGVudC4KKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDApOworICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEludChyZWdUMik7CiAgICAgbHNoaWZ0MzIocmVnVDIsIHJlZ1QwKTsKLSAg
ICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUocmVnVDAsIHJlZ1QwKTsKKyAgICBlbWl0VGFn
SW50KHJlZ1QwLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpOwog
fQogCkBAIC0yNTMsMzIgKzI1MSwzMSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9yc2hpZnQoSW5zdHJ1
Y3Rpb24qIGN1CiAgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CiAgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAgICBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgewotICAgICAgICAvLyBpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpID0+IDEgU2xvd0Nhc2UKKyAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbnQob3AyKSkgeworICAgICAgICAvLyBpc09wZXJhbmRDb25zdGFudElu
dChvcDIpID0+IDEgU2xvd0Nhc2UKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEs
IHJlZ1QwKTsKLSAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihy
ZWdUMCk7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCk7CiAgICAgICAg
IC8vIE1hc2sgd2l0aCAweDFmIGFzIHBlciBlY21hLTI2MiAxMS43LjIgc3RlcCA3LgotICAgICAg
ICByc2hpZnQzMihJbW0zMihnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AyKSAmIDB4
MWYpLCByZWdUMCk7CisgICAgICAgIHJzaGlmdDMyKEltbTMyKGdldE9wZXJhbmRDb25zdGFudElu
dChvcDIpICYgMHgxZiksIHJlZ1QwKTsKICAgICB9IGVsc2UgewogICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVycyhvcDEsIHJlZ1QwLCBvcDIsIHJlZ1QyKTsKICAgICAgICAgaWYgKHN1cHBv
cnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkpIHsKLSAgICAgICAgICAgIEp1bXAgbGhzSXNJbnQg
PSBlbWl0SnVtcElmSW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7CisgICAgICAgICAgICBKdW1wIGxo
c0lzSW50ID0gZW1pdEp1bXBJZkludChyZWdUMCk7CiAgICAgICAgICAgICAvLyBzdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSAmJiBVU0UoSlNWQUxVRTY0KSA9PiAzIFNsb3dDYXNlcwotICAgICAgICAg
ICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMCkpOworICAg
ICAgICAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMCkpOwogICAgICAg
ICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgICAgICBt
b3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CiAgICAgICAgICAgICBhZGRTbG93Q2FzZShi
cmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnBSZWdUMCwgcmVnVDApKTsKICAgICAgICAgICAg
IGxoc0lzSW50LmxpbmsodGhpcyk7Ci0gICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1lZGlhdGVJbnRlZ2VyKHJlZ1QyKTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEludChyZWdUMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyAhc3VwcG9ydHNG
bG9hdGluZ1BvaW50KCkgPT4gMiBTbG93Q2FzZXMKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOwotICAgICAgICAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMik7CisgICAgICAgICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RJbnQocmVnVDApOworICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW50KHJlZ1QyKTsKICAgICAgICAgfQotICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQocmVn
VDIpOwogICAgICAgICByc2hpZnQzMihyZWdUMiwgcmVnVDApOwogICAgIH0KLSAgICBlbWl0RmFz
dEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7CisgICAgZW1pdFRhZ0ludChyZWdU
MCwgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KTsKIH0KIApAQCAt
Mjg2LDcgKzI4Myw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9yc2hpZnQoSW5zdHJ1Y3Rpb24K
IHsKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKQorICAgIGlmIChpc09wZXJh
bmRDb25zdGFudEludChvcDIpKQogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKICAgICBl
bHNlIHsKQEAgLTMxMCwzMiArMzA3LDMxIEBAIHZvaWQgSklUOjplbWl0X29wX3Vyc2hpZnQoSW5z
dHJ1Y3Rpb24qIGMKICAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZDsKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7Ci0gICAgICAgIC8vIGlz
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikgPT4gMSBTbG93Q2FzZQorICAgIGlmIChp
c09wZXJhbmRDb25zdGFudEludChvcDIpKSB7CisgICAgICAgIC8vIGlzT3BlcmFuZENvbnN0YW50
SW50KG9wMikgPT4gMSBTbG93Q2FzZQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9w
MSwgcmVnVDApOwotICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2Vy
KHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwKTsKICAgICAg
ICAgLy8gTWFzayB3aXRoIDB4MWYgYXMgcGVyIGVjbWEtMjYyIDExLjcuMiBzdGVwIDcuCi0gICAg
ICAgIHVyc2hpZnQzMihJbW0zMihnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AyKSAm
IDB4MWYpLCByZWdUMCk7CisgICAgICAgIHVyc2hpZnQzMihJbW0zMihnZXRPcGVyYW5kQ29uc3Rh
bnRJbnQob3AyKSAmIDB4MWYpLCByZWdUMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcnMob3AxLCByZWdUMCwgb3AyLCByZWdUMik7CiAgICAgICAgIGlmIChz
dXBwb3J0c0Zsb2F0aW5nUG9pbnRUcnVuY2F0ZSgpKSB7Ci0gICAgICAgICAgICBKdW1wIGxoc0lz
SW50ID0gZW1pdEp1bXBJZkltbWVkaWF0ZUludGVnZXIocmVnVDApOworICAgICAgICAgICAgSnVt
cCBsaHNJc0ludCA9IGVtaXRKdW1wSWZJbnQocmVnVDApOwogICAgICAgICAgICAgLy8gc3VwcG9y
dHNGbG9hdGluZ1BvaW50KCkgJiYgVVNFKEpTVkFMVUU2NCkgPT4gMyBTbG93Q2FzZXMKLSAgICAg
ICAgICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIocmVnVDApKTsK
KyAgICAgICAgICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDApKTsKICAg
ICAgICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDApOwogICAgICAgICAg
ICAgbW92ZTY0VG9Eb3VibGUocmVnVDAsIGZwUmVnVDApOwogICAgICAgICAgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwUmVnVDAsIHJlZ1QwKSk7CiAgICAgICAg
ICAgICBsaHNJc0ludC5saW5rKHRoaXMpOwotICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMik7CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RJbnQocmVnVDIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gIXN1cHBv
cnRzRmxvYXRpbmdQb2ludCgpID0+IDIgU2xvd0Nhc2VzCi0gICAgICAgICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICAgICAgICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDIpOworICAgICAgICAgICAgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwKTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEludChyZWdUMik7CiAgICAgICAgIH0KLSAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50
KHJlZ1QyKTsKICAgICAgICAgdXJzaGlmdDMyKHJlZ1QyLCByZWdUMCk7CiAgICAgfQotICAgIGVt
aXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2socmVnVDAsIHJlZ1QwKTsKKyAgICBlbWl0VGFnSW50
KHJlZ1QwLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpOwogfQog
CkBAIC0zNDMsNyArMzM5LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3Vyc2hpZnQoSW5zdHJ1
Y3RpbwogewogICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwog
Ci0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpCisgICAgaWYgKGlz
T3BlcmFuZENvbnN0YW50SW50KG9wMikpCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAog
ICAgIGVsc2UgewpAQCAtMzY3LDkgKzM2Myw5IEBAIHZvaWQgSklUOjplbWl0X29wX3Vuc2lnbmVk
KEluc3RydWN0aW9uKiAKICAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZDsKICAgICAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDApOwotICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOworICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTGVz
c1RoYW4sIHJlZ1QwLCBUcnVzdGVkSW1tMzIoMCkpKTsKLSAgICBlbWl0RmFzdEFyaXRoUmVUYWdJ
bW1lZGlhdGUocmVnVDAsIHJlZ1QwKTsKKyAgICBlbWl0VGFnSW50KHJlZ1QwLCByZWdUMCk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQsIHJlZ1QwKTsKIH0KIApAQCAtMzg5LDcg
KzM4NSw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlELCAKICAgICAv
LyAtIGNvbnN0YW50IGludCBpbW1lZGlhdGUgdG8gaW50IGltbWVkaWF0ZQogICAgIC8vIC0gaW50
IGltbWVkaWF0ZSB0byBpbnQgaW1tZWRpYXRlCiAKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVDaGFyKG9wMSkpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRDaGFyKG9wMSkp
IHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJlZ1QwKTsKICAgICAgICAg
YWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwogICAgICAgICBKdW1wTGlz
dCBmYWlsdXJlczsKQEAgLTM5OCw3ICszOTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5k
SnVtcChPcGNvZGVJRCwgCiAgICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoY29tbXV0ZShjb25kaXRp
b24pLCByZWdUMCwgSW1tMzIoYXNTdHJpbmcoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMSkpLT50cnlH
ZXRWYWx1ZSgpWzBdKSksIHRhcmdldCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcihvcDIpKSB7CisgICAgaWYgKGlzT3BlcmFu
ZENvbnN0YW50Q2hhcihvcDIpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3Ax
LCByZWdUMCk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDAp
KTsKICAgICAgICAgSnVtcExpc3QgZmFpbHVyZXM7CkBAIC00MDcsMjAgKzQwMywyMCBAQCB2b2lk
IEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCwgCiAgICAgICAgIGFkZEp1bXAoYnJh
bmNoMzIoY29uZGl0aW9uLCByZWdUMCwgSW1tMzIoYXNTdHJpbmcoZ2V0Q29uc3RhbnRPcGVyYW5k
KG9wMikpLT50cnlHZXRWYWx1ZSgpWzBdKSksIHRhcmdldCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICBp
ZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJl
Z2lzdGVyKG9wMSwgcmVnVDApOwotICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlh
dGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICAgICAgaW50MzJfdCBvcDJpbW0gPSBnZXRDb25zdGFudE9w
ZXJhbmRJbW1lZGlhdGVJbnQob3AyKTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50
KHJlZ1QwKTsKKyAgICAgICAgaW50MzJfdCBvcDJpbW0gPSBnZXRPcGVyYW5kQ29uc3RhbnRJbnQo
b3AyKTsKICAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb25kaXRpb24sIHJlZ1QwLCBJbW0zMihv
cDJpbW0pKSwgdGFyZ2V0KTsKLSAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRp
YXRlSW50KG9wMSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkp
IHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJlZ1QxKTsKLSAgICAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMSk7Ci0gICAgICAgIGlu
dDMyX3Qgb3AxaW1tID0gZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMSk7CisgICAg
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMSk7CisgICAgICAgIGludDMyX3Qgb3Ax
aW1tID0gZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSk7CiAgICAgICAgIGFkZEp1bXAoYnJhbmNo
MzIoY29tbXV0ZShjb25kaXRpb24pLCByZWdUMSwgSW1tMzIob3AxaW1tKSksIHRhcmdldCk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMob3AxLCByZWdUMCwg
b3AyLCByZWdUMSk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVn
ZXIocmVnVDApOwotICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2Vy
KHJlZ1QxKTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwKTsKKyAgICAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QxKTsKIAogICAgICAgICBhZGRKdW1wKGJy
YW5jaDMyKGNvbmRpdGlvbiwgcmVnVDAsIHJlZ1QxKSwgdGFyZ2V0KTsKICAgICB9CkBAIC00NDAs
NyArNDM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBTbG93KGludCBvcAogICAg
IC8vIC0gZmxvYXRpbmctcG9pbnQgbnVtYmVyIHRvIGNvbnN0YW50IGludCBpbW1lZGlhdGUKICAg
ICAvLyAtIGNvbnN0YW50IGludCBpbW1lZGlhdGUgdG8gZmxvYXRpbmctcG9pbnQgbnVtYmVyCiAg
ICAgLy8gLSBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gZmxvYXRpbmctcG9pbnQgbnVtYmVyLgot
ICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUNoYXIob3AxKSB8fCBpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUNoYXIob3AyKSkgeworICAgIGlmIChpc09wZXJhbmRDb25zdGFudENo
YXIob3AxKSB8fCBpc09wZXJhbmRDb25zdGFudENoYXIob3AyKSkgewogICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwpAQCAtNDUzLDExICs0NDksMTEgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFy
ZUFuZEp1bXBTbG93KGludCBvcAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlz
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29u
c3RhbnRJbnQob3AyKSkgewogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAKICAgICAgICAg
aWYgKHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKSB7Ci0gICAgICAgICAgICBKdW1wIGZhaWwxID0g
ZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMCk7CisgICAgICAgICAgICBKdW1wIGZh
aWwxID0gZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMCk7CiAgICAgICAgICAgICBhZGQ2NCh0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKICAgICAgICAgICAgIG1vdmU2NFRvRG91YmxlKHJl
Z1QwLCBmcFJlZ1QwKTsKIApAQCAtNDc2LDExICs0NzIsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfY29t
cGFyZUFuZEp1bXBTbG93KGludCBvcAogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9w
MiwgcmVnVDEpOwogICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwgcmVnVDAsIHJlZ1Qx
KTsKICAgICAgICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKGludmVydCA/IFplcm8g
OiBOb25aZXJvLCByZXR1cm5WYWx1ZUdQUiksIHRhcmdldCk7Ci0gICAgfSBlbHNlIGlmIChpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CisgICAgfSBlbHNlIGlmIChpc09wZXJh
bmRDb25zdGFudEludChvcDEpKSB7CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAg
ICAgICBpZiAoc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKLSAgICAgICAgICAgIEp1bXAgZmFp
bDEgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QxKTsKKyAgICAgICAgICAgIEp1
bXAgZmFpbDEgPSBlbWl0SnVtcElmTm90TnVtYmVyKHJlZ1QxKTsKICAgICAgICAgICAgIGFkZDY0
KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDEpOwogICAgICAgICAgICAgbW92ZTY0VG9Eb3Vi
bGUocmVnVDEsIGZwUmVnVDEpOwogCkBAIC01MDMsOSArNDk5LDkgQEAgdm9pZCBKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXBTbG93KGludCBvcAogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAK
ICAgICAgICAgaWYgKHN1cHBvcnRzRmxvYXRpbmdQb2ludCgpKSB7Ci0gICAgICAgICAgICBKdW1w
IGZhaWwxID0gZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMCk7Ci0gICAgICAgICAg
ICBKdW1wIGZhaWwyID0gZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMSk7Ci0gICAg
ICAgICAgICBKdW1wIGZhaWwzID0gZW1pdEp1bXBJZkltbWVkaWF0ZUludGVnZXIocmVnVDEpOwor
ICAgICAgICAgICAgSnVtcCBmYWlsMSA9IGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDApOworICAg
ICAgICAgICAgSnVtcCBmYWlsMiA9IGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDEpOworICAgICAg
ICAgICAgSnVtcCBmYWlsMyA9IGVtaXRKdW1wSWZJbnQocmVnVDEpOwogICAgICAgICAgICAgYWRk
NjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgICAgICBhZGQ2NCh0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QxKTsKICAgICAgICAgICAgIG1vdmU2NFRvRG91YmxlKHJl
Z1QwLCBmcFJlZ1QwKTsKQEAgLTUzMiwyNCArNTI4LDI0IEBAIHZvaWQgSklUOjplbWl0X29wX2Jp
dGFuZChJbnN0cnVjdGlvbiogY3UKICAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZDsKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZDsKIAotICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CisgICAg
aWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcihvcDIsIHJlZ1QwKTsKLSAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRp
YXRlSW50ZWdlcihyZWdUMCk7Ci0gICAgICAgIGludDMyX3QgaW1tID0gZ2V0Q29uc3RhbnRPcGVy
YW5kSW1tZWRpYXRlSW50KG9wMSk7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChy
ZWdUMCk7CisgICAgICAgIGludDMyX3QgaW1tID0gZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSk7
CiAgICAgICAgIGFuZDY0KEltbTMyKGltbSksIHJlZ1QwKTsKICAgICAgICAgaWYgKGltbSA+PSAw
KQotICAgICAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhyZWdUMCwgcmVnVDAp
OwotICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgewor
ICAgICAgICAgICAgZW1pdFRhZ0ludChyZWdUMCwgcmVnVDApOworICAgIH0gZWxzZSBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbnQob3AyKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KG9wMSwgcmVnVDApOwotICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRl
Z2VyKHJlZ1QwKTsKLSAgICAgICAgaW50MzJfdCBpbW0gPSBnZXRDb25zdGFudE9wZXJhbmRJbW1l
ZGlhdGVJbnQob3AyKTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwKTsK
KyAgICAgICAgaW50MzJfdCBpbW0gPSBnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AyKTsKICAgICAg
ICAgYW5kNjQoSW1tMzIoaW1tKSwgcmVnVDApOwogICAgICAgICBpZiAoaW1tID49IDApCi0gICAg
ICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7CisgICAg
ICAgICAgICBlbWl0VGFnSW50KHJlZ1QwLCByZWdUMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMob3AxLCByZWdUMCwgb3AyLCByZWdUMSk7CiAgICAgICAg
IGFuZDY0KHJlZ1QxLCByZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVk
aWF0ZUludGVnZXIocmVnVDApOworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVn
VDApOwogICAgIH0KICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCk7CiB9CkBAIC01
NjcsOSArNTYzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaW5jKEluc3RydWN0aW9uKiBjdXJyZQog
ICAgIGludCBzcmNEc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNEc3QsIHJlZ1QwKTsKLSAgICBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZO
b3RJbnQocmVnVDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaEFkZDMyKE92ZXJmbG93LCBUcnVz
dGVkSW1tMzIoMSksIHJlZ1QwKSk7Ci0gICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhy
ZWdUMCwgcmVnVDApOworICAgIGVtaXRUYWdJbnQocmVnVDAsIHJlZ1QwKTsKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCk7CiB9CiAKQEAgLTU4Niw5ICs1ODIsOSBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWMoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgaW50IHNyY0RzdCA9IGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
KHNyY0RzdCwgcmVnVDApOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVn
ZXIocmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCk7CiAgICAgYWRk
U2xvd0Nhc2UoYnJhbmNoU3ViMzIoT3ZlcmZsb3csIFRydXN0ZWRJbW0zMigxKSwgcmVnVDApKTsK
LSAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7CisgICAgZW1p
dFRhZ0ludChyZWdUMCwgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoc3JjRHN0
KTsKIH0KIApAQCAtNjE4LDggKzYxNCw4IEBAIHZvaWQgSklUOjplbWl0X29wX21vZChJbnN0cnVj
dGlvbiogY3VycmUKICAgICBBU1NFUlQocmVnVDQgIT0gZWN4KTsKIAogICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXJzKG9wMSwgcmVnVDQsIG9wMiwgZWN4KTsKLSAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1Q0KTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1lZGlhdGVJbnRlZ2VyKGVjeCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1Q0
KTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQoZWN4KTsKIAogICAgIG1vdmUocmVnVDQs
IHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoWmVybywgZWN4KSk7CkBAIC02
MzEsNyArNjI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKEluc3RydWN0aW9uKiBjdXJyZQog
ICAgIEp1bXAgbnVtZXJhdG9yUG9zaXRpdmUgPSBicmFuY2gzMihHcmVhdGVyVGhhbk9yRXF1YWws
IHJlZ1Q0LCBUcnVzdGVkSW1tMzIoMCkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3QzMiha
ZXJvLCBlZHgpKTsKICAgICBudW1lcmF0b3JQb3NpdGl2ZS5saW5rKHRoaXMpOwotICAgIGVtaXRG
YXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShlZHgsIHJlZ1QwKTsKKyAgICBlbWl0VGFnSW50KGVkeCwg
cmVnVDApOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KTsKIH0KIApAQCAtNjY4
LDggKzY2NCw4IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9tb2QoSW5zdHJ1Y3Rpb24qLCAKIHZv
aWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcChPcGNvZGVJRCBvcGNvZGVJRCwgaW50LCBpbnQg
b3AxLCBpbnQgb3AyLCBPcGVyYW5kVHlwZXMpCiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cnMob3AxLCByZWdUMCwgb3AyLCByZWdUMSk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1t
ZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRl
SW50ZWdlcihyZWdUMSk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwKTsKKyAg
ICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDEpOwogICAgIFJhcmVDYXNlUHJvZmlsZSog
cHJvZmlsZSA9IG1fY29kZUJsb2NrLT5hZGRTcGVjaWFsRmFzdENhc2VQcm9maWxlKG1fYnl0ZWNv
ZGVPZmZzZXQpOwogICAgIGlmIChvcGNvZGVJRCA9PSBvcF9hZGQpCiAgICAgICAgIGFkZFNsb3dD
YXNlKGJyYW5jaEFkZDMyKE92ZXJmbG93LCByZWdUMSwgcmVnVDApKTsKQEAgLTcwMSw3ICs2OTcs
NyBAQCB2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFyaXRoT3AoT3Bjb2RlSUQgCiAgICAgICAgICAg
ICBhZGRTbG93Q2FzZShicmFuY2hUZXN0MzIoWmVybywgcmVnVDApKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7CisgICAg
ZW1pdFRhZ0ludChyZWdUMCwgcmVnVDApOwogfQogCiB2b2lkIEpJVDo6Y29tcGlsZUJpbmFyeUFy
aXRoT3BTbG93Q2FzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBPcGNvZGVJRCBv
cGNvZGVJRCwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlciwgaW50IHJlc3Vs
dCwgaW50IG9wMSwgaW50IG9wMiwgT3BlcmFuZFR5cGVzIHR5cGVzLCBib29sIG9wMUhhc0ltbWVk
aWF0ZUludEZhc3RDYXNlLCBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKQpAQCAtNzMz
LDcgKzcyOSw3IEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKEkKICAg
ICBpZiAob3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UpIHsKICAgICAgICAgbm90SW1tMi5saW5r
KHRoaXMpOwogICAgICAgICBpZiAoIXR5cGVzLnNlY29uZCgpLmRlZmluaXRlbHlJc051bWJlcigp
KQotICAgICAgICAgICAgZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMCkubGlua1Rv
KHN0dWJGdW5jdGlvbkNhbGwsIHRoaXMpOworICAgICAgICAgICAgZW1pdEp1bXBJZk5vdE51bWJl
cihyZWdUMCkubGlua1RvKHN0dWJGdW5jdGlvbkNhbGwsIHRoaXMpOwogICAgICAgICBlbWl0R2V0
VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDEpOwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJs
ZShyZWdUMSwgZnBSZWdUMSk7CiAgICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3Rlciwg
cmVnVDApOwpAQCAtNzQxLDcgKzczNyw3IEBAIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhP
cFNsb3dDYXNlKEkKICAgICB9IGVsc2UgaWYgKG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlKSB7
CiAgICAgICAgIG5vdEltbTEubGluayh0aGlzKTsKICAgICAgICAgaWYgKCF0eXBlcy5maXJzdCgp
LmRlZmluaXRlbHlJc051bWJlcigpKQotICAgICAgICAgICAgZW1pdEp1bXBJZk5vdEltbWVkaWF0
ZU51bWJlcihyZWdUMCkubGlua1RvKHN0dWJGdW5jdGlvbkNhbGwsIHRoaXMpOworICAgICAgICAg
ICAgZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMCkubGlua1RvKHN0dWJGdW5jdGlvbkNhbGwsIHRo
aXMpOwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDEpOwogICAgICAg
ICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMSwgZnBSZWdUMSk7CiAgICAgICAgIGFkZDY0KHRh
Z1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDApOwpAQCAtNzUwLDE5ICs3NDYsMTkgQEAgdm9pZCBK
SVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoSQogICAgICAgICAvLyBpZiB3ZSBnZXQg
aGVyZSwgZWF4IGlzIG5vdCBhbiBpbnQzMiwgZWR4IG5vdCB5ZXQgY2hlY2tlZC4KICAgICAgICAg
bm90SW1tMS5saW5rKHRoaXMpOwogICAgICAgICBpZiAoIXR5cGVzLmZpcnN0KCkuZGVmaW5pdGVs
eUlzTnVtYmVyKCkpCi0gICAgICAgICAgICBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJl
Z1QwKS5saW5rVG8oc3R1YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7CisgICAgICAgICAgICBlbWl0SnVt
cElmTm90TnVtYmVyKHJlZ1QwKS5saW5rVG8oc3R1YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7CiAgICAg
ICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpCi0gICAgICAgICAg
ICBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QxKS5saW5rVG8oc3R1YkZ1bmN0aW9u
Q2FsbCwgdGhpcyk7CisgICAgICAgICAgICBlbWl0SnVtcElmTm90TnVtYmVyKHJlZ1QxKS5saW5r
VG8oc3R1YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7CiAgICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJS
ZWdpc3RlciwgcmVnVDApOwogICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBSZWdUMSk7
Ci0gICAgICAgIEp1bXAgb3AyaXNEb3VibGUgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdl
cihyZWdUMSk7CisgICAgICAgIEp1bXAgb3AyaXNEb3VibGUgPSBlbWl0SnVtcElmTm90SW50KHJl
Z1QxKTsKICAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUocmVnVDEsIGZwUmVnVDIpOwogICAg
ICAgICBKdW1wIG9wMndhc0ludGVnZXIgPSBqdW1wKCk7CiAKICAgICAgICAgLy8gaWYgd2UgZ2V0
IGhlcmUsIGVheCBJUyBhbiBpbnQzMiwgZWR4IGlzIG5vdC4KICAgICAgICAgbm90SW1tMi5saW5r
KHRoaXMpOwogICAgICAgICBpZiAoIXR5cGVzLnNlY29uZCgpLmRlZmluaXRlbHlJc051bWJlcigp
KQotICAgICAgICAgICAgZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMSkubGlua1Rv
KHN0dWJGdW5jdGlvbkNhbGwsIHRoaXMpOworICAgICAgICAgICAgZW1pdEp1bXBJZk5vdE51bWJl
cihyZWdUMSkubGlua1RvKHN0dWJGdW5jdGlvbkNhbGwsIHRoaXMpOwogICAgICAgICBjb252ZXJ0
SW50MzJUb0RvdWJsZShyZWdUMCwgZnBSZWdUMSk7CiAgICAgICAgIG9wMmlzRG91YmxlLmxpbmso
dGhpcyk7CiAgICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDEpOwpAQCAt
ODAwLDE2ICs3OTYsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3RydWN0aW9uKiBjdXJy
ZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlSW50KG9wMSkpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkgewog
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDApOwotICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoQWRkMzIoT3ZlcmZsb3csIHJlZ1QwLCBJbW0zMihnZXRDb25zdGFudE9wZXJh
bmRJbW1lZGlhdGVJbnQob3AxKSksIHJlZ1QxKSk7Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhJbnRU
b0ltbU5vQ2hlY2socmVnVDEsIHJlZ1QwKTsKLSAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50
KHJlZ1QwKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoQWRkMzIoT3ZlcmZsb3csIHJlZ1Qw
LCBJbW0zMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSksIHJlZ1QxKSk7CisgICAgICAgIGVt
aXRUYWdJbnQocmVnVDEsIHJlZ1QwKTsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENvbnN0YW50
SW50KG9wMikpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIHJlZ1QwKTsK
LSAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0g
ICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaEFkZDMyKE92ZXJmbG93LCByZWdUMCwgSW1tMzIoZ2V0
Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMikpLCByZWdUMSkpOwotICAgICAgICBlbWl0
RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QxLCByZWdUMCk7CisgICAgICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEludChyZWdUMCk7CisgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaEFkZDMy
KE92ZXJmbG93LCByZWdUMCwgSW1tMzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMikpLCByZWdU
MSkpOworICAgICAgICBlbWl0VGFnSW50KHJlZ1QxLCByZWdUMCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIGNvbXBpbGVCaW5hcnlBcml0aE9wKG9wX2FkZCwgcmVzdWx0LCBvcDEsIG9wMiwgdHlwZXMp
OwogCkBAIC04MjUsOCArODIxLDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChJbnN0cnVj
dGlvbiogYwogCiAgICAgUkVMRUFTRV9BU1NFUlQodHlwZXMuZmlyc3QoKS5taWdodEJlTnVtYmVy
KCkgJiYgdHlwZXMuc2Vjb25kKCkubWlnaHRCZU51bWJlcigpKTsKIAotICAgIGJvb2wgb3AxSGFz
SW1tZWRpYXRlSW50RmFzdENhc2UgPSBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEp
OwotICAgIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSAhb3AxSGFzSW1tZWRpYXRl
SW50RmFzdENhc2UgJiYgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKTsKKyAgICBi
b29sIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlID0gaXNPcGVyYW5kQ29uc3RhbnRJbnQob3Ax
KTsKKyAgICBib29sIG9wMkhhc0ltbWVkaWF0ZUludEZhc3RDYXNlID0gIW9wMUhhc0ltbWVkaWF0
ZUludEZhc3RDYXNlICYmIGlzT3BlcmFuZENvbnN0YW50SW50KG9wMik7CiAgICAgY29tcGlsZUJp
bmFyeUFyaXRoT3BTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX2FkZCwgaXRlciwgcmVz
dWx0LCBvcDEsIG9wMiwgdHlwZXMsIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBvcDJIYXNJ
bW1lZGlhdGVJbnRGYXN0Q2FzZSk7CiB9CiAKQEAgLTgzOSwyMCArODM1LDIwIEBAIHZvaWQgSklU
OjplbWl0X29wX211bChJbnN0cnVjdGlvbiogY3VycmUKIAogICAgIC8vIEZvciBub3csIG9ubHkg
cGxhbnQgYSBmYXN0IGludCBjYXNlIGlmIHRoZSBjb25zdGFudCBvcGVyYW5kIGlzIGdyZWF0ZXIg
dGhhbiB6ZXJvLgogICAgIGludDMyX3QgdmFsdWU7Ci0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50
SW1tZWRpYXRlSW50KG9wMSkgJiYgKCh2YWx1ZSA9IGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0
ZUludChvcDEpKSA+IDApKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkgJiYg
KCh2YWx1ZSA9IGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKSA+IDApKSB7CiAgICAgICAgIC8v
IEFkZCBhIHNwZWNpYWwgZmFzdCBjYXNlIHByb2ZpbGUgYmVjYXVzZSB0aGUgREZHIEpJVCB3aWxs
IGV4cGVjdCBvbmUuCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRTcGVjaWFsRmFzdENhc2VQcm9m
aWxlKG1fYnl0ZWNvZGVPZmZzZXQpOwogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9w
MiwgcmVnVDApOwotICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2Vy
KHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwKTsKICAgICAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoTXVsMzIoT3ZlcmZsb3csIEltbTMyKHZhbHVlKSwgcmVnVDAs
IHJlZ1QxKSk7Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShyZWdUMSwgcmVn
VDApOwotICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSAm
JiAoKHZhbHVlID0gZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMikpID4gMCkpIHsK
KyAgICAgICAgZW1pdFRhZ0ludChyZWdUMSwgcmVnVDApOworICAgIH0gZWxzZSBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AyKSAmJiAoKHZhbHVlID0gZ2V0T3BlcmFuZENvbnN0YW50SW50KG9w
MikpID4gMCkpIHsKICAgICAgICAgLy8gQWRkIGEgc3BlY2lhbCBmYXN0IGNhc2UgcHJvZmlsZSBi
ZWNhdXNlIHRoZSBERkcgSklUIHdpbGwgZXhwZWN0IG9uZS4KICAgICAgICAgbV9jb2RlQmxvY2st
PmFkZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUobV9ieXRlY29kZU9mZnNldCk7CiAgICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCByZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOworICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RJbnQocmVnVDApOwogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hNdWwzMihPdmVyZmxv
dywgSW1tMzIodmFsdWUpLCByZWdUMCwgcmVnVDEpKTsKLSAgICAgICAgZW1pdEZhc3RBcml0aFJl
VGFnSW1tZWRpYXRlKHJlZ1QxLCByZWdUMCk7CisgICAgICAgIGVtaXRUYWdJbnQocmVnVDEsIHJl
Z1QwKTsKICAgICB9IGVsc2UKICAgICAgICAgY29tcGlsZUJpbmFyeUFyaXRoT3Aob3BfbXVsLCBy
ZXN1bHQsIG9wMSwgb3AyLCB0eXBlcyk7CiAKQEAgLTg2Niw4ICs4NjIsOCBAQCB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbXVsKEluc3RydWN0aW9uKiBjCiAgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5
cGVzOjpmcm9tSW50KGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCi0gICAgYm9v
bCBvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9IGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRl
SW50KG9wMSkgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMSkgPiAwOwotICAg
IGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSAhb3AxSGFzSW1tZWRpYXRlSW50RmFz
dENhc2UgJiYgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSAmJiBnZXRDb25zdGFu
dE9wZXJhbmRJbW1lZGlhdGVJbnQob3AyKSA+IDA7CisgICAgYm9vbCBvcDFIYXNJbW1lZGlhdGVJ
bnRGYXN0Q2FzZSA9IGlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkgJiYgZ2V0T3BlcmFuZENvbnN0
YW50SW50KG9wMSkgPiAwOworICAgIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSAh
b3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UgJiYgaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSAm
JiBnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSA+IDA7CiAgICAgY29tcGlsZUJpbmFyeUFyaXRo
T3BTbG93Q2FzZShjdXJyZW50SW5zdHJ1Y3Rpb24sIG9wX211bCwgaXRlciwgcmVzdWx0LCBvcDEs
IG9wMiwgdHlwZXMsIG9wMUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlLCBvcDJIYXNJbW1lZGlhdGVJ
bnRGYXN0Q2FzZSk7CiB9CiAKQEAgLTg3OCwxNyArODc0LDE3IEBAIHZvaWQgSklUOjplbWl0X29w
X2RpdihJbnN0cnVjdGlvbiogY3VycmUKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6OmZy
b21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKLSAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUob3AxKSkgeworICAgIGlmIChpc09wZXJhbmRDb25z
dGFudERvdWJsZShvcDEpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBy
ZWdUMCk7CiAgICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDApOwogICAg
ICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7Ci0gICAgfSBlbHNlIGlmIChpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CisgICAgfSBlbHNlIGlmIChpc09wZXJh
bmRDb25zdGFudEludChvcDEpKSB7CiAgICAgICAgIGVtaXRMb2FkSW50MzJUb0RvdWJsZShvcDEs
IGZwUmVnVDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIo
b3AxLCByZWdUMCk7CiAgICAgICAgIGlmICghdHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5SXNOdW1i
ZXIoKSkKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZU51bWJlcihy
ZWdUMCk7Ci0gICAgICAgIEp1bXAgbm90SW50ID0gZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVn
ZXIocmVnVDApOworICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90TnVtYmVyKHJlZ1Qw
KTsKKyAgICAgICAgSnVtcCBub3RJbnQgPSBlbWl0SnVtcElmTm90SW50KHJlZ1QwKTsKICAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGUocmVnVDAsIGZwUmVnVDApOwogICAgICAgICBKdW1wIHNr
aXBEb3VibGVMb2FkID0ganVtcCgpOwogICAgICAgICBub3RJbnQubGluayh0aGlzKTsKQEAgLTg5
NywxNyArODkzLDE3IEBAIHZvaWQgSklUOjplbWl0X29wX2RpdihJbnN0cnVjdGlvbiogY3VycmUK
ICAgICAgICAgc2tpcERvdWJsZUxvYWQubGluayh0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUob3AyKSkgeworICAgIGlmIChpc09wZXJhbmRD
b25zdGFudERvdWJsZShvcDIpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3Ay
LCByZWdUMSk7CiAgICAgICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVnVDEpOwog
ICAgICAgICBtb3ZlNjRUb0RvdWJsZShyZWdUMSwgZnBSZWdUMSk7Ci0gICAgfSBlbHNlIGlmIChp
c09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CisgICAgfSBlbHNlIGlmIChpc09w
ZXJhbmRDb25zdGFudEludChvcDIpKSB7CiAgICAgICAgIGVtaXRMb2FkSW50MzJUb0RvdWJsZShv
cDIsIGZwUmVnVDEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIob3AyLCByZWdUMSk7CiAgICAgICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlz
TnVtYmVyKCkpCi0gICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVOdW1i
ZXIocmVnVDEpOwotICAgICAgICBKdW1wIG5vdEludCA9IGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVJ
bnRlZ2VyKHJlZ1QxKTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51bWJlcihy
ZWdUMSk7CisgICAgICAgIEp1bXAgbm90SW50ID0gZW1pdEp1bXBJZk5vdEludChyZWdUMSk7CiAg
ICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHJlZ1QxLCBmcFJlZ1QxKTsKICAgICAgICAgSnVt
cCBza2lwRG91YmxlTG9hZCA9IGp1bXAoKTsKICAgICAgICAgbm90SW50LmxpbmsodGhpcyk7CkBA
IC05MzEsNyArOTI3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KEluc3RydWN0aW9uKiBjdXJy
ZQogICAgIEp1bXBMaXN0IG5vdEludGVnZXI7CiAgICAgYnJhbmNoQ29udmVydERvdWJsZVRvSW50
MzIoZnBSZWdUMCwgcmVnVDAsIG5vdEludGVnZXIsIGZwUmVnVDEpOwogICAgIC8vIElmIHdlJ3Zl
IGdvdCBhbiBpbnRlZ2VyLCB3ZSBtaWdodCBhcyB3ZWxsIG1ha2UgdGhhdCB0aGUgcmVzdWx0IG9m
IHRoZSBkaXZpc2lvbi4KLSAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUocmVnVDAsIHJl
Z1QwKTsKKyAgICBlbWl0VGFnSW50KHJlZ1QwLCByZWdUMCk7CiAgICAgSnVtcCBpc0ludGVnZXIg
PSBqdW1wKCk7CiAgICAgbm90SW50ZWdlci5saW5rKHRoaXMpOwogICAgIG1vdmVEb3VibGVUbzY0
KGZwUmVnVDAsIHJlZ1QwKTsKQEAgLTk1NywxMSArOTUzLDExIEBAIHZvaWQgSklUOjplbWl0U2xv
d19vcF9kaXYoSW5zdHJ1Y3Rpb24qIGMKICAgICAgICAgICAgIGFib3J0V2l0aFJlYXNvbihKSVRE
aXZPcGVyYW5kc0FyZU5vdE51bWJlcnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlm
ICghaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUob3AxKSAmJiAhaXNPcGVyYW5kQ29u
c3RhbnRJbW1lZGlhdGVJbnQob3AxKSkgeworICAgIGlmICghaXNPcGVyYW5kQ29uc3RhbnREb3Vi
bGUob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkgewogICAgICAgICBpZiAoIXR5
cGVzLmZpcnN0KCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpCiAgICAgICAgICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CiAgICAgfQotICAgIGlmICghaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3Vi
bGUob3AyKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgeworICAgIGlm
ICghaXNPcGVyYW5kQ29uc3RhbnREb3VibGUob3AyKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbnQo
b3AyKSkgewogICAgICAgICBpZiAoIXR5cGVzLnNlY29uZCgpLmRlZmluaXRlbHlJc051bWJlcigp
KQogICAgICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCShyZXZpc2lvbiAxOTAyMTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsNyAr
NzcsNyBAQCBpbmxpbmUgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IEpJVDo6ZW1pCiAgICAgcmV0
dXJuIGVtaXRBcnJheVN0b3JhZ2VMb2FkKGluc3RydWN0aW9uLCBiYWRUeXBlKTsKIH0KIAotQUxX
QVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUoaW50
IHNyYykKK0FMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50RG91YmxlKGlu
dCBzcmMpCiB7CiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRl
eChzcmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzRG91YmxlKCk7CiB9CkBAIC04NzEs
NyArODcxLDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6c2FtcGxlQ29kZUJsb2NrKAogI2Vu
ZGlmCiAjZW5kaWYKIAotQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVDaGFyKGludCBzcmMpCitBTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRD
b25zdGFudENoYXIoaW50IHNyYykKIHsKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3Rh
bnRSZWdpc3RlckluZGV4KHNyYykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNTdHJpbmco
KSAmJiBhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5hc0NlbGwoKSktPmxlbmd0aCgp
ID09IDE7CiB9CkBAIC0xMTE0LDIwICsxMTE0LDIwIEBAIGlubGluZSB2b2lkIEpJVDo6ZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlMKICAgICB9CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6Omlz
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KGludCBzcmMpCitBTFdBWVNfSU5MSU5FIGJvb2wg
SklUOjppc09wZXJhbmRDb25zdGFudEludChpbnQgc3JjKQogewogICAgIHJldHVybiBtX2NvZGVC
bG9jay0+aXNDb25zdGFudFJlZ2lzdGVySW5kZXgoc3JjKSAmJiBnZXRDb25zdGFudE9wZXJhbmQo
c3JjKS5pc0ludDMyKCk7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmdldE9wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludChpbnQgb3AxLCBpbnQgb3AyLCBpbnQmIG9wLCBpbnQzMl90JiBj
b25zdGFudCkKK0FMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmdldE9wZXJhbmRDb25zdGFudEludChp
bnQgb3AxLCBpbnQgb3AyLCBpbnQmIG9wLCBpbnQzMl90JiBjb25zdGFudCkKIHsKLSAgICBpZiAo
aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSkgeworICAgIGlmIChpc09wZXJhbmRD
b25zdGFudEludChvcDEpKSB7CiAgICAgICAgIGNvbnN0YW50ID0gZ2V0Q29uc3RhbnRPcGVyYW5k
KG9wMSkuYXNJbnQzMigpOwogICAgICAgICBvcCA9IG9wMjsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsK
KyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkgewogICAgICAgICBjb25zdGFudCA9
IGdldENvbnN0YW50T3BlcmFuZChvcDIpLmFzSW50MzIoKTsKICAgICAgICAgb3AgPSBvcDE7CiAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTE3MiwxMiArMTE3MiwxMiBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0R2V0VmlydHVhbFJlCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMo
c3JjMS5vZmZzZXQoKSwgZHN0MSwgc3JjMi5vZmZzZXQoKSwgZHN0Mik7CiB9CiAKLUFMV0FZU19J
TkxJTkUgaW50MzJfdCBKSVQ6OmdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChpbnQgc3Jj
KQorQUxXQVlTX0lOTElORSBpbnQzMl90IEpJVDo6Z2V0T3BlcmFuZENvbnN0YW50SW50KGludCBz
cmMpCiB7CiAgICAgcmV0dXJuIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmFzSW50MzIoKTsKIH0K
IAotQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQo
aW50IHNyYykKK0FMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW50KGlu
dCBzcmMpCiB7CiAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRl
eChzcmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMpLmlzSW50MzIoKTsKIH0KQEAgLTEyMzcs
NTUgKzEyMzcsNTAgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0TG9hZERvdWJsZShpbnQgaW5kZQog
aW5saW5lIHZvaWQgSklUOjplbWl0TG9hZEludDMyVG9Eb3VibGUoaW50IGluZGV4LCBGUFJlZ2lz
dGVySUQgdmFsdWUpCiB7CiAgICAgaWYgKG1fY29kZUJsb2NrLT5pc0NvbnN0YW50UmVnaXN0ZXJJ
bmRleChpbmRleCkpIHsKLSAgICAgICAgQVNTRVJUKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRl
SW50KGluZGV4KSk7CisgICAgICAgIEFTU0VSVChpc09wZXJhbmRDb25zdGFudEludChpbmRleCkp
OwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShJbW0zMihnZXRDb25zdGFudE9wZXJhbmQo
aW5kZXgpLmFzSW50MzIoKSksIHZhbHVlKTsKICAgICB9IGVsc2UKICAgICAgICAgY29udmVydElu
dDMyVG9Eb3VibGUoYWRkcmVzc0ZvcihpbmRleCksIHZhbHVlKTsKIH0KIAotQUxXQVlTX0lOTElO
RSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmSW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEIHJl
ZykKK0FMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZkludChSZWdpc3RlcklE
IHJlZykKIHsKICAgICByZXR1cm4gYnJhbmNoNjQoQWJvdmVPckVxdWFsLCByZWcsIHRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1
bXBJZk5vdEltbWVkaWF0ZUludGVnZXIoUmVnaXN0ZXJJRCByZWcpCitBTFdBWVNfSU5MSU5FIEpJ
VDo6SnVtcCBKSVQ6OmVtaXRKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCByZWcpCiB7CiAgICAgcmV0
dXJuIGJyYW5jaDY0KEJlbG93LCByZWcsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiB9CiAKLUFM
V0FZU19JTkxJTkUgSklUOjpQYXRjaGFibGVKdW1wIEpJVDo6ZW1pdFBhdGNoYWJsZUp1bXBJZk5v
dEltbWVkaWF0ZUludGVnZXIoUmVnaXN0ZXJJRCByZWcpCitBTFdBWVNfSU5MSU5FIEpJVDo6UGF0
Y2hhYmxlSnVtcCBKSVQ6OmVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCByZWcp
CiB7CiAgICAgcmV0dXJuIHBhdGNoYWJsZUJyYW5jaDY0KEJlbG93LCByZWcsIHRhZ1R5cGVOdW1i
ZXJSZWdpc3Rlcik7CiB9CiAKLUFMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJ
Zk5vdEltbWVkaWF0ZUludGVnZXJzKFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyLCBS
ZWdpc3RlcklEIHNjcmF0Y2gpCitBTFdBWVNfSU5MSU5FIEpJVDo6SnVtcCBKSVQ6OmVtaXRKdW1w
SWZOb3RJbnQoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIsIFJlZ2lzdGVySUQgc2Ny
YXRjaCkKIHsKICAgICBtb3ZlKHJlZzEsIHNjcmF0Y2gpOwogICAgIGFuZDY0KHJlZzIsIHNjcmF0
Y2gpOwotICAgIHJldHVybiBlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihzY3JhdGNoKTsK
KyAgICByZXR1cm4gZW1pdEp1bXBJZk5vdEludChzY3JhdGNoKTsKIH0KIAotQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihSZWdpc3Rl
cklEIHJlZykKK0FMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdElu
dChSZWdpc3RlcklEIHJlZykKIHsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90SW1tZWRp
YXRlSW50ZWdlcihyZWcpKTsKKyAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90SW50KHJlZykp
OwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1l
ZGlhdGVJbnRlZ2VycyhSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgUmVnaXN0ZXJJ
RCBzY3JhdGNoKQorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW50KFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyLCBSZWdpc3RlcklEIHNjcmF0Y2gp
CiB7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXJzKHJlZzEs
IHJlZzIsIHNjcmF0Y2gpKTsKKyAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90SW50KHJlZzEs
IHJlZzIsIHNjcmF0Y2gpKTsKIH0KIAotQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBT
bG93Q2FzZUlmTm90SW1tZWRpYXRlTnVtYmVyKFJlZ2lzdGVySUQgcmVnKQorQUxXQVlTX0lOTElO
RSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90TnVtYmVyKFJlZ2lzdGVySUQgcmVnKQog
ewotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIocmVnKSk7Cisg
ICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE51bWJlcihyZWcpKTsKIH0KIAotQUxXQVlTX0lO
TElORSB2b2lkIEpJVDo6ZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCi17Ci0gICAgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhz
cmMsIGRlc3QpOwotfQotCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0VGFnQXNCb29sSW1t
ZWRpYXRlKFJlZ2lzdGVySUQgcmVnKQorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdFRhZ0Jv
b2woUmVnaXN0ZXJJRCByZWcpCiB7CiAgICAgb3IzMihUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZWcpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAkocmV2aXNpb24gMTkwMjEyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw3ICs1Myw3IEBAIEpJVDo6Q29kZVJlZiBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTmF0
aXYKICAgICBDYWxsIG5hdGl2ZUNhbGw7CiAKICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwot
ICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxv
Y2spOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcigwLCBKU1N0YWNrOjpDb2RlQmxvY2sp
OwogICAgIHN0b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCAmbV92bS0+dG9wQ2FsbEZyYW1lKTsK
IAogI2lmIENQVShYODYpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAJKHJldmlzaW9uIDE5MDIxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pc191bmRlZmluZWQoSW5zdHJ1Y3RpCiAKICAgICBub3RNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkLmxpbmsodGhpcyk7CiAgICAgZG9uZS5saW5rKHRoaXMpOwotICAgIGVtaXRUYWdBc0Jv
b2xJbW1lZGlhdGUocmVnVDApOworICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKICAgICBlbWl0UHV0
VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9pc19ib29sZWFuKEluc3RydWN0aW9uCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cih2YWx1ZSwgcmVnVDApOwogICAgIHhvcjY0KFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQz
Ml90PihWYWx1ZUZhbHNlKSksIHJlZ1QwKTsKICAgICB0ZXN0NjQoWmVybywgcmVnVDAsIFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0Fz
Qm9vbEltbWVkaWF0ZShyZWdUMCk7CisgICAgZW1pdFRhZ0Jvb2wocmVnVDApOwogICAgIGVtaXRQ
dXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2lzX251bWJlcihJbnN0cnVjdGlvbioKICAgICAKICAgICBlbWl0R2V0VmlydHVh
bFJlZ2lzdGVyKHZhbHVlLCByZWdUMCk7CiAgICAgdGVzdDY0KE5vblplcm8sIHJlZ1QwLCB0YWdU
eXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKLSAgICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJl
Z1QwKTsKKyAgICBlbWl0VGFnQm9vbChyZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rl
cihkc3QpOwogfQogCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfc3Ry
aW5nKEluc3RydWN0aW9uKgogICAgIEp1bXAgaXNOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2Vs
bChyZWdUMCk7CiAgICAgCiAgICAgY29tcGFyZTgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2Vs
bDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSksIHJlZ1Qw
KTsKLSAgICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJlZ1QwKTsKKyAgICBlbWl0VGFnQm9vbChy
ZWdUMCk7CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogICAgIAogICAgIGlzTm90Q2VsbC5saW5r
KHRoaXMpOwpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSklUOjplbWl0X29wX2lzX29iamVjdChJ
bnN0cnVjdGlvbioKICAgICBKdW1wIGlzTm90Q2VsbCA9IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVn
VDApOwogCiAgICAgY29tcGFyZTgoQWJvdmVPckVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpLCByZWdUMCk7
Ci0gICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShyZWdUMCk7CisgICAgZW1pdFRhZ0Jvb2wocmVn
VDApOwogICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKIAogICAgIGlzTm90Q2VsbC5saW5rKHRoaXMp
OwpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2pmYWxzZShJbnN0cnVjdGlv
biogY3UKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQsIHJlZ1QwKTsKIAogICAgIGFkZEp1bXAoYnJhbmNoNjQoRXF1YWwsIHJlZ1QwLCBU
cnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDApKSkpLCB0YXJnZXQpOwotICAg
IEp1bXAgaXNOb25aZXJvID0gZW1pdEp1bXBJZkltbWVkaWF0ZUludGVnZXIocmVnVDApOworICAg
IEp1bXAgaXNOb25aZXJvID0gZW1pdEp1bXBJZkludChyZWdUMCk7CiAKICAgICBhZGRKdW1wKGJy
YW5jaDY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oZmFsc2UpKSkpLCB0YXJnZXQpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDY0KE5vdEVxdWFs
LCByZWdUMCwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSkp
OwpAQCAtMzcwLDkgKzM3MCw5IEBAIHZvaWQgSklUOjplbWl0X29wX2puZXFfcHRyKEluc3RydWN0
aW9uKiAKIHZvaWQgSklUOjplbWl0X29wX2VxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCwgcmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1Qx
KTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VycyhyZWdUMCwgcmVn
VDEsIHJlZ1QyKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDAsIHJlZ1QxLCBy
ZWdUMik7CiAgICAgY29tcGFyZTMyKEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKLSAgICBl
bWl0VGFnQXNCb29sSW1tZWRpYXRlKHJlZ1QwKTsKKyAgICBlbWl0VGFnQm9vbChyZWdUMCk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKIH0KIApAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKEluc3Ry
dWN0aW9uKiBjdXIKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKIAogICAgIEp1bXAgaXNaZXJvID0gYnJhbmNoNjQoRXF1
YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKDApKSkpOwot
ICAgIGFkZEp1bXAoZW1pdEp1bXBJZkltbWVkaWF0ZUludGVnZXIocmVnVDApLCB0YXJnZXQpOwor
ICAgIGFkZEp1bXAoZW1pdEp1bXBJZkludChyZWdUMCksIHRhcmdldCk7CiAKICAgICBhZGRKdW1w
KGJyYW5jaDY0KEVxdWFsLCByZWdUMCwgVHJ1c3RlZEltbTY0KEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4odHJ1ZSkpKSksIHRhcmdldCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoNjQoTm90RXF1
YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkp
KSkpOwpAQCAtMzkzLDkgKzM5Myw5IEBAIHZvaWQgSklUOjplbWl0X29wX2p0cnVlKEluc3RydWN0
aW9uKiBjdXIKIHZvaWQgSklUOjplbWl0X29wX25lcShJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQsIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kLCBy
ZWdUMSk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcnMocmVnVDAs
IHJlZ1QxLCByZWdUMik7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwLCByZWdU
MSwgcmVnVDIpOwogICAgIGNvbXBhcmUzMihOb3RFcXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7
Ci0gICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShyZWdUMCk7CisgICAgZW1pdFRhZ0Jvb2wocmVn
VDApOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKIApAQCAtNDA0LDE2ICs0MDQsMTYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbmVx
KEluc3RydWN0aW9uKiBjdXJyZQogdm9pZCBKSVQ6OmVtaXRfb3BfYml0eG9yKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCwgcmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQsIHJlZ1QxKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJ
bnRlZ2VycyhyZWdUMCwgcmVnVDEsIHJlZ1QyKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bnQocmVnVDAsIHJlZ1QxLCByZWdUMik7CiAgICAgeG9yNjQocmVnVDEsIHJlZ1QwKTsKLSAgICBl
bWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUocmVnVDAsIHJlZ1QwKTsKKyAgICBlbWl0VGFnSW50
KHJlZ1QwLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAogdm9pZCBKSVQ6OmVtaXRfb3BfYml0b3IoSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
cyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCwgY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCwgcmVnVDEpOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVk
aWF0ZUludGVnZXJzKHJlZ1QwLCByZWdUMSwgcmVnVDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEludChyZWdUMCwgcmVnVDEsIHJlZ1QyKTsKICAgICBvcjY0KHJlZ1QxLCByZWdUMCk7CiAg
ICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
KTsKIH0KQEAgLTQ0OCwxOCArNDQ4LDE4IEBAIHZvaWQgSklUOjpjb21waWxlT3BTdHJpY3RFcShJ
bnN0cnVjdGlvbioKICAgICAKICAgICAvLyBKdW1wIHNsb3cgaWYgZWl0aGVyIGlzIGEgZG91Ymxl
LiBGaXJzdCB0ZXN0IGlmIGl0J3MgYW4gaW50ZWdlciwgd2hpY2ggaXMgZmluZSwgYW5kIHRoZW4g
dGVzdAogICAgIC8vIGlmIGl0J3MgYSBkb3VibGUuCi0gICAgSnVtcCBsZWZ0T0sgPSBlbWl0SnVt
cElmSW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZklt
bWVkaWF0ZU51bWJlcihyZWdUMCkpOworICAgIEp1bXAgbGVmdE9LID0gZW1pdEp1bXBJZkludChy
ZWdUMCk7CisgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk51bWJlcihyZWdUMCkpOwogICAgIGxl
ZnRPSy5saW5rKHRoaXMpOwotICAgIEp1bXAgcmlnaHRPSyA9IGVtaXRKdW1wSWZJbW1lZGlhdGVJ
bnRlZ2VyKHJlZ1QxKTsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmSW1tZWRpYXRlTnVtYmVy
KHJlZ1QxKSk7CisgICAgSnVtcCByaWdodE9LID0gZW1pdEp1bXBJZkludChyZWdUMSk7CisgICAg
YWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk51bWJlcihyZWdUMSkpOwogICAgIHJpZ2h0T0subGluayh0
aGlzKTsKIAogICAgIGlmICh0eXBlID09IE9wU3RyaWN0RXEpCiAgICAgICAgIGNvbXBhcmU2NChF
cXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7CiAgICAgZWxzZQogICAgICAgICBjb21wYXJlNjQo
Tm90RXF1YWwsIHJlZ1QxLCByZWdUMCwgcmVnVDApOwotICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlh
dGUocmVnVDApOworICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKIAogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoZHN0KTsKIH0KQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
b19udW1iZXIoSW5zdHJ1Y3Rpb24qCiAgICAgaW50IHNyY1ZSZWcgPSBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3JjVlJlZywgcmVn
VDApOwogICAgIAotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIo
cmVnVDApKTsKKyAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90TnVtYmVyKHJlZ1QwKSk7CiAK
ICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOwogfQpAQCAtNjIxLDcgKzYyMSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2VxX251bGwoSW5z
dHJ1Y3Rpb24qIGMKICAgICB3YXNOb3RJbW1lZGlhdGUubGluayh0aGlzKTsKICAgICB3YXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLmxpbmsodGhpcyk7CiAKLSAgICBlbWl0VGFnQXNCb29sSW1t
ZWRpYXRlKHJlZ1QwKTsKKyAgICBlbWl0VGFnQm9vbChyZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1
YWxSZWdpc3Rlcihkc3QpOwogCiB9CkBAIC02NTMsNyArNjUzLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbmVxX251bGwoSW5zdHJ1Y3Rpb24qIAogICAgIHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMp
OwogICAgIHdhc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKIAotICAgIGVt
aXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOworICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKICAg
ICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRzdCk7CiB9CiAKQEAgLTgzMSw3ICs4MzEsNyBAQCB2
b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1CiB7CiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOwogICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uQ29tcGFyZUVxLCByZWdUMCwg
cmVnVDEpOwotICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmV0dXJuVmFsdWVHUFIpOworICAg
IGVtaXRUYWdCb29sKHJldHVyblZhbHVlR1BSKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlR1BSKTsKIH0KIApA
QCAtODQwLDcgKzg0MCw3IEBAIHZvaWQgSklUOjplbWl0U2xvd19vcF9uZXEoSW5zdHJ1Y3Rpb24q
IGMKICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25D
b21wYXJlRXEsIHJlZ1QwLCByZWdUMSk7CiAgICAgeG9yMzIoVHJ1c3RlZEltbTMyKDB4MSksIHJl
Z1QwKTsKLSAgICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJldHVyblZhbHVlR1BSKTsKKyAgICBl
bWl0VGFnQm9vbChyZXR1cm5WYWx1ZUdQUik7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3Rlcihj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXR1cm5WYWx1ZUdQUik7CiB9CiAKQEAg
LTEyODUsOSArMTI4NSw5IEBAIHZvaWQgSklUOjplbWl0X29wX3Byb2ZpbGVfdHlwZShJbnN0cnVj
dGkKICAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH4xKSwgcmVnVDEpOwogICAgICAgICBqdW1w
VG9FbmQuYXBwZW5kKGJyYW5jaDY0KEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTY0KFZhbHVlRmFs
c2UpKSk7CiAgICAgfSBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBl
ID09IFR5cGVNYWNoaW5lSW50KQotICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGVtaXRKdW1wSWZJ
bW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKSk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoZW1pdEp1
bXBJZkludChyZWdUMCkpOwogICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0
U2VlblR5cGUgPT0gVHlwZU51bWJlcikKLSAgICAgICAganVtcFRvRW5kLmFwcGVuZChlbWl0SnVt
cElmSW1tZWRpYXRlTnVtYmVyKHJlZ1QwKSk7CisgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoZW1p
dEp1bXBJZk51bWJlcihyZWdUMCkpOwogICAgIGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+
bV9sYXN0U2VlblR5cGUgPT0gVHlwZVN0cmluZykgewogICAgICAgICBKdW1wIGlzTm90Q2VsbCA9
IGVtaXRKdW1wSWZOb3RKU0NlbGwocmVnVDApOwogICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJy
YW5jaDgoRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkp
LCBUcnVzdGVkSW1tMzIoU3RyaW5nVHlwZSkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAxOTAyMTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dldF9ieV92YWwoSW5z
dHJ1Y3Rpb24KIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7
CiAKLSAgICBQYXRjaGFibGVKdW1wIG5vdEluZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5vdElt
bWVkaWF0ZUludGVnZXIocmVnVDEpOworICAgIFBhdGNoYWJsZUp1bXAgbm90SW5kZXggPSBlbWl0
UGF0Y2hhYmxlSnVtcElmTm90SW50KHJlZ1QxKTsKICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7
CiAKICAgICAvLyBUaGlzIGlzIHRlY2huaWNhbGx5IGluY29ycmVjdCAtIHdlJ3JlIHplcm8tZXh0
ZW5kaW5nIGFuIGludDMyLiAgT24gdGhlIGhvdCBwYXRoIHRoaXMgZG9lc24ndCBtYXR0ZXIuCkBA
IC0zMDEsNyArMzAxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X2J5X3ZhbChJbnN0cnVjdGlv
bgogCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoYmFzZSwgcmVnVDAsIHByb3BlcnR5LCBy
ZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKLSAg
ICBQYXRjaGFibGVKdW1wIG5vdEluZGV4ID0gZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEltbWVkaWF0
ZUludGVnZXIocmVnVDEpOworICAgIFBhdGNoYWJsZUp1bXAgbm90SW5kZXggPSBlbWl0UGF0Y2hh
YmxlSnVtcElmTm90SW50KHJlZ1QxKTsKICAgICBhZGRTbG93Q2FzZShub3RJbmRleCk7CiAgICAg
Ly8gU2VlIGNvbW1lbnQgaW4gb3BfZ2V0X2J5X3ZhbC4KICAgICB6ZXJvRXh0ZW5kMzJUb1B0cihy
ZWdUMSwgcmVnVDEpOwpAQCAtMzU0LDExICszNTQsMTEgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRHZW5lcmljQ29udGlndW91cwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIHJl
Z1QzKTsKICAgICBzd2l0Y2ggKGluZGV4aW5nU2hhcGUpIHsKICAgICBjYXNlIEludDMyU2hhcGU6
Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXIo
cmVnVDMpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChlbWl0SnVtcElmTm90SW50KHJlZ1Qz
KSk7CiAgICAgICAgIHN0b3JlNjQocmVnVDMsIEJhc2VJbmRleChyZWdUMiwgcmVnVDEsIFRpbWVz
RWlnaHQpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb3VibGVTaGFwZTogewotICAgICAg
ICBKdW1wIG5vdEludCA9IGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QzKTsKKyAg
ICAgICAgSnVtcCBub3RJbnQgPSBlbWl0SnVtcElmTm90SW50KHJlZ1QzKTsKICAgICAgICAgY29u
dmVydEludDMyVG9Eb3VibGUocmVnVDMsIGZwUmVnVDApOwogICAgICAgICBKdW1wIHJlYWR5ID0g
anVtcCgpOwogICAgICAgICBub3RJbnQubGluayh0aGlzKTsKQEAgLTYxNyw3ICs2MTcsNiBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfaWQoSW5zdHJ1Y3Rpb24qCiAKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVycyhiYXNlVlJlZywgcmVnVDAsIHZhbHVlVlJlZywgcmVnVDEpOwogCi0gICAg
Ly8gSnVtcCB0byBhIHNsb3cgY2FzZSBpZiBlaXRoZXIgdGhlIGJhc2Ugb2JqZWN0IGlzIGFuIGlt
bWVkaWF0ZSwgb3IgaWYgdGhlIFN0cnVjdHVyZSBkb2VzIG5vdCBtYXRjaC4KICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVnKTsKIAogICAgIEpJVFB1dEJ5SWRH
ZW5lcmF0b3IgZ2VuKApAQCAtMTYzMCw3ICsxNjI5LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVt
aXRJbnRUeXBlZEFycmF5UHV0QgogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgZWFybHlTY3JhdGNoKTsKLSAgICBzbG93Q2FzZXMuYXBw
ZW5kKGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKGVhcmx5U2NyYXRjaCkpOworICAgIHNs
b3dDYXNlcy5hcHBlbmQoZW1pdEp1bXBJZk5vdEludChlYXJseVNjcmF0Y2gpKTsKICNlbHNlCiAg
ICAgZW1pdExvYWQodmFsdWUsIGxhdGVTY3JhdGNoLCBlYXJseVNjcmF0Y2gpOwogICAgIHNsb3dD
YXNlcy5hcHBlbmQoYnJhbmNoMzIoTm90RXF1YWwsIGxhdGVTY3JhdGNoLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKSk7CkBAIC0xNzAyLDExICsxNzAxLDExIEBAIEpJVDo6SnVtcExp
c3QgSklUOjplbWl0RmxvYXRUeXBlZEFycmF5UHUKICAgICAKICNpZiBVU0UoSlNWQUxVRTY0KQog
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIodmFsdWUsIGVhcmx5U2NyYXRjaCk7Ci0gICAgSnVt
cCBkb3VibGVDYXNlID0gZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXIoZWFybHlTY3JhdGNo
KTsKKyAgICBKdW1wIGRvdWJsZUNhc2UgPSBlbWl0SnVtcElmTm90SW50KGVhcmx5U2NyYXRjaCk7
CiAgICAgY29udmVydEludDMyVG9Eb3VibGUoZWFybHlTY3JhdGNoLCBmcFJlZ1QwKTsKICAgICBK
dW1wIHJlYWR5ID0ganVtcCgpOwogICAgIGRvdWJsZUNhc2UubGluayh0aGlzKTsKLSAgICBzbG93
Q2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIoZWFybHlTY3JhdGNoKSk7
CisgICAgc2xvd0Nhc2VzLmFwcGVuZChlbWl0SnVtcElmTm90TnVtYmVyKGVhcmx5U2NyYXRjaCkp
OwogICAgIGFkZDY0KHRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgZWFybHlTY3JhdGNoKTsKICAgICBt
b3ZlNjRUb0RvdWJsZShlYXJseVNjcmF0Y2gsIGZwUmVnVDApOwogICAgIHJlYWR5LmxpbmsodGhp
cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShy
ZXZpc2lvbiAxOTAyMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTY1LDE3ICs2NSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdEpTQ2VsbChS
ZWdpc3RlcklEKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmSW1tZWRpYXRlTnVtYmVyKFJlZ2lz
dGVySUQgcmVnKTsKLSAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKFJl
Z2lzdGVySUQgcmVnKTsKLSAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRoSW1tVG9JbnQoUmVnaXN0
ZXJJRCByZWcpOwotICAgICAgICB2b2lkIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJZk51
bWJlcihSZWdpc3RlcklEIHJlZyk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdE51bWJlcihS
ZWdpc3RlcklEIHJlZyk7CisgICAgICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KTsKICNlbmRpZgogCiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdFR5
cGUoUmVnaXN0ZXJJRCBiYXNlUmVnLCBKU1R5cGUpOwogCiAgICAgICAgIHZvaWQgZW1pdEdldEZy
b21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnksIFJlZ2lz
dGVySUQgdG8sIFJlZ2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAg
dm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpD
YWxsRnJhbWVIZWFkZXJFbnRyeSk7Ci0gICAgICAgIHZvaWQgZW1pdFB1dEltbWVkaWF0ZVRvQ2Fs
bEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7
CisgICAgICAgIHZvaWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0
YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7CiAgICAgICAgIHZvaWQgZW1pdFB1dENlbGxUb0Nh
bGxGcmFtZUhlYWRlcihSZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVu
dHJ5KTsKIAogICAgICAgICBpbmxpbmUgQWRkcmVzcyBwYXlsb2FkRm9yKGludCBpbmRleCwgUmVn
aXN0ZXJJRCBiYXNlID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtMTU0LDExICsxNTMsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVn
LCB0YWdNYXNrUmVnaXN0ZXIpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZh
Y2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZJbW1lZGlhdGVOdW1iZXIoUmVn
aXN0ZXJJRCByZWcpCisgICAgQUxXQVlTX0lOTElORSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0lu
dGVyZmFjZUpJVDo6ZW1pdEp1bXBJZk51bWJlcihSZWdpc3RlcklEIHJlZykKICAgICB7CiAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpOwogICAgIH0KLSAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50
ZXJmYWNlSklUOjplbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKFJlZ2lzdGVySUQgcmVnKQor
ICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVt
aXRKdW1wSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCByZWcpCiAgICAgewogICAgICAgICByZXR1cm4g
YnJhbmNoVGVzdDY0KFplcm8sIHJlZywgdGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICB9CkBA
IC0xNzksNyArMTc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTSW50ZXJmYWNl
SklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjplbWl0TG9hZERvdWJsZSh1bnNpZ25lZCB2aXJ0dWFs
UmVnaXN0ZXJJbmRleCwgRlBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAg
IHsKICAgICAgICAgbG9hZDY0KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBzY3Jh
dGNoKTsKLSAgICAgICAgSnVtcCBub3ROdW1iZXIgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVt
YmVyKHNjcmF0Y2gpOworICAgICAgICBKdW1wIG5vdE51bWJlciA9IGVtaXRKdW1wSWZOb3ROdW1i
ZXIoc2NyYXRjaCk7CiAgICAgICAgIEp1bXAgbm90SW50ID0gYnJhbmNoNjQoQmVsb3csIHNjcmF0
Y2gsIHRhZ1R5cGVOdW1iZXJSZWdpc3Rlcik7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91Ymxl
KHNjcmF0Y2gsIGRzdCk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKQEAgLTE5MCwxMiAr
MTg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBub3ROdW1iZXI7CiAgICAg
fQogCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0RmFzdEFyaXRo
SW1tVG9JbnQoUmVnaXN0ZXJJRCkKLSAgICB7Ci0gICAgfQotICAgIAogICAgIC8vIG9wZXJhbmQg
aXMgaW50MzJfdCwgbXVzdCBoYXZlIGJlZW4gemVyby1leHRlbmRlZCBpZiByZWdpc3RlciBpcyA2
NC1iaXQuCi0gICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0RmFzdEFy
aXRoSW50VG9JbW1Ob0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0VGFnSW50KFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc3JjICE9IGRlc3QpCiAg
ICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7CkBAIC0yNDEsNyArMjM2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAjZW5kaWYKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZh
Y2VKSVQ6OmVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IEpTSW50ZXJmYWNlSklUOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIEpT
U3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQ
dHIoVHJ1c3RlZEltbVB0cih2YWx1ZSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5
ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE5MDIxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjU3LDcgKzI1Nyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9y
R2UKICAgICB9CiAjZW5kaWYKIAotICAgIGppdC5lbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVI
ZWFkZXIoMCwgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1l
SGVhZGVyKDAsIEpTU3RhY2s6OkNvZGVCbG9jayk7CiAgICAgaml0LnN0b3JlUHRyKEpTSW50ZXJm
YWNlSklUOjpjYWxsRnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOwogCiAjaWYgQ1BV
KFg4NikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBp
bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0
aW9uQ29tcGlsZXIuaAkocmV2aXNpb24gMTkwMjEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEy
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9jb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3Rl
cnMoUmVnaXN0ZXJTZXQ6OndlYkFzc2VtYmx5Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAg
ICAgICBlbWl0RnVuY3Rpb25Qcm9sb2d1ZSgpOwotICAgICAgICBlbWl0UHV0SW1tZWRpYXRlVG9D
YWxsRnJhbWVIZWFkZXIobV9jb2RlQmxvY2ssIEpTU3RhY2s6OkNvZGVCbG9jayk7CisgICAgICAg
IGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2Nr
KTsKIAogICAgICAgICBtX2JlZ2luTGFiZWwgPSBsYWJlbCgpOwogCkBAIC0yMTUsNyArMjE1LDcg
QEAgcHVibGljOgogICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFyaXR5IGNoZWNrLgogICAg
ICAgICBMYWJlbCBhcml0eUNoZWNrID0gbGFiZWwoKTsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJv
bG9ndWUoKTsKLSAgICAgICAgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKG1fY29k
ZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIobV9jb2RlQmxvY2ssIEpTU3RhY2s6OkNvZGVCbG9jayk7CiAgICAgICAgIGp1bXAobV9i
ZWdpbkxhYmVsKTsKIAogICAgICAgICBpZiAoIW1fZGl2aWRlRXJyb3JKdW1wTGlzdC5lbXB0eSgp
KSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261900</attachid>
            <date>2015-09-24 15:55:01 -0700</date>
            <delta_ts>2015-09-24 17:17:37 -0700</delta_ts>
            <desc>fix 2: fixed style issues.</desc>
            <filename>bug-149542.patch</filename>
            <type>text/plain</type>
            <size>69304</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMjI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2MSBA
QAorMjAxNS0wOS0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIHRoZSB1c2Ugb2YgIkltbWVkaWF0ZSIgaW4gSklUIGZ1bmN0aW9uIG5hbWVzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTQyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugd2lsbCByZW5h
bWUgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgICAgIGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRl
RG91YmxlID0+IGlzT3BlcmFuZENvbnN0YW50RG91YmxlCisgICAgICAgICAgICBpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludCA9PiBpc09wZXJhbmRDb25zdGFudEludAorICAgICAgICAgICAg
aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyID0+IGlzT3BlcmFuZENvbnN0YW50Q2hhcgor
CisgICAgICAgICAgICBnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQgPT4gZ2V0T3BlcmFu
ZENvbnN0YW50SW50CisgICAgICAgICAgICBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQg
PT4gZ2V0T3BlcmFuZENvbnN0YW50SW50CisKKyAgICAgICAgICAgIGVtaXRKdW1wSWZJbW1lZGlh
dGVJbnRlZ2VyID0+IGVtaXRKdW1wSWZJbnQKKyAgICAgICAgICAgIGVtaXRKdW1wSWZOb3RJbW1l
ZGlhdGVJbnRlZ2VyID0+IGVtaXRKdW1wSWZOb3RJbnQKKyAgICAgICAgICAgIGVtaXRKdW1wSWZO
b3RJbW1lZGlhdGVJbnRlZ2VycyA9PiBlbWl0SnVtcElmTm90SW50CisgICAgICAgICAgICBlbWl0
UGF0Y2hhYmxlSnVtcElmTm90SW1tZWRpYXRlSW50ZWdlciA9PiBlbWl0UGF0Y2hhYmxlSnVtcElm
Tm90SW50CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2Vy
ID0+IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludAorICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tZWRpYXRlTnVtYmVyID0+IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51bWJlcgorICAg
ICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcnMgPT4gZW1pdEp1
bXBTbG93Q2FzZUlmTm90SW50CisgICAgICAgICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlh
dGUgPT4gZW1pdFRhZ0ludAorICAgICAgICAgICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZSA9PiBl
bWl0VGFnQm9vbAorICAgICAgICAgICAgZW1pdEp1bXBJZkltbWVkaWF0ZU51bWJlciA9PiBlbWl0
SnVtcElmTnVtYmVyCisgICAgICAgICAgICBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyID0+
IGVtaXRKdW1wSWZOb3ROdW1iZXIKKyAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludCAt
IERlbGV0ZWQgYmVjYXVzZSB0aGlzIGlzIGFuIGVtcHR5IGZ1bmN0aW9uLgorICAgICAgICAgICAg
ZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayA9PiBlbWl0VGFnSW50CisgICAgICAgICAgICBl
bWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIgPT4gZW1pdFB1dFRvQ2FsbEZyYW1lSGVh
ZGVyCisKKyAgICAgICAgVGhpcyBpcyBwdXJlbHkgYSByZWZhY3RvcmluZyBwYXRjaCB0byBkbyB0
aGUgcmVuYW1pbmcuICBUaGVyZSBpcyBubyBiZWhhdmlvcgorICAgICAgICBjaGFuZ2UuCisKKyAg
ICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpjb21waWxlRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpj
b21waWxlU2V0dXBSZWdpc3RlcnNGb3JFbnRyeSk6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVs
cGVycy5oOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmVtaXRQdXRUb0NhbGxGcmFt
ZUhlYWRlcik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6ZW1pdFB1dEltbWVkaWF0
ZVRvQ2FsbEZyYW1lSGVhZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTdG9yZUNlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6Omdl
dFNsb3dDYXNlKToKKyAgICAgICAgKiBqaXQvSklUQXJpdGhtZXRpYy5jcHA6CisgICAgICAgIChK
U0M6OkpJVDo6ZW1pdF9vcF9uZWdhdGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbHNo
aWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3JzaGlmdCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdFNsb3dfb3BfcnNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Vy
c2hpZnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX3Vyc2hpZnQpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmVtaXRfb3BfdW5zaWduZWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
Y29tcGFyZUFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXBT
bG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2JpdGFuZCk6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9pbmMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVjKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX21vZCk6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGls
ZUJpbmFyeUFyaXRoT3ApOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9w
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfbXVs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9tdWwpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZGl2KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9kaXYpOgor
ICAgICAgICAqIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfY29tcGFyZUFuZEp1bXApOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfY29tcGFyZUFu
ZEp1bXBTbG93KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2xzaGlmdCk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfbHNoaWZ0KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
UmlnaHRTaGlmdCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFJpZ2h0U2hpZnRTbG93Q2FzZSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRhbmQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRTbG93X29wX2JpdGFuZCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXRvcik6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFNsb3dfb3BfYml0b3IpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfYml0eG9yKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9iaXR4
b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfYWRkKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0U2xvd19vcF9hZGQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bfc3ViKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9zdWIpOgorICAgICAgICAqIGppdC9KSVRJbmxp
bmVzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEFycmF5U3RvcmFnZUdldEJ5VmFsKToKKyAg
ICAgICAgKEpTQzo6SklUOjppc09wZXJhbmRDb25zdGFudERvdWJsZSk6CisgICAgICAgIChKU0M6
OkpJVDo6aXNPcGVyYW5kQ29uc3RhbnRDaGFyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVt
cFNsb3dDYXNlSWZOb3RKU0NlbGwpOgorICAgICAgICAoSlNDOjpKSVQ6OmlzT3BlcmFuZENvbnN0
YW50SW50KToKKyAgICAgICAgKEpTQzo6SklUOjpnZXRPcGVyYW5kQ29uc3RhbnRJbnQpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0TG9hZEludDMyVG9Eb3VibGUpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1w
SWZJbnQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wSWZOb3RJbnQpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRQYXRjaGFibGVKdW1wSWZOb3RJbnQpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBT
bG93Q2FzZUlmTm90TnVtYmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0VGFnQm9vbCk6Cisg
ICAgICAgIChKU0M6OkpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVEb3VibGUpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcik6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJ
bnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmdldE9wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6Z2V0Q29uc3RhbnRPcGVyYW5k
SW1tZWRpYXRlSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcElmSW1t
ZWRpYXRlSW50ZWdlcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEp1bXBJZk5v
dEltbWVkaWF0ZUludGVnZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRQYXRj
aGFibGVKdW1wSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
SklUOjplbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcnMpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVn
ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1lZGlhdGVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGYXN0QXJp
dGhSZVRhZ0ltbWVkaWF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdFRhZ0Fz
Qm9vbEltbWVkaWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNfdW5kZWZpbmVkKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2lzX2Jvb2xlYW4pOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfaXNf
bnVtYmVyKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2lzX3N0cmluZyk6CisgICAgICAg
IChKU0M6OkpJVDo6ZW1pdF9vcF9pc19vYmplY3QpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRf
b3BfamZhbHNlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2VxKToKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2p0cnVlKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcSk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9iaXR4b3IpOgorICAgICAgICAoSlNDOjpKSVQ6
OmVtaXRfb3BfYml0b3IpOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKToK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX251bWJlcik6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF9lcV9udWxsKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX25lcV9udWxs
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0U2xvd19vcF9lcSk6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdFNsb3dfb3BfbmVxKToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3Byb2ZpbGVf
dHlwZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdmVDYWxsKToKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbCk6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKToKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0R2VuZXJpY0NvbnRpZ3VvdXNQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9wdXRfYnlfaWQpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5
UHV0QnlWYWwpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZh
bCk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0M6OkpTSW50
ZXJmYWNlSklUOjplbWl0SnVtcElmTm90SlNDZWxsKToKKyAgICAgICAgKEpTQzo6SlNJbnRlcmZh
Y2VKSVQ6OmVtaXRKdW1wSWZOdW1iZXIpOgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6
ZW1pdEp1bXBJZk5vdE51bWJlcik6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0
TG9hZERvdWJsZSk6CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0VGFnSW50KToK
KyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcik6
CisgICAgICAgIChKU0M6OkpTSW50ZXJmYWNlSklUOjplbWl0SnVtcElmSW1tZWRpYXRlTnVtYmVy
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RJ
bW1lZGlhdGVOdW1iZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpKU0ludGVyZmFjZUpJVDo6
ZW1pdEZhc3RBcml0aEltbVRvSW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6SlNJbnRlcmZh
Y2VKSVQ6OmVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2spOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpKU0ludGVyZmFjZUpJVDo6ZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKEpT
Qzo6bmF0aXZlRm9yR2VuZXJhdG9yKToKKyAgICAgICAgKiB3YXNtL1dBU01GdW5jdGlvbkNvbXBp
bGVyLmg6CisgICAgICAgIChKU0M6OldBU01GdW5jdGlvbkNvbXBpbGVyOjpzdGFydEZ1bmN0aW9u
KToKKyAgICAgICAgKEpTQzo6V0FTTUZ1bmN0aW9uQ29tcGlsZXI6OmVuZEZ1bmN0aW9uKToKKwog
MjAxNS0wOS0yNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbRVM2XSBJbXBsZW1lbnQgdGFpbCBjYWxscyBpbiB0aGUgREZHCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTkwMjEyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRW50cnko
KQogICAgIC8vIGNoZWNrKSB3aGljaCB3aWxsIGJlIGRlcGVuZGVudCBvbiBzdGFjayBsYXlvdXQu
IChXZSdkIG5lZWQgdG8gYWNjb3VudCBmb3IgdGhpcyBpbgogICAgIC8vIGJvdGggbm9ybWFsIHJl
dHVybiBjb2RlIGFuZCB3aGVuIGp1bXBpbmcgdG8gYW4gZXhjZXB0aW9uIGhhbmRsZXIpLgogICAg
IGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1l
SGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0YWNrOjpDb2RlQmxvY2spOworICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKIH0KIAogdm9p
ZCBKSVRDb21waWxlcjo6Y29tcGlsZVNldHVwUmVnaXN0ZXJzRm9yRW50cnkoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxOTAy
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NzksNyArNDc5LDcgQEAgcHVibGljOgogICAgICAgICBzdG9yZVB0cihm
cm9tLCBBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihS
ZWdpc3RlcikpKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFt
ZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnkp
CisgICAgdm9pZCBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIEpTU3RhY2s6
OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIoVHJ1
c3RlZEltbVB0cih2YWx1ZSksIEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVu
dHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHJldmlzaW9uIDE5MDIxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDcgKzUxMCw3IEBAIENvbXBpbGF0aW9uUmVz
dWx0IEpJVDo6cHJpdmF0ZUNvbXBpbGUoSkkKICAgICAgICAgbm9wKCk7CiAKICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOwotICAgIGVtaXRQdXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlciht
X2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKKyAgICBlbWl0UHV0VG9DYWxsRnJhbWVI
ZWFkZXIobV9jb2RlQmxvY2ssIEpTU3RhY2s6OkNvZGVCbG9jayk7CiAKICAgICBMYWJlbCBiZWdp
bkxhYmVsKHRoaXMpOwogCkBAIC01NjYsNyArNTY2LDcgQEAgQ29tcGlsYXRpb25SZXN1bHQgSklU
Ojpwcml2YXRlQ29tcGlsZShKSQogICAgICAgICBhcml0eUNoZWNrID0gbGFiZWwoKTsKICAgICAg
ICAgc3RvcmU4KFRydXN0ZWRJbW0zMigwKSwgJm1fY29kZUJsb2NrLT5tX3Nob3VsZEFsd2F5c0Jl
SW5saW5lZCk7CiAgICAgICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAgICAgIGVtaXRQ
dXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJs
b2NrKTsKKyAgICAgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0
YWNrOjpDb2RlQmxvY2spOwogCiAgICAgICAgIGxvYWQzMihwYXlsb2FkRm9yKEpTU3RhY2s6OkFy
Z3VtZW50Q291bnQpLCByZWdUMSk7CiAgICAgICAgIGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVn
VDEsIFRydXN0ZWRJbW0zMihtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkubGlua1RvKGJl
Z2luTGFiZWwsIHRoaXMpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAx
OTAyMTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjMsNyArMzIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgZW51bSBDb21w
aWxlT3BTdHJpY3RFcVR5cGUgeyBPcFN0cmljdEVxLCBPcE5TdHJpY3RFcSB9OwogICAgICAgICB2
b2lkIGNvbXBpbGVPcFN0cmljdEVxKEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiwgQ29tcGlsZU9w
U3RyaWN0RXFUeXBlIHR5cGUpOwotICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50SW1tZWRp
YXRlRG91YmxlKGludCBzcmMpOworICAgICAgICBib29sIGlzT3BlcmFuZENvbnN0YW50RG91Ymxl
KGludCBzcmMpOwogICAgICAgICAKICAgICAgICAgdm9pZCBlbWl0TG9hZERvdWJsZShpbnQgaW5k
ZXgsIEZQUmVnaXN0ZXJJRCB2YWx1ZSk7CiAgICAgICAgIHZvaWQgZW1pdExvYWRJbnQzMlRvRG91
YmxlKGludCBpbmRleCwgRlBSZWdpc3RlcklEIHZhbHVlKTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgZW51bSBGaW5hbE9iamVjdE1vZGUgeyBNYXlCZUZpbmFs
LCBLbm93bk5vdEZpbmFsIH07CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQotICAgICAgICBib29s
IGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChpbnQgb3AxLCBpbnQgb3AyLCBpbnQmIG9w
LCBpbnQzMl90JiBjb25zdGFudCk7CisgICAgICAgIGJvb2wgZ2V0T3BlcmFuZENvbnN0YW50SW50
KGludCBvcDEsIGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0YW50KTsKIAogICAgICAg
ICB2b2lkIGVtaXRMb2FkVGFnKGludCBpbmRleCwgUmVnaXN0ZXJJRCB0YWcpOwogICAgICAgICB2
b2lkIGVtaXRMb2FkUGF5bG9hZChpbnQgaW5kZXgsIFJlZ2lzdGVySUQgcGF5bG9hZCk7CkBAIC00
NDgsMjQgKzQ0OCwyMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0LCBwYXlsb2FkKTsKICAgICAgICAgfQogCi0gICAgICAgIGludDMyX3Qg
Z2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KGludCBzcmMpOworICAgICAgICBpbnQzMl90
IGdldE9wZXJhbmRDb25zdGFudEludChpbnQgc3JjKTsKIAogICAgICAgICBKdW1wIGVtaXRKdW1w
SWZKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZkJvdGhKU0NlbGxz
KFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQpOwogICAgICAgICB2b2lkIGVtaXRK
dW1wU2xvd0Nhc2VJZkpTQ2VsbChSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RKU0NlbGwoUmVnaXN0ZXJJRCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SlNDZWxsKFJlZ2lzdGVySUQsIGludCBWUmVnKTsKLSAgICAgICAgSnVtcCBlbWl0
SnVtcElmSW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEKTsKLSAgICAgICAgSnVtcCBlbWl0SnVt
cElmTm90SW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEKTsKLSAgICAgICAgSnVtcCBlbWl0SnVt
cElmTm90SW1tZWRpYXRlSW50ZWdlcnMoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJ
RCk7Ci0gICAgICAgIFBhdGNoYWJsZUp1bXAgZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEltbWVkaWF0
ZUludGVnZXIoUmVnaXN0ZXJJRCk7Ci0gICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEKTsKLSAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbW1lZGlhdGVOdW1iZXIoUmVnaXN0ZXJJRCk7Ci0gICAgICAgIHZvaWQgZW1pdEp1
bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcnMoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwg
UmVnaXN0ZXJJRCk7CisgICAgICAgIEp1bXAgZW1pdEp1bXBJZkludChSZWdpc3RlcklEKTsKKyAg
ICAgICAgSnVtcCBlbWl0SnVtcElmTm90SW50KFJlZ2lzdGVySUQpOworICAgICAgICBKdW1wIGVt
aXRKdW1wSWZOb3RJbnQoUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCBzY3JhdGNo
KTsKKyAgICAgICAgUGF0Y2hhYmxlSnVtcCBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW50KFJlZ2lz
dGVySUQpOworICAgICAgICB2b2lkIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChSZWdpc3RlcklE
KTsKKyAgICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCk7
CisgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KFJlZ2lzdGVySUQsIFJlZ2lz
dGVySUQsIFJlZ2lzdGVySUQgc2NyYXRjaCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RmFzdEFyaXRo
UmVUYWdJbW1lZGlhdGUoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCk7Ci0KLSAgICAg
ICAgdm9pZCBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKFJlZ2lzdGVySUQgcmVnKTsKKyAgICAgICAg
dm9pZCBlbWl0VGFnQm9vbChSZWdpc3RlcklEKTsKICAgICAgICAgdm9pZCBjb21waWxlQmluYXJ5
QXJpdGhPcChPcGNvZGVJRCwgaW50IGRzdCwgaW50IHNyYzEsIGludCBzcmMyLCBPcGVyYW5kVHlw
ZXMgb3BpKTsKICAgICAgICAgdm9pZCBjb21waWxlQmluYXJ5QXJpdGhPcFNsb3dDYXNlKEluc3Ry
dWN0aW9uKiwgT3Bjb2RlSUQsIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImLCBpbnQg
ZHN0LCBpbnQgc3JjMSwgaW50IHNyYzIsIE9wZXJhbmRUeXBlcywgYm9vbCBvcDFIYXNJbW1lZGlh
dGVJbnRGYXN0Q2FzZSwgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSk7CiAKQEAgLTY5
Miw4ICs2OTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0UHV0SW50VG9D
YWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJF
bnRyeSk7CiAKICAgICAgICAgSlNWYWx1ZSBnZXRDb25zdGFudE9wZXJhbmQoaW50IHNyYyk7Ci0g
ICAgICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQoaW50IHNyYyk7Ci0gICAg
ICAgIGJvb2wgaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyKGludCBzcmMpOworICAgICAg
ICBib29sIGlzT3BlcmFuZENvbnN0YW50SW50KGludCBzcmMpOworICAgICAgICBib29sIGlzT3Bl
cmFuZENvbnN0YW50Q2hhcihpbnQgc3JjKTsKIAogICAgICAgICBKdW1wIGdldFNsb3dDYXNlKFZl
Y3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiAgICAgICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAJKHJl
dmlzaW9uIDE5MDIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRp
YzMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNyArODMsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9jb21wYXJlQW5kSnVtcChPcGNvZGVJRCBvCiAgICAgSnVtcExpc3Qgbm90SW50MzJPcDI7CiAK
ICAgICAvLyBDaGFyYWN0ZXIgbGVzcy4KLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlh
dGVDaGFyKG9wMSkpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRDaGFyKG9wMSkpIHsKICAg
ICAgICAgZW1pdExvYWQob3AyLCByZWdUMSwgcmVnVDApOwogICAgICAgICBhZGRTbG93Q2FzZShi
cmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkp
OwogICAgICAgICBKdW1wTGlzdCBmYWlsdXJlczsKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQgbwogICAgICAgICBhZGRKdW1wKGJyYW5jaDMy
KGNvbW11dGUoY29uZGl0aW9uKSwgcmVnVDAsIEltbTMyKGFzU3RyaW5nKGdldENvbnN0YW50T3Bl
cmFuZChvcDEpKS0+dHJ5R2V0VmFsdWUoKVswXSkpLCB0YXJnZXQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUNoYXIob3AyKSkgewor
ICAgIGlmIChpc09wZXJhbmRDb25zdGFudENoYXIob3AyKSkgewogICAgICAgICBlbWl0TG9hZChv
cDEsIHJlZ1QxLCByZWdUMCk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFs
LCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgIEp1bXBM
aXN0IGZhaWx1cmVzOwpAQCAtMTAxLDExICsxMDEsMTEgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFy
ZUFuZEp1bXAoT3Bjb2RlSUQgbwogICAgICAgICBhZGRKdW1wKGJyYW5jaDMyKGNvbmRpdGlvbiwg
cmVnVDAsIEltbTMyKGFzU3RyaW5nKGdldENvbnN0YW50T3BlcmFuZChvcDIpKS0+dHJ5R2V0VmFs
dWUoKVswXSkpLCB0YXJnZXQpOwogICAgICAgICByZXR1cm47CiAgICAgfSAKLSAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSkgeworICAgIGlmIChpc09wZXJhbmRDb25z
dGFudEludChvcDEpKSB7CiAgICAgICAgIGVtaXRMb2FkKG9wMiwgcmVnVDMsIHJlZ1QyKTsKICAg
ICAgICAgbm90SW50MzJPcDIuYXBwZW5kKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMywgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgICAgICBhZGRKdW1wKGJyYW5jaDMyKGNv
bW11dGUoY29uZGl0aW9uKSwgcmVnVDIsIEltbTMyKGdldENvbnN0YW50T3BlcmFuZChvcDEpLmFz
SW50MzIoKSkpLCB0YXJnZXQpOwotICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVJbnQob3AyKSkgeworICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3Ay
KSkgewogICAgICAgICBlbWl0TG9hZChvcDEsIHJlZ1QxLCByZWdUMCk7CiAgICAgICAgIG5vdElu
dDMyT3AxLmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb25kaXRpb24sIHJl
Z1QwLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3AyKS5hc0ludDMyKCkpKSwgdGFyZ2V0KTsK
QEAgLTEyNCwyOCArMTI0LDI4IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29k
ZUlEIG8KICAgICBKdW1wIGVuZCA9IGp1bXAoKTsKIAogICAgIC8vIERvdWJsZSBsZXNzLgotICAg
IGVtaXRCaW5hcnlEb3VibGVPcChvcGNvZGUsIHRhcmdldCwgb3AxLCBvcDIsIE9wZXJhbmRUeXBl
cygpLCBub3RJbnQzMk9wMSwgbm90SW50MzJPcDIsICFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0
ZUludChvcDEpLCBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpIHx8ICFpc09wZXJh
bmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKTsKKyAgICBlbWl0QmluYXJ5RG91YmxlT3Aob3Bj
b2RlLCB0YXJnZXQsIG9wMSwgb3AyLCBPcGVyYW5kVHlwZXMoKSwgbm90SW50MzJPcDEsIG5vdElu
dDMyT3AyLCAhaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSwgaXNPcGVyYW5kQ29uc3RhbnRJbnQo
b3AxKSB8fCAhaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSk7CiAgICAgZW5kLmxpbmsodGhpcyk7
CiB9CiAKIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1wU2xvdyhpbnQgb3AxLCBpbnQgb3Ay
LCB1bnNpZ25lZCB0YXJnZXQsIERvdWJsZUNvbmRpdGlvbiwgc2l6ZV90IChKSVRfT1BFUkFUSU9O
ICpvcGVyYXRpb24pKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSks
IGJvb2wgaW52ZXJ0LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogewot
ICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUNoYXIob3AxKSB8fCBpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUNoYXIob3AyKSkgeworICAgIGlmIChpc09wZXJhbmRDb25zdGFudENo
YXIob3AxKSB8fCBpc09wZXJhbmRDb25zdGFudENoYXIob3AyKSkgewogICAgICAgICBsaW5rU2xv
d0Nhc2UoaXRlcik7CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICAgICAgbGlua1Ns
b3dDYXNlKGl0ZXIpOwogICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKCFzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkgewotICAgICAgICAgICAgaWYg
KCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpICYmICFpc09wZXJhbmRDb25zdGFu
dEltbWVkaWF0ZUludChvcDIpKQorICAgICAgICAgICAgaWYgKCFpc09wZXJhbmRDb25zdGFudElu
dChvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEludChvcDIpKQogICAgICAgICAgICAgICAgIGxp
bmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKICAgICAgICAgICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlm
ICghaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSkgeworICAgICAgICAgICAgaWYg
KCFpc09wZXJhbmRDb25zdGFudEludChvcDEpKSB7CiAgICAgICAgICAgICAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBkb3VibGUgY2hlY2sKICAgICAgICAgICAgICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSB8fCAhaXNPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVJbnQob3AyKSkKKyAgICAgICAgICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEp
IHx8ICFpc09wZXJhbmRDb25zdGFudEludChvcDIpKQogICAgICAgICAgICAgICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsgLy8gZG91YmxlIGNoZWNrCiAgICAgICAgIH0KICAgICB9CkBAIC0xNjMsNyAr
MTYzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbHNoaWZ0KEluc3RydWN0aW9uKiBjdQogICAgIGlu
dCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGludCBvcDIgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3Ay
KSkgewogICAgICAgICBlbWl0TG9hZChvcDEsIHJlZ1QxLCByZWdUMCk7CiAgICAgICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSkpOwogICAgICAgICBsc2hpZnQzMihJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3Ay
KS5hc0ludDMyKCkpLCByZWdUMCk7CkBAIC0xNzIsNyArMTcyLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfbHNoaWZ0KEluc3RydWN0aW9uKiBjdQogICAgIH0KIAogICAgIGVtaXRMb2FkMihvcDEsIHJl
Z1QxLCByZWdUMCwgb3AyLCByZWdUMywgcmVnVDIpOwotICAgIGlmICghaXNPcGVyYW5kQ29uc3Rh
bnRJbW1lZGlhdGVJbnQob3AxKSkKKyAgICBpZiAoIWlzT3BlcmFuZENvbnN0YW50SW50KG9wMSkp
CiAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVx
dWFsLCByZWdUMywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgIGxzaGlm
dDMyKHJlZ1QyLCByZWdUMCk7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2xzaGlmdChJbnN0cnVjdGlvbgogICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kOwogICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kOwogCi0gICAgaWYgKCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpICYmICFp
c09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKQorICAgIGlmICghaXNPcGVyYW5kQ29u
c3RhbnRJbnQob3AxKSAmJiAhaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkKICAgICAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsg
Ly8gaW50MzIgY2hlY2sKIApAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgSklUOjplbWl0UmlnaHRT
aGlmdChJbnN0cnVjdGlvbiogY3UKIAogICAgIC8vIFNsb3cgY2FzZSBvZiByc2hpZnQgbWFrZXMg
YXNzdW1wdGlvbnMgYWJvdXQgd2hhdCByZWdpc3RlcnMgaG9sZCB0aGUKICAgICAvLyBzaGlmdCBh
cmd1bWVudHMsIHNvIGFueSBjaGFuZ2VzIG11c3QgYmUgdXBkYXRlZCB0aGVyZSBhcyB3ZWxsLgot
ICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CisgICAgaWYgKGlz
T3BlcmFuZENvbnN0YW50SW50KG9wMikpIHsKICAgICAgICAgZW1pdExvYWQob3AxLCByZWdUMSwg
cmVnVDApOwogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgaW50IHNoaWZ0ID0gZ2V0
Q29uc3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpICYgMHgxZjsKQEAgLTIxNSw3ICsyMTUsNyBA
QCB2b2lkIEpJVDo6ZW1pdFJpZ2h0U2hpZnQoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgICAgIGVtaXRT
dG9yZUludDMyKGRzdCwgcmVnVDAsIGRzdCA9PSBvcDEpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGVtaXRMb2FkMihvcDEsIHJlZ1QxLCByZWdUMCwgb3AyLCByZWdUMywgcmVnVDIpOwotICAgICAg
ICBpZiAoIWlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpCisgICAgICAgIGlmICgh
aXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwog
ICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDMsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAgaWYgKGlzVW5zaWduZWQpCkBAIC0yMzEs
NyArMjMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRSaWdodFNoaWZ0U2xvd0Nhc2UoSW5zdHJ1YwogICAg
IGludCBkc3QgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwogICAgIGludCBvcDEg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGludCBvcDIgPSBjdXJyZW50
SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwotICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUludChvcDIpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW50KG9wMikpIHsKICAg
ICAgICAgaW50IHNoaWZ0ID0gZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpICYgMHgx
ZjsKICAgICAgICAgLy8gb3AxID0gcmVnVDE6cmVnVDAKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0
ZXIpOyAvLyBpbnQzMiBjaGVjawpAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgSklUOjplbWl0Umln
aHRTaGlmdFNsb3dDYXNlKEluc3RydWMKICAgICB9IGVsc2UgewogICAgICAgICAvLyBvcDEgPSBy
ZWdUMTpyZWdUMAogICAgICAgICAvLyBvcDIgPSByZWdUMzpyZWdUMgotICAgICAgICBpZiAoIWlz
T3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsKKyAgICAgICAgaWYgKCFpc09wZXJh
bmRDb25zdGFudEludChvcDEpKSB7CiAgICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8v
IGludDMyIGNoZWNrIC0tIG9wMSBpcyBub3QgYW4gaW50CiAgICAgICAgICAgICBpZiAoc3VwcG9y
dHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSkgewogICAgICAgICAgICAgICAgIEp1bXBMaXN0IGZh
aWx1cmVzOwpAQCAtMzM1LDcgKzMzNSw3IEBAIHZvaWQgSklUOjplbWl0X29wX2JpdGFuZChJbnN0
cnVjdGlvbiogY3UKIAogICAgIGludCBvcDsKICAgICBpbnQzMl90IGNvbnN0YW50OwotICAgIGlm
IChnZXRPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AxLCBvcDIsIG9wLCBjb25zdGFudCkp
IHsKKyAgICBpZiAoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSwgb3AyLCBvcCwgY29uc3RhbnQp
KSB7CiAgICAgICAgIGVtaXRMb2FkKG9wLCByZWdUMSwgcmVnVDApOwogICAgICAgICBhZGRTbG93
Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQz
MlRhZykpKTsKICAgICAgICAgYW5kMzIoSW1tMzIoY29uc3RhbnQpLCByZWdUMCk7CkBAIC0zNTUs
NyArMzU1LDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2JpdGFuZChJbnN0cnVjdGlvbgogICAg
IGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwogICAgIGludCBvcDIg
PSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgaWYgKCFpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZUludChvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUlu
dChvcDIpKQorICAgIGlmICghaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSAmJiAhaXNPcGVyYW5k
Q29uc3RhbnRJbnQob3AyKSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQzMiBj
aGVjawogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gaW50MzIgY2hlY2sKIApAQCAtMzczLDcg
KzM3Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2JpdG9yKEluc3RydWN0aW9uKiBjdXIKIAogICAg
IGludCBvcDsKICAgICBpbnQzMl90IGNvbnN0YW50OwotICAgIGlmIChnZXRPcGVyYW5kQ29uc3Rh
bnRJbW1lZGlhdGVJbnQob3AxLCBvcDIsIG9wLCBjb25zdGFudCkpIHsKKyAgICBpZiAoZ2V0T3Bl
cmFuZENvbnN0YW50SW50KG9wMSwgb3AyLCBvcCwgY29uc3RhbnQpKSB7CiAgICAgICAgIGVtaXRM
b2FkKG9wLCByZWdUMSwgcmVnVDApOwogICAgICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RF
cXVhbCwgcmVnVDEsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKICAgICAgICAg
b3IzMihJbW0zMihjb25zdGFudCksIHJlZ1QwKTsKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEpJ
VDo6ZW1pdFNsb3dfb3BfYml0b3IoSW5zdHJ1Y3Rpb24qCiAgICAgaW50IG9wMSA9IGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7CiAgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQ7CiAKLSAgICBpZiAoIWlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50
KG9wMSkgJiYgIWlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpCisgICAgaWYgKCFp
c09wZXJhbmRDb25zdGFudEludChvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEludChvcDIpKQog
ICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAgbGlua1Nsb3dD
YXNlKGl0ZXIpOyAvLyBpbnQzMiBjaGVjawogCkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfYml0eG9yKEluc3RydWN0aW9uKiBjdQogCiAgICAgaW50IG9wOwogICAgIGludDMy
X3QgY29uc3RhbnQ7Ci0gICAgaWYgKGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEs
IG9wMiwgb3AsIGNvbnN0YW50KSkgeworICAgIGlmIChnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3Ax
LCBvcDIsIG9wLCBjb25zdGFudCkpIHsKICAgICAgICAgZW1pdExvYWQob3AsIHJlZ1QxLCByZWdU
MCk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgVHJ1c3Rl
ZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgICAgICB4b3IzMihJbW0zMihjb25zdGFu
dCksIHJlZ1QwKTsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYml0
eG9yKEluc3RydWN0aW9uCiAgICAgaW50IG9wMSA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7CiAgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAK
LSAgICBpZiAoIWlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkgJiYgIWlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpCisgICAgaWYgKCFpc09wZXJhbmRDb25zdGFudElu
dChvcDEpICYmICFpc09wZXJhbmRDb25zdGFudEludChvcDIpKQogICAgICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7IC8vIGludDMyIGNoZWNrCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBpbnQz
MiBjaGVjawogCkBAIC00OTksNyArNDk5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYWRkKEluc3Ry
dWN0aW9uKiBjdXJyZQogCiAgICAgaW50IG9wOwogICAgIGludDMyX3QgY29uc3RhbnQ7Ci0gICAg
aWYgKGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEsIG9wMiwgb3AsIGNvbnN0YW50
KSkgeworICAgIGlmIChnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxLCBvcDIsIG9wLCBjb25zdGFu
dCkpIHsKICAgICAgICAgZW1pdEFkZDMyQ29uc3RhbnQoZHN0LCBvcCwgY29uc3RhbnQsIG9wID09
IG9wMSA/IHR5cGVzLmZpcnN0KCkgOiB0eXBlcy5zZWNvbmQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2FkZChJbnN0
cnVjdGlvbiogYwogCiAgICAgaW50IG9wOwogICAgIGludDMyX3QgY29uc3RhbnQ7Ci0gICAgaWYg
KGdldE9wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEsIG9wMiwgb3AsIGNvbnN0YW50KSkg
eworICAgIGlmIChnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxLCBvcDIsIG9wLCBjb25zdGFudCkp
IHsKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBvdmVyZmxvdyBjaGVjawogCiAgICAg
ICAgIGlmICghc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpCkBAIC02MDQsNyArNjA0LDcgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3Bfc3ViKEluc3RydWN0aW9uKiBjdXJyZQogICAgIEp1bXBMaXN0IG5vdElu
dDMyT3AxOwogICAgIEp1bXBMaXN0IG5vdEludDMyT3AyOwogCi0gICAgaWYgKGlzT3BlcmFuZENv
bnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQo
b3AyKSkgewogICAgICAgICBlbWl0U3ViMzJDb25zdGFudChkc3QsIG9wMSwgZ2V0Q29uc3RhbnRP
cGVyYW5kKG9wMikuYXNJbnQzMigpLCB0eXBlcy5maXJzdCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTY2MSw3ICs2NjEsNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3Bfc3ViKEluc3Ry
dWN0aW9uKiBjCiAgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7
CiAgICAgT3BlcmFuZFR5cGVzIHR5cGVzID0gT3BlcmFuZFR5cGVzOjpmcm9tSW50KGN1cnJlbnRJ
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpOwogCi0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1t
ZWRpYXRlSW50KG9wMikpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkgewog
ICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIG92ZXJmbG93IGNoZWNrCiAKICAgICAgICAg
aWYgKCFzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSB8fCAhdHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5
SXNOdW1iZXIoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRp
Yy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1l
dGljLmNwcAkocmV2aXNpb24gMTkwMjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk2LDE1ICsxOTYsMTUgQEAgdm9p
ZCBKSVQ6OmVtaXRfb3BfbmVnYXRlKEluc3RydWN0aW9uKiBjdQogCiAgICAgZW1pdEdldFZpcnR1
YWxSZWdpc3RlcihzcmMsIHJlZ1QwKTsKIAotICAgIEp1bXAgc3JjTm90SW50ID0gZW1pdEp1bXBJ
Zk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOworICAgIEp1bXAgc3JjTm90SW50ID0gZW1pdEp1
bXBJZk5vdEludChyZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDMyKFplcm8sIHJl
Z1QwLCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpKTsKICAgICBuZWczMihyZWdUMCk7Ci0gICAg
ZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKHJlZ1QwLCByZWdUMCk7CisgICAgZW1pdFRhZ0lu
dChyZWdUMCwgcmVnVDApOwogCiAgICAgSnVtcCBlbmQgPSBqdW1wKCk7CiAKICAgICBzcmNOb3RJ
bnQubGluayh0aGlzKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVOdW1iZXIo
cmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdE51bWJlcihyZWdUMCk7CiAKICAgICBt
b3ZlKFRydXN0ZWRJbW02NCgoaW50NjRfdCkweDgwMDAwMDAwMDAwMDAwMDB1bGwpLCByZWdUMSk7
CiAgICAgeG9yNjQocmVnVDEsIHJlZ1QwKTsKQEAgLTIyOSwxMyArMjI5LDExIEBAIHZvaWQgSklU
OjplbWl0X29wX2xzaGlmdChJbnN0cnVjdGlvbiogY3UKICAgICBpbnQgb3AyID0gY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKG9w
MSwgcmVnVDAsIG9wMiwgcmVnVDIpOwotICAgIC8vIEZJWE1FOiB3b3VsZCB3ZSBiZSBiZXR0ZXIg
dXNpbmcgJ2VtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXJzJz8gLSB3ZSAqcHJv
YmFibHkqIG91Z2h0IHRvIGJlIGNvbnNpc3RlbnQuCi0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRp
YXRlSW50ZWdlcihyZWdUMik7Ci0gICAgZW1pdEZhc3RBcml0aEltbVRvSW50KHJlZ1QwKTsKLSAg
ICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQocmVnVDIpOworICAgIC8vIEZJWE1FOiB3b3VsZCB3ZSBi
ZSBiZXR0ZXIgdXNpbmcgYSAnZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50JyB0aGF0IHRlc3RzIGJv
dGggdmFsdWVzIGF0IG9uY2U/IC0gd2UgKnByb2JhYmx5KiBvdWdodCB0byBiZSBjb25zaXN0ZW50
LgorICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCk7CisgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW50KHJlZ1QyKTsKICAgICBsc2hpZnQzMihyZWdUMiwgcmVnVDApOwotICAgIGVt
aXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShyZWdUMCwgcmVnVDApOworICAgIGVtaXRUYWdJbnQo
cmVnVDAsIHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCk7CiB9CiAK
QEAgLTI1MywzMiArMjUxLDMxIEBAIHZvaWQgSklUOjplbWl0X29wX3JzaGlmdChJbnN0cnVjdGlv
biogY3UKICAgICBpbnQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKICAg
ICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAotICAgIGlmIChp
c09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7Ci0gICAgICAgIC8vIGlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikgPT4gMSBTbG93Q2FzZQorICAgIGlmIChpc09wZXJh
bmRDb25zdGFudEludChvcDIpKSB7CisgICAgICAgIC8vIGlzT3BlcmFuZENvbnN0YW50SW50KG9w
MikgPT4gMSBTbG93Q2FzZQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVn
VDApOwotICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1Qw
KTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwKTsKICAgICAgICAgLy8g
TWFzayB3aXRoIDB4MWYgYXMgcGVyIGVjbWEtMjYyIDExLjcuMiBzdGVwIDcuCi0gICAgICAgIHJz
aGlmdDMyKEltbTMyKGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDIpICYgMHgxZiks
IHJlZ1QwKTsKKyAgICAgICAgcnNoaWZ0MzIoSW1tMzIoZ2V0T3BlcmFuZENvbnN0YW50SW50KG9w
MikgJiAweDFmKSwgcmVnVDApOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXJzKG9wMSwgcmVnVDAsIG9wMiwgcmVnVDIpOwogICAgICAgICBpZiAoc3VwcG9ydHNG
bG9hdGluZ1BvaW50VHJ1bmNhdGUoKSkgewotICAgICAgICAgICAgSnVtcCBsaHNJc0ludCA9IGVt
aXRKdW1wSWZJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKKyAgICAgICAgICAgIEp1bXAgbGhzSXNJ
bnQgPSBlbWl0SnVtcElmSW50KHJlZ1QwKTsKICAgICAgICAgICAgIC8vIHN1cHBvcnRzRmxvYXRp
bmdQb2ludCgpICYmIFVTRShKU1ZBTFVFNjQpID0+IDMgU2xvd0Nhc2VzCi0gICAgICAgICAgICBh
ZGRTbG93Q2FzZShlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QwKSk7CisgICAgICAg
ICAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90TnVtYmVyKHJlZ1QwKSk7CiAgICAgICAgICAg
ICBhZGQ2NCh0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKICAgICAgICAgICAgIG1vdmU2
NFRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsKICAgICAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFRydW5jYXRlRG91YmxlVG9JbnQzMihmcFJlZ1QwLCByZWdUMCkpOwogICAgICAgICAgICAgbGhz
SXNJbnQubGluayh0aGlzKTsKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVk
aWF0ZUludGVnZXIocmVnVDIpOworICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50
KHJlZ1QyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vICFzdXBwb3J0c0Zsb2F0
aW5nUG9pbnQoKSA9PiAyIFNsb3dDYXNlcwotICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0gICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QyKTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEludChyZWdUMCk7CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQo
cmVnVDIpOwogICAgICAgICB9Ci0gICAgICAgIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChyZWdUMik7
CiAgICAgICAgIHJzaGlmdDMyKHJlZ1QyLCByZWdUMCk7CiAgICAgfQotICAgIGVtaXRGYXN0QXJp
dGhJbnRUb0ltbU5vQ2hlY2socmVnVDAsIHJlZ1QwKTsKKyAgICBlbWl0VGFnSW50KHJlZ1QwLCBy
ZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpOwogfQogCkBAIC0yODYs
NyArMjgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX3JzaGlmdChJbnN0cnVjdGlvbgogewog
ICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpCisgICAgaWYgKGlzT3BlcmFuZENv
bnN0YW50SW50KG9wMikpCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgIGVsc2Ug
ewpAQCAtMzEwLDMyICszMDcsMzEgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdXJzaGlmdChJbnN0cnVj
dGlvbiogYwogICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwog
ICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCi0gICAgaWYg
KGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKLSAgICAgICAgLy8gaXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSA9PiAxIFNsb3dDYXNlCisgICAgaWYgKGlzT3Bl
cmFuZENvbnN0YW50SW50KG9wMikpIHsKKyAgICAgICAgLy8gaXNPcGVyYW5kQ29uc3RhbnRJbnQo
b3AyKSA9PiAxIFNsb3dDYXNlCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCBy
ZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVn
VDApOworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDApOwogICAgICAgICAv
LyBNYXNrIHdpdGggMHgxZiBhcyBwZXIgZWNtYS0yNjIgMTEuNy4yIHN0ZXAgNy4KLSAgICAgICAg
dXJzaGlmdDMyKEltbTMyKGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDIpICYgMHgx
ZiksIHJlZ1QwKTsKKyAgICAgICAgdXJzaGlmdDMyKEltbTMyKGdldE9wZXJhbmRDb25zdGFudElu
dChvcDIpICYgMHgxZiksIHJlZ1QwKTsKICAgICB9IGVsc2UgewogICAgICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVycyhvcDEsIHJlZ1QwLCBvcDIsIHJlZ1QyKTsKICAgICAgICAgaWYgKHN1cHBv
cnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkpIHsKLSAgICAgICAgICAgIEp1bXAgbGhzSXNJbnQg
PSBlbWl0SnVtcElmSW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7CisgICAgICAgICAgICBKdW1wIGxo
c0lzSW50ID0gZW1pdEp1bXBJZkludChyZWdUMCk7CiAgICAgICAgICAgICAvLyBzdXBwb3J0c0Zs
b2F0aW5nUG9pbnQoKSAmJiBVU0UoSlNWQUxVRTY0KSA9PiAzIFNsb3dDYXNlcwotICAgICAgICAg
ICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdUMCkpOworICAg
ICAgICAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMCkpOwogICAgICAg
ICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAgICAgICBt
b3ZlNjRUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CiAgICAgICAgICAgICBhZGRTbG93Q2FzZShi
cmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnBSZWdUMCwgcmVnVDApKTsKICAgICAgICAgICAg
IGxoc0lzSW50LmxpbmsodGhpcyk7Ci0gICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW1lZGlhdGVJbnRlZ2VyKHJlZ1QyKTsKKyAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEludChyZWdUMik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyAhc3VwcG9ydHNG
bG9hdGluZ1BvaW50KCkgPT4gMiBTbG93Q2FzZXMKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOwotICAgICAgICAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMik7CisgICAgICAgICAgICBlbWl0SnVtcFNs
b3dDYXNlSWZOb3RJbnQocmVnVDApOworICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW50KHJlZ1QyKTsKICAgICAgICAgfQotICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQocmVn
VDIpOwogICAgICAgICB1cnNoaWZ0MzIocmVnVDIsIHJlZ1QwKTsKICAgICB9Ci0gICAgZW1pdEZh
c3RBcml0aEludFRvSW1tTm9DaGVjayhyZWdUMCwgcmVnVDApOworICAgIGVtaXRUYWdJbnQocmVn
VDAsIHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCk7CiB9CiAKQEAg
LTM0Myw3ICszMzksNyBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfdXJzaGlmdChJbnN0cnVjdGlv
CiB7CiAgICAgaW50IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKLSAg
ICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkKKyAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbnQob3AyKSkKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCiAgICAg
ZWxzZSB7CkBAIC0zNjcsOSArMzYzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdW5zaWduZWQoSW5z
dHJ1Y3Rpb24qIAogICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5k
OwogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AxLCByZWdUMCk7Ci0gICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7CisgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SW50KHJlZ1QwKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihMZXNzVGhh
biwgcmVnVDAsIFRydXN0ZWRJbW0zMigwKSkpOwotICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVk
aWF0ZShyZWdUMCwgcmVnVDApOworICAgIGVtaXRUYWdJbnQocmVnVDAsIHJlZ1QwKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKHJlc3VsdCwgcmVnVDApOwogfQogCkBAIC0zODksNyArMzg1
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfY29tcGFyZUFuZEp1bXAoT3Bjb2RlSUQsIAogICAgIC8vIC0g
Y29uc3RhbnQgaW50IGltbWVkaWF0ZSB0byBpbnQgaW1tZWRpYXRlCiAgICAgLy8gLSBpbnQgaW1t
ZWRpYXRlIHRvIGludCBpbW1lZGlhdGUKIAotICAgIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUNoYXIob3AxKSkgeworICAgIGlmIChpc09wZXJhbmRDb25zdGFudENoYXIob3AxKSkgewog
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDApOwogICAgICAgICBhZGRT
bG93Q2FzZShlbWl0SnVtcElmTm90SlNDZWxsKHJlZ1QwKSk7CiAgICAgICAgIEp1bXBMaXN0IGZh
aWx1cmVzOwpAQCAtMzk4LDcgKzM5NCw3IEBAIHZvaWQgSklUOjplbWl0X2NvbXBhcmVBbmRKdW1w
KE9wY29kZUlELCAKICAgICAgICAgYWRkSnVtcChicmFuY2gzMihjb21tdXRlKGNvbmRpdGlvbiks
IHJlZ1QwLCBJbW0zMihhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQob3AxKSktPnRyeUdldFZh
bHVlKClbMF0pKSwgdGFyZ2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAoaXNP
cGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVDaGFyKG9wMikpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29u
c3RhbnRDaGFyKG9wMikpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIHJl
Z1QwKTsKICAgICAgICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCkpOwog
ICAgICAgICBKdW1wTGlzdCBmYWlsdXJlczsKQEAgLTQwNywyMCArNDAzLDIwIEBAIHZvaWQgSklU
OjplbWl0X2NvbXBhcmVBbmRKdW1wKE9wY29kZUlELCAKICAgICAgICAgYWRkSnVtcChicmFuY2gz
Mihjb25kaXRpb24sIHJlZ1QwLCBJbW0zMihhc1N0cmluZyhnZXRDb25zdGFudE9wZXJhbmQob3Ay
KSktPnRyeUdldFZhbHVlKClbMF0pKSwgdGFyZ2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgeworICAgIGlmIChp
c09wZXJhbmRDb25zdGFudEludChvcDIpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIob3AxLCByZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUlu
dGVnZXIocmVnVDApOwotICAgICAgICBpbnQzMl90IG9wMmltbSA9IGdldENvbnN0YW50T3BlcmFu
ZEltbWVkaWF0ZUludChvcDIpOworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVn
VDApOworICAgICAgICBpbnQzMl90IG9wMmltbSA9IGdldE9wZXJhbmRDb25zdGFudEludChvcDIp
OwogICAgICAgICBhZGRKdW1wKGJyYW5jaDMyKGNvbmRpdGlvbiwgcmVnVDAsIEltbTMyKG9wMmlt
bSkpLCB0YXJnZXQpOwotICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJ
bnQob3AxKSkgeworICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkgewog
ICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMiwgcmVnVDEpOwotICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QxKTsKLSAgICAgICAgaW50MzJf
dCBvcDFpbW0gPSBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AxKTsKKyAgICAgICAg
ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QxKTsKKyAgICAgICAgaW50MzJfdCBvcDFpbW0g
PSBnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKTsKICAgICAgICAgYWRkSnVtcChicmFuY2gzMihj
b21tdXRlKGNvbmRpdGlvbiksIHJlZ1QxLCBJbW0zMihvcDFpbW0pKSwgdGFyZ2V0KTsKICAgICB9
IGVsc2UgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhvcDEsIHJlZ1QwLCBvcDIs
IHJlZ1QxKTsKLSAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihy
ZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVn
VDEpOworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDApOworICAgICAgICBl
bWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDEpOwogCiAgICAgICAgIGFkZEp1bXAoYnJhbmNo
MzIoY29uZGl0aW9uLCByZWdUMCwgcmVnVDEpLCB0YXJnZXQpOwogICAgIH0KQEAgLTQ0MCw3ICs0
MzYsNyBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5kSnVtcFNsb3coaW50IG9wCiAgICAgLy8g
LSBmbG9hdGluZy1wb2ludCBudW1iZXIgdG8gY29uc3RhbnQgaW50IGltbWVkaWF0ZQogICAgIC8v
IC0gY29uc3RhbnQgaW50IGltbWVkaWF0ZSB0byBmbG9hdGluZy1wb2ludCBudW1iZXIKICAgICAv
LyAtIGZsb2F0aW5nLXBvaW50IG51bWJlciB0byBmbG9hdGluZy1wb2ludCBudW1iZXIuCi0gICAg
aWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlQ2hhcihvcDEpIHx8IGlzT3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlQ2hhcihvcDIpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50Q2hhcihv
cDEpIHx8IGlzT3BlcmFuZENvbnN0YW50Q2hhcihvcDIpKSB7CiAgICAgICAgIGxpbmtTbG93Q2Fz
ZShpdGVyKTsKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogICAgICAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7CkBAIC00NTMsMTEgKzQ0OSwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJlQW5k
SnVtcFNsb3coaW50IG9wCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgeworICAgIGlmIChpc09wZXJhbmRDb25zdGFu
dEludChvcDIpKSB7CiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAgICAgICBpZiAo
c3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKLSAgICAgICAgICAgIEp1bXAgZmFpbDEgPSBlbWl0
SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QwKTsKKyAgICAgICAgICAgIEp1bXAgZmFpbDEg
PSBlbWl0SnVtcElmTm90TnVtYmVyKHJlZ1QwKTsKICAgICAgICAgICAgIGFkZDY0KHRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgcmVnVDApOwogICAgICAgICAgICAgbW92ZTY0VG9Eb3VibGUocmVnVDAs
IGZwUmVnVDApOwogCkBAIC00NzYsMTEgKzQ3MiwxMSBAQCB2b2lkIEpJVDo6ZW1pdF9jb21wYXJl
QW5kSnVtcFNsb3coaW50IG9wCiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCBy
ZWdUMSk7CiAgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZWdUMCwgcmVnVDEpOwog
ICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoaW52ZXJ0ID8gWmVybyA6IE5v
blplcm8sIHJldHVyblZhbHVlR1BSKSwgdGFyZ2V0KTsKLSAgICB9IGVsc2UgaWYgKGlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENv
bnN0YW50SW50KG9wMSkpIHsKICAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwogCiAgICAgICAg
IGlmIChzdXBwb3J0c0Zsb2F0aW5nUG9pbnQoKSkgewotICAgICAgICAgICAgSnVtcCBmYWlsMSA9
IGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIocmVnVDEpOworICAgICAgICAgICAgSnVtcCBm
YWlsMSA9IGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDEpOwogICAgICAgICAgICAgYWRkNjQodGFn
VHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMSk7CiAgICAgICAgICAgICBtb3ZlNjRUb0RvdWJsZShy
ZWdUMSwgZnBSZWdUMSk7CiAKQEAgLTUwMyw5ICs0OTksOSBAQCB2b2lkIEpJVDo6ZW1pdF9jb21w
YXJlQW5kSnVtcFNsb3coaW50IG9wCiAgICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKIAogICAg
ICAgICBpZiAoc3VwcG9ydHNGbG9hdGluZ1BvaW50KCkpIHsKLSAgICAgICAgICAgIEp1bXAgZmFp
bDEgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QwKTsKLSAgICAgICAgICAgIEp1
bXAgZmFpbDIgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QxKTsKLSAgICAgICAg
ICAgIEp1bXAgZmFpbDMgPSBlbWl0SnVtcElmSW1tZWRpYXRlSW50ZWdlcihyZWdUMSk7CisgICAg
ICAgICAgICBKdW1wIGZhaWwxID0gZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMCk7CisgICAgICAg
ICAgICBKdW1wIGZhaWwyID0gZW1pdEp1bXBJZk5vdE51bWJlcihyZWdUMSk7CisgICAgICAgICAg
ICBKdW1wIGZhaWwzID0gZW1pdEp1bXBJZkludChyZWdUMSk7CiAgICAgICAgICAgICBhZGQ2NCh0
YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlZ1QwKTsKICAgICAgICAgICAgIGFkZDY0KHRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgcmVnVDEpOwogICAgICAgICAgICAgbW92ZTY0VG9Eb3VibGUocmVnVDAs
IGZwUmVnVDApOwpAQCAtNTMyLDI0ICs1MjgsMjQgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfYml0YW5k
KEluc3RydWN0aW9uKiBjdQogICAgIGludCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kOwogICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwog
Ci0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsKKyAgICBpZiAo
aXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKG9wMiwgcmVnVDApOwotICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJ
bnRlZ2VyKHJlZ1QwKTsKLSAgICAgICAgaW50MzJfdCBpbW0gPSBnZXRDb25zdGFudE9wZXJhbmRJ
bW1lZGlhdGVJbnQob3AxKTsKKyAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1Qw
KTsKKyAgICAgICAgaW50MzJfdCBpbW0gPSBnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AxKTsKICAg
ICAgICAgYW5kNjQoSW1tMzIoaW1tKSwgcmVnVDApOwogICAgICAgICBpZiAoaW1tID49IDApCi0g
ICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1QwLCByZWdUMCk7Ci0g
ICAgfSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CisgICAg
ICAgICAgICBlbWl0VGFnSW50KHJlZ1QwLCByZWdUMCk7CisgICAgfSBlbHNlIGlmIChpc09wZXJh
bmRDb25zdGFudEludChvcDIpKSB7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3Ax
LCByZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIo
cmVnVDApOwotICAgICAgICBpbnQzMl90IGltbSA9IGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0
ZUludChvcDIpOworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDApOworICAg
ICAgICBpbnQzMl90IGltbSA9IGdldE9wZXJhbmRDb25zdGFudEludChvcDIpOwogICAgICAgICBh
bmQ2NChJbW0zMihpbW0pLCByZWdUMCk7CiAgICAgICAgIGlmIChpbW0gPj0gMCkKLSAgICAgICAg
ICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2socmVnVDAsIHJlZ1QwKTsKKyAgICAgICAg
ICAgIGVtaXRUYWdJbnQocmVnVDAsIHJlZ1QwKTsKICAgICB9IGVsc2UgewogICAgICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVycyhvcDEsIHJlZ1QwLCBvcDIsIHJlZ1QxKTsKICAgICAgICAgYW5k
NjQocmVnVDEsIHJlZ1QwKTsKLSAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRl
SW50ZWdlcihyZWdUMCk7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCk7
CiAgICAgfQogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0KTsKIH0KQEAgLTU2Nyw5
ICs1NjMsOSBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pbmMoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAg
aW50IHNyY0RzdCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7CiAKICAgICBlbWl0
R2V0VmlydHVhbFJlZ2lzdGVyKHNyY0RzdCwgcmVnVDApOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElu
dChyZWdUMCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoQWRkMzIoT3ZlcmZsb3csIFRydXN0ZWRJ
bW0zMigxKSwgcmVnVDApKTsKLSAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHJlZ1Qw
LCByZWdUMCk7CisgICAgZW1pdFRhZ0ludChyZWdUMCwgcmVnVDApOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoc3JjRHN0KTsKIH0KIApAQCAtNTg2LDkgKzU4Miw5IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlYyhJbnN0cnVjdGlvbiogY3VycmUKICAgICBpbnQgc3JjRHN0ID0gY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZDsKIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoc3Jj
RHN0LCByZWdUMCk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlSW50ZWdlcihy
ZWdUMCk7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KHJlZ1QwKTsKICAgICBhZGRTbG93
Q2FzZShicmFuY2hTdWIzMihPdmVyZmxvdywgVHJ1c3RlZEltbTMyKDEpLCByZWdUMCkpOwotICAg
IGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2socmVnVDAsIHJlZ1QwKTsKKyAgICBlbWl0VGFn
SW50KHJlZ1QwLCByZWdUMCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihzcmNEc3QpOwog
fQogCkBAIC02MTgsOCArNjE0LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfbW9kKEluc3RydWN0aW9u
KiBjdXJyZQogICAgIEFTU0VSVChyZWdUNCAhPSBlY3gpOwogCiAgICAgZW1pdEdldFZpcnR1YWxS
ZWdpc3RlcnMob3AxLCByZWdUNCwgb3AyLCBlY3gpOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEltbWVkaWF0ZUludGVnZXIocmVnVDQpOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVk
aWF0ZUludGVnZXIoZWN4KTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDQpOwor
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChlY3gpOwogCiAgICAgbW92ZShyZWdUNCwgcmVn
VDApOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihaZXJvLCBlY3gpKTsKQEAgLTYzMSw3
ICs2MjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9tb2QoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAg
SnVtcCBudW1lcmF0b3JQb3NpdGl2ZSA9IGJyYW5jaDMyKEdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVn
VDQsIFRydXN0ZWRJbW0zMigwKSk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdDMyKFplcm8s
IGVkeCkpOwogICAgIG51bWVyYXRvclBvc2l0aXZlLmxpbmsodGhpcyk7Ci0gICAgZW1pdEZhc3RB
cml0aFJlVGFnSW1tZWRpYXRlKGVkeCwgcmVnVDApOworICAgIGVtaXRUYWdJbnQoZWR4LCByZWdU
MCk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihyZXN1bHQpOwogfQogCkBAIC02NjgsOCAr
NjY0LDggQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX21vZChJbnN0cnVjdGlvbiosIAogdm9pZCBK
SVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wKE9wY29kZUlEIG9wY29kZUlELCBpbnQsIGludCBvcDEs
IGludCBvcDIsIE9wZXJhbmRUeXBlcykKIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhv
cDEsIHJlZ1QwLCBvcDIsIHJlZ1QxKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlh
dGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRl
Z2VyKHJlZ1QxKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDApOworICAgIGVt
aXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMSk7CiAgICAgUmFyZUNhc2VQcm9maWxlKiBwcm9m
aWxlID0gbV9jb2RlQmxvY2stPmFkZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUobV9ieXRlY29kZU9m
ZnNldCk7CiAgICAgaWYgKG9wY29kZUlEID09IG9wX2FkZCkKICAgICAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoQWRkMzIoT3ZlcmZsb3csIHJlZ1QxLCByZWdUMCkpOwpAQCAtNzAxLDcgKzY5Nyw3IEBA
IHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhPcChPcGNvZGVJRCAKICAgICAgICAgICAgIGFk
ZFNsb3dDYXNlKGJyYW5jaFRlc3QzMihaZXJvLCByZWdUMCkpOwogICAgICAgICB9CiAgICAgfQot
ICAgIGVtaXRGYXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2socmVnVDAsIHJlZ1QwKTsKKyAgICBlbWl0
VGFnSW50KHJlZ1QwLCByZWdUMCk7CiB9CiAKIHZvaWQgSklUOjpjb21waWxlQmluYXJ5QXJpdGhP
cFNsb3dDYXNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIE9wY29kZUlEIG9wY29k
ZUlELCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyLCBpbnQgcmVzdWx0LCBp
bnQgb3AxLCBpbnQgb3AyLCBPcGVyYW5kVHlwZXMgdHlwZXMsIGJvb2wgb3AxSGFzSW1tZWRpYXRl
SW50RmFzdENhc2UsIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpCkBAIC03MzMsNyAr
NzI5LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wU2xvd0Nhc2UoSQogICAgIGlm
IChvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSkgewogICAgICAgICBub3RJbW0yLmxpbmsodGhp
cyk7CiAgICAgICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpCi0g
ICAgICAgICAgICBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QwKS5saW5rVG8oc3R1
YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7CisgICAgICAgICAgICBlbWl0SnVtcElmTm90TnVtYmVyKHJl
Z1QwKS5saW5rVG8oc3R1YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7CiAgICAgICAgIGVtaXRHZXRWaXJ0
dWFsUmVnaXN0ZXIob3AxLCByZWdUMSk7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHJl
Z1QxLCBmcFJlZ1QxKTsKICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdU
MCk7CkBAIC03NDEsNyArNzM3LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVCaW5hcnlBcml0aE9wU2xv
d0Nhc2UoSQogICAgIH0gZWxzZSBpZiAob3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UpIHsKICAg
ICAgICAgbm90SW1tMS5saW5rKHRoaXMpOwogICAgICAgICBpZiAoIXR5cGVzLmZpcnN0KCkuZGVm
aW5pdGVseUlzTnVtYmVyKCkpCi0gICAgICAgICAgICBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVt
YmVyKHJlZ1QwKS5saW5rVG8oc3R1YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7CisgICAgICAgICAgICBl
bWl0SnVtcElmTm90TnVtYmVyKHJlZ1QwKS5saW5rVG8oc3R1YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7
CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMSk7CiAgICAgICAgIGNv
bnZlcnRJbnQzMlRvRG91YmxlKHJlZ1QxLCBmcFJlZ1QxKTsKICAgICAgICAgYWRkNjQodGFnVHlw
ZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CkBAIC03NTAsMTkgKzc0NiwxOSBAQCB2b2lkIEpJVDo6
Y29tcGlsZUJpbmFyeUFyaXRoT3BTbG93Q2FzZShJCiAgICAgICAgIC8vIGlmIHdlIGdldCBoZXJl
LCBlYXggaXMgbm90IGFuIGludDMyLCBlZHggbm90IHlldCBjaGVja2VkLgogICAgICAgICBub3RJ
bW0xLmxpbmsodGhpcyk7CiAgICAgICAgIGlmICghdHlwZXMuZmlyc3QoKS5kZWZpbml0ZWx5SXNO
dW1iZXIoKSkKLSAgICAgICAgICAgIGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIocmVnVDAp
LmxpbmtUbyhzdHViRnVuY3Rpb25DYWxsLCB0aGlzKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZO
b3ROdW1iZXIocmVnVDApLmxpbmtUbyhzdHViRnVuY3Rpb25DYWxsLCB0aGlzKTsKICAgICAgICAg
aWYgKCF0eXBlcy5zZWNvbmQoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKLSAgICAgICAgICAgIGVt
aXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIocmVnVDEpLmxpbmtUbyhzdHViRnVuY3Rpb25DYWxs
LCB0aGlzKTsKKyAgICAgICAgICAgIGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDEpLmxpbmtUbyhz
dHViRnVuY3Rpb25DYWxsLCB0aGlzKTsKICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lz
dGVyLCByZWdUMCk7CiAgICAgICAgIG1vdmU2NFRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QxKTsKLSAg
ICAgICAgSnVtcCBvcDJpc0RvdWJsZSA9IGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJl
Z1QxKTsKKyAgICAgICAgSnVtcCBvcDJpc0RvdWJsZSA9IGVtaXRKdW1wSWZOb3RJbnQocmVnVDEp
OwogICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMSwgZnBSZWdUMik7CiAgICAgICAg
IEp1bXAgb3Ayd2FzSW50ZWdlciA9IGp1bXAoKTsKIAogICAgICAgICAvLyBpZiB3ZSBnZXQgaGVy
ZSwgZWF4IElTIGFuIGludDMyLCBlZHggaXMgbm90LgogICAgICAgICBub3RJbW0yLmxpbmsodGhp
cyk7CiAgICAgICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpCi0g
ICAgICAgICAgICBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1QxKS5saW5rVG8oc3R1
YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7CisgICAgICAgICAgICBlbWl0SnVtcElmTm90TnVtYmVyKHJl
Z1QxKS5saW5rVG8oc3R1YkZ1bmN0aW9uQ2FsbCwgdGhpcyk7CiAgICAgICAgIGNvbnZlcnRJbnQz
MlRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QxKTsKICAgICAgICAgb3AyaXNEb3VibGUubGluayh0aGlz
KTsKICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMSk7CkBAIC04MDAs
MTYgKzc5NiwxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9hZGQoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlh
dGVJbnQob3AxKSkgeworICAgIGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDEpKSB7CiAgICAg
ICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1w
U2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOwotICAgICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hBZGQzMihPdmVyZmxvdywgcmVnVDAsIEltbTMyKGdldENvbnN0YW50T3BlcmFuZElt
bWVkaWF0ZUludChvcDEpKSwgcmVnVDEpKTsKLSAgICAgICAgZW1pdEZhc3RBcml0aEludFRvSW1t
Tm9DaGVjayhyZWdUMSwgcmVnVDApOwotICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJ
bW1lZGlhdGVJbnQob3AyKSkgeworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVn
VDApOworICAgICAgICBhZGRTbG93Q2FzZShicmFuY2hBZGQzMihPdmVyZmxvdywgcmVnVDAsIElt
bTMyKGdldE9wZXJhbmRDb25zdGFudEludChvcDEpKSwgcmVnVDEpKTsKKyAgICAgICAgZW1pdFRh
Z0ludChyZWdUMSwgcmVnVDApOworICAgIH0gZWxzZSBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQo
b3AyKSkgewogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKG9wMSwgcmVnVDApOwotICAg
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoQWRkMzIoT3ZlcmZsb3csIHJlZ1QwLCBJbW0zMihnZXRDb25z
dGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AyKSksIHJlZ1QxKSk7Ci0gICAgICAgIGVtaXRGYXN0
QXJpdGhJbnRUb0ltbU5vQ2hlY2socmVnVDEsIHJlZ1QwKTsKKyAgICAgICAgZW1pdEp1bXBTbG93
Q2FzZUlmTm90SW50KHJlZ1QwKTsKKyAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoQWRkMzIoT3Zl
cmZsb3csIHJlZ1QwLCBJbW0zMihnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSksIHJlZ1QxKSk7
CisgICAgICAgIGVtaXRUYWdJbnQocmVnVDEsIHJlZ1QwKTsKICAgICB9IGVsc2UKICAgICAgICAg
Y29tcGlsZUJpbmFyeUFyaXRoT3Aob3BfYWRkLCByZXN1bHQsIG9wMSwgb3AyLCB0eXBlcyk7CiAK
QEAgLTgyNSw4ICs4MjEsOCBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfYWRkKEluc3RydWN0aW9u
KiBjCiAKICAgICBSRUxFQVNFX0FTU0VSVCh0eXBlcy5maXJzdCgpLm1pZ2h0QmVOdW1iZXIoKSAm
JiB0eXBlcy5zZWNvbmQoKS5taWdodEJlTnVtYmVyKCkpOwogCi0gICAgYm9vbCBvcDFIYXNJbW1l
ZGlhdGVJbnRGYXN0Q2FzZSA9IGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSk7Ci0g
ICAgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9ICFvcDFIYXNJbW1lZGlhdGVJbnRG
YXN0Q2FzZSAmJiBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpOworICAgIGJvb2wg
b3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSBpc09wZXJhbmRDb25zdGFudEludChvcDEpOwor
ICAgIGJvb2wgb3AySGFzSW1tZWRpYXRlSW50RmFzdENhc2UgPSAhb3AxSGFzSW1tZWRpYXRlSW50
RmFzdENhc2UgJiYgaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AyKTsKICAgICBjb21waWxlQmluYXJ5
QXJpdGhPcFNsb3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BfYWRkLCBpdGVyLCByZXN1bHQs
IG9wMSwgb3AyLCB0eXBlcywgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIG9wMkhhc0ltbWVk
aWF0ZUludEZhc3RDYXNlKTsKIH0KIApAQCAtODM5LDIwICs4MzUsMjAgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfbXVsKEluc3RydWN0aW9uKiBjdXJyZQogCiAgICAgLy8gRm9yIG5vdywgb25seSBwbGFu
dCBhIGZhc3QgaW50IGNhc2UgaWYgdGhlIGNvbnN0YW50IG9wZXJhbmQgaXMgZ3JlYXRlciB0aGFu
IHplcm8uCiAgICAgaW50MzJfdCB2YWx1ZTsKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1l
ZGlhdGVJbnQob3AxKSAmJiAoKHZhbHVlID0gZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50
KG9wMSkpID4gMCkpIHsKKyAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSAmJiAoKHZh
bHVlID0gZ2V0T3BlcmFuZENvbnN0YW50SW50KG9wMSkpID4gMCkpIHsKICAgICAgICAgLy8gQWRk
IGEgc3BlY2lhbCBmYXN0IGNhc2UgcHJvZmlsZSBiZWNhdXNlIHRoZSBERkcgSklUIHdpbGwgZXhw
ZWN0IG9uZS4KICAgICAgICAgbV9jb2RlQmxvY2stPmFkZFNwZWNpYWxGYXN0Q2FzZVByb2ZpbGUo
bV9ieXRlY29kZU9mZnNldCk7CiAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCBy
ZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVn
VDApOworICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDApOwogICAgICAgICBh
ZGRTbG93Q2FzZShicmFuY2hNdWwzMihPdmVyZmxvdywgSW1tMzIodmFsdWUpLCByZWdUMCwgcmVn
VDEpKTsKLSAgICAgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKHJlZ1QxLCByZWdUMCk7
Ci0gICAgfSBlbHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpICYmICgo
dmFsdWUgPSBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AyKSkgPiAwKSkgeworICAg
ICAgICBlbWl0VGFnSW50KHJlZ1QxLCByZWdUMCk7CisgICAgfSBlbHNlIGlmIChpc09wZXJhbmRD
b25zdGFudEludChvcDIpICYmICgodmFsdWUgPSBnZXRPcGVyYW5kQ29uc3RhbnRJbnQob3AyKSkg
PiAwKSkgewogICAgICAgICAvLyBBZGQgYSBzcGVjaWFsIGZhc3QgY2FzZSBwcm9maWxlIGJlY2F1
c2UgdGhlIERGRyBKSVQgd2lsbCBleHBlY3Qgb25lLgogICAgICAgICBtX2NvZGVCbG9jay0+YWRk
U3BlY2lhbEZhc3RDYXNlUHJvZmlsZShtX2J5dGVjb2RlT2Zmc2V0KTsKICAgICAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihvcDEsIHJlZ1QwKTsKLSAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlm
Tm90SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7CisgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEludChyZWdUMCk7CiAgICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaE11bDMyKE92ZXJmbG93LCBJ
bW0zMih2YWx1ZSksIHJlZ1QwLCByZWdUMSkpOwotICAgICAgICBlbWl0RmFzdEFyaXRoUmVUYWdJ
bW1lZGlhdGUocmVnVDEsIHJlZ1QwKTsKKyAgICAgICAgZW1pdFRhZ0ludChyZWdUMSwgcmVnVDAp
OwogICAgIH0gZWxzZQogICAgICAgICBjb21waWxlQmluYXJ5QXJpdGhPcChvcF9tdWwsIHJlc3Vs
dCwgb3AxLCBvcDIsIHR5cGVzKTsKIApAQCAtODY2LDggKzg2Miw4IEBAIHZvaWQgSklUOjplbWl0
U2xvd19vcF9tdWwoSW5zdHJ1Y3Rpb24qIGMKICAgICBpbnQgb3AyID0gY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZDsKICAgICBPcGVyYW5kVHlwZXMgdHlwZXMgPSBPcGVyYW5kVHlwZXM6
OmZyb21JbnQoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFuZCk7CiAKLSAgICBib29sIG9w
MUhhc0ltbWVkaWF0ZUludEZhc3RDYXNlID0gaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQo
b3AxKSAmJiBnZXRDb25zdGFudE9wZXJhbmRJbW1lZGlhdGVJbnQob3AxKSA+IDA7Ci0gICAgYm9v
bCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9ICFvcDFIYXNJbW1lZGlhdGVJbnRGYXN0Q2Fz
ZSAmJiBpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpICYmIGdldENvbnN0YW50T3Bl
cmFuZEltbWVkaWF0ZUludChvcDIpID4gMDsKKyAgICBib29sIG9wMUhhc0ltbWVkaWF0ZUludEZh
c3RDYXNlID0gaXNPcGVyYW5kQ29uc3RhbnRJbnQob3AxKSAmJiBnZXRPcGVyYW5kQ29uc3RhbnRJ
bnQob3AxKSA+IDA7CisgICAgYm9vbCBvcDJIYXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSA9ICFvcDFI
YXNJbW1lZGlhdGVJbnRGYXN0Q2FzZSAmJiBpc09wZXJhbmRDb25zdGFudEludChvcDIpICYmIGdl
dE9wZXJhbmRDb25zdGFudEludChvcDIpID4gMDsKICAgICBjb21waWxlQmluYXJ5QXJpdGhPcFNs
b3dDYXNlKGN1cnJlbnRJbnN0cnVjdGlvbiwgb3BfbXVsLCBpdGVyLCByZXN1bHQsIG9wMSwgb3Ay
LCB0eXBlcywgb3AxSGFzSW1tZWRpYXRlSW50RmFzdENhc2UsIG9wMkhhc0ltbWVkaWF0ZUludEZh
c3RDYXNlKTsKIH0KIApAQCAtODc4LDE3ICs4NzQsMTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2
KEluc3RydWN0aW9uKiBjdXJyZQogICAgIGludCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kOwogICAgIE9wZXJhbmRUeXBlcyB0eXBlcyA9IE9wZXJhbmRUeXBlczo6ZnJvbUlu
dChjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKTsKIAotICAgIGlmIChpc09wZXJhbmRD
b25zdGFudEltbWVkaWF0ZURvdWJsZShvcDEpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0YW50
RG91YmxlKG9wMSkpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEsIHJlZ1Qw
KTsKICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMCk7CiAgICAgICAg
IG1vdmU2NFRvRG91YmxlKHJlZ1QwLCBmcFJlZ1QwKTsKLSAgICB9IGVsc2UgaWYgKGlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFuZENv
bnN0YW50SW50KG9wMSkpIHsKICAgICAgICAgZW1pdExvYWRJbnQzMlRvRG91YmxlKG9wMSwgZnBS
ZWdUMCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDEs
IHJlZ1QwKTsKICAgICAgICAgaWYgKCF0eXBlcy5maXJzdCgpLmRlZmluaXRlbHlJc051bWJlcigp
KQotICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRlTnVtYmVyKHJlZ1Qw
KTsKLSAgICAgICAgSnVtcCBub3RJbnQgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihy
ZWdUMCk7CisgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIocmVnVDApOwor
ICAgICAgICBKdW1wIG5vdEludCA9IGVtaXRKdW1wSWZOb3RJbnQocmVnVDApOwogICAgICAgICBj
b252ZXJ0SW50MzJUb0RvdWJsZShyZWdUMCwgZnBSZWdUMCk7CiAgICAgICAgIEp1bXAgc2tpcERv
dWJsZUxvYWQgPSBqdW1wKCk7CiAgICAgICAgIG5vdEludC5saW5rKHRoaXMpOwpAQCAtODk3LDE3
ICs4OTMsMTcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGl2KEluc3RydWN0aW9uKiBjdXJyZQogICAg
ICAgICBza2lwRG91YmxlTG9hZC5saW5rKHRoaXMpOwogICAgIH0KIAotICAgIGlmIChpc09wZXJh
bmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShvcDIpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0
YW50RG91YmxlKG9wMikpIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihvcDIsIHJl
Z1QxKTsKICAgICAgICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZWdUMSk7CiAgICAg
ICAgIG1vdmU2NFRvRG91YmxlKHJlZ1QxLCBmcFJlZ1QxKTsKLSAgICB9IGVsc2UgaWYgKGlzT3Bl
cmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpIHsKKyAgICB9IGVsc2UgaWYgKGlzT3BlcmFu
ZENvbnN0YW50SW50KG9wMikpIHsKICAgICAgICAgZW1pdExvYWRJbnQzMlRvRG91YmxlKG9wMiwg
ZnBSZWdUMSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihv
cDIsIHJlZ1QxKTsKICAgICAgICAgaWYgKCF0eXBlcy5zZWNvbmQoKS5kZWZpbml0ZWx5SXNOdW1i
ZXIoKSkKLSAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZU51bWJlcihy
ZWdUMSk7Ci0gICAgICAgIEp1bXAgbm90SW50ID0gZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVn
ZXIocmVnVDEpOworICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90TnVtYmVyKHJlZ1Qx
KTsKKyAgICAgICAgSnVtcCBub3RJbnQgPSBlbWl0SnVtcElmTm90SW50KHJlZ1QxKTsKICAgICAg
ICAgY29udmVydEludDMyVG9Eb3VibGUocmVnVDEsIGZwUmVnVDEpOwogICAgICAgICBKdW1wIHNr
aXBEb3VibGVMb2FkID0ganVtcCgpOwogICAgICAgICBub3RJbnQubGluayh0aGlzKTsKQEAgLTkz
MSw3ICs5MjcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kaXYoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAg
ICAgSnVtcExpc3Qgbm90SW50ZWdlcjsKICAgICBicmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihm
cFJlZ1QwLCByZWdUMCwgbm90SW50ZWdlciwgZnBSZWdUMSk7CiAgICAgLy8gSWYgd2UndmUgZ290
IGFuIGludGVnZXIsIHdlIG1pZ2h0IGFzIHdlbGwgbWFrZSB0aGF0IHRoZSByZXN1bHQgb2YgdGhl
IGRpdmlzaW9uLgotICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShyZWdUMCwgcmVnVDAp
OworICAgIGVtaXRUYWdJbnQocmVnVDAsIHJlZ1QwKTsKICAgICBKdW1wIGlzSW50ZWdlciA9IGp1
bXAoKTsKICAgICBub3RJbnRlZ2VyLmxpbmsodGhpcyk7CiAgICAgbW92ZURvdWJsZVRvNjQoZnBS
ZWdUMCwgcmVnVDApOwpAQCAtOTU3LDExICs5NTMsMTEgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29w
X2RpdihJbnN0cnVjdGlvbiogYwogICAgICAgICAgICAgYWJvcnRXaXRoUmVhc29uKEpJVERpdk9w
ZXJhbmRzQXJlTm90TnVtYmVycyk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFp
c09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShvcDEpICYmICFpc09wZXJhbmRDb25zdGFu
dEltbWVkaWF0ZUludChvcDEpKSB7CisgICAgaWYgKCFpc09wZXJhbmRDb25zdGFudERvdWJsZShv
cDEpICYmICFpc09wZXJhbmRDb25zdGFudEludChvcDEpKSB7CiAgICAgICAgIGlmICghdHlwZXMu
Zmlyc3QoKS5kZWZpbml0ZWx5SXNOdW1iZXIoKSkKICAgICAgICAgICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKICAgICB9Ci0gICAgaWYgKCFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShv
cDIpICYmICFpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDIpKSB7CisgICAgaWYgKCFp
c09wZXJhbmRDb25zdGFudERvdWJsZShvcDIpICYmICFpc09wZXJhbmRDb25zdGFudEludChvcDIp
KSB7CiAgICAgICAgIGlmICghdHlwZXMuc2Vjb25kKCkuZGVmaW5pdGVseUlzTnVtYmVyKCkpCiAg
ICAgICAgICAgICBsaW5rU2xvd0Nhc2UoaXRlcik7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRJbmxpbmVzLmgJKHJldmlzaW9uIDE5MDIxMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUSW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3
IEBAIGlubGluZSBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgSklUOjplbWkKICAgICByZXR1cm4g
ZW1pdEFycmF5U3RvcmFnZUxvYWQoaW5zdHJ1Y3Rpb24sIGJhZFR5cGUpOwogfQogCi1BTFdBWVNf
SU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZURvdWJsZShpbnQgc3Jj
KQorQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnREb3VibGUoaW50IHNy
YykKIHsKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNy
YykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNEb3VibGUoKTsKIH0KQEAgLTg3MSw3ICs4
NzEsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpzYW1wbGVDb2RlQmxvY2soCiAjZW5kaWYK
ICNlbmRpZgogCi1BTFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFudEltbWVk
aWF0ZUNoYXIoaW50IHNyYykKK0FMV0FZU19JTkxJTkUgYm9vbCBKSVQ6OmlzT3BlcmFuZENvbnN0
YW50Q2hhcihpbnQgc3JjKQogewogICAgIHJldHVybiBtX2NvZGVCbG9jay0+aXNDb25zdGFudFJl
Z2lzdGVySW5kZXgoc3JjKSAmJiBnZXRDb25zdGFudE9wZXJhbmQoc3JjKS5pc1N0cmluZygpICYm
IGFzU3RyaW5nKGdldENvbnN0YW50T3BlcmFuZChzcmMpLmFzQ2VsbCgpKS0+bGVuZ3RoKCkgPT0g
MTsKIH0KQEAgLTExMTQsMjAgKzExMTQsMjAgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0SnVtcFNs
b3dDYXNlSWZOb3RKUwogICAgIH0KIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQoaW50IHNyYykKK0FMV0FZU19JTkxJTkUgYm9vbCBKSVQ6
OmlzT3BlcmFuZENvbnN0YW50SW50KGludCBzcmMpCiB7CiAgICAgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pc0NvbnN0YW50UmVnaXN0ZXJJbmRleChzcmMpICYmIGdldENvbnN0YW50T3BlcmFuZChzcmMp
LmlzSW50MzIoKTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIEpJVDo6Z2V0T3BlcmFuZENvbnN0
YW50SW1tZWRpYXRlSW50KGludCBvcDEsIGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0
YW50KQorQUxXQVlTX0lOTElORSBib29sIEpJVDo6Z2V0T3BlcmFuZENvbnN0YW50SW50KGludCBv
cDEsIGludCBvcDIsIGludCYgb3AsIGludDMyX3QmIGNvbnN0YW50KQogewotICAgIGlmIChpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7CisgICAgaWYgKGlzT3BlcmFuZENvbnN0
YW50SW50KG9wMSkpIHsKICAgICAgICAgY29uc3RhbnQgPSBnZXRDb25zdGFudE9wZXJhbmQob3Ax
KS5hc0ludDMyKCk7CiAgICAgICAgIG9wID0gb3AyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBpZiAoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgeworICAg
IGlmIChpc09wZXJhbmRDb25zdGFudEludChvcDIpKSB7CiAgICAgICAgIGNvbnN0YW50ID0gZ2V0
Q29uc3RhbnRPcGVyYW5kKG9wMikuYXNJbnQzMigpOwogICAgICAgICBvcCA9IG9wMTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0xMTcyLDEyICsxMTcyLDEyIEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCBKSVQ6OmVtaXRHZXRWaXJ0dWFsUmUKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhzcmMx
Lm9mZnNldCgpLCBkc3QxLCBzcmMyLm9mZnNldCgpLCBkc3QyKTsKIH0KIAotQUxXQVlTX0lOTElO
RSBpbnQzMl90IEpJVDo6Z2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KGludCBzcmMpCitB
TFdBWVNfSU5MSU5FIGludDMyX3QgSklUOjpnZXRPcGVyYW5kQ29uc3RhbnRJbnQoaW50IHNyYykK
IHsKICAgICByZXR1cm4gZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuYXNJbnQzMigpOwogfQogCi1B
TFdBWVNfSU5MSU5FIGJvb2wgSklUOjppc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChpbnQg
c3JjKQorQUxXQVlTX0lOTElORSBib29sIEpJVDo6aXNPcGVyYW5kQ29uc3RhbnRJbnQoaW50IHNy
YykKIHsKICAgICByZXR1cm4gbV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4KHNy
YykgJiYgZ2V0Q29uc3RhbnRPcGVyYW5kKHNyYykuaXNJbnQzMigpOwogfQpAQCAtMTIzNyw1NSAr
MTIzNyw1MCBAQCBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRMb2FkRG91YmxlKGludCBpbmRlCiBpbmxp
bmUgdm9pZCBKSVQ6OmVtaXRMb2FkSW50MzJUb0RvdWJsZShpbnQgaW5kZXgsIEZQUmVnaXN0ZXJJ
RCB2YWx1ZSkKIHsKICAgICBpZiAobV9jb2RlQmxvY2stPmlzQ29uc3RhbnRSZWdpc3RlckluZGV4
KGluZGV4KSkgewotICAgICAgICBBU1NFUlQoaXNPcGVyYW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQo
aW5kZXgpKTsKKyAgICAgICAgQVNTRVJUKGlzT3BlcmFuZENvbnN0YW50SW50KGluZGV4KSk7CiAg
ICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKEltbTMyKGdldENvbnN0YW50T3BlcmFuZChpbmRl
eCkuYXNJbnQzMigpKSwgdmFsdWUpOwogICAgIH0gZWxzZQogICAgICAgICBjb252ZXJ0SW50MzJU
b0RvdWJsZShhZGRyZXNzRm9yKGluZGV4KSwgdmFsdWUpOwogfQogCi1BTFdBWVNfSU5MSU5FIEpJ
VDo6SnVtcCBKSVQ6OmVtaXRKdW1wSWZJbW1lZGlhdGVJbnRlZ2VyKFJlZ2lzdGVySUQgcmVnKQor
QUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmSW50KFJlZ2lzdGVySUQgcmVn
KQogewogICAgIHJldHVybiBicmFuY2g2NChBYm92ZU9yRXF1YWwsIHJlZywgdGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElm
Tm90SW1tZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEIHJlZykKK0FMV0FZU19JTkxJTkUgSklUOjpK
dW1wIEpJVDo6ZW1pdEp1bXBJZk5vdEludChSZWdpc3RlcklEIHJlZykKIHsKICAgICByZXR1cm4g
YnJhbmNoNjQoQmVsb3csIHJlZywgdGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKIH0KIAotQUxXQVlT
X0lOTElORSBKSVQ6OlBhdGNoYWJsZUp1bXAgSklUOjplbWl0UGF0Y2hhYmxlSnVtcElmTm90SW1t
ZWRpYXRlSW50ZWdlcihSZWdpc3RlcklEIHJlZykKK0FMV0FZU19JTkxJTkUgSklUOjpQYXRjaGFi
bGVKdW1wIEpJVDo6ZW1pdFBhdGNoYWJsZUp1bXBJZk5vdEludChSZWdpc3RlcklEIHJlZykKIHsK
ICAgICByZXR1cm4gcGF0Y2hhYmxlQnJhbmNoNjQoQmVsb3csIHJlZywgdGFnVHlwZU51bWJlclJl
Z2lzdGVyKTsKIH0KIAotQUxXQVlTX0lOTElORSBKSVQ6Okp1bXAgSklUOjplbWl0SnVtcElmTm90
SW1tZWRpYXRlSW50ZWdlcnMoUmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIsIFJlZ2lz
dGVySUQgc2NyYXRjaCkKK0FMV0FZU19JTkxJTkUgSklUOjpKdW1wIEpJVDo6ZW1pdEp1bXBJZk5v
dEludChSZWdpc3RlcklEIHJlZzEsIFJlZ2lzdGVySUQgcmVnMiwgUmVnaXN0ZXJJRCBzY3JhdGNo
KQogewogICAgIG1vdmUocmVnMSwgc2NyYXRjaCk7CiAgICAgYW5kNjQocmVnMiwgc2NyYXRjaCk7
Ci0gICAgcmV0dXJuIGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKHNjcmF0Y2gpOworICAg
IHJldHVybiBlbWl0SnVtcElmTm90SW50KHNjcmF0Y2gpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VyKFJlZ2lzdGVySUQg
cmVnKQorQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW50KFJl
Z2lzdGVySUQgcmVnKQogewotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVJ
bnRlZ2VyKHJlZykpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbnQocmVnKSk7CiB9
CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0
ZUludGVnZXJzKFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyLCBSZWdpc3RlcklEIHNj
cmF0Y2gpCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQo
UmVnaXN0ZXJJRCByZWcxLCBSZWdpc3RlcklEIHJlZzIsIFJlZ2lzdGVySUQgc2NyYXRjaCkKIHsK
LSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcnMocmVnMSwgcmVn
Miwgc2NyYXRjaCkpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3RJbnQocmVnMSwgcmVn
Miwgc2NyYXRjaCkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0SnVtcFNsb3dD
YXNlSWZOb3RJbW1lZGlhdGVOdW1iZXIoUmVnaXN0ZXJJRCByZWcpCitBTFdBWVNfSU5MSU5FIHZv
aWQgSklUOjplbWl0SnVtcFNsb3dDYXNlSWZOb3ROdW1iZXIoUmVnaXN0ZXJJRCByZWcpCiB7Ci0g
ICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWcpKTsKKyAgICBh
ZGRTbG93Q2FzZShlbWl0SnVtcElmTm90TnVtYmVyKHJlZykpOwogfQogCi1BTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKLXsKLSAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKHNyYywg
ZGVzdCk7Ci19Ci0KLUFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OmVtaXRUYWdBc0Jvb2xJbW1lZGlh
dGUoUmVnaXN0ZXJJRCByZWcpCitBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjplbWl0VGFnQm9vbChS
ZWdpc3RlcklEIHJlZykKIHsKICAgICBvcjMyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQz
Ml90PihWYWx1ZUZhbHNlKSksIHJlZyk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxOTAyMTIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzLDcgKzUzLDcgQEAgSklUOjpDb2RlUmVmIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElOYXRpdgog
ICAgIENhbGwgbmF0aXZlQ2FsbDsKIAogICAgIGVtaXRGdW5jdGlvblByb2xvZ3VlKCk7Ci0gICAg
ZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpTU3RhY2s6OkNvZGVCbG9jayk7
CisgICAgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpTU3RhY2s6OkNvZGVCbG9jayk7CiAg
ICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsICZtX3ZtLT50b3BDYWxsRnJhbWUpOwogCiAj
aWYgQ1BVKFg4NikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAkocmV2aXNpb24gMTkwMjEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2lzX3VuZGVmaW5lZChJbnN0cnVjdGkKIAogICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQubGluayh0aGlzKTsKICAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgZW1pdFRhZ0FzQm9vbElt
bWVkaWF0ZShyZWdUMCk7CisgICAgZW1pdFRhZ0Jvb2wocmVnVDApOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgSklUOjplbWl0
X29wX2lzX2Jvb2xlYW4oSW5zdHJ1Y3Rpb24KICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHZh
bHVlLCByZWdUMCk7CiAgICAgeG9yNjQoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+
KFZhbHVlRmFsc2UpKSwgcmVnVDApOwogICAgIHRlc3Q2NChaZXJvLCByZWdUMCwgVHJ1c3RlZElt
bTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSksIHJlZ1QwKTsKLSAgICBlbWl0VGFnQXNCb29s
SW1tZWRpYXRlKHJlZ1QwKTsKKyAgICBlbWl0VGFnQm9vbChyZWdUMCk7CiAgICAgZW1pdFB1dFZp
cnR1YWxSZWdpc3Rlcihkc3QpOwogfQogCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfaXNfbnVtYmVyKEluc3RydWN0aW9uKgogICAgIAogICAgIGVtaXRHZXRWaXJ0dWFsUmVn
aXN0ZXIodmFsdWUsIHJlZ1QwKTsKICAgICB0ZXN0NjQoTm9uWmVybywgcmVnVDAsIHRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgcmVnVDApOwotICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDAp
OworICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGRz
dCk7CiB9CiAKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9pc19zdHJpbmco
SW5zdHJ1Y3Rpb24qCiAgICAgSnVtcCBpc05vdENlbGwgPSBlbWl0SnVtcElmTm90SlNDZWxsKHJl
Z1QwKTsKICAgICAKICAgICBjb21wYXJlOChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdUeXBlKSwgcmVnVDApOwot
ICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOworICAgIGVtaXRUYWdCb29sKHJlZ1Qw
KTsKICAgICBKdW1wIGRvbmUgPSBqdW1wKCk7CiAgICAgCiAgICAgaXNOb3RDZWxsLmxpbmsodGhp
cyk7CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfaXNfb2JqZWN0KEluc3Ry
dWN0aW9uKgogICAgIEp1bXAgaXNOb3RDZWxsID0gZW1pdEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7
CiAKICAgICBjb21wYXJlOChBYm92ZU9yRXF1YWwsIEFkZHJlc3MocmVnVDAsIEpTQ2VsbDo6dHlw
ZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSksIHJlZ1QwKTsKLSAg
ICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJlZ1QwKTsKKyAgICBlbWl0VGFnQm9vbChyZWdUMCk7
CiAgICAgSnVtcCBkb25lID0ganVtcCgpOwogCiAgICAgaXNOb3RDZWxsLmxpbmsodGhpcyk7CkBA
IC0zMDMsNyArMzAzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfamZhbHNlKEluc3RydWN0aW9uKiBj
dQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCwgcmVnVDApOwogCiAgICAgYWRkSnVtcChicmFuY2g2NChFcXVhbCwgcmVnVDAsIFRydXN0
ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpKSksIHRhcmdldCk7Ci0gICAgSnVt
cCBpc05vblplcm8gPSBlbWl0SnVtcElmSW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7CisgICAgSnVt
cCBpc05vblplcm8gPSBlbWl0SnVtcElmSW50KHJlZ1QwKTsKIAogICAgIGFkZEp1bXAoYnJhbmNo
NjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihm
YWxzZSkpKSksIHRhcmdldCk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoNjQoTm90RXF1YWwsIHJl
Z1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpKSk7CkBA
IC0zNzAsOSArMzcwLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bfam5lcV9wdHIoSW5zdHJ1Y3Rpb24q
IAogdm9pZCBKSVQ6OmVtaXRfb3BfZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
IHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kLCByZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgcmVnVDEpOwot
ICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVnZXJzKHJlZ1QwLCByZWdUMSwg
cmVnVDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChyZWdUMCwgcmVnVDEsIHJlZ1Qy
KTsKICAgICBjb21wYXJlMzIoRXF1YWwsIHJlZ1QxLCByZWdUMCwgcmVnVDApOwotICAgIGVtaXRU
YWdBc0Jvb2xJbW1lZGlhdGUocmVnVDApOworICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
fQogCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoSW5zdHJ1Y3Rp
b24qIGN1cgogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCwgcmVnVDApOwogCiAgICAgSnVtcCBpc1plcm8gPSBicmFuY2g2NChFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoMCkpKSk7Ci0gICAg
YWRkSnVtcChlbWl0SnVtcElmSW1tZWRpYXRlSW50ZWdlcihyZWdUMCksIHRhcmdldCk7CisgICAg
YWRkSnVtcChlbWl0SnVtcElmSW50KHJlZ1QwKSwgdGFyZ2V0KTsKIAogICAgIGFkZEp1bXAoYnJh
bmNoNjQoRXF1YWwsIHJlZ1QwLCBUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bih0cnVlKSkpKSwgdGFyZ2V0KTsKICAgICBhZGRTbG93Q2FzZShicmFuY2g2NChOb3RFcXVhbCwg
cmVnVDAsIFRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSkpKSk7
CkBAIC0zOTMsOSArMzkzLDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfanRydWUoSW5zdHJ1Y3Rpb24q
IGN1cgogdm9pZCBKSVQ6OmVtaXRfb3BfbmVxKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiB7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcnMoY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZCwgcmVnVDAsIGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQsIHJlZ1Qx
KTsKLSAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJbnRlZ2VycyhyZWdUMCwgcmVn
VDEsIHJlZ1QyKTsKKyAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbnQocmVnVDAsIHJlZ1QxLCBy
ZWdUMik7CiAgICAgY29tcGFyZTMyKE5vdEVxdWFsLCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKLSAg
ICBlbWl0VGFnQXNCb29sSW1tZWRpYXRlKHJlZ1QwKTsKKyAgICBlbWl0VGFnQm9vbChyZWdUMCk7
CiAKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpOwogCkBAIC00MDQsMTYgKzQwNCwxNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9uZXEoSW5z
dHJ1Y3Rpb24qIGN1cnJlCiB2b2lkIEpJVDo6ZW1pdF9vcF9iaXR4b3IoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kLCByZWdUMCwgY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCwgcmVnVDEpOwotICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbWVkaWF0ZUludGVn
ZXJzKHJlZ1QwLCByZWdUMSwgcmVnVDIpOworICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEludChy
ZWdUMCwgcmVnVDEsIHJlZ1QyKTsKICAgICB4b3I2NChyZWdUMSwgcmVnVDApOwotICAgIGVtaXRG
YXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShyZWdUMCwgcmVnVDApOworICAgIGVtaXRUYWdJbnQocmVn
VDAsIHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogfQogCiB2b2lkIEpJVDo6ZW1pdF9vcF9iaXRvcihJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXJzKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJlZ1QwLCBjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kLCByZWdUMSk7Ci0gICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tZWRpYXRl
SW50ZWdlcnMocmVnVDAsIHJlZ1QxLCByZWdUMik7CisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW50KHJlZ1QwLCByZWdUMSwgcmVnVDIpOwogICAgIG9yNjQocmVnVDEsIHJlZ1QwKTsKICAgICBl
bWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
fQpAQCAtNDQ4LDE4ICs0NDgsMTggQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcFN0cmljdEVxKEluc3Ry
dWN0aW9uKgogICAgIAogICAgIC8vIEp1bXAgc2xvdyBpZiBlaXRoZXIgaXMgYSBkb3VibGUuIEZp
cnN0IHRlc3QgaWYgaXQncyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBmaW5lLCBhbmQgdGhlbiB0ZXN0
CiAgICAgLy8gaWYgaXQncyBhIGRvdWJsZS4KLSAgICBKdW1wIGxlZnRPSyA9IGVtaXRKdW1wSWZJ
bW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKTsKLSAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmSW1tZWRp
YXRlTnVtYmVyKHJlZ1QwKSk7CisgICAgSnVtcCBsZWZ0T0sgPSBlbWl0SnVtcElmSW50KHJlZ1Qw
KTsKKyAgICBhZGRTbG93Q2FzZShlbWl0SnVtcElmTnVtYmVyKHJlZ1QwKSk7CiAgICAgbGVmdE9L
LmxpbmsodGhpcyk7Ci0gICAgSnVtcCByaWdodE9LID0gZW1pdEp1bXBJZkltbWVkaWF0ZUludGVn
ZXIocmVnVDEpOwotICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZJbW1lZGlhdGVOdW1iZXIocmVn
VDEpKTsKKyAgICBKdW1wIHJpZ2h0T0sgPSBlbWl0SnVtcElmSW50KHJlZ1QxKTsKKyAgICBhZGRT
bG93Q2FzZShlbWl0SnVtcElmTnVtYmVyKHJlZ1QxKSk7CiAgICAgcmlnaHRPSy5saW5rKHRoaXMp
OwogCiAgICAgaWYgKHR5cGUgPT0gT3BTdHJpY3RFcSkKICAgICAgICAgY29tcGFyZTY0KEVxdWFs
LCByZWdUMSwgcmVnVDAsIHJlZ1QwKTsKICAgICBlbHNlCiAgICAgICAgIGNvbXBhcmU2NChOb3RF
cXVhbCwgcmVnVDEsIHJlZ1QwLCByZWdUMCk7Ci0gICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShy
ZWdUMCk7CisgICAgZW1pdFRhZ0Jvb2wocmVnVDApOwogCiAgICAgZW1pdFB1dFZpcnR1YWxSZWdp
c3Rlcihkc3QpOwogfQpAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX251
bWJlcihJbnN0cnVjdGlvbioKICAgICBpbnQgc3JjVlJlZyA9IGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQ7CiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihzcmNWUmVnLCByZWdUMCk7
CiAgICAgCi0gICAgYWRkU2xvd0Nhc2UoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihyZWdU
MCkpOworICAgIGFkZFNsb3dDYXNlKGVtaXRKdW1wSWZOb3ROdW1iZXIocmVnVDApKTsKIAogICAg
IGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7
CiB9CkBAIC02MjEsNyArNjIxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZXFfbnVsbChJbnN0cnVj
dGlvbiogYwogICAgIHdhc05vdEltbWVkaWF0ZS5saW5rKHRoaXMpOwogICAgIHdhc05vdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQubGluayh0aGlzKTsKIAotICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlh
dGUocmVnVDApOworICAgIGVtaXRUYWdCb29sKHJlZ1QwKTsKICAgICBlbWl0UHV0VmlydHVhbFJl
Z2lzdGVyKGRzdCk7CiAKIH0KQEAgLTY1Myw3ICs2NTMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9u
ZXFfbnVsbChJbnN0cnVjdGlvbiogCiAgICAgd2FzTm90SW1tZWRpYXRlLmxpbmsodGhpcyk7CiAg
ICAgd2FzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZC5saW5rKHRoaXMpOwogCi0gICAgZW1pdFRh
Z0FzQm9vbEltbWVkaWF0ZShyZWdUMCk7CisgICAgZW1pdFRhZ0Jvb2wocmVnVDApOwogICAgIGVt
aXRQdXRWaXJ0dWFsUmVnaXN0ZXIoZHN0KTsKIH0KIApAQCAtODMxLDcgKzgzMSw3IEBAIHZvaWQg
SklUOjplbWl0U2xvd19vcF9lcShJbnN0cnVjdGlvbiogY3UKIHsKICAgICBsaW5rU2xvd0Nhc2Uo
aXRlcik7CiAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25Db21wYXJlRXEsIHJlZ1QwLCByZWdU
MSk7Ci0gICAgZW1pdFRhZ0FzQm9vbEltbWVkaWF0ZShyZXR1cm5WYWx1ZUdQUik7CisgICAgZW1p
dFRhZ0Jvb2wocmV0dXJuVmFsdWVHUFIpOwogICAgIGVtaXRQdXRWaXJ0dWFsUmVnaXN0ZXIoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcmV0dXJuVmFsdWVHUFIpOwogfQogCkBAIC04
NDAsNyArODQwLDcgQEAgdm9pZCBKSVQ6OmVtaXRTbG93X29wX25lcShJbnN0cnVjdGlvbiogYwog
ICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkNvbXBh
cmVFcSwgcmVnVDAsIHJlZ1QxKTsKICAgICB4b3IzMihUcnVzdGVkSW1tMzIoMHgxKSwgcmVnVDAp
OwotICAgIGVtaXRUYWdBc0Jvb2xJbW1lZGlhdGUocmV0dXJuVmFsdWVHUFIpOworICAgIGVtaXRU
YWdCb29sKHJldHVyblZhbHVlR1BSKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJldHVyblZhbHVlR1BSKTsKIH0KIApAQCAtMTI4
NSw5ICsxMjg1LDkgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHJvZmlsZV90eXBlKEluc3RydWN0aQog
ICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIofjEpLCByZWdUMSk7CiAgICAgICAgIGp1bXBUb0Vu
ZC5hcHBlbmQoYnJhbmNoNjQoRXF1YWwsIHJlZ1QxLCBUcnVzdGVkSW1tNjQoVmFsdWVGYWxzZSkp
KTsKICAgICB9IGVsc2UgaWYgKGNhY2hlZFR5cGVMb2NhdGlvbi0+bV9sYXN0U2VlblR5cGUgPT0g
VHlwZU1hY2hpbmVJbnQpCi0gICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoZW1pdEp1bXBJZkltbWVk
aWF0ZUludGVnZXIocmVnVDApKTsKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChlbWl0SnVtcElm
SW50KHJlZ1QwKSk7CiAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVu
VHlwZSA9PSBUeXBlTnVtYmVyKQotICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGVtaXRKdW1wSWZJ
bW1lZGlhdGVOdW1iZXIocmVnVDApKTsKKyAgICAgICAganVtcFRvRW5kLmFwcGVuZChlbWl0SnVt
cElmTnVtYmVyKHJlZ1QwKSk7CiAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xh
c3RTZWVuVHlwZSA9PSBUeXBlU3RyaW5nKSB7CiAgICAgICAgIEp1bXAgaXNOb3RDZWxsID0gZW1p
dEp1bXBJZk5vdEpTQ2VsbChyZWdUMCk7CiAgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNo
OChFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRy
dXN0ZWRJbW0zMihTdHJpbmdUeXBlKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDE5MDIxMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZ2V0X2J5X3ZhbChJbnN0cnVj
dGlvbgogCiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlKTsKIAot
ICAgIFBhdGNoYWJsZUp1bXAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW1tZWRp
YXRlSW50ZWdlcihyZWdUMSk7CisgICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRleCA9IGVtaXRQYXRj
aGFibGVKdW1wSWZOb3RJbnQocmVnVDEpOwogICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKIAog
ICAgIC8vIFRoaXMgaXMgdGVjaG5pY2FsbHkgaW5jb3JyZWN0IC0gd2UncmUgemVyby1leHRlbmRp
bmcgYW4gaW50MzIuICBPbiB0aGUgaG90IHBhdGggdGhpcyBkb2Vzbid0IG1hdHRlci4KQEAgLTMw
MSw3ICszMDEsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXRfYnlfdmFsKEluc3RydWN0aW9uCiAK
ICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVycyhiYXNlLCByZWdUMCwgcHJvcGVydHksIHJlZ1Qx
KTsKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2UpOwotICAgIFBh
dGNoYWJsZUp1bXAgbm90SW5kZXggPSBlbWl0UGF0Y2hhYmxlSnVtcElmTm90SW1tZWRpYXRlSW50
ZWdlcihyZWdUMSk7CisgICAgUGF0Y2hhYmxlSnVtcCBub3RJbmRleCA9IGVtaXRQYXRjaGFibGVK
dW1wSWZOb3RJbnQocmVnVDEpOwogICAgIGFkZFNsb3dDYXNlKG5vdEluZGV4KTsKICAgICAvLyBT
ZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJlZ1Qx
LCByZWdUMSk7CkBAIC0zNTQsMTEgKzM1NCwxMSBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEdl
bmVyaWNDb250aWd1b3VzCiAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgcmVnVDMp
OwogICAgIHN3aXRjaCAoaW5kZXhpbmdTaGFwZSkgewogICAgIGNhc2UgSW50MzJTaGFwZToKLSAg
ICAgICAgc2xvd0Nhc2VzLmFwcGVuZChlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihyZWdU
MykpOworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3RJbnQocmVnVDMpKTsK
ICAgICAgICAgc3RvcmU2NChyZWdUMywgQmFzZUluZGV4KHJlZ1QyLCByZWdUMSwgVGltZXNFaWdo
dCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvdWJsZVNoYXBlOiB7Ci0gICAgICAgIEp1
bXAgbm90SW50ID0gZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDMpOworICAgICAg
ICBKdW1wIG5vdEludCA9IGVtaXRKdW1wSWZOb3RJbnQocmVnVDMpOwogICAgICAgICBjb252ZXJ0
SW50MzJUb0RvdWJsZShyZWdUMywgZnBSZWdUMCk7CiAgICAgICAgIEp1bXAgcmVhZHkgPSBqdW1w
KCk7CiAgICAgICAgIG5vdEludC5saW5rKHRoaXMpOwpAQCAtNjE3LDcgKzYxNyw2IEBAIHZvaWQg
SklUOjplbWl0X29wX3B1dF9ieV9pZChJbnN0cnVjdGlvbioKIAogICAgIGVtaXRHZXRWaXJ0dWFs
UmVnaXN0ZXJzKGJhc2VWUmVnLCByZWdUMCwgdmFsdWVWUmVnLCByZWdUMSk7CiAKLSAgICAvLyBK
dW1wIHRvIGEgc2xvdyBjYXNlIGlmIGVpdGhlciB0aGUgYmFzZSBvYmplY3QgaXMgYW4gaW1tZWRp
YXRlLCBvciBpZiB0aGUgU3RydWN0dXJlIGRvZXMgbm90IG1hdGNoLgogICAgIGVtaXRKdW1wU2xv
d0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogCiAgICAgSklUUHV0QnlJZEdlbmVy
YXRvciBnZW4oCkBAIC0xNjMwLDcgKzE2MjksNyBAQCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdElu
dFR5cGVkQXJyYXlQdXRCCiAgICAgCiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICBlbWl0R2V0Vmly
dHVhbFJlZ2lzdGVyKHZhbHVlLCBlYXJseVNjcmF0Y2gpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQo
ZW1pdEp1bXBJZk5vdEltbWVkaWF0ZUludGVnZXIoZWFybHlTY3JhdGNoKSk7CisgICAgc2xvd0Nh
c2VzLmFwcGVuZChlbWl0SnVtcElmTm90SW50KGVhcmx5U2NyYXRjaCkpOwogI2Vsc2UKICAgICBl
bWl0TG9hZCh2YWx1ZSwgbGF0ZVNjcmF0Y2gsIGVhcmx5U2NyYXRjaCk7CiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChicmFuY2gzMihOb3RFcXVhbCwgbGF0ZVNjcmF0Y2gsIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpKTsKQEAgLTE3MDIsMTEgKzE3MDEsMTEgQEAgSklUOjpKdW1wTGlzdCBK
SVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdQogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ZW1pdEdldFZpcnR1YWxSZWdpc3Rlcih2YWx1ZSwgZWFybHlTY3JhdGNoKTsKLSAgICBKdW1wIGRv
dWJsZUNhc2UgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlSW50ZWdlcihlYXJseVNjcmF0Y2gpOwor
ICAgIEp1bXAgZG91YmxlQ2FzZSA9IGVtaXRKdW1wSWZOb3RJbnQoZWFybHlTY3JhdGNoKTsKICAg
ICBjb252ZXJ0SW50MzJUb0RvdWJsZShlYXJseVNjcmF0Y2gsIGZwUmVnVDApOwogICAgIEp1bXAg
cmVhZHkgPSBqdW1wKCk7CiAgICAgZG91YmxlQ2FzZS5saW5rKHRoaXMpOwotICAgIHNsb3dDYXNl
cy5hcHBlbmQoZW1pdEp1bXBJZk5vdEltbWVkaWF0ZU51bWJlcihlYXJseVNjcmF0Y2gpKTsKKyAg
ICBzbG93Q2FzZXMuYXBwZW5kKGVtaXRKdW1wSWZOb3ROdW1iZXIoZWFybHlTY3JhdGNoKSk7CiAg
ICAgYWRkNjQodGFnVHlwZU51bWJlclJlZ2lzdGVyLCBlYXJseVNjcmF0Y2gpOwogICAgIG1vdmU2
NFRvRG91YmxlKGVhcmx5U2NyYXRjaCwgZnBSZWdUMCk7CiAgICAgcmVhZHkubGluayh0aGlzKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlz
aW9uIDE5MDIxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTcgKzY1LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgSnVtcCBlbWl0SnVtcElmTm90SlNDZWxsKFJlZ2lz
dGVySUQpOwotICAgICAgICBKdW1wIGVtaXRKdW1wSWZJbW1lZGlhdGVOdW1iZXIoUmVnaXN0ZXJJ
RCByZWcpOwotICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3RJbW1lZGlhdGVOdW1iZXIoUmVnaXN0
ZXJJRCByZWcpOwotICAgICAgICB2b2lkIGVtaXRGYXN0QXJpdGhJbW1Ub0ludChSZWdpc3RlcklE
IHJlZyk7Ci0gICAgICAgIHZvaWQgZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayhSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KTsKKyAgICAgICAgSnVtcCBlbWl0SnVtcElmTnVtYmVy
KFJlZ2lzdGVySUQpOworICAgICAgICBKdW1wIGVtaXRKdW1wSWZOb3ROdW1iZXIoUmVnaXN0ZXJJ
RCk7CisgICAgICAgIHZvaWQgZW1pdFRhZ0ludChSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KTsKICNlbmRpZgogCiAgICAgICAgIEp1bXAgZW1pdEp1bXBJZk5vdFR5cGUoUmVnaXN0ZXJJ
RCBiYXNlUmVnLCBKU1R5cGUpOwogCiAgICAgICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnksIFJlZ2lzdGVySUQgdG8sIFJl
Z2lzdGVySUQgZnJvbSA9IGNhbGxGcmFtZVJlZ2lzdGVyKTsKICAgICAgICAgdm9pZCBlbWl0UHV0
VG9DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJJRCBmcm9tLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSk7Ci0gICAgICAgIHZvaWQgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVy
KHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSk7CisgICAgICAgIHZv
aWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBKU1N0YWNrOjpDYWxsRnJh
bWVIZWFkZXJFbnRyeSk7CiAgICAgICAgIHZvaWQgZW1pdFB1dENlbGxUb0NhbGxGcmFtZUhlYWRl
cihSZWdpc3RlcklEIGZyb20sIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5KTsKIAogICAg
ICAgICBpbmxpbmUgQWRkcmVzcyBwYXlsb2FkRm9yKGludCBpbmRleCwgUmVnaXN0ZXJJRCBiYXNl
ID0gY2FsbEZyYW1lUmVnaXN0ZXIpOwpAQCAtMTU0LDExICsxNTMsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCB0YWdNYXNrUmVn
aXN0ZXIpOwogICAgIH0KIAotICAgIEFMV0FZU19JTkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAg
SlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZJbW1lZGlhdGVOdW1iZXIoUmVnaXN0ZXJJRCByZWcp
CisgICAgQUxXQVlTX0lOTElORSBKU0ludGVyZmFjZUpJVDo6SnVtcCBKU0ludGVyZmFjZUpJVDo6
ZW1pdEp1bXBJZk51bWJlcihSZWdpc3RlcklEIHJlZykKICAgICB7CiAgICAgICAgIHJldHVybiBi
cmFuY2hUZXN0NjQoTm9uWmVybywgcmVnLCB0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogICAgIH0K
LSAgICBBTFdBWVNfSU5MSU5FIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpTSW50ZXJmYWNlSklUOjpl
bWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKFJlZ2lzdGVySUQgcmVnKQorICAgIEFMV0FZU19J
TkxJTkUgSlNJbnRlcmZhY2VKSVQ6Okp1bXAgSlNJbnRlcmZhY2VKSVQ6OmVtaXRKdW1wSWZOb3RO
dW1iZXIoUmVnaXN0ZXJJRCByZWcpCiAgICAgewogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0
KFplcm8sIHJlZywgdGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAgICB9CkBAIC0xNzksNyArMTc4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTSW50ZXJmYWNlSklUOjpKdW1wIEpT
SW50ZXJmYWNlSklUOjplbWl0TG9hZERvdWJsZSh1bnNpZ25lZCB2aXJ0dWFsUmVnaXN0ZXJJbmRl
eCwgRlBSZWdpc3RlcklEIGRzdCwgUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKICAgICAgICAg
bG9hZDY0KGFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVySW5kZXgpLCBzY3JhdGNoKTsKLSAgICAg
ICAgSnVtcCBub3ROdW1iZXIgPSBlbWl0SnVtcElmTm90SW1tZWRpYXRlTnVtYmVyKHNjcmF0Y2gp
OworICAgICAgICBKdW1wIG5vdE51bWJlciA9IGVtaXRKdW1wSWZOb3ROdW1iZXIoc2NyYXRjaCk7
CiAgICAgICAgIEp1bXAgbm90SW50ID0gYnJhbmNoNjQoQmVsb3csIHNjcmF0Y2gsIHRhZ1R5cGVO
dW1iZXJSZWdpc3Rlcik7CiAgICAgICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKHNjcmF0Y2gsIGRz
dCk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKQEAgLTE5MCwxMiArMTg5LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHJldHVybiBub3ROdW1iZXI7CiAgICAgfQogCi0gICAgQUxX
QVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0RmFzdEFyaXRoSW1tVG9JbnQoUmVn
aXN0ZXJJRCkKLSAgICB7Ci0gICAgfQotICAgIAogICAgIC8vIG9wZXJhbmQgaXMgaW50MzJfdCwg
bXVzdCBoYXZlIGJlZW4gemVyby1leHRlbmRlZCBpZiByZWdpc3RlciBpcyA2NC1iaXQuCi0gICAg
QUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0RmFzdEFyaXRoSW50VG9JbW1O
b0NoZWNrKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIEpTSW50ZXJmYWNlSklUOjplbWl0VGFnSW50KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoc3JjICE9IGRlc3QpCiAgICAgICAgICAgICBt
b3ZlKHNyYywgZGVzdCk7CkBAIC0yNDEsNyArMjM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5k
aWYKICAgICB9CiAKLSAgICBBTFdBWVNfSU5MSU5FIHZvaWQgSlNJbnRlcmZhY2VKSVQ6OmVtaXRQ
dXRJbW1lZGlhdGVUb0NhbGxGcmFtZUhlYWRlcih2b2lkKiB2YWx1ZSwgSlNTdGFjazo6Q2FsbEZy
YW1lSGVhZGVyRW50cnkgZW50cnkpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIEpTSW50ZXJmYWNl
SklUOjplbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIodm9pZCogdmFsdWUsIEpTU3RhY2s6OkNhbGxG
cmFtZUhlYWRlckVudHJ5IGVudHJ5KQogICAgIHsKICAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZElt
bVB0cih2YWx1ZSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJl
Z2lzdGVyKSkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtH
ZW5lcmF0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAJKHJldmlzaW9uIDE5MDIxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDcgKzI1
Nyw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgbmF0aXZlRm9yR2UKICAgICB9CiAj
ZW5kaWYKIAotICAgIGppdC5lbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFkZXIoMCwgSlNT
dGFjazo6Q29kZUJsb2NrKTsKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKDAsIEpT
U3RhY2s6OkNvZGVCbG9jayk7CiAgICAgaml0LnN0b3JlUHRyKEpTSW50ZXJmYWNlSklUOjpjYWxs
RnJhbWVSZWdpc3RlciwgJnZtLT50b3BDYWxsRnJhbWUpOwogCiAjaWYgQ1BVKFg4NikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvbkNvbXBpbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uQ29tcGlsZXIu
aAkocmV2aXNpb24gMTkwMjEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1
bmN0aW9uQ29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9jb2RlQmxvY2stPnNldENhbGxlZVNhdmVSZWdpc3RlcnMoUmVnaXN0ZXJT
ZXQ6OndlYkFzc2VtYmx5Q2FsbGVlU2F2ZVJlZ2lzdGVycygpKTsKIAogICAgICAgICBlbWl0RnVu
Y3Rpb25Qcm9sb2d1ZSgpOwotICAgICAgICBlbWl0UHV0SW1tZWRpYXRlVG9DYWxsRnJhbWVIZWFk
ZXIobV9jb2RlQmxvY2ssIEpTU3RhY2s6OkNvZGVCbG9jayk7CisgICAgICAgIGVtaXRQdXRUb0Nh
bGxGcmFtZUhlYWRlcihtX2NvZGVCbG9jaywgSlNTdGFjazo6Q29kZUJsb2NrKTsKIAogICAgICAg
ICBtX2JlZ2luTGFiZWwgPSBsYWJlbCgpOwogCkBAIC0yMTUsNyArMjE1LDcgQEAgcHVibGljOgog
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGFyaXR5IGNoZWNrLgogICAgICAgICBMYWJlbCBh
cml0eUNoZWNrID0gbGFiZWwoKTsKICAgICAgICAgZW1pdEZ1bmN0aW9uUHJvbG9ndWUoKTsKLSAg
ICAgICAgZW1pdFB1dEltbWVkaWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKG1fY29kZUJsb2NrLCBKU1N0
YWNrOjpDb2RlQmxvY2spOworICAgICAgICBlbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIobV9jb2Rl
QmxvY2ssIEpTU3RhY2s6OkNvZGVCbG9jayk7CiAgICAgICAgIGp1bXAobV9iZWdpbkxhYmVsKTsK
IAogICAgICAgICBpZiAoIW1fZGl2aWRlRXJyb3JKdW1wTGlzdC5lbXB0eSgpKSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>