<?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>184730</bug_id>
          
          <creation_ts>2018-04-18 06:32:07 -0700</creation_ts>
          <short_desc>REGRESSION(r230748) [GTK][ARM] no matching function for call to &apos;JSC::CCallHelpers::swap(JSC::ARMRegisters::FPRegisterID&amp;, JSC::ARMRegisters::FPRegisterID&amp;)&apos;</short_desc>
          <delta_ts>2018-04-26 00:12:24 -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 Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tomas Popela">tpopela</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1415534</commentid>
    <comment_count>0</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2018-04-18 06:32:07 -0700</bug_when>
    <thetext>/builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/jit/CCallHelpers.h:171:13: error: no matching function for call to &apos;JSC::CCallHelpers::swap(JSC::ARMRegisters::FPRegisterID&amp;, JSC::ARMRegisters::FPRegisterID&amp;)&apos;
             swap(source, dest);
             ^~~~
In file included from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/assembler/MacroAssembler.h:51,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/runtime/BasicBlockLocation.h:29,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/runtime/ControlFlowProfiler.h:29,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/runtime/VM.h:35,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/bytecode/ExecutableToCodeBlockEdge.h:31,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/runtime/FunctionExecutable.h:28,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/runtime/JSFunctionInlines.h:28,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/bytecode/AccessCase.h:30,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/bytecode/AccessCase.cpp:27,
                 from /builddir/build/BUILD/webkitgtk-2.21.1/armv7hl-redhat-linux-gnueabi/DerivedSources/JavaScriptCore/unified-sources/UnifiedSource25.cpp:1:
/builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/assembler/MacroAssemblerARM.h:646:10: note: candidate: &apos;void JSC::MacroAssemblerARM::swap(JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID, JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID)&apos;
     void swap(RegisterID reg1, RegisterID reg2)
          ^~~~
/builddir/build/BUILD/webkitgtk-2.21.1/Source/JavaScriptCore/assembler/MacroAssemblerARM.h:646:10: note:   no known conversion for argument 1 from &apos;JSC::ARMRegisters::FPRegisterID&apos; to &apos;JSC::AbstractMacroAssembler&lt;JSC::ARMAssembler&gt;::RegisterID&apos; {aka &apos;JSC::ARMRegisters::RegisterID&apos;}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1415546</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-18 07:54:25 -0700</bug_when>
    <thetext>Interesting.  My memory is hazy, but does ARM&apos;s EABI pass floating point arguments in FP registers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417558</commentid>
    <comment_count>2</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2018-04-25 08:41:04 -0700</bug_when>
    <thetext>I could add that it&apos;s ARMv7 hardware without Thumb 2 support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417620</commentid>
    <comment_count>3</comment_count>
      <attachid>338756</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-25 10:57:31 -0700</bug_when>
    <thetext>Created attachment 338756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417625</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-25 10:58:28 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #1)
&gt; Interesting.  My memory is hazy, but does ARM&apos;s EABI pass floating point
&gt; arguments in FP registers?

hardfp one uses this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417635</commentid>
    <comment_count>5</comment_count>
      <attachid>338760</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-25 11:14:02 -0700</bug_when>
    <thetext>Created attachment 338760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417673</commentid>
    <comment_count>6</comment_count>
      <attachid>338760</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-04-25 12:12:48 -0700</bug_when>
    <thetext>Comment on attachment 338760
Patch

Nice work.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417682</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-25 12:30:05 -0700</bug_when>
    <thetext>Thanks for your review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417690</commentid>
    <comment_count>8</comment_count>
      <attachid>338760</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-25 12:55:16 -0700</bug_when>
    <thetext>Comment on attachment 338760
Patch

Clearing flags on attachment: 338760

Committed r231011: &lt;https://trac.webkit.org/changeset/231011&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417691</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-25 12:55:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417693</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-25 12:56:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/39731210&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1417997</commentid>
    <comment_count>11</comment_count>
    <who name="Tomas Popela">tpopela</who>
    <bug_when>2018-04-26 00:12:24 -0700</bug_when>
    <thetext>Thank you Yusuke for the fix!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338756</attachid>
            <date>2018-04-25 10:57:31 -0700</date>
            <delta_ts>2018-04-25 11:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184730-20180426025729.patch</filename>
            <type>text/plain</type>
            <size>1678</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MGYzYjg4NzQ5ODgzMjBmYTUyZGM4Y2JkYmZlZTI1ZjNjYjdkMTBjLi40ODdiNDE3Yzc2NzdlMTE1
OGYyNDVhNzNkNjc5MGIwZjcwMWYyMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxOC0wNC0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMzA3NDgpIFtHVEtdW0FSTV0gbm8gbWF0Y2hp
bmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJ0pTQzo6Q0NhbGxIZWxwZXJzOjpzd2FwKEpTQzo6QVJN
UmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQmLCBKU0M6OkFSTVJlZ2lzdGVyczo6RlBSZWdpc3RlcklE
JiknCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c3dhcChGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkgaW1wbGVtZW50YXRpb24gdXNpbmcgQVJN
UmVnaXN0ZXJzOjpTRDAgKHRlbXBvcmFyeSByZWdpc3RlciBpbiBNYWNyb0Fzc2VtYmxlckFSTSku
CisKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaDoKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJBUk06OnN3YXApOgorCiAyMDE4LTA0LTI0ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGZyb21DaGFyQ29kZSBpcyBtaXNz
aW5nIHNvbWUgZXhjZXB0aW9uIGNoZWNrcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oCmluZGV4IDQ3YzA3ZTdiOTJlYzNhNmMzNzZk
ZmJhNDllMTFlNTViZDNhYjZjOTcuLmMyZGY2MjE1OGViZGIyM2VjMDU3M2ZlNTk2YmEyMDlmODRm
YTA2MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJBUk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQVJNLmgKQEAgLTY1MCw2ICs2NTAsMTMgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAg
eG9yMzIocmVnMSwgcmVnMik7CiAgICAgfQogCisgICAgdm9pZCBzd2FwKEZQUmVnaXN0ZXJJRCBm
cjEsIEZQUmVnaXN0ZXJJRCBmcjIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGZyMSwgQVJN
UmVnaXN0ZXJzOjpTRDApOworICAgICAgICBtb3ZlRG91YmxlKGZyMiwgZnIxKTsKKyAgICAgICAg
bW92ZURvdWJsZShBUk1SZWdpc3RlcnM6OlNEMCwgZnIyKTsKKyAgICB9CisKICAgICB2b2lkIHNp
Z25FeHRlbmQzMlRvUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBpZiAoc3JjICE9IGRlc3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>338760</attachid>
            <date>2018-04-25 11:14:02 -0700</date>
            <delta_ts>2018-04-25 12:55:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-184730-20180426031359.patch</filename>
            <type>text/plain</type>
            <size>52790</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMwOTk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
OTVhNGRhZGQ3MzAzMzM4MDlhZjJmYjM4YTljYjMzNTFlMjI2ZTU3Li5kNzZhYTZmMDI2MDQ4MDE0
OWQxZWVjMDFmYWQ1NjczODRmNzQzYjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxOC0wNC0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMzA3NDgpIFtHVEtdW0FSTV0gbm8gbWF0Y2hp
bmcgZnVuY3Rpb24gZm9yIGNhbGwgdG8gJ0pTQzo6Q0NhbGxIZWxwZXJzOjpzd2FwKEpTQzo6QVJN
UmVnaXN0ZXJzOjpGUFJlZ2lzdGVySUQmLCBKU0M6OkFSTVJlZ2lzdGVyczo6RlBSZWdpc3RlcklE
JiknCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQ3
MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c3dhcChGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkgaW1wbGVtZW50YXRpb24gdXNpbmcgQVJN
UmVnaXN0ZXJzOjpTRDAgKHRlbXBvcmFyeSByZWdpc3RlciBpbiBNYWNyb0Fzc2VtYmxlckFSTSku
CisgICAgICAgIEFuZCB3ZSBub3cgdXNlIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIsIGFuZCBmcFRlbXBSZWdpc3RlciBpbnN0ZWFkIG9mIHVzaW5nIFMwLCBTMSwgYW5kIFNE
MC4KKworICAgICAgICBXZSBhbHNvIGNoYW5nZSBzd2FwKFJlZ2lzdGVySUQsIFJlZ2lzdGVySUQp
IGltcGxlbWVudGF0aW9uIHRvIHVzZSBtb3ZlcyBhbmQgdGVtcG9yYXJpZXMgc2ltcGx5LiBUaGlz
IGlzIGFsaWduZWQgdG8KKyAgICAgICAgQVJNdjcgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAg
KiBhc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQVJNLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjphZGQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjphbmQzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNOjptdWwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpvcjMyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnJzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06OnVyc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyQVJNOjpzdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp4b3IzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkOCk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNOjphYm9ydFdpdGhSZWFzb24pOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTo6bG9hZDMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCk6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzdG9yZTMyV2l0aEFkZHJlc3NPZmZzZXRQYXRjaCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzdG9yZTgpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlckFSTTo6c3RvcmUzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNOjpwdXNoKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnN3YXApOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoOCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjpicmFuY2hQdHIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6YnJhbmNoMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNo
MzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJB
Uk06OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5j
aFRlc3QzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpqdW1wKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaEFkZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJBUk06Om11bGwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
QVJNOjpicmFuY2hNdWwzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpwYXRj
aGFibGVCcmFuY2gzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpuZWFyQ2Fs
bCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjb21wYXJlMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6Y29tcGFyZTgpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlckFSTTo6dGVzdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06
OnRlc3Q4KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFkZDY0KToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmxvYWQzMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyQVJNOjpjYWxsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJy
YW5jaFB0cldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFu
Y2gzMldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpzdG9yZVB0
cldpdGhQYXRjaCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpsb2FkRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnN0b3JlRG91YmxlKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmFkZERvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQVJNOjpkaXZEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ckFSTTo6c3ViRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06Om11bERv
dWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpjb252ZXJ0SW50MzJUb0Rv
dWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjpicmFuY2hEb3VibGUpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoVHJ1bmNhdGVEb3VibGVUb0lu
dDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OnRydW5jYXRlRG91YmxlVG9J
bnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjp0cnVuY2F0ZURvdWJsZVRv
VWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaENvbnZlcnRE
b3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmJyYW5jaERv
dWJsZU5vblplcm8pOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6YnJhbmNoRG91
YmxlWmVyb09yTmFOKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk06OmNhbGwzMik6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNOjppbnRlcm5hbENvbXBhcmUzMik6CisK
IDIwMTgtMDQtMjUgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIE1pc2NlbGxhbmVvdXMgYnVpbGQgY2xlYW51cHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNQXNzZW1ibGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTUFzc2VtYmxlci5oCmluZGV4IDllNjA3MTYwMGRm
MDhjNTFkN2FhYzY1YmYzYmZhZjMxODFkNDEyMzguLjM2MmFkMzcyYWQwNGRmOTU5OTBiN2FmMDhi
MGZkNTQ3M2JlMjY4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
Uk1Bc3NlbWJsZXIuaApAQCAtMTA1LDkgKzEwNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgZDMwLAogICAgICAgICAgICAgZDMxLAogI2VuZGlmIC8vIENQVShBUk1fTkVPTikgfHwg
Q1BVKEFSTV9WRlBfVjNfRDMyKQotCi0gICAgICAgICAgICAvLyBQc2V1ZG9ueW1zIGZvciBzb21l
IG9mIHRoZSByZWdpc3RlcnMuCi0gICAgICAgICAgICBTRDAgPSBkNywgLyogU2FtZSBhcyB0aHVt
YiBhc3NlbWJsZXIuICovCiAgICAgICAgIH0gRlBSZWdpc3RlcklEOwogCiAgICAgfSAvLyBuYW1l
c3BhY2UgQVJNUmVnaXN0ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQVJNLmgKaW5kZXggNDdjMDdlN2I5MmVjM2E2YzM3NmRmYmE0OWUx
MWU1NWJkM2FiNmM5Ny4uZTE0NGFjNGVjNzJlMjI3ZDA3MDA1NzBjODlkOTNmYzhhZWNkNTg1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ckFSTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJBUk0uaApAQCAtNDYsNiArNDYsMTEgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJs
aWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAKICAgICB0eXBlZGVm
IEFSTVJlZ2lzdGVyczo6RlBSZWdpc3RlcklEIEZQUmVnaXN0ZXJJRDsKIAorICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGRhdGFUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3RlcnM6OmlwOworICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGFkZHJlc3NUZW1wUmVnaXN0ZXIgPSBBUk1SZWdpc3Rl
cnM6OnI2OworCisgICAgc3RhdGljIGNvbnN0IEFSTVJlZ2lzdGVyczo6RlBSZWdpc3RlcklEIGZw
VGVtcFJlZ2lzdGVyID0gQVJNUmVnaXN0ZXJzOjpkNzsKKwogICAgIGVudW0gUmVsYXRpb25hbENv
bmRpdGlvbiB7CiAgICAgICAgIEVxdWFsID0gQVJNQXNzZW1ibGVyOjpFUSwKICAgICAgICAgTm90
RXF1YWwgPSBBUk1Bc3NlbWJsZXI6Ok5FLApAQCAtMTAyLDMyICsxMDcsMzIgQEAgY2xhc3MgTWFj
cm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+
IHsKIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgQWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAg
ICBhZGQzMihpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICBzdG9yZTMyKEFSTVJlZ2lz
dGVyczo6UzEsIGFkZHJlc3MpOworICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdp
c3Rlcik7CisgICAgICAgIGFkZDMyKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0
b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcyk7CiAgICAgfQogCiAgICAgdm9pZCBhZGQz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fz
c2VtYmxlci5hZGRzKGRlc3QsIGRlc3QsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwg
QVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIGRlc3Qs
IG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwog
ICAgIH0KIAogICAgIHZvaWQgYWRkMzIoQWJzb2x1dGVBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNyYy5tX3B0ciksIEFSTVJl
Z2lzdGVyczo6UzEpOwotICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6Okxv
YWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzEsIEFSTVJlZ2lzdGVyczo6UzEsIDApOwotICAgICAg
ICBhZGQzMihBUk1SZWdpc3RlcnM6OlMxLCBkZXN0KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKHNyYy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5k
dHJVcChBUk1Bc3NlbWJsZXI6OkxvYWRVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIDApOworICAgICAgICBhZGQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAg
ICB9CiAKICAgICB2b2lkIGFkZDMyKEFkZHJlc3Mgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBsb2FkMzIoc3JjLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgYWRkMzIo
QVJNUmVnaXN0ZXJzOjpTMSwgZGVzdCk7CisgICAgICAgIGxvYWQzMihzcmMsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICBhZGQzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAK
ICAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKGRlc3QsIHNyYywgbV9h
c3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHMoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFs
dWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAgICB9CiAKICAgICB2b2lkIGdldEVmZmVjdGl2
ZUFkZHJlc3MoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE0OSw3ICsx
NTQsNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNz
ZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBBUk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5n
ZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzAsIHRydWUpOworICAgICAgICBBUk1X
b3JkIHcgPSBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIsIHRydWUpOwogICAgICAgICBpZiAodyAmIEFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0ZWRJbW1l
ZGlhdGUpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iaWNzKGRlc3QsIGRlc3QsIHcgJiB+QVJN
QXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7CiAgICAgICAgIGVsc2UKQEAgLTE1OCw3
ICsxNjMsNyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVJNV29y
ZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwLCB0
cnVlKTsKKyAgICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVl
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCB0cnVlKTsKICAgICAgICAgaWYgKHcgJiBBUk1Bc3NlbWJs
ZXI6Ok9wMkludmVydGVkSW1tZWRpYXRlKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhk
ZXN0LCBzcmMsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7CiAgICAg
ICAgIGVsc2UKQEAgLTE2Nyw4ICsxNzIsOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1
YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBhbmQz
MihBZGRyZXNzIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbG9hZDMyKHNy
YywgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIGFuZDMyKEFSTVJlZ2lzdGVyczo6UzEsIGRl
c3QpOworICAgICAgICBsb2FkMzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYW5k
MzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBsc2hpZnQzMihS
ZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xNzksOSArMTg0LDkg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjxBc3NlbWJsZXI+IHsKICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBUk1Xb3Jk
IHcgPSBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMHgxZik7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmJpdEFuZChBUk1SZWdpc3RlcnM6OlMwLCBzaGlmdEFtb3VudCwgdyk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmJpdEFuZChhZGRyZXNzVGVtcFJlZ2lzdGVyLCBzaGlmdEFtb3VudCwgdyk7CiAKLSAg
ICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fzc2VtYmxlci5sc2xSZWdpc3RlcihzcmMs
IEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92cyhkZXN0LCBtX2Fz
c2VtYmxlci5sc2xSZWdpc3RlcihzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAgICB9CiAK
ICAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKQEAg
LTE5OCw4ICsyMDMsOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgIHsKICAgICAgICAgaWYgKG9wMiA9PSBk
ZXN0KSB7CiAgICAgICAgICAgICBpZiAob3AxID09IGRlc3QpIHsKLSAgICAgICAgICAgICAgICBt
b3ZlKG9wMiwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICAgICAgb3AyID0gQVJNUmVn
aXN0ZXJzOjpTMDsKKyAgICAgICAgICAgICAgICBtb3ZlKG9wMiwgYWRkcmVzc1RlbXBSZWdpc3Rl
cik7CisgICAgICAgICAgICAgICAgb3AyID0gYWRkcmVzc1RlbXBSZWdpc3RlcjsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gU3dhcCB0aGUgb3BlcmFuZHMuCiAgICAg
ICAgICAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBvcDE7CkBAIC0yMTcsOCArMjIyLDggQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKIAogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBBUk1SZWdpc3Rl
cnM6OlMwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXVscyhkZXN0LCBzcmMsIEFSTVJlZ2lzdGVy
czo6UzApOworICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAg
IG1fYXNzZW1ibGVyLm11bHMoZGVzdCwgc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICB9
CiAKICAgICB2b2lkIG5lZzMyKFJlZ2lzdGVySUQgc3JjRGVzdCkKQEAgLTIzOCwzOCArMjQzLDM4
IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJs
ZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRl
QWRkcmVzcyBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9w
dHIpLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgbG9hZDMyKEFkZHJlc3MoQVJNUmVnaXN0
ZXJzOjpTMCksIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICBvcjMyKHNyYywgQVJNUmVnaXN0
ZXJzOjpTMSk7Ci0gICAgICAgIHN0b3JlMzIoQVJNUmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJz
OjpTMCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1wUmVnaXN0ZXIp
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgb3IzMihzcmMsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OwogICAgIH0KIAogICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJl
c3MgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwg
QVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKEFSTVJlZ2lzdGVyczo6
UzApLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgb3IzMihpbW0sIEFSTVJlZ2lzdGVyczo6
UzEpOyAvLyBJdCB1c2VzIFMwIGFzIHRlbXBvcmFyeSByZWdpc3Rlciwgd2UgbmVlZCB0byByZWxv
YWQgdGhlIGFkZHJlc3MuCi0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwg
QVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIHN0b3JlMzIoQVJNUmVnaXN0ZXJzOjpTMSwgQVJN
UmVnaXN0ZXJzOjpTMCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1fcHRyKSwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihBZGRyZXNzKGFkZHJlc3NUZW1w
UmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgb3IzMihpbW0sIGRhdGFUZW1w
UmVnaXN0ZXIpOyAvLyBJdCB1c2VzIFMwIGFzIHRlbXBvcmFyeSByZWdpc3Rlciwgd2UgbmVlZCB0
byByZWxvYWQgdGhlIGFkZHJlc3MuCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihkZXN0Lm1f
cHRyKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdp
c3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgfQogCiAgICAgdm9pZCBvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRy
ZXNzLCBBUk1SZWdpc3RlcnM6OlMwKTsKLSAgICAgICAgb3IzMihpbW0sIEFSTVJlZ2lzdGVyczo6
UzAsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICBzdG9yZTMyKEFSTVJlZ2lzdGVyczo6UzAs
IGFkZHJlc3MpOworICAgICAgICBsb2FkMzIoYWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7
CisgICAgICAgIG9yMzIoaW1tLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgc3RvcmUzMihhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAg
ICB9CiAKICAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKGRlc3QgIT0gQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm9ycnMoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3Zh
bHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgIEFTU0VSVChkZXN0ICE9IGFkZHJlc3NU
ZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5vcnJzKGRlc3QsIGRlc3QsIG1fYXNz
ZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwogICAgIH0K
IAogICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgQVNTRVJUKHNyYyAhPSBBUk1SZWdpc3RlcnM6OlMw
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIub3JycyhkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldElt
bShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBBU1NFUlQoc3JjICE9
IGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5vcnJzKGRlc3QsIHNy
YywgbV9hc3NlbWJsZXIuZ2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7
CiAgICAgfQogCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwg
UmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjg1LDkgKzI5MCw5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVy
QVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgdm9p
ZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRP
cDJCeXRlKDB4MWYpOwotICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmQoQVJNUmVnaXN0ZXJzOjpT
MCwgc2hpZnRBbW91bnQsIHcpOworICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmQoYWRkcmVzc1Rl
bXBSZWdpc3Rlciwgc2hpZnRBbW91bnQsIHcpOwogCi0gICAgICAgIG1fYXNzZW1ibGVyLm1vdnMo
ZGVzdCwgbV9hc3NlbWJsZXIuYXNyUmVnaXN0ZXIoc3JjLCBBUk1SZWdpc3RlcnM6OlMwKSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIuYXNyUmVnaXN0ZXIoc3Jj
LCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7CiAgICAgfQogCiAgICAgdm9pZCByc2hpZnQzMihUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0zMTEsOSArMzE2LDkgQEAgY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJs
ZXI+IHsKICAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlm
dEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB3ID0gQVJN
QXNzZW1ibGVyOjpnZXRPcDJCeXRlKDB4MWYpOwotICAgICAgICBtX2Fzc2VtYmxlci5iaXRBbmQo
QVJNUmVnaXN0ZXJzOjpTMCwgc2hpZnRBbW91bnQsIHcpOworICAgICAgICBtX2Fzc2VtYmxlci5i
aXRBbmQoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc2hpZnRBbW91bnQsIHcpOwogCi0gICAgICAgIG1f
YXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIubHNyUmVnaXN0ZXIoc3JjLCBBUk1SZWdp
c3RlcnM6OlMwKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnMoZGVzdCwgbV9hc3NlbWJsZXIu
bHNyUmVnaXN0ZXIoc3JjLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7CiAgICAgfQogCiAgICAgdm9p
ZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMzQxLDI1
ICszNDYsMjUgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0
LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzAp
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJ
bW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAgICB9CiAKICAgICB2b2lk
IHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIEFkZHJlc3MgYWRkcmVzcykKICAgICB7Ci0gICAgICAg
IGxvYWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgc3ViMzIoaW1tLCBB
Uk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgc3RvcmUzMihBUk1SZWdpc3RlcnM6OlMxLCBhZGRy
ZXNzKTsKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBzdWIzMihpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKGRhdGFUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MpOwogICAgIH0KIAogICAgIHZvaWQgc3ViMzIoQWRkcmVzcyBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIEFSTVJlZ2lzdGVy
czo6UzEpOwotICAgICAgICBzdWIzMihBUk1SZWdpc3RlcnM6OlMxLCBkZXN0KTsKKyAgICAgICAg
bG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN1YjMyKGRhdGFUZW1wUmVn
aXN0ZXIsIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLnN1YnMoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJl
Z2lzdGVyczo6UzApKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VicyhkZXN0LCBzcmMsIG1fYXNz
ZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlcikpOwogICAgIH0K
IAogICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTM3
NCw4ICszNzksOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1h
Y3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCB4b3IzMihBZGRyZXNzIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbG9hZDMyKHNyYywgQVJNUmVnaXN0ZXJz
OjpTMSk7Ci0gICAgICAgIHhvcjMyKEFSTVJlZ2lzdGVyczo6UzEsIGRlc3QpOworICAgICAgICBs
b2FkMzIoc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgeG9yMzIoZGF0YVRlbXBSZWdp
c3RlciwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCkBAIC0zODMsNyArMzg4LDcgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID09IC0xKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIubXZucyhkZXN0
LCBkZXN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuZW9ycyhkZXN0
LCBkZXN0LCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzAp
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnMoZGVzdCwgZGVzdCwgbV9hc3NlbWJsZXIu
Z2V0SW1tKGltbS5tX3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKSk7CiAgICAgfQogCiAgICAg
dm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQpAQCAtMzkxLDcgKzM5Niw3IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA9PSAtMSkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm12bnMoZGVzdCwgc3JjKTsKICAg
ICAgICAgZWxzZSAgICAKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmVvcnMoZGVzdCwgc3JjLCBt
X2Fzc2VtYmxlci5nZXRJbW0oaW1tLm1fdmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmVvcnMoZGVzdCwgc3JjLCBtX2Fzc2VtYmxlci5nZXRJbW0oaW1t
Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAgICB9CiAKICAgICB2b2lkIGNvdW50
TGVhZGluZ1plcm9zMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTQxNyw4
ICs0MjIsOCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3Jv
QXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgdm9pZCBsb2FkOChjb25zdCB2b2lkKiBhZGRy
ZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
YWRkcmVzcyksIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJh
bnNmZXIzMihBUk1Bc3NlbWJsZXI6OkxvYWRVaW50OCwgZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwg
MCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmRhdGFUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6
TG9hZFVpbnQ4LCBkZXN0LCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCAwKTsKICAgICB9CiAKICAgICB2
b2lkIGxvYWQ4U2lnbmVkRXh0ZW5kVG8zMihBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTQ3MiwxMyArNDc3LDEzIEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIGFib3J0V2l0
aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24pCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihyZWFzb24pLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
MzIocmVhc29uKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIGJyZWFrcG9pbnQoKTsK
ICAgICB9CiAKICAgICB2b2lkIGFib3J0V2l0aFJlYXNvbihBYm9ydFJlYXNvbiByZWFzb24sIGlu
dHB0cl90IG1pc2MpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihtaXNjKSwgQVJN
UmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKG1pc2MpLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKICAgICAgICAgYWJvcnRXaXRoUmVhc29uKHJlYXNvbik7CiAgICAgfQogCkBA
IC00OTMsOCArNDk4LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJh
Y3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICBEYXRhTGFiZWwzMiBsb2FkMzJXaXRo
QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgRGF0YUxhYmVsMzIgZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJzOjpTMCwgMCk7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBh
ZGRyZXNzLmJhc2UsIEFSTVJlZ2lzdGVyczo6UzApOworICAgICAgICBtX2Fzc2VtYmxlci5sZHJV
bmlxdWVJbW1lZGlhdGUoYWRkcmVzc1RlbXBSZWdpc3RlciwgMCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmR0clVwUmVnaXN0ZXIoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRyZXNz
LmJhc2UsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gZGF0YUxhYmVsOwog
ICAgIH0KIApAQCAtNTE3LDggKzUyMiw4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVi
bGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgRGF0YUxhYmVsMzIg
c3RvcmUzMldpdGhBZGRyZXNzT2Zmc2V0UGF0Y2goUmVnaXN0ZXJJRCBzcmMsIEFkZHJlc3MgYWRk
cmVzcykKICAgICB7CiAgICAgICAgIERhdGFMYWJlbDMyIGRhdGFMYWJlbCh0aGlzKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFSTVJlZ2lzdGVyczo6UzAsIDApOwot
ICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50
MzIsIHNyYywgYWRkcmVzcy5iYXNlLCBBUk1SZWdpc3RlcnM6OlMwKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOworICAgICAg
ICBtX2Fzc2VtYmxlci5kdHJVcFJlZ2lzdGVyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIHNy
YywgYWRkcmVzcy5iYXNlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJuIGRh
dGFMYWJlbDsKICAgICB9CiAKQEAgLTUzNCwyMyArNTM5LDIzIEBAIGNsYXNzIE1hY3JvQXNzZW1i
bGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAg
ICB2b2lkIHN0b3JlOChSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7
Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgQVJNUmVnaXN0ZXJzOjpTMCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50OCwgc3Jj
LCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJN
QXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwogICAg
IH0KIAogICAgIHZvaWQgc3RvcmU4KFRydXN0ZWRJbW0zMiBpbW0sIEltcGxpY2l0QWRkcmVzcyBh
ZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgoc3RhdGljX2Nhc3Q8aW50
OF90PihpbW0ubV92YWx1ZSkpOwotICAgICAgICBtb3ZlKGltbTgsIEFSTVJlZ2lzdGVyczo6UzEp
OwotICAgICAgICBzdG9yZTgoQVJNUmVnaXN0ZXJzOjpTMSwgYWRkcmVzcyk7CisgICAgICAgIG1v
dmUoaW1tOCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlOChkYXRhVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlOChUcnVzdGVkSW1tMzIgaW1t
LCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIGltbTgo
c3RhdGljX2Nhc3Q8aW50OF90PihpbW0ubV92YWx1ZSkpOwotICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW0zMihyZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKSwgQVJNUmVnaXN0ZXJzOjpT
MCk7Ci0gICAgICAgIG1vdmUoaW1tOCwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50OCwgQVJNUmVnaXN0ZXJzOjpTMSwg
QVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlaW50ZXJw
cmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgbW92ZShpbW04LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZHRy
VXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQ4LCBkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyLCAwKTsKICAgICB9CiAKICAgICB2b2lkIHN0b3JlMTYoUmVnaXN0ZXJJRCBzcmMs
IEJhc2VJbmRleCBhZGRyZXNzKQpAQCAtNTcwLDI3ICs1NzUsMjcgQEAgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAog
ICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVz
cykKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAg
c3RvcmUzMihBUk1SZWdpc3RlcnM6OlMxLCBhZGRyZXNzKTsKKyAgICAgICAgbW92ZShpbW0sIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5k
ZXggYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBBUk1SZWdpc3RlcnM6OlMxKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuYmFzZUluZGV4VHJhbnNmZXIzMihBUk1Bc3NlbWJsZXI6OlN0
b3JlVWludDMyLCBBUk1SZWdpc3RlcnM6OlMxLCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IHN0YXRpY19jYXN0PGludD4oYWRkcmVzcy5zY2FsZSksIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAg
ICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5iYXNl
SW5kZXhUcmFuc2ZlcjMyKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRleCwgc3RhdGljX2Nhc3Q8aW50PihhZGRyZXNz
LnNjYWxlKSwgYWRkcmVzcy5vZmZzZXQpOwogICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihSZWdp
c3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmxkclVuaXF1ZUltbWVkaWF0ZShBUk1SZWdpc3RlcnM6OlMwLCByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KGFkZHJlc3MpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1i
bGVyOjpTdG9yZVVpbnQzMiwgc3JjLCBBUk1SZWdpc3RlcnM6OlMwLCAwKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHJlaW50ZXJw
cmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChB
Uk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIDApOwog
ICAgIH0KIAogICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGRyVW5pcXVlSW1tZWRpYXRlKEFS
TVJlZ2lzdGVyczo6UzAsIHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcykpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZlSW1tKGltbS5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMxKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJN
UmVnaXN0ZXJzOjpTMSwgQVJNUmVnaXN0ZXJzOjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0
PEFSTVdvcmQ+KGFkZHJlc3MpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubW92ZUltbShpbW0ubV92
YWx1ZSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFz
c2VtYmxlcjo6U3RvcmVVaW50MzIsIGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0
ZXIsIDApOwogICAgIH0KIAogICAgIHZvaWQgcG9wKFJlZ2lzdGVySUQgZGVzdCkKQEAgLTYxMSwx
NCArNjE2LDE0IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFj
cm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHB1c2goQWRkcmVzcyBhZGRyZXNz
KQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOwotICAg
ICAgICBwdXNoKEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHB1c2goZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQog
CiAgICAgdm9pZCBwdXNoKFRydXN0ZWRJbW0zMiBpbW0pCiAgICAgewotICAgICAgICBtb3ZlKGlt
bSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgIHB1c2goQVJNUmVnaXN0ZXJzOjpTMCk7Cisg
ICAgICAgIG1vdmUoaW1tLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcHVzaChhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKICAgICB2b2lkIHB1c2hQYWlyKFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyKQpAQCAtNjQ1LDkgKzY1MCwxNiBAQCBjbGFzcyBNYWNyb0Fz
c2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewog
CiAgICAgdm9pZCBzd2FwKFJlZ2lzdGVySUQgcmVnMSwgUmVnaXN0ZXJJRCByZWcyKQogICAgIHsK
LSAgICAgICAgeG9yMzIocmVnMSwgcmVnMik7Ci0gICAgICAgIHhvcjMyKHJlZzIsIHJlZzEpOwot
ICAgICAgICB4b3IzMihyZWcxLCByZWcyKTsKKyAgICAgICAgbW92ZShyZWcxLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgbW92ZShyZWcyLCByZWcxKTsKKyAgICAgICAgbW92ZShkYXRhVGVt
cFJlZ2lzdGVyLCByZWcyKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXAoRlBSZWdpc3RlcklEIGZy
MSwgRlBSZWdpc3RlcklEIGZyMikKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoZnIxLCBmcFRl
bXBSZWdpc3Rlcik7CisgICAgICAgIG1vdmVEb3VibGUoZnIyLCBmcjEpOworICAgICAgICBtb3Zl
RG91YmxlKGZwVGVtcFJlZ2lzdGVyLCBmcjIpOwogICAgIH0KIAogICAgIHZvaWQgc2lnbkV4dGVu
ZDMyVG9QdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTY2NSwyOSArNjc3
LDI5IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3Nl
bWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBU
cnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCByaWdodCk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0g
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodDgpOwor
ICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0KQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwotICAgICAgICBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQs
IEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgQVJNUmVn
aXN0ZXJzOjpTMSwgcmlnaHQ4KTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAg
fQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVB
ZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJ
bW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRo
aXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGxlZnQubV9wdHIp
LCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBBUk1S
ZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFSTVJlZ2lzdGVy
czo6UzEsIHJpZ2h0OCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgQWRkcmVzcyhkYXRhVGVtcFJlZ2lzdGVyKSwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCByaWdodDgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQpCiAgICAgewotICAg
ICAgICBsb2FkMzIobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodCk7CisgICAgICAgIGxvYWQzMihsZWZ0
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBpbnQg
dXNlQ29uc3RhbnRQb29sID0gMCkKQEAgLTcwNCw1NCArNzE2LDU0IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAK
ICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBs
ZWZ0LCBBZGRyZXNzIHJpZ2h0KQogICAgIHsKLSAgICAgICAgbG9hZDMyKHJpZ2h0LCBBUk1SZWdp
c3RlcnM6OlMxKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIEFSTVJlZ2lz
dGVyczo6UzEpOworICAgICAgICBsb2FkMzIocmlnaHQsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAg
fQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3Mg
bGVmdCwgUmVnaXN0ZXJJRCByaWdodCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0LCBBUk1S
ZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFSTVJlZ2lzdGVy
czo6UzEsIHJpZ2h0KTsKKyAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwog
ICAgIH0KIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRy
ZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0
LCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFSTVJl
Z2lzdGVyczo6UzEsIHJpZ2h0KTsKKyAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgcmln
aHQpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgbG9h
ZDMyKGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29u
ZCwgQVJNUmVnaXN0ZXJzOjpTMSwgcmlnaHQpOworICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxm
V29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQogICAgIHsKLSAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3Jkcyhs
ZWZ0LCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFS
TVJlZ2lzdGVyczo6UzEsIHJpZ2h0KTsKKyAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZX
b3JkcyhsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRl
c3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBt
YXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiBtYXNr
OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwg
bWFzayk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgYWRkcmVzcywgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIHJldHVybiBi
cmFuY2hUZXN0MzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgbWFzazgpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3Ms
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sg
PSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0g
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBtYXNr
KTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlz
LCBjb25kLCBhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aFRlc3QzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCBtYXNrOCk7CisgICAgICAgIE1hY3JvQXNz
ZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFz
ayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazgg
PSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1h
c2spOwotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIEFSTVJlZ2lz
dGVyczo6UzEpOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIEFkZHJlc3MoQVJNUmVnaXN0ZXJzOjpTMSksIEFSTVJlZ2lzdGVyczo6
UzEpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEs
IG1hc2s4KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29u
ZGl0aW9uKCp0aGlzLCBjb25kLCBBZGRyZXNzKGRhdGFUZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCBtYXNrOCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCkBAIC03NjQsOSArNzc2
LDkgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2Vt
YmxlcjxBc3NlbWJsZXI+IHsKICAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCByZWcsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChjb25kID09IFplcm8gfHwgY29uZCA9PSBOb25aZXJv
IHx8IGNvbmQgPT0gU2lnbmVkIHx8IGNvbmQgPT0gUG9zaXRpdmVPclplcm8pOwotICAgICAgICBB
Uk1Xb3JkIHcgPSBtX2Fzc2VtYmxlci5nZXRJbW0obWFzay5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6
OlMwLCB0cnVlKTsKKyAgICAgICAgQVJNV29yZCB3ID0gbV9hc3NlbWJsZXIuZ2V0SW1tKG1hc2su
bV92YWx1ZSwgYWRkcmVzc1RlbXBSZWdpc3RlciwgdHJ1ZSk7CiAgICAgICAgIGlmICh3ICYgQVJN
QXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJpY3MoQVJNUmVnaXN0ZXJzOjpTMCwgcmVnLCB3ICYgfkFSTUFzc2VtYmxlcjo6T3AySW52ZXJ0
ZWRJbW1lZGlhdGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmljcyhhZGRyZXNzVGVtcFJl
Z2lzdGVyLCByZWcsIHcgJiB+QVJNQXNzZW1ibGVyOjpPcDJJbnZlcnRlZEltbWVkaWF0ZSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHcpOwogICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoQVJNQ29uZGl0aW9uKGNvbmQpKSk7CkBAIC03
NzQsMTQgKzc4NiwxNCBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogCiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2sgPSBU
cnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MsIEFSTVJlZ2lz
dGVyczo6UzEpOwotICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIEFSTVJlZ2lzdGVy
czo6UzEsIG1hc2spOworICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFz
ayk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkp
CiAgICAgewotICAgICAgICBsb2FkMzIoYWRkcmVzcywgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgbWFzayk7Cisg
ICAgICAgIGxvYWQzMihhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrKTsKICAgICB9CiAKICAg
ICBKdW1wIGp1bXAoKQpAQCAtODAxLDggKzgxMyw4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJN
IDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lk
IGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MsIFB0clRhZykKICAgICB7Ci0gICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAg
ICAgIGxvYWQzMihBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzAsIDApLCBBUk1SZWdpc3RlcnM6OnBj
KTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIpLCBhZGRyZXNzVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MoYWRkcmVzc1RlbXBSZWdpc3Rlciwg
MCksIEFSTVJlZ2lzdGVyczo6cGMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBq
dW1wKFJlZ2lzdGVySUQgdGFyZ2V0LCBSZWdpc3RlcklEIGp1bXBUYWcpIHsgVU5VU0VEX1BBUkFN
KGp1bXBUYWcpLCBqdW1wKHRhcmdldCwgTm9QdHJUYWcpOyB9CkBAIC04NjEsMTUgKzg3MywxNSBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
PEFzc2VtYmxlcj4gewogCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgQWRkcmVzcyBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihz
cmMsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwg
ZGVzdCwgQVJNUmVnaXN0ZXJzOjpTMCwgZGVzdCk7CisgICAgICAgIGxvYWQzMihzcmMsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgZGVzdCwg
YWRkcmVzc1RlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogICAgIHZvaWQgbXVsbDMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgaWYgKG9wMiA9PSBkZXN0KSB7CiAgICAgICAgICAgICBpZiAob3AxID09IGRlc3QpIHsKLSAg
ICAgICAgICAgICAgICBtb3ZlKG9wMiwgQVJNUmVnaXN0ZXJzOjpTMCk7Ci0gICAgICAgICAgICAg
ICAgb3AyID0gQVJNUmVnaXN0ZXJzOjpTMDsKKyAgICAgICAgICAgICAgICBtb3ZlKG9wMiwgYWRk
cmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgb3AyID0gYWRkcmVzc1RlbXBSZWdp
c3RlcjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gU3dhcCB0aGUg
b3BlcmFuZHMuCiAgICAgICAgICAgICAgICAgUmVnaXN0ZXJJRCB0bXAgPSBvcDE7CkBAIC04Nzcs
OCArODg5LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNy
b0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAgICAgICAgICAgICBvcDIgPSB0bXA7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9hc3NlbWJsZXIubXVsbChBUk1SZWdpc3Rl
cnM6OlMxLCBkZXN0LCBvcDEsIG9wMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChBUk1SZWdp
c3RlcnM6OlMxLCBtX2Fzc2VtYmxlci5hc3IoZGVzdCwgMzEpKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubXVsbChkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0LCBvcDEsIG9wMik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmNtcChkYXRhVGVtcFJlZ2lzdGVyLCBtX2Fzc2VtYmxlci5hc3IoZGVzdCwgMzEpKTsK
ICAgICB9CiAKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtOTAyLDgg
KzkxNCw4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3Zl
cmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0g
Tm9uWmVybykpOwogICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAgICAgICAgICAg
bW92ZShpbW0sIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICAgICAgbXVsbDMyKEFSTVJlZ2lz
dGVyczo6UzAsIHNyYywgZGVzdCk7CisgICAgICAgICAgICBtb3ZlKGltbSwgYWRkcmVzc1RlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBtdWxsMzIoYWRkcmVzc1RlbXBSZWdpc3Rlciwgc3JjLCBk
ZXN0KTsKICAgICAgICAgICAgIGNvbmQgPSBOb25aZXJvOwogICAgICAgICB9CiAgICAgICAgIGVs
c2UKQEAgLTk2MSwxNiArOTczLDE2IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGlj
IEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAgICAgUGF0Y2hhYmxlSnVtcCBw
YXRjaGFibGVCcmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVn
LCBUcnVzdGVkSW1tMzIgaW1tKQogICAgIHsKICAgICAgICAgaW50ZXJuYWxDb21wYXJlMzIocmVn
LCBpbW0pOwotICAgICAgICBKdW1wIGp1bXAobV9hc3NlbWJsZXIubG9hZEJyYW5jaFRhcmdldChB
Uk1SZWdpc3RlcnM6OlMxLCBBUk1Db25kaXRpb24oY29uZCksIHRydWUpKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIuYngoQVJNUmVnaXN0ZXJzOjpTMSwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKKyAgICAg
ICAgSnVtcCBqdW1wKG1fYXNzZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0YVRlbXBSZWdpc3Rl
ciwgQVJNQ29uZGl0aW9uKGNvbmQpLCB0cnVlKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmJ4KGRh
dGFUZW1wUmVnaXN0ZXIsIEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAgICAgIHJldHVybiBQYXRj
aGFibGVKdW1wKGp1bXApOwogICAgIH0KIAogICAgIFBhdGNoYWJsZUp1bXAgcGF0Y2hhYmxlQnJh
bmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJ
bW0zMiBpbW0pCiAgICAgewogICAgICAgICBpbnRlcm5hbENvbXBhcmUzMihhZGRyZXNzLCBpbW0p
OwotICAgICAgICBKdW1wIGp1bXAobV9hc3NlbWJsZXIubG9hZEJyYW5jaFRhcmdldChBUk1SZWdp
c3RlcnM6OlMxLCBBUk1Db25kaXRpb24oY29uZCksIGZhbHNlKSk7Ci0gICAgICAgIG1fYXNzZW1i
bGVyLmJ4KEFSTVJlZ2lzdGVyczo6UzEsIEFSTUNvbmRpdGlvbihjb25kKSk7CisgICAgICAgIEp1
bXAganVtcChtX2Fzc2VtYmxlci5sb2FkQnJhbmNoVGFyZ2V0KGRhdGFUZW1wUmVnaXN0ZXIsIEFS
TUNvbmRpdGlvbihjb25kKSwgZmFsc2UpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYngoZGF0YVRl
bXBSZWdpc3RlciwgQVJNQ29uZGl0aW9uKGNvbmQpKTsKICAgICAgICAgcmV0dXJuIFBhdGNoYWJs
ZUp1bXAoanVtcCk7CiAgICAgfQogCkBAIC05ODMsOCArOTk1LDggQEAgY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAog
ICAgIENhbGwgbmVhckNhbGwoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZEJyYW5j
aFRhcmdldChBUk1SZWdpc3RlcnM6OlMxLCBBUk1Bc3NlbWJsZXI6OkFMLCB0cnVlKTsKLSAgICAg
ICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYmx4KEFSTVJlZ2lzdGVyczo6UzEpLCBDYWxsOjpM
aW5rYWJsZU5lYXIpOworICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQnJhbmNoVGFyZ2V0KGRhdGFU
ZW1wUmVnaXN0ZXIsIEFSTUFzc2VtYmxlcjo6QUwsIHRydWUpOworICAgICAgICByZXR1cm4gQ2Fs
bChtX2Fzc2VtYmxlci5ibHgoZGF0YVRlbXBSZWdpc3RlciksIENhbGw6OkxpbmthYmxlTmVhcik7
CiAgICAgfQogCiAgICAgQ2FsbCBuZWFyVGFpbENhbGwoKQpAQCAtMTAxNiw3ICsxMDI4LDcgQEAg
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxB
c3NlbWJsZXI+IHsKIAogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChsZWZ0LCBtX2Fzc2VtYmxlci5nZXRJbW0o
cmlnaHQubV92YWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5j
bXAobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVn
aXN0ZXIpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0
T3AyQnl0ZSgwKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6
OmdldE9wMkJ5dGUoMSksIEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAgfQpAQCAtMTAyNCw4ICsx
MDM2LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fz
c2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0LCBB
Uk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6
UzEsIHJpZ2h0OCwgZGVzdCk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
IGNvbXBhcmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodDgsIGRlc3QpOwogICAgIH0K
IAogICAgIHZvaWQgdGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywg
VHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTEwMzMsODQgKzEwNDUsODQg
QEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
cjxBc3NlbWJsZXI+IHsKICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSkKICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIHJlZyk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnRzdChyZWcsIG1fYXNzZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIEFS
TVJlZ2lzdGVyczo6UzApKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnRzdChyZWcsIG1fYXNz
ZW1ibGVyLmdldEltbShtYXNrLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92KGRlc3QsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdihkZXN0LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMSks
IEFSTUNvbmRpdGlvbihjb25kKSk7CiAgICAgfQogCiAgICAgdm9pZCB0ZXN0MzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihhZGRyZXNzLCBBUk1SZWdpc3RlcnM6OlMx
KTsKLSAgICAgICAgdGVzdDMyKGNvbmQsIEFSTVJlZ2lzdGVyczo6UzEsIG1hc2ssIGRlc3QpOwor
ICAgICAgICBsb2FkMzIoYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHRlc3Qz
Mihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lk
IHRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0z
MiBtYXNrLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgbWFz
azggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IG1hc2spOwotICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24o
KnRoaXMsIGNvbmQsIGFkZHJlc3MsIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICB0ZXN0MzIo
Y29uZCwgQVJNUmVnaXN0ZXJzOjpTMSwgbWFzazgsIGRlc3QpOworICAgICAgICBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFU
ZW1wUmVnaXN0ZXIpOworICAgICAgICB0ZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFz
azgsIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LmFkZChkZXN0LCBzcmMsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0
ZXJzOjpTMCkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoZGVzdCwgc3JjLCBtX2Fzc2VtYmxl
ci5nZXRJbW0oaW1tLm1fdmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAgICB9CiAKICAg
ICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKLSAgICAgICAgbG9hZDMyKGFkZHJlc3MubV9wdHIsIEFSTVJlZ2lzdGVyczo6UzEpOwot
ICAgICAgICBhZGQzMihpbW0sIEFSTVJlZ2lzdGVyczo6UzEpOwotICAgICAgICBzdG9yZTMyKEFS
TVJlZ2lzdGVyczo6UzEsIGFkZHJlc3MubV9wdHIpOworICAgICAgICBsb2FkMzIoYWRkcmVzcy5t
X3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGFkZDMyKGltbSwgZGF0YVRlbXBSZWdp
c3Rlcik7CisgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7
CiAgICAgfQogCiAgICAgdm9pZCBhZGQ2NChUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKICAgICB7CiAgICAgICAgIEFSTVdvcmQgdG1wOwogCi0gICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgQVJNUmVnaXN0ZXJz
OjpTMCwgQVJNUmVnaXN0ZXJzOjpTMSwgMCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihh
ZGRyZXNzLm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0
clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgMCk7CiAKICAgICAgICAgaWYgKCh0bXAgPSBBUk1Bc3NlbWJsZXI6OmdldE9w
MihpbW0ubV92YWx1ZSkpICE9IEFSTUFzc2VtYmxlcjo6SW52YWxpZEltbWVkaWF0ZSkKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpT
MCwgdG1wKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoYWRkcmVzc1RlbXBSZWdpc3Rl
ciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgdG1wKTsKICAgICAgICAgZWxzZSBpZiAoKHRtcCA9IEFS
TUFzc2VtYmxlcjo6Z2V0T3AyKC1pbW0ubV92YWx1ZSkpICE9IEFSTUFzc2VtYmxlcjo6SW52YWxp
ZEltbWVkaWF0ZSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnMoQVJNUmVnaXN0ZXJzOjpT
MCwgQVJNUmVnaXN0ZXJzOjpTMCwgdG1wKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnMo
YWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgdG1wKTsKICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRzKEFSTVJlZ2lzdGVyczo6UzAsIEFS
TVJlZ2lzdGVyczo6UzAsIG1fYXNzZW1ibGVyLmdldEltbShpbW0ubV92YWx1ZSwgQVJNUmVnaXN0
ZXJzOjpTMSkpOwotICAgICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MubV9wdHIp
LCBBUk1SZWdpc3RlcnM6OlMxKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHMoYWRkcmVz
c1RlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgbV9hc3NlbWJsZXIuZ2V0SW1tKGlt
bS5tX3ZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKSk7CisgICAgICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICB9Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6U3RvcmVVaW50MzIsIEFSTVJlZ2lz
dGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzEsIDApOworICAgICAgICBtX2Fzc2VtYmxlci5kdHJV
cChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkYXRhVGVt
cFJlZ2lzdGVyLCAwKTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5kdHJVcChBUk1Bc3NlbWJsZXI6
OkxvYWRVaW50MzIsIEFSTVJlZ2lzdGVyczo6UzAsIEFSTVJlZ2lzdGVyczo6UzEsIHNpemVvZihB
Uk1Xb3JkKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVp
bnQzMiwgYWRkcmVzc1RlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgc2l6ZW9mKEFSTVdv
cmQpKTsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDApCi0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGMoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVy
OjpnZXRPcDJCeXRlKDApKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkYyhhZGRyZXNzVGVt
cFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MCkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5zYmMoQVJNUmVnaXN0
ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDApKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpTdG9yZVVpbnQzMiwgQVJN
UmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMSwgc2l6ZW9mKEFSTVdvcmQpKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNiYyhhZGRyZXNzVGVtcFJlZ2lzdGVyLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5kdHJVcChBUk1Bc3NlbWJsZXI6OlN0b3JlVWludDMyLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBk
YXRhVGVtcFJlZ2lzdGVyLCBzaXplb2YoQVJNV29yZCkpOwogICAgIH0KIAogICAgIHZvaWQgc3Vi
MzIoVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCiAgICAgewotICAg
ICAgICBsb2FkMzIoYWRkcmVzcy5tX3B0ciwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIHN1
YjMyKGltbSwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIHN0b3JlMzIoQVJNUmVnaXN0ZXJz
OjpTMSwgYWRkcmVzcy5tX3B0cik7CisgICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3ViMzIoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm1fcHRyKTsKICAgICB9CiAK
ICAgICB2b2lkIGxvYWQzMihjb25zdCB2b2lkKiBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sZHJVbmlxdWVJbW1lZGlhdGUoQVJNUmVnaXN0ZXJz
OjpTMCwgcmVpbnRlcnByZXRfY2FzdDxBUk1Xb3JkPihhZGRyZXNzKSk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmR0clVwKEFSTUFzc2VtYmxlcjo6TG9hZFVpbnQzMiwgZGVzdCwgQVJNUmVnaXN0ZXJz
OjpTMCwgMCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxkclVuaXF1ZUltbWVkaWF0ZShhZGRyZXNz
VGVtcFJlZ2lzdGVyLCByZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MpKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuZHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkVWludDMyLCBkZXN0LCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyLCAwKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQp
CiAgICAgewotICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0g
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMxLCByaWdodCk7Cisg
ICAgICAgIGxvYWQzMihsZWZ0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAg
ICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNz
IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihsZWZ0Lm1f
cHRyLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIEFS
TVJlZ2lzdGVyczo6UzEsIHJpZ2h0KTsKKyAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFU
ZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgcmlnaHQpOwogICAgIH0KIAogICAgIHZvaWQgcmVsYXRpdmVUYWJsZUp1bXAoUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQpAQCAtMTEyNSw4ICsxMTM3LDggQEAgY2xhc3MgTWFjcm9B
c3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsK
ICAgICBDYWxsIGNhbGwoUHRyVGFnKQogICAgIHsKICAgICAgICAgZW5zdXJlU3BhY2UoMiAqIHNp
emVvZihBUk1Xb3JkKSwgc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9h
ZEJyYW5jaFRhcmdldChBUk1SZWdpc3RlcnM6OlMxLCBBUk1Bc3NlbWJsZXI6OkFMLCB0cnVlKTsK
LSAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIuYmx4KEFSTVJlZ2lzdGVyczo6UzEpLCBD
YWxsOjpMaW5rYWJsZSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRCcmFuY2hUYXJnZXQoZGF0
YVRlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpBTCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBD
YWxsKG1fYXNzZW1ibGVyLmJseChkYXRhVGVtcFJlZ2lzdGVyKSwgQ2FsbDo6TGlua2FibGUpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgY2FsbFRhZykg
eyByZXR1cm4gVU5VU0VEX1BBUkFNKGNhbGxUYWcpLCBjYWxsKE5vUHRyVGFnKTsgfQpAQCAtMTE2
MCwzMyArMTE3MiwzMyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFj
dE1hY3JvQXNzZW1ibGVyPEFzc2VtYmxlcj4gewogICAgIEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNo
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBEYXRhTGFiZWxQdHIm
IGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmlnaHRWYWx1ZSA9IFRydXN0ZWRJbW1Q
dHIobnVsbHB0cikpCiAgICAgewogICAgICAgICBlbnN1cmVTcGFjZSgzICogc2l6ZW9mKEFSTVdv
cmQpLCAyICogc2l6ZW9mKEFSTVdvcmQpKTsKLSAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQ
YXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgQVJNUmVnaXN0ZXJzOjpTMSk7Ci0gICAgICAgIEp1bXAg
anVtcCA9IGJyYW5jaDMyKGNvbmQsIGxlZnQsIEFSTVJlZ2lzdGVyczo6UzEsIHRydWUpOworICAg
ICAgICBkYXRhTGFiZWwgPSBtb3ZlV2l0aFBhdGNoKGluaXRpYWxSaWdodFZhbHVlLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgSnVtcCBqdW1wID0gYnJhbmNoMzIoY29uZCwgbGVmdCwgZGF0
YVRlbXBSZWdpc3RlciwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiBqdW1wOwogICAgIH0KIAogICAg
IEp1bXAgYnJhbmNoUHRyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBsZWZ0LCBEYXRhTGFiZWxQdHImIGRhdGFMYWJlbCwgVHJ1c3RlZEltbVB0ciBpbml0aWFsUmln
aHRWYWx1ZSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cikpCiAgICAgewotICAgICAgICBsb2FkMzIo
bGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJl
Z2lzdGVyKTsKICAgICAgICAgZW5zdXJlU3BhY2UoMyAqIHNpemVvZihBUk1Xb3JkKSwgMiAqIHNp
emVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5pdGlh
bFJpZ2h0VmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICBKdW1wIGp1bXAgPSBicmFu
Y2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMxLCB0cnVlKTsKKyAg
ICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1ZSwgYWRkcmVz
c1RlbXBSZWdpc3Rlcik7CisgICAgICAgIEp1bXAganVtcCA9IGJyYW5jaDMyKGNvbmQsIGFkZHJl
c3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIHRydWUpOwogICAgICAgICByZXR1cm4g
anVtcDsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMyV2l0aFBhdGNoKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBEYXRhTGFiZWwzMiYgZGF0YUxhYmVsLCBUcnVzdGVk
SW1tMzIgaW5pdGlhbFJpZ2h0VmFsdWUgPSBUcnVzdGVkSW1tMzIoMCkpCiAgICAgewotICAgICAg
ICBsb2FkMzIobGVmdCwgQVJNUmVnaXN0ZXJzOjpTMSk7CisgICAgICAgIGxvYWQzMihsZWZ0LCBk
YXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgZW5zdXJlU3BhY2UoMyAqIHNpemVvZihBUk1Xb3Jk
KSwgMiAqIHNpemVvZihBUk1Xb3JkKSk7Ci0gICAgICAgIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0
Y2goaW5pdGlhbFJpZ2h0VmFsdWUsIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICBKdW1wIGp1
bXAgPSBicmFuY2gzMihjb25kLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMxLCB0
cnVlKTsKKyAgICAgICAgZGF0YUxhYmVsID0gbW92ZVdpdGhQYXRjaChpbml0aWFsUmlnaHRWYWx1
ZSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIEp1bXAganVtcCA9IGJyYW5jaDMyKGNv
bmQsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIHRydWUpOwogICAgICAg
ICByZXR1cm4ganVtcDsKICAgICB9CiAKICAgICBEYXRhTGFiZWxQdHIgc3RvcmVQdHJXaXRoUGF0
Y2goVHJ1c3RlZEltbVB0ciBpbml0aWFsVmFsdWUsIEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzKQog
ICAgIHsKLSAgICAgICAgRGF0YUxhYmVsUHRyIGRhdGFMYWJlbCA9IG1vdmVXaXRoUGF0Y2goaW5p
dGlhbFZhbHVlLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgc3RvcmUzMihBUk1SZWdpc3Rl
cnM6OlMxLCBhZGRyZXNzKTsKKyAgICAgICAgRGF0YUxhYmVsUHRyIGRhdGFMYWJlbCA9IG1vdmVX
aXRoUGF0Y2goaW5pdGlhbFZhbHVlLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmUz
MihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICAgICAgcmV0dXJuIGRhdGFMYWJlbDsK
ICAgICB9CiAKQEAgLTEyMzYsOCArMTI0OCw4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDog
cHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIGxv
YWREb3VibGUoVHJ1c3RlZEltbVB0ciBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRk
cmVzcy5tX3ZhbHVlKSksIEFSTVJlZ2lzdGVyczo6UzApOwotICAgICAgICBtX2Fzc2VtYmxlci5k
b3VibGVEdHJVcChBUk1Bc3NlbWJsZXI6OkxvYWREb3VibGUsIGRlc3QsIEFSTVJlZ2lzdGVyczo6
UzAsIDApOworICAgICAgICBtb3ZlKFRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PEFSTVdv
cmQ+KGFkZHJlc3MubV92YWx1ZSkpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuZG91YmxlRHRyVXAoQVJNQXNzZW1ibGVyOjpMb2FkRG91YmxlLCBkZXN0LCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyLCAwKTsKICAgICB9CiAKICAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IHZvaWQgY2VpbERvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkKQEAgLTEyODAsOCAr
MTI5Miw4IEBAIGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9B
c3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAKICAgICB2b2lkIHN0b3JlRG91YmxlKEZQUmVnaXN0ZXJJ
RCBzcmMsIFRydXN0ZWRJbW1QdHIgYWRkcmVzcykKICAgICB7Ci0gICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbTMyKHJlaW50ZXJwcmV0X2Nhc3Q8QVJNV29yZD4oYWRkcmVzcy5tX3ZhbHVlKSksIEFSTVJl
Z2lzdGVyczo6UzApOwotICAgICAgICBtX2Fzc2VtYmxlci5kYXRhVHJhbnNmZXJGbG9hdChBUk1B
c3NlbWJsZXI6OlN0b3JlRG91YmxlLCBzcmMsIEFSTVJlZ2lzdGVyczo6UzAsIDApOworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihyZWludGVycHJldF9jYXN0PEFSTVdvcmQ+KGFkZHJlc3MubV92
YWx1ZSkpLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGF0YVRy
YW5zZmVyRmxvYXQoQVJNQXNzZW1ibGVyOjpTdG9yZURvdWJsZSwgc3JjLCBhZGRyZXNzVGVtcFJl
Z2lzdGVyLCAwKTsKICAgICB9CiAKICAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNy
YywgRlBSZWdpc3RlcklEIGRlc3QpCkBAIC0xMzA4LDE0ICsxMzIwLDE0IEBAIGNsYXNzIE1hY3Jv
QXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7
CiAKICAgICB2b2lkIGFkZERvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewotICAgICAgICBsb2FkRG91YmxlKHNyYywgQVJNUmVnaXN0ZXJzOjpTRDApOwotICAgICAg
ICBhZGREb3VibGUoQVJNUmVnaXN0ZXJzOjpTRDAsIGRlc3QpOworICAgICAgICBsb2FkRG91Ymxl
KHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBhZGREb3VibGUoZnBUZW1wUmVnaXN0ZXIs
IGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQgYWRkRG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGxvYWREb3VibGUoVHJ1c3Rl
ZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgQVJNUmVnaXN0ZXJzOjpTRDApOwotICAgICAgICBhZGRE
b3VibGUoQVJNUmVnaXN0ZXJzOjpTRDAsIGRlc3QpOworICAgICAgICBsb2FkRG91YmxlKFRydXN0
ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYWRkRG91
YmxlKGZwVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGRpdkRvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAgLTEzMzEsOCArMTM0Myw4IEBA
IGNsYXNzIE1hY3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8
QXNzZW1ibGVyPiB7CiAgICAgdm9pZCBkaXZEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgLy8g
VW50ZXN0ZWQKLSAgICAgICAgbG9hZERvdWJsZShzcmMsIEFSTVJlZ2lzdGVyczo6U0QwKTsKLSAg
ICAgICAgZGl2RG91YmxlKEFSTVJlZ2lzdGVyczo6U0QwLCBkZXN0KTsKKyAgICAgICAgbG9hZERv
dWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgZGl2RG91YmxlKGZwVGVtcFJlZ2lz
dGVyLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZGVzdCkKQEAgLTEzNDcsOCArMTM1OSw4IEBAIGNsYXNzIE1hY3JvQXNz
ZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVyPiB7CiAK
ICAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBsb2FkRG91YmxlKHNyYywgQVJNUmVnaXN0ZXJzOjpTRDApOwotICAgICAgICBz
dWJEb3VibGUoQVJNUmVnaXN0ZXJzOjpTRDAsIGRlc3QpOworICAgICAgICBsb2FkRG91YmxlKHNy
YywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBzdWJEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRl
c3QpOwogICAgIH0KIAogICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkZXN0KQpAQCAtMTM1OCw4ICsxMzcwLDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZv
aWQgbXVsRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAg
ICAgIGxvYWREb3VibGUoc3JjLCBBUk1SZWdpc3RlcnM6OlNEMCk7Ci0gICAgICAgIG11bERvdWJs
ZShBUk1SZWdpc3RlcnM6OlNEMCwgZGVzdCk7CisgICAgICAgIGxvYWREb3VibGUoc3JjLCBmcFRl
bXBSZWdpc3Rlcik7CisgICAgICAgIG11bERvdWJsZShmcFRlbXBSZWdpc3RlciwgZGVzdCk7CiAg
ICAgfQogCiAgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklE
IG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCkBAIC0xMzkwLDE1ICsxNDAyLDE1IEBAIGNsYXNzIE1h
Y3JvQXNzZW1ibGVyQVJNIDogcHVibGljIEFic3RyYWN0TWFjcm9Bc3NlbWJsZXI8QXNzZW1ibGVy
PiB7CiAKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGxvYWQzMihzcmMsIEFSTVJlZ2lzdGVyczo6UzEp
OwotICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShBUk1SZWdpc3RlcnM6OlMxLCBkZXN0KTsK
KyAgICAgICAgbG9hZDMyKHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGNvbnZlcnRJ
bnQzMlRvRG91YmxlKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAogICAgIHZvaWQg
Y29udmVydEludDMyVG9Eb3VibGUoQWJzb2x1dGVBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewotICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc3JjLm1fcHRyKSwgQVJNUmVn
aXN0ZXJzOjpTMSk7Ci0gICAgICAgIGxvYWQzMihBZGRyZXNzKEFSTVJlZ2lzdGVyczo6UzEpLCBB
Uk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoQVJNUmVnaXN0
ZXJzOjpTMSwgZGVzdCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzcmMubV9wdHIpLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKEFkZHJlc3MoZGF0YVRlbXBSZWdpc3Rl
ciksIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBjb252ZXJ0SW50MzJUb0RvdWJsZShkYXRh
VGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91
YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCkBAIC0xNDE2LDcgKzE0Mjgs
NyBAQCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1i
bGVyPEFzc2VtYmxlcj4gewogICAgICAgICBtX2Fzc2VtYmxlci52Y21wX2Y2NChsZWZ0LCByaWdo
dCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtcnNfYXBzcigpOwogICAgICAgICBpZiAoY29uZCAm
IERvdWJsZUNvbmRpdGlvbkJpdFNwZWNpYWwpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAo
QVJNUmVnaXN0ZXJzOjpTMCwgQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpWUyk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXAoYWRkcmVzc1RlbXBSZWdpc3RlciwgYWRkcmVzc1Rl
bXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpWUyk7CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNz
ZW1ibGVyLmptcChzdGF0aWNfY2FzdDxBUk1Bc3NlbWJsZXI6OkNvbmRpdGlvbj4oY29uZCAmIH5E
b3VibGVDb25kaXRpb25NYXNrKSkpOwogICAgIH0KIApAQCAtMTQyOSwyNiArMTQ0MSwyNiBAQCBj
bGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVyPEFz
c2VtYmxlcj4gewogICAgIHsKICAgICAgICAgdHJ1bmNhdGVEb3VibGVUb0ludDMyKHNyYywgZGVz
dCk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkKEFSTVJlZ2lzdGVyczo6UzAsIGRlc3QsIEFS
TUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgxKSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmJpYyhBUk1S
ZWdpc3RlcnM6OlMwLCBBUk1SZWdpc3RlcnM6OlMwLCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUo
MSkpOworICAgICAgICBtX2Fzc2VtYmxlci5hZGQoYWRkcmVzc1RlbXBSZWdpc3RlciwgZGVzdCwg
QVJNQXNzZW1ibGVyOjpnZXRPcDJCeXRlKDEpKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmljKGFk
ZHJlc3NUZW1wUmVnaXN0ZXIsIGFkZHJlc3NUZW1wUmVnaXN0ZXIsIEFSTUFzc2VtYmxlcjo6Z2V0
T3AyQnl0ZSgxKSk7CiAKICAgICAgICAgQVJNV29yZCB3ID0gQVJNQXNzZW1ibGVyOjpnZXRPcDIo
MHg4MDAwMDAwMCk7CiAgICAgICAgIEFTU0VSVCh3ICE9IEFSTUFzc2VtYmxlcjo6SW52YWxpZElt
bWVkaWF0ZSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcChBUk1SZWdpc3RlcnM6OlMwLCB3KTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuY21wKGFkZHJlc3NUZW1wUmVnaXN0ZXIsIHcpOwogICAgICAg
ICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qbXAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5j
YXRlRmFpbGVkID8gQVJNQXNzZW1ibGVyOjpFUSA6IEFSTUFzc2VtYmxlcjo6TkUpKTsKICAgICB9
CiAKICAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9m
IHRoZSBpbnRlZ2VyIHJhbmdlLgogICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVy
LnZjdnRfczMyX2Y2NChBUk1SZWdpc3RlcnM6OlNEMCA8PCAxLCBzcmMpOwotICAgICAgICBtX2Fz
c2VtYmxlci52bW92X2FybTMyKGRlc3QsIEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEpOworICAgICAg
ICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjQoZnBUZW1wUmVnaXN0ZXIgPDwgMSwgc3JjKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0LCBmcFRlbXBSZWdpc3RlciA8PCAxKTsK
ICAgICB9CiAKICAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2dF91MzJf
ZjY0KEFSTVJlZ2lzdGVyczo6U0QwIDw8IDEsIHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZt
b3ZfYXJtMzIoZGVzdCwgQVJNUmVnaXN0ZXJzOjpTRDAgPDwgMSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnZjdnRfdTMyX2Y2NChmcFRlbXBSZWdpc3RlciA8PCAxLCBzcmMpOworICAgICAgICBtX2Fz
c2VtYmxlci52bW92X2FybTMyKGRlc3QsIGZwVGVtcFJlZ2lzdGVyIDw8IDEpOwogICAgIH0KIAog
ICAgIC8vIENvbnZlcnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0
aW5nICdkZXN0Jy4KQEAgLTE0NTcsMTIgKzE0NjksMTIgQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJB
Uk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKICAgICAvLyAo
c3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIDApLgogICAgIHZvaWQgYnJhbmNoQ29udmVydERv
dWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYg
ZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQsIGJvb2wgbmVnWmVyb0NoZWNrID0gdHJ1ZSkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfczMyX2Y2NChBUk1SZWdpc3RlcnM6OlNEMCA8
PCAxLCBzcmMpOwotICAgICAgICBtX2Fzc2VtYmxlci52bW92X2FybTMyKGRlc3QsIEFSTVJlZ2lz
dGVyczo6U0QwIDw8IDEpOworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3MzMl9mNjQoZnBUZW1w
UmVnaXN0ZXIgPDwgMSwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdl9hcm0zMihkZXN0
LCBmcFRlbXBSZWdpc3RlciA8PCAxKTsKIAogICAgICAgICAvLyBDb252ZXJ0IHRoZSBpbnRlZ2Vy
IHJlc3VsdCBiYWNrIHRvIGZsb2F0ICYgY29tcGFyZSB0byB0aGUgb3JpZ2luYWwgdmFsdWUgLSBp
ZiBub3QgZXF1YWwgb3IgdW5vcmRlcmVkIChOYU4pIHRoZW4ganVtcC4KLSAgICAgICAgbV9hc3Nl
bWJsZXIudmN2dF9mNjRfczMyKEFSTVJlZ2lzdGVyczo6U0QwLCBBUk1SZWdpc3RlcnM6OlNEMCA8
PCAxKTsKLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChicmFuY2hEb3VibGUoRG91YmxlTm90
RXF1YWxPclVub3JkZXJlZCwgc3JjLCBBUk1SZWdpc3RlcnM6OlNEMCkpOworICAgICAgICBtX2Fz
c2VtYmxlci52Y3Z0X2Y2NF9zMzIoZnBUZW1wUmVnaXN0ZXIsIGZwVGVtcFJlZ2lzdGVyIDw8IDEp
OworICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVh
bE9yVW5vcmRlcmVkLCBzcmMsIGZwVGVtcFJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gSWYgdGhl
IHJlc3VsdCBpcyB6ZXJvLCBpdCBtaWdodCBoYXZlIGJlZW4gLTAuMCwgYW5kIDAuMCBlcXVhbHMg
dG8gLTAuMAogICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQpAQCAtMTQ3MSwxNSArMTQ4MywxNSBA
QCBjbGFzcyBNYWNyb0Fzc2VtYmxlckFSTSA6IHB1YmxpYyBBYnN0cmFjdE1hY3JvQXNzZW1ibGVy
PEFzc2VtYmxlcj4gewogCiAgICAgSnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJ
RCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bW92KEFSTVJlZ2lzdGVyczo6UzAsIEFSTUFzc2VtYmxlcjo6Z2V0T3AyQnl0ZSgwKSk7Ci0gICAg
ICAgIGNvbnZlcnRJbnQzMlRvRG91YmxlKEFSTVJlZ2lzdGVyczo6UzAsIHNjcmF0Y2gpOworICAg
ICAgICBtX2Fzc2VtYmxlci5tb3YoYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNQXNzZW1ibGVyOjpn
ZXRPcDJCeXRlKDApKTsKKyAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoYWRkcmVzc1RlbXBS
ZWdpc3Rlciwgc2NyYXRjaCk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90
RXF1YWwsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3VibGVaZXJv
T3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5tb3YoQVJNUmVnaXN0ZXJzOjpTMCwgQVJNQXNzZW1ibGVyOjpnZXRP
cDJCeXRlKDApKTsKLSAgICAgICAgY29udmVydEludDMyVG9Eb3VibGUoQVJNUmVnaXN0ZXJzOjpT
MCwgc2NyYXRjaCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdihhZGRyZXNzVGVtcFJlZ2lzdGVy
LCBBUk1Bc3NlbWJsZXI6OmdldE9wMkJ5dGUoMCkpOworICAgICAgICBjb252ZXJ0SW50MzJUb0Rv
dWJsZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCBzY3JhdGNoKTsKICAgICAgICAgcmV0dXJuIGJyYW5j
aERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVkLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIApA
QCAtMTYwMyw4ICsxNjE1LDggQEAgY2xhc3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3NlbWJsZXI+IHsKIAogICAgIHZvaWQgY2FsbDMyKFJlZ2lz
dGVySUQgYmFzZSwgaW50MzJfdCBvZmZzZXQpCiAgICAgewotICAgICAgICBsb2FkMzIoQWRkcmVz
cyhiYXNlLCBvZmZzZXQpLCBBUk1SZWdpc3RlcnM6OlMxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Ymx4KEFSTVJlZ2lzdGVyczo6UzEpOworICAgICAgICBsb2FkMzIoQWRkcmVzcyhiYXNlLCBvZmZz
ZXQpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuYmx4KGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE2MTYsMTcgKzE2MjgsMTcgQEAgY2xh
c3MgTWFjcm9Bc3NlbWJsZXJBUk0gOiBwdWJsaWMgQWJzdHJhY3RNYWNyb0Fzc2VtYmxlcjxBc3Nl
bWJsZXI+IHsKICAgICAgICAgaWYgKHRtcCAhPSBBUk1Bc3NlbWJsZXI6OkludmFsaWRJbW1lZGlh
dGUpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbW4obGVmdCwgdG1wKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wKGxlZnQsIG1fYXNzZW1ibGVyLmdldEltbShy
aWdodC5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5jbXAobGVmdCwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1fdmFsdWUsIGFkZHJlc3NUZW1w
UmVnaXN0ZXIpKTsKICAgICB9CiAKICAgICB2b2lkIGludGVybmFsQ29tcGFyZTMyKEFkZHJlc3Mg
bGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgQVJNV29yZCB0bXAgPSAo
IXJpZ2h0Lm1fdmFsdWUgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJpZ2h0Lm1fdmFsdWUpID09
IDB4ODAwMDAwMDApID8gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlIDogbV9hc3NlbWJs
ZXIuZ2V0T3AyKC1yaWdodC5tX3ZhbHVlKTsKLSAgICAgICAgbG9hZDMyKGxlZnQsIEFSTVJlZ2lz
dGVyczo6UzEpOworICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAg
ICAgIGlmICh0bXAgIT0gQVJNQXNzZW1ibGVyOjpJbnZhbGlkSW1tZWRpYXRlKQotICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuY21uKEFSTVJlZ2lzdGVyczo6UzEsIHRtcCk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5jbW4oZGF0YVRlbXBSZWdpc3RlciwgdG1wKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuY21wKEFSTVJlZ2lzdGVyczo6UzEsIG1fYXNzZW1ibGVyLmdl
dEltbShyaWdodC5tX3ZhbHVlLCBBUk1SZWdpc3RlcnM6OlMwKSk7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5jbXAoZGF0YVRlbXBSZWdpc3RlciwgbV9hc3NlbWJsZXIuZ2V0SW1tKHJpZ2h0Lm1f
dmFsdWUsIGFkZHJlc3NUZW1wUmVnaXN0ZXIpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTxQdHJU
YWcgdGFnPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>