<?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>25559</bug_id>
          
          <creation_ts>2009-05-05 00:47:52 -0700</creation_ts>
          <short_desc>Improve native function call performance</short_desc>
          <delta_ts>2009-05-05 04:34:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>119932</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-05 00:47:52 -0700</bug_when>
    <thetext>Native functions calls are currently much much slower than js calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119933</commentid>
    <comment_count>1</comment_count>
      <attachid>30013</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-05 00:58:40 -0700</bug_when>
    <thetext>Created attachment 30013
Patcheration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119941</commentid>
    <comment_count>2</comment_count>
      <attachid>30013</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-05-05 02:19:42 -0700</bug_when>
    <thetext>Comment on attachment 30013
Patcheration

emitGetFromCallFrameHeader

    - please rename this to emitGetFromCallFrameHeaderPtr (I understand that you plan to do this as a separate patch.)

loadPtr(Address(regT1, RegisterFile::ScopeChain * (int32_t)sizeof(Register)), regT1);

    - it would be easier to read what this is doing if you changed this to be a call to emitGetFromCallFrameHeader[Ptr], passing the register to use as the callframe as a third optional argument.

// ArgList is passed by reference so is stackPointerRegister + 4 * sizeof(Register)
move(stackPointerRegister, X86::ecx);

    - comment in wrong in 64-bit
    - other comments in 64-bit are also lies.

as discussed, use of sizeof(Register) is confusing:

sizeof(ArgList)
COMPILE_ASSERT(sizeof(ArgList) &amp; 0xf == 0);
poke -&gt; storePtr(X86::ecx, Address(...));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119948</commentid>
    <comment_count>3</comment_count>
      <attachid>30013</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-05-05 04:23:14 -0700</bug_when>
    <thetext>Comment on attachment 30013
Patcheration

loadPtr(Address(X86::esi, FIELD_OFFSET(JSFunction, m_data)), scratchRegister);
call(scratchRegister);

I would recommend not using scratchRegister outside of MacroAssembler, I would suggest adding call(Address) to avoid requiring a register here at all (jump(Address) already exists to base this on).

It would be so awesome if functions didn&apos;t have a function body node.
So awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>119950</commentid>
    <comment_count>4</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-05 04:34:59 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	JavaScriptCore/ChangeLog
	M	JavaScriptCore/JavaScriptCore.exp
	M	JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
	M	JavaScriptCore/assembler/MacroAssemblerX86Common.h
	M	JavaScriptCore/assembler/MacroAssemblerX86_64.h
	M	JavaScriptCore/assembler/X86Assembler.h
	M	JavaScriptCore/interpreter/Interpreter.cpp
	M	JavaScriptCore/jit/JIT.cpp
	M	JavaScriptCore/jit/JIT.h
	M	JavaScriptCore/jit/JITCall.cpp
	M	JavaScriptCore/jit/JITCode.h
	M	JavaScriptCore/jit/JITInlineMethods.h
	M	JavaScriptCore/jit/JITStubs.cpp
	M	JavaScriptCore/jit/JITStubs.h
	M	JavaScriptCore/jsc.cpp
	M	JavaScriptCore/parser/Nodes.cpp
	M	JavaScriptCore/parser/Nodes.h
	M	JavaScriptCore/profiler/Profiler.cpp
	M	JavaScriptCore/runtime/ArgList.h
	M	JavaScriptCore/runtime/ArrayPrototype.cpp
	M	JavaScriptCore/runtime/BooleanPrototype.cpp
	M	JavaScriptCore/runtime/DateConstructor.cpp
	M	JavaScriptCore/runtime/ErrorPrototype.cpp
	M	JavaScriptCore/runtime/FunctionPrototype.cpp
	M	JavaScriptCore/runtime/FunctionPrototype.h
	M	JavaScriptCore/runtime/JSFunction.cpp
	M	JavaScriptCore/runtime/JSFunction.h
	M	JavaScriptCore/runtime/JSGlobalData.cpp
	M	JavaScriptCore/runtime/JSGlobalData.h
	M	JavaScriptCore/runtime/JSGlobalObject.cpp
	M	JavaScriptCore/runtime/JSGlobalObject.h
	M	JavaScriptCore/runtime/Lookup.cpp
	M	JavaScriptCore/runtime/Lookup.h
	M	JavaScriptCore/runtime/NumberPrototype.cpp
	M	JavaScriptCore/runtime/ObjectPrototype.cpp
	M	JavaScriptCore/runtime/RegExpPrototype.cpp
	M	JavaScriptCore/runtime/StringConstructor.cpp
	M	WebCore/ChangeLog
	A	WebCore/ForwardingHeaders/jit/JITCode.h
	M	WebCore/inspector/JavaScriptDebugServer.cpp
Committed r43220
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30013</attachid>
            <date>2009-05-05 00:58:40 -0700</date>
            <delta_ts>2009-05-05 04:23:14 -0700</delta_ts>
            <desc>Patcheration</desc>
            <filename>call-fixeration.patch</filename>
            <type>text/plain</type>
            <size>87090</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAwYjg4ODg4Li40OTQ3Y2QzIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE4
IEBACisyMDA5LTA1LTA1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDI1NTU5OiBJbXBy
b3ZlIG5hdGl2ZSBmdW5jdGlvbiBjYWxsIHBlcmZvcm1hbmNlCisgICAgICAgIDxodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1NTk+CisKKyAgICAgICAgSW4gb3JkZXIg
dG8gY2FjaGUgY2FsbHMgdG8gbmF0aXZlIGZ1bmN0aW9ucyB3ZSBub3cgbWFrZSB0aGUgc3RhbmRh
cmQKKyAgICAgICAgcHJvdG90eXBlIGZ1bmN0aW9ucyB1c2UgYSBzbWFsbCBhc3NlbWJseSB0aHVu
ayB0aGF0IGNvbnZlcnRzIHRoZSBKUworICAgICAgICBjYWxsaW5nIGNvbnZlbnRpb24gaW50byB0
aGUgbmF0aXZlIGNhbGxpbmcgY29udmVudGlvbi4gIEFzIHRoaXMgaXMKKyAgICAgICAgb25seSBi
ZW5lZmljaWFsIGluIHRoZSBKSVQgd2UgdXNlIHRoZSBOYXRpdmVGdW5jdGlvbldyYXBwZXIgdHlw
ZWRlZgorICAgICAgICB0byBhbHRlcm5hdGUgYmV0d2VlbiBQcm90b3R5cGVGdW5jdGlvbiBhbmQg
SlNGdW5jdGlvbiB0byBrZWVwIHRoZQorICAgICAgICBjb2RlIHNhbmUuICBUaGlzIGNoYW5nZSBm
cm9tIFByb3RvdHlwZUZ1bmN0aW9uIHRvIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcgorICAgICAgICBp
cyB0aGUgYnVsayBvZiB0aGlzIHBhdGNoLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhw
OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjphZGRQdHIpOgorICAgICAgICAqIGFzc2VtYmxlci9YODZB
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpsZWFxX21yKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByZXBhcmVGb3JSZXBl
YXRDYWxsKToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2
YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyk6CisgICAgICAgICogaml0L0pJVC5oOgor
ICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMpOgorICAgICAg
ICAqIGppdC9KSVRDYWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpsaW5rQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVDo6Y29tcGlsZU9wQ2FsbEluaXRpYWxpemVDYWxsRnJhbWUpOgorICAgICAg
ICAoSlNDOjpKSVQ6OmNvbXBpbGVPcENhbGwpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6Cisg
ICAgICAgIChKU0M6OkpJVENvZGU6Om9wZXJhdG9yIGJvb2wpOgorICAgICAgICAqIGppdC9KSVRJ
bmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVI
ZWFkZXIzMik6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6SklU
U3R1YnM6OkpJVFN0dWJzKToKKyAgICAgICAgKEpTQzo6SklUU3R1YnM6OmN0aV9vcF9jYWxsX0pT
RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKSVRTdHViczo6Y3RpX3ZtX2RvbnRMYXp5TGlua0Nh
bGwpOgorICAgICAgICAoSlNDOjpKSVRTdHViczo6Y3RpX3ZtX2xhenlMaW5rQ2FsbCk6CisgICAg
ICAgIChKU0M6OkpJVFN0dWJzOjpjdGlfb3BfY29uc3RydWN0X0pTQ29uc3RydWN0KToKKyAgICAg
ICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgKEpTQzo6SklUU3R1YnM6OmN0aU5hdGl2ZUNh
bGxUaHVuayk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6R2xv
YmFsT2JqZWN0KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25Cb2R5Tm9kZTo6Y3JlYXRlTmF0aXZlVGh1bmspOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjpnZW5lcmF0ZUpJVENvZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjopOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjpnZW5lcmF0ZWRKSVRDb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9k
ZTo6aml0Q29kZSk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXIuY3BwOgorICAgICAgICAo
SlNDOjpQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZpZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
QXJnTGlzdC5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjppc051bWVyaWNDb21wYXJlRnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQm9v
bGVhblByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkJvb2xlYW5Qcm90b3R5cGU6OkJvb2xl
YW5Qcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcDoKKyAg
ICAgICAgKEpTQzo6RGF0ZUNvbnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmRhdGVQcm90b0Z1bmNH
ZXRUaW1lKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1l
L0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Qcm90b3R5cGU6
OmFkZEZ1bmN0aW9uUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6OmZ1bmN0aW9uUHJvdG9GdW5j
VG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpK
U0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjpKU0Z1bmN0aW9uOjptYXJrKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
Z2V0Q2FsbERhdGEpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjYWxsKToKKyAgICAgICAg
KEpTQzo6SlNGdW5jdGlvbjo6YXJndW1lbnRzR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNGdW5j
dGlvbjo6Y2FsbGVyR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bGVuZ3RoR2V0
dGVyKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAg
ICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6
ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpnZXRDb25zdHJ1Y3RE
YXRhKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Y29uc3RydWN0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6SlNGdW5jdGlv
bik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnNldFNjb3BlKToKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6c2NvcGUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjppc0hvc3RGdW5j
dGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OnNjb3BlQ2hhaW4pOgorICAgICAgICAo
SlNDOjpKU0Z1bmN0aW9uOjpjbGVhclNjb3BlQ2hhaW4pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjpzZXRTY29wZUNoYWluKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmF0aXZlRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpzZXROYXRpdmVGdW5jdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bERhdGE6On5KU0dsb2JhbERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmNyZWF0
ZU5hdGl2ZVRodW5rKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbERhdGE6Om5hdGl2ZUZ1bmN0aW9uVGh1bmspOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
cmVzZXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL0xvb2t1cC5jcHA6CisgICAgICAgIChKU0M6OnNldFVwU3RhdGljRnVuY3Rpb25TbG90
KToKKyAgICAgICAgKiBydW50aW1lL0xvb2t1cC5oOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6TnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6T2JqZWN0UHJvdG90eXBlOjpPYmplY3RQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6UmVnRXhwUHJvdG90eXBlOjpS
ZWdFeHBQcm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJpbmdDb25zdHJ1Y3Rvcjo6U3RyaW5nQ29uc3RydWN0b3IpOgor
CiAyMDA5LTA1LTA0ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgUnViYmVyIHN0YW1wZWQgYnkgR2F2aW4uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5leHAgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5k
ZXggNDllNWNlZi4uYTc2MzZlZiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUuZXhwCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtOTYs
NiArOTYsNyBAQCBfX1pOM0pTQzEwSWRlbnRpZmllcjI0Y2hlY2tTYW1lSWRlbnRpZmllclRhYmxl
RVBOU185RXhlY1N0YXRlRVBOU183VVN0cmluZzNSZXBFCiBfX1pOM0pTQzEwSWRlbnRpZmllcjNh
ZGRFUE5TXzlFeGVjU3RhdGVFUEtjCiBfX1pOM0pTQzEwSWRlbnRpZmllcjVlcXVhbEVQS05TXzdV
U3RyaW5nM1JlcEVQS2MKIF9fWk4zSlNDMTBKU0Z1bmN0aW9uNGluZm9FCitfX1pOM0pTQzEwSlNG
dW5jdGlvbkMxRVBOU185RXhlY1N0YXRlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzlTdHJ1Y3R1cmVF
RUVpUktOU18xMElkZW50aWZpZXJFUEZOU183SlNWYWx1ZUVTMl9QTlNfOEpTT2JqZWN0RVNBX1JL
TlNfN0FyZ0xpc3RFRQogX19aTjNKU0MxMHRocm93RXJyb3JFUE5TXzlFeGVjU3RhdGVFTlNfOUVy
cm9yVHlwZUUKIF9fWk4zSlNDMTB0aHJvd0Vycm9yRVBOU185RXhlY1N0YXRlRU5TXzlFcnJvclR5
cGVFUEtjCiBfX1pOM0pTQzEwdGhyb3dFcnJvckVQTlNfOUV4ZWNTdGF0ZUVOU185RXJyb3JUeXBl
RVJLTlNfN1VTdHJpbmdFCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjODNkNGVlLi4xNmJmZjM1IDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyNCw3ICsxMjQsNyBAQAogCQk4NkNDODVBMTBFRTc5QTQ3MDAyODg2
ODIgLyogSklUSW5saW5lTWV0aG9kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDQzg1QTAwRUU3OUE0NzAwMjg4NjgyIC8qIEpJVElubGluZU1ldGhv
ZHMuaCAqLzsgfTsKIAkJODZDQzg1QTMwRUU3OUI3NDAwMjg4NjgyIC8qIEpJVENhbGwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQzg1QTIwRUU3
OUI3NDAwMjg4NjgyIC8qIEpJVENhbGwuY3BwICovOyB9OwogCQk4NkNDODVDNDBFRTdBODk0MDAy
ODg2ODIgLyogSklUUHJvcGVydHlBY2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDQzg1QzMwRUU3QTg5NDAwMjg4NjgyIC8qIEpJVFByb3Bl
cnR5QWNjZXNzLmNwcCAqLzsgfTsKLQkJODZDQ0VGREUwRjQxM0Y4OTAwRkQ3RjlFIC8qIEpJVENv
ZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Q0NF
RkREMEY0MTNGODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggKi87IH07CisJCTg2Q0NFRkRFMEY0MTNG
ODkwMEZEN0Y5RSAvKiBKSVRDb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkNDRUZERDBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2REI2NDY0MEY5
NUM2RkMwMEQ3RDkyMSAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEQjY0NjMwRjk1QzZG
QzAwRDdEOTIxIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgKi87IH07CiAJ
CTg2RUFDNDk1MEY5M0U4RDEwMDhFQzk0OCAvKiBSZWdleENvbXBpbGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RUFDNDhEMEY5M0U4RDEwMDhF
Qzk0OCAvKiBSZWdleENvbXBpbGVyLmNwcCAqLzsgfTsKIAkJODZFQUM0OTYwRjkzRThEMTAwOEVD
OTQ4IC8qIFJlZ2V4Q29tcGlsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2RUFDNDhFMEY5M0U4RDEwMDhFQzk0OCAvKiBSZWdleENvbXBpbGVyLmgg
Ki87IH07CkBAIC0xNzcsNiArMTc3LDcgQEAKIAkJQTcyNzAxQjkwREFERTk0OTAwRTU0OEQ3IC8q
IEV4Y2VwdGlvbkhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3MjcwMUIzMERBREU5NDkwMEU1NDhENyAvKiBFeGNlcHRpb25IZWxwZXJzLmgg
Ki87IH07CiAJCUE3MjdGRjZCMERBMzA5MjIwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAqLzsg
fTsKIAkJQTc2NkI0NEYwRUU4RENEMTAwOTUxOENBIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4REI1MEVF
NzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTc2RUU2NTkwRkFFNTlENTAwM0YwNjlB
IC8qIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2RUU2NTgwRkFFNTlENTAwM0YwNjlBIC8qIE5hdGl2ZUZ1bmN0
aW9uV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE3ODJGMUE1MEVFQzlGQTIwMDM2MjczRiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yUG9z
aXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4
MkYxQTQwRUVDOUZBMjAwMzYyNzNGIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JQb3NpeC5jcHAgKi87
IH07CiAJCUE3OTFFRjI4MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc5MUVGMjYwRjExRTA3OTAw
QUUxRjY4IC8qIEpTQnl0ZUFycmF5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTc5MUVGMjkwRjExRTA3OTAwQUUxRjY4IC8qIEpTQnl0ZUFycmF5
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OTFF
RjI3MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5jcHAgKi87IH07CkBAIC02OTMsNiAr
Njk0LDcgQEAKIAkJQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uSGVscGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzI3RkY2NTBEQTMwNTNCMDBFNTQ4RDcgLyog
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3MjdGRjY2MERBMzA1M0IwMEU1NDhENyAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzZFRTY1ODBGQUU1OUQ1MDAz
RjA2OUEgLyogTmF0aXZlRnVuY3Rpb25XcmFwcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzgyRjFBNDBFRUM5RkEyMDAzNjI3M0YgLyogRXhlY3V0YWJsZUFsbG9jYXRvclBv
c2l4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGFibGVB
bGxvY2F0b3JQb3NpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OTFFRjI2
MEYxMUUwNzkwMEFFMUY2OCAvKiBKU0J5dGVBcnJheS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0J5dGVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NzkxRUYyNzBGMTFFMDc5MDBBRTFGNjggLyogSlNCeXRlQXJyYXkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCeXRlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQxOSw2ICsxNDIxLDcgQEAKIAkJCQk2NTA3RDI5NzBFODcxRTRBMDBE
N0Q4OTYgLyogVHlwZUluZm8uaCAqLywKIAkJCQlGNjkyQTg4NTAyNTU1OTdEMDFGRjYwRjcgLyog
VVN0cmluZy5jcHAgKi8sCiAJCQkJRjY5MkE4ODYwMjU1NTk3RDAxRkY2MEY3IC8qIFVTdHJpbmcu
aCAqLywKKwkJCQlBNzZFRTY1ODBGQUU1OUQ1MDAzRjA2OUEgLyogTmF0aXZlRnVuY3Rpb25XcmFw
cGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IHJ1bnRpbWU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTc5MCw2ICsxNzkzLDcgQEAKIAkJCQk4NkVBQzQ5QjBGOTNFOEQxMDA4RUM5
NDggLyogUmVnZXhQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2RUFDNDlDMEY5M0U4RDEw
MDhFQzk0OCAvKiBSZWdleFBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTk2REQ3Mzc5MEY5
REEzMTAwMDI3RkJDQyAvKiBWTVRhZ3MuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NkVFNjU5MEZB
RTU5RDUwMDNGMDY5QSAvKiBOYXRpdmVGdW5jdGlvbldyYXBwZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmggYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAppbmRl
eCA5NzE3ODdiLi5hMDZlNjZmIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJYODZfNjQuaApAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkUHRyKEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxlYWxfbXIoaW1tLm1fdmFsdWUsIHNyYywgZGVzdCk7
CisgICAgICAgIG1fYXNzZW1ibGVyLmxlYXFfbXIoaW1tLm1fdmFsdWUsIHNyYywgZGVzdCk7CiAg
ICAgfQogCiAgICAgdm9pZCBhbmRQdHIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBiL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAppbmRleCA2OTEzMzBjLi4yOTJm
ZWUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgK
KysrIGIvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCkBAIC0xMDA4LDYg
KzEwMDgsMTIgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9w
KE9QX0xFQSwgZHN0LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KKyNpZiBQTEFURk9STShYODZfNjQp
CisgICAgdm9pZCBsZWFxX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJ
RCBkc3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5vbmVCeXRlT3A2NChPUF9MRUEsIGRz
dCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8vIEZsb3cgY29udHJvbDoK
IApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
IGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGIzMTg2
NWUuLjY1YmZiMGIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKQEAgLTY5MCw5ICs2OTAsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEZ1bmN0
aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keU5vZGUsIENhbGxGcmFtZSogY2FsbAogCiAgICAgICAg
IG1fcmVlbnRyeURlcHRoKys7CiAjaWYgRU5BQkxFKEpJVCkKLSAgICAgICAgaWYgKCFjb2RlQmxv
Y2stPmppdENvZGUoKSkKLSAgICAgICAgICAgIEpJVDo6Y29tcGlsZShzY29wZUNoYWluLT5nbG9i
YWxEYXRhLCBjb2RlQmxvY2spOwotICAgICAgICByZXN1bHQgPSBjb2RlQmxvY2stPmppdENvZGUo
KS5leGVjdXRlKCZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1lLCBzY29wZUNoYWluLT5nbG9i
YWxEYXRhLCBleGNlcHRpb24pOworICAgICAgICByZXN1bHQgPSBmdW5jdGlvbkJvZHlOb2RlLT5q
aXRDb2RlKHNjb3BlQ2hhaW4pLmV4ZWN1dGUoJm1fcmVnaXN0ZXJGaWxlLCBuZXdDYWxsRnJhbWUs
IHNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIGV4Y2VwdGlvbik7CiAjZWxzZQogICAgICAgICByZXN1
bHQgPSBwcml2YXRlRXhlY3V0ZShOb3JtYWwsICZtX3JlZ2lzdGVyRmlsZSwgbmV3Q2FsbEZyYW1l
LCBleGNlcHRpb24pOwogI2VuZGlmCkBAIC03NDAsOCArNzM4LDcgQEAgQ2FsbEZyYW1lQ2xvc3Vy
ZSBJbnRlcnByZXRlcjo6cHJlcGFyZUZvclJlcGVhdENhbGwoRnVuY3Rpb25Cb2R5Tm9kZSogZnVu
Y3Rpb25Cb2QKICAgICAvLyBhIDAgY29kZUJsb2NrIGluZGljYXRlcyBhIGJ1aWx0LWluIGNhbGxl
cgogICAgIG5ld0NhbGxGcmFtZS0+aW5pdChjb2RlQmxvY2ssIDAsIHNjb3BlQ2hhaW4sIGNhbGxG
cmFtZS0+YWRkSG9zdENhbGxGcmFtZUZsYWcoKSwgMCwgYXJnYywgZnVuY3Rpb24pOwogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKCFjb2RlQmxvY2stPmppdENvZGUoKSkKLSAgICAgICAgSklUOjpj
b21waWxlKHNjb3BlQ2hhaW4tPmdsb2JhbERhdGEsIGNvZGVCbG9jayk7CisgICAgZnVuY3Rpb25C
b2R5Tm9kZS0+aml0Q29kZShzY29wZUNoYWluKTsKICNlbmRpZgogCiAgICAgQ2FsbEZyYW1lQ2xv
c3VyZSByZXN1bHQgPSB7IGNhbGxGcmFtZSwgbmV3Q2FsbEZyYW1lLCBmdW5jdGlvbiwgY29kZUJs
b2NrLCBzY29wZUNoYWluLT5nbG9iYWxEYXRhLCBvbGRFbmQsIHNjb3BlQ2hhaW4sIGNvZGVCbG9j
ay0+bV9udW1QYXJhbWV0ZXJzLCBhcmdjIH07CkBAIC03NjEsNiArNzU4LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShDYWxsRnJhbWVDbG9zdXJlJiBjbG9zdXJlLCBKU1ZhbHVlKiBl
eGNlcHRpb24pCiAgICAgICAgIAogICAgICAgICBtX3JlZW50cnlEZXB0aCsrOwogI2lmIEVOQUJM
RShKSVQpCisgICAgICAgIEFTU0VSVChjbG9zdXJlLmNvZGVCbG9jay0+aml0Q29kZSgpKTsKICAg
ICAgICAgcmVzdWx0ID0gY2xvc3VyZS5jb2RlQmxvY2stPmppdENvZGUoKS5leGVjdXRlKCZtX3Jl
Z2lzdGVyRmlsZSwgY2xvc3VyZS5uZXdDYWxsRnJhbWUsIGNsb3N1cmUuZ2xvYmFsRGF0YSwgZXhj
ZXB0aW9uKTsKICNlbHNlCiAgICAgICAgIHJlc3VsdCA9IHByaXZhdGVFeGVjdXRlKE5vcm1hbCwg
Jm1fcmVnaXN0ZXJGaWxlLCBjbG9zdXJlLm5ld0NhbGxGcmFtZSwgZXhjZXB0aW9uKTsKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKaW5kZXggOGE4ZGM0ZC4uMDAzY2VjMiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKQEAgLTE3NjQsNyAr
MTc2NCw3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZSgpCiAgICAgbV9jb2RlQmxvY2stPnNl
dEpJVENvZGUoY29kZVJlZik7CiB9CiAKLXZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hp
bmVUcmFtcG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlUG9vbCwgdm9p
ZCoqIGN0aUFycmF5TGVuZ3RoVHJhbXBvbGluZSwgdm9pZCoqIGN0aVN0cmluZ0xlbmd0aFRyYW1w
b2xpbmUsIHZvaWQqKiBjdGlWaXJ0dWFsQ2FsbFByZUxpbmssIHZvaWQqKiBjdGlWaXJ0dWFsQ2Fs
bExpbmssIHZvaWQqKiBjdGlWaXJ0dWFsQ2FsbCkKK3ZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNU
SU1hY2hpbmVUcmFtcG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlUG9v
bCwgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkKiogY3RpQXJyYXlMZW5ndGhUcmFtcG9s
aW5lLCB2b2lkKiogY3RpU3RyaW5nTGVuZ3RoVHJhbXBvbGluZSwgdm9pZCoqIGN0aVZpcnR1YWxD
YWxsUHJlTGluaywgdm9pZCoqIGN0aVZpcnR1YWxDYWxsTGluaywgdm9pZCoqIGN0aVZpcnR1YWxD
YWxsLCB2b2lkKiogY3RpTmF0aXZlQ2FsbFRodW5rKQogewogI2lmIEVOQUJMRShKSVRfT1BUSU1J
WkVfUFJPUEVSVFlfQUNDRVNTKQogICAgIC8vICgxKSBUaGUgZmlyc3QgZnVuY3Rpb24gcHJvdmlk
ZXMgZmFzdCBwcm9wZXJ0eSBhY2Nlc3MgZm9yIGFycmF5IGxlbmd0aApAQCAtMTgxMyw5ICsxODEz
LDEyIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhSZWZQ
dHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlCiAgICAgTGFiZWwgdmlydHVhbENhbGxQcmVM
aW5rQmVnaW4gPSBhbGlnbigpOwogCiAgICAgLy8gTG9hZCB0aGUgY2FsbGVlIENvZGVCbG9jayog
aW50byBlYXgKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEZJRUxEX09GRlNFVChKU0Z1bmN0
aW9uLCBtX2JvZHkpKSwgcmVnVDApOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMCwgRklFTERf
T0ZGU0VUKEZ1bmN0aW9uQm9keU5vZGUsIG1fY29kZSkpLCByZWdUMCk7CisgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QyLCBGSUVMRF9PRkZTRVQoSlNGdW5jdGlvbiwgbV9ib2R5KSksIHJlZ1QzKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDMsIEZJRUxEX09GRlNFVChGdW5jdGlvbkJvZHlOb2Rl
LCBtX2NvZGUpKSwgcmVnVDApOwogICAgIEp1bXAgaGFzQ29kZUJsb2NrMSA9IGJyYW5jaFRlc3RQ
dHIoTm9uWmVybywgcmVnVDApOworICAgIC8vIElmIG1fY29kZSBpcyBudWxsIGFuZCBtX2ppdENv
ZGUgaXMgbm90LCB0aGVuIHdlIGhhdmUgYSBuYXRpdmUgZnVuY3Rpb24sIHNvIGFyaXR5IGlzIGly
cmVsZXZhbnQKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDMsIEZJRUxEX09GRlNFVChGdW5jdGlv
bkJvZHlOb2RlLCBtX2ppdENvZGUpKSwgcmVnVDApOworICAgIEp1bXAgaXNOYXRpdmVGdW5jMSA9
IGJyYW5jaFRlc3RQdHIoTm9uWmVybywgcmVnVDApOwogICAgIHBvcChyZWdUMyk7CiAgICAgcmVz
dG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CiAgICAgQ2FsbCBjYWxsSlNGdW5jdGlvbjEgPSBjYWxs
KCk7CkBAIC0xODM2LDYgKzE4MzksNyBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNo
aW5lVHJhbXBvbGluZXMoUmVmUHRyPEV4ZWN1dGFibGVQb29sPiogZXhlY3V0YWJsZQogICAgIGVt
aXRHZXRKSVRTdHViQXJnKDMsIHJlZ1QxKTsKICAgICBwdXNoKHJlZ1QzKTsKICAgICBhcml0eUNo
ZWNrT2theTEubGluayh0aGlzKTsKKyAgICBpc05hdGl2ZUZ1bmMxLmxpbmsodGhpcyk7CiAgICAg
CiAgICAgY29tcGlsZU9wQ2FsbEluaXRpYWxpemVDYWxsRnJhbWUoKTsKIApAQCAtMTg0Myw2ICsx
ODQ3LDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKFJl
ZlB0cjxFeGVjdXRhYmxlUG9vbD4qIGV4ZWN1dGFibGUKICAgICBlbWl0UHV0SklUU3R1YkFyZyhy
ZWdUMywgMik7CiAgICAgcmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNlKCk7CiAgICAgQ2FsbCBjYWxs
RG9udExhenlMaW5rQ2FsbCA9IGNhbGwoKTsKKyAgICBlbWl0R2V0SklUU3R1YkFyZygxLCByZWdU
Mik7CiAgICAgcHVzaChyZWdUMyk7CiAKICAgICBqdW1wKHJlZ1QwKTsKQEAgLTE4NTAsOSArMTg1
NSwxMiBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoUmVm
UHRyPEV4ZWN1dGFibGVQb29sPiogZXhlY3V0YWJsZQogICAgIExhYmVsIHZpcnR1YWxDYWxsTGlu
a0JlZ2luID0gYWxpZ24oKTsKIAogICAgIC8vIExvYWQgdGhlIGNhbGxlZSBDb2RlQmxvY2sqIGlu
dG8gZWF4Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBGSUVMRF9PRkZTRVQoSlNGdW5jdGlv
biwgbV9ib2R5KSksIHJlZ1QwKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEZJRUxEX09G
RlNFVChGdW5jdGlvbkJvZHlOb2RlLCBtX2NvZGUpKSwgcmVnVDApOworICAgIGxvYWRQdHIoQWRk
cmVzcyhyZWdUMiwgRklFTERfT0ZGU0VUKEpTRnVuY3Rpb24sIG1fYm9keSkpLCByZWdUMyk7Cisg
ICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QzLCBGSUVMRF9PRkZTRVQoRnVuY3Rpb25Cb2R5Tm9kZSwg
bV9jb2RlKSksIHJlZ1QwKTsKICAgICBKdW1wIGhhc0NvZGVCbG9jazIgPSBicmFuY2hUZXN0UHRy
KE5vblplcm8sIHJlZ1QwKTsKKyAgICAvLyBJZiBtX2NvZGUgaXMgbnVsbCBhbmQgbV9qaXRDb2Rl
IGlzIG5vdCwgdGhlbiB3ZSBoYXZlIGEgbmF0aXZlIGZ1bmN0aW9uLCBzbyBhcml0eSBpcyBpcnJl
bGV2YW50CisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QzLCBGSUVMRF9PRkZTRVQoRnVuY3Rpb25C
b2R5Tm9kZSwgbV9qaXRDb2RlKSksIHJlZ1QwKTsKKyAgICBKdW1wIGlzTmF0aXZlRnVuYzIgPSBi
cmFuY2hUZXN0UHRyKE5vblplcm8sIHJlZ1QwKTsKICAgICBwb3AocmVnVDMpOwogICAgIHJlc3Rv
cmVBcmd1bWVudFJlZmVyZW5jZSgpOwogICAgIENhbGwgY2FsbEpTRnVuY3Rpb24yID0gY2FsbCgp
OwpAQCAtMTg3Myw2ICsxODgxLDcgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlQ1RJTWFjaGlu
ZVRyYW1wb2xpbmVzKFJlZlB0cjxFeGVjdXRhYmxlUG9vbD4qIGV4ZWN1dGFibGUKICAgICBlbWl0
R2V0SklUU3R1YkFyZygzLCByZWdUMSk7CiAgICAgcHVzaChyZWdUMyk7CiAgICAgYXJpdHlDaGVj
a09rYXkyLmxpbmsodGhpcyk7CisgICAgaXNOYXRpdmVGdW5jMi5saW5rKHRoaXMpOwogCiAgICAg
Y29tcGlsZU9wQ2FsbEluaXRpYWxpemVDYWxsRnJhbWUoKTsKIApAQCAtMTg4Nyw5ICsxODk2LDEy
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhSZWZQdHI8
RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlCiAgICAgTGFiZWwgdmlydHVhbENhbGxCZWdpbiA9
IGFsaWduKCk7CiAKICAgICAvLyBMb2FkIHRoZSBjYWxsZWUgQ29kZUJsb2NrKiBpbnRvIGVheAot
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwgRklFTERfT0ZGU0VUKEpTRnVuY3Rpb24sIG1fYm9k
eSkpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBGSUVMRF9PRkZTRVQoRnVu
Y3Rpb25Cb2R5Tm9kZSwgbV9jb2RlKSksIHJlZ1QwKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmVn
VDIsIEZJRUxEX09GRlNFVChKU0Z1bmN0aW9uLCBtX2JvZHkpKSwgcmVnVDMpOworICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMywgRklFTERfT0ZGU0VUKEZ1bmN0aW9uQm9keU5vZGUsIG1fY29kZSkp
LCByZWdUMCk7CiAgICAgSnVtcCBoYXNDb2RlQmxvY2szID0gYnJhbmNoVGVzdFB0cihOb25aZXJv
LCByZWdUMCk7CisgICAgLy8gSWYgbV9jb2RlIGlzIG51bGwgYW5kIG1faml0Q29kZSBpcyBub3Qs
IHRoZW4gd2UgaGF2ZSBhIG5hdGl2ZSBmdW5jdGlvbiwgc28gYXJpdHkgaXMgaXJyZWxldmFudAor
ICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMywgRklFTERfT0ZGU0VUKEZ1bmN0aW9uQm9keU5vZGUs
IG1faml0Q29kZSkpLCByZWdUMCk7CisgICAgSnVtcCBpc05hdGl2ZUZ1bmMzID0gYnJhbmNoVGVz
dFB0cihOb25aZXJvLCByZWdUMCk7CiAgICAgcG9wKHJlZ1QzKTsKICAgICByZXN0b3JlQXJndW1l
bnRSZWZlcmVuY2UoKTsKICAgICBDYWxsIGNhbGxKU0Z1bmN0aW9uMyA9IGNhbGwoKTsKQEAgLTE5
MTAsMTQgKzE5MjIsMTE3IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFt
cG9saW5lcyhSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlCiAgICAgZW1pdEdldEpJ
VFN0dWJBcmcoMywgcmVnVDEpOwogICAgIHB1c2gocmVnVDMpOwogICAgIGFyaXR5Q2hlY2tPa2F5
My5saW5rKHRoaXMpOwotCi0gICAgY29tcGlsZU9wQ2FsbEluaXRpYWxpemVDYWxsRnJhbWUoKTsK
LQogICAgIC8vIGxvYWQgY3RpQ29kZSBmcm9tIHRoZSBuZXcgY29kZUJsb2NrLgogICAgIGxvYWRQ
dHIoQWRkcmVzcyhyZWdUMCwgRklFTERfT0ZGU0VUKENvZGVCbG9jaywgbV9qaXRDb2RlKSksIHJl
Z1QwKTsKKyAgICAKKyAgICBpc05hdGl2ZUZ1bmMzLmxpbmsodGhpcyk7CiAKKyAgICBjb21waWxl
T3BDYWxsSW5pdGlhbGl6ZUNhbGxGcmFtZSgpOwogICAgIGp1bXAocmVnVDApOwogCisgICAgCisg
ICAgTGFiZWwgbmF0aXZlQ2FsbFRodW5rID0gYWxpZ24oKTsKKyAgICBwb3AocmVnVDApOworICAg
IGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMCwgUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyk7
IC8vIFB1c2ggcmV0dXJuIGFkZHJlc3MKKworICAgIC8vIExvYWQgY2FsbGVyIGZyYW1lJ3Mgc2Nv
cGUgY2hhaW4gaW50byB0aGlzIGNhbGxmcmFtZSBzbyB0aGF0IHdoYXRldmVyIHdlIGNhbGwgY2Fu
CisgICAgLy8gZ2V0IHRvIGl0cyBnbG9iYWwgZGF0YS4KKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlcihSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lLCByZWdUMSk7CisgICAgbG9hZFB0cihB
ZGRyZXNzKHJlZ1QxLCBSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW4gKiAoaW50MzJfdClzaXplb2Yo
UmVnaXN0ZXIpKSwgcmVnVDEpOworICAgIGVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcihyZWdUMSwg
UmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluKTsKKyAgICAKKworI2lmIFBMQVRGT1JNKFg4Nl82NCkK
KyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMyKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRD
b3VudCwgWDg2OjplY3gpOworCisgICAgLy8gQWxsb2NhdGUgc3RhY2sgc3BhY2UgZm9yIG91ciBh
cmdsaXN0CisgICAgc3ViUHRyKEltbTMyKHNpemVvZihSZWdpc3RlcikgKiAyKSwgc3RhY2tQb2lu
dGVyUmVnaXN0ZXIpOworICAgIAorICAgIC8vIFNldCB1cCBhcmd1bWVudHMKKyAgICBzdWJQdHIo
SW1tMzIoMSksIFg4Njo6ZWN4KTsgLy8gRG9uJ3QgaW5jbHVkZSAndGhpcycgaW4gYXJnY291bnQK
KyAgICBwb2tlKFg4Njo6ZWN4LCAxKTsgLy8gcHVzaCBhcmdjb3VudAorICAgIAorICAgIC8vIEFy
Z3VtZW50cyBhcmUgYXQgY2FsbEZyYW1lUmVnaXN0ZXIgLSAoQ2FsbEZyYW1lSGVhZGVyU2l6ZSAr
IGFyZ0NvdW50IChyZWdUMCkpICogOAorICAgIGFkZFB0cihJbW0zMigtUmVnaXN0ZXJGaWxlOjpD
YWxsRnJhbWVIZWFkZXJTaXplICogKGludDMyX3Qpc2l6ZW9mKFJlZ2lzdGVyKSksIGNhbGxGcmFt
ZVJlZ2lzdGVyLCBYODY6OmVkeCk7CisgICAgbXVsMzIoSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSks
IFg4Njo6ZWN4LCBYODY6OmVjeCk7CisgICAgc3ViUHRyKFg4Njo6ZWN4LCBYODY6OmVkeCk7Cisg
ICAgcG9rZShYODY6OmVkeCwgMCk7IC8vIHB1c2ggcG9pbnRlciB0byBhcmd1bWVudHMKKyAgICAK
KyAgICAvLyBBcmdMaXN0IGlzIHBhc3NlZCBieSByZWZlcmVuY2Ugc28gaXMgc3RhY2tQb2ludGVy
UmVnaXN0ZXIgKyA0ICogc2l6ZW9mKFJlZ2lzdGVyKQorICAgIG1vdmUoc3RhY2tQb2ludGVyUmVn
aXN0ZXIsIFg4Njo6ZWN4KTsKKyAgICAKKyAgICAvLyByZWdUMSBjdXJyZW50bHkgcG9pbnRzIHRv
IHRoZSBmaXJzdCBhcmd1bWVudCwgcmVnVDEtc2l6ZW9mKFJlZ2lzdGVyKSBwb2ludHMgdG8gJ3Ro
aXMnCisgICAgbG9hZFB0cihBZGRyZXNzKFg4Njo6ZWR4LCAtKGludDMyX3Qpc2l6ZW9mKFJlZ2lz
dGVyKSksIFg4Njo6ZWR4KTsKKyAgICAKKyAgICBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcihS
ZWdpc3RlckZpbGU6OkNhbGxlZSwgWDg2Ojplc2kpOworICAgIAorICAgIG1vdmUoY2FsbEZyYW1l
UmVnaXN0ZXIsIFg4Njo6ZWRpKTsgLy8gcHVzaCBleGVjICAwCisgICAgCisgICAgbG9hZFB0cihB
ZGRyZXNzKFg4Njo6ZXNpLCBGSUVMRF9PRkZTRVQoSlNGdW5jdGlvbiwgbV9kYXRhKSksIHNjcmF0
Y2hSZWdpc3Rlcik7CisgICAgY2FsbChzY3JhdGNoUmVnaXN0ZXIpOworICAgIGFkZFB0cihJbW0z
MihzaXplb2YoUmVnaXN0ZXIpICogMiksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyNlbHNlCisg
ICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50
LCByZWdUMCk7CisKKyAgICAvLyBBbGxvY2F0ZSBzeXN0ZW0gc3RhY2sgZnJhbWUKKyAgICBzdWJQ
dHIoSW1tMzIoc2l6ZW9mKFJlZ2lzdGVyKSAqIDgpLCBzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisK
KyAgICAvLyBTZXQgdXAgYXJndW1lbnRzCisgICAgc3ViUHRyKEltbTMyKDEpLCByZWdUMCk7IC8v
IERvbid0IGluY2x1ZGUgJ3RoaXMnIGluIGFyZ2NvdW50CisgICAgcG9rZShyZWdUMCwgNSk7IC8v
IHB1c2ggYXJnY291bnQKKworICAgIC8vIEFyZ3VtZW50cyBhcmUgYXQgY2FsbEZyYW1lUmVnaXN0
ZXIgLSAoQ2FsbEZyYW1lSGVhZGVyU2l6ZSArIGFyZ0NvdW50IChyZWdUMCkpICogOAorICAgIGFk
ZFB0cihJbW0zMigtUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplICogc2l6ZW9mKFJl
Z2lzdGVyKSksIGNhbGxGcmFtZVJlZ2lzdGVyLCByZWdUMSk7CisgICAgbXVsMzIoSW1tMzIoc2l6
ZW9mKFJlZ2lzdGVyKSksIHJlZ1QwLCByZWdUMCk7CisgICAgc3ViUHRyKHJlZ1QwLCByZWdUMSk7
CisgICAgcG9rZShyZWdUMSwgNCk7IC8vIHB1c2ggcG9pbnRlciB0byBhcmd1bWVudHMKKworICAg
IC8vIEFyZ0xpc3QgaXMgcGFzc2VkIGJ5IHJlZmVyZW5jZSBzbyBpcyBzdGFja1BvaW50ZXJSZWdp
c3RlciArIDQgKiBzaXplb2YoUmVnaXN0ZXIpCisgICAgYWRkUHRyKEltbTMyKDQgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgc3RhY2tQb2ludGVyUmVnaXN0ZXIsIHJlZ1QwKTsKKyAgICBwb2tlKHJlZ1Qw
LCAzKTsKKworICAgIC8vIHJlZ1QxIGN1cnJlbnRseSBwb2ludHMgdG8gdGhlIGZpcnN0IGFyZ3Vt
ZW50LCByZWdUMS1zaXplb2YoUmVnaXN0ZXIpIHBvaW50cyB0byAndGhpcycKKyAgICBsb2FkUHRy
KEFkZHJlc3MocmVnVDEsIC1zaXplb2YoUmVnaXN0ZXIpKSwgcmVnVDEpOworICAgIHBva2UocmVn
VDEsIDIpOworICAgIAorICAgIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVyRmls
ZTo6Q2FsbGVlLCByZWdUMik7CisKKyAgICBwb2tlKHJlZ1QyLCAxKTsgLy8gcHVzaCBjYWxsZWUg
IDEKKyAgICBwb2tlKGNhbGxGcmFtZVJlZ2lzdGVyLCAwKTsgLy8gcHVzaCBleGVjICAwCisKKyAg
ICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEZJRUxEX09GRlNFVChKU0Z1bmN0aW9uLCBtX2RhdGEp
KSwgcmVnVDIpOworICAgIGNhbGwocmVnVDIpOworICAgIGFkZFB0cihJbW0zMihzaXplb2YoUmVn
aXN0ZXIpICogOCksIHN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyNlbmRpZgorCisgICAgLy8gQ2hl
Y2sgZm9yIGFuIGV4Y2VwdGlvbgorICAgIGxvYWRQdHIoJihnbG9iYWxEYXRhLT5leGNlcHRpb24p
LCByZWdUMik7CisgICAgSnVtcCBleGNlcHRpb25IYW5kbGVyID0gYnJhbmNoVGVzdFB0cihOb25a
ZXJvLCByZWdUMik7CisKKyAgICAvLyBHcmFiIHRoZSByZXR1cm4gYWRkcmVzcy4KKyAgICBlbWl0
R2V0RnJvbUNhbGxGcmFtZUhlYWRlcihSZWdpc3RlckZpbGU6OlJldHVyblBDLCByZWdUMSk7Cisg
ICAgCisgICAgLy8gUmVzdG9yZSBvdXIgY2FsbGVyJ3MgInIiLgorICAgIGVtaXRHZXRGcm9tQ2Fs
bEZyYW1lSGVhZGVyKFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUsIGNhbGxGcmFtZVJlZ2lzdGVy
KTsKKyAgICAKKyAgICAvLyBSZXR1cm4uCisgICAgcHVzaChyZWdUMSk7CisgICAgcmV0KCk7Cisg
ICAgYnJlYWtwb2ludCgpOworICAgIC8vIEhhbmRsZSBhbiBleGNlcHRpb24KKyAgICBleGNlcHRp
b25IYW5kbGVyLmxpbmsodGhpcyk7CisgICAgLy8gR3JhYiB0aGUgcmV0dXJuIGFkZHJlc3MuCisg
ICAgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQywgcmVn
VDEpOworICAgIG1vdmUoSW1tUHRyKCZnbG9iYWxEYXRhLT5leGNlcHRpb25Mb2NhdGlvbiksIHJl
Z1QyKTsKKyAgICBzdG9yZVB0cihyZWdUMSwgcmVnVDIpOworICAgIG1vdmUoSW1tUHRyKHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KGN0aVZNVGhyb3dUcmFtcG9saW5lKSksIHJlZ1QyKTsKKyAgICBl
bWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcihSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lLCBjYWxs
RnJhbWVSZWdpc3Rlcik7CisgICAgZW1pdFB1dENUSVBhcmFtKGNhbGxGcmFtZVJlZ2lzdGVyLCBT
VFVCX0FSR1NfY2FsbEZyYW1lKTsKKyAgICByZXN0b3JlQXJndW1lbnRSZWZlcmVuY2VGb3JUcmFt
cG9saW5lKCk7CisgICAgcHVzaChyZWdUMik7CisgICAgcmV0KCk7CisgICAgCisKICNpZiBFTkFC
TEUoSklUX09QVElNSVpFX1BST1BFUlRZX0FDQ0VTUykKICAgICBDYWxsIGFycmF5X2ZhaWx1cmVD
YXNlczFDYWxsID0gbWFrZVRhaWxSZWN1cnNpdmVDYWxsKGFycmF5X2ZhaWx1cmVDYXNlczEpOwog
ICAgIENhbGwgYXJyYXlfZmFpbHVyZUNhc2VzMkNhbGwgPSBtYWtlVGFpbFJlY3Vyc2l2ZUNhbGwo
YXJyYXlfZmFpbHVyZUNhc2VzMik7CkBAIC0xOTU4LDYgKzIwNzMsNyBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoUmVmUHRyPEV4ZWN1dGFibGVQb29sPiog
ZXhlY3V0YWJsZQogICAgICpjdGlWaXJ0dWFsQ2FsbFByZUxpbmsgPSBwYXRjaEJ1ZmZlci50cmFt
cG9saW5lQXQodmlydHVhbENhbGxQcmVMaW5rQmVnaW4pOwogICAgICpjdGlWaXJ0dWFsQ2FsbExp
bmsgPSBwYXRjaEJ1ZmZlci50cmFtcG9saW5lQXQodmlydHVhbENhbGxMaW5rQmVnaW4pOwogICAg
ICpjdGlWaXJ0dWFsQ2FsbCA9IHBhdGNoQnVmZmVyLnRyYW1wb2xpbmVBdCh2aXJ0dWFsQ2FsbEJl
Z2luKTsKKyAgICAqY3RpTmF0aXZlQ2FsbFRodW5rID0gcGF0Y2hCdWZmZXIudHJhbXBvbGluZUF0
KG5hdGl2ZUNhbGxUaHVuayk7CiB9CiAKIHZvaWQgSklUOjplbWl0R2V0VmFyaWFibGVPYmplY3RS
ZWdpc3RlcihSZWdpc3RlcklEIHZhcmlhYmxlT2JqZWN0LCBpbnQgaW5kZXgsIFJlZ2lzdGVySUQg
ZHN0KQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5oCmluZGV4IDMwNWEwODcuLjM2MmVjYzkgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmgKQEAgLTM2Miwx
MSArMzYyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaml0LnByaXZhdGVDb21w
aWxlUHV0QnlJZFRyYW5zaXRpb24oc3R1YkluZm8sIG9sZFN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
LCBjYWNoZWRPZmZzZXQsIGNoYWluLCByZXR1cm5BZGRyZXNzKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBSZWZQdHI8RXhlY3V0YWJsZVBvb2w+KiBleGVjdXRhYmxlUG9vbCwgdm9p
ZCoqIGN0aUFycmF5TGVuZ3RoVHJhbXBvbGluZSwgdm9pZCoqIGN0aVN0cmluZ0xlbmd0aFRyYW1w
b2xpbmUsIHZvaWQqKiBjdGlWaXJ0dWFsQ2FsbFByZUxpbmssIHZvaWQqKiBjdGlWaXJ0dWFsQ2Fs
bExpbmssIHZvaWQqKiBjdGlWaXJ0dWFsQ2FsbCkKKyAgICAgICAgc3RhdGljIHZvaWQgY29tcGls
ZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIFJlZlB0cjxF
eGVjdXRhYmxlUG9vbD4qIGV4ZWN1dGFibGVQb29sLCB2b2lkKiogY3RpQXJyYXlMZW5ndGhUcmFt
cG9saW5lLCB2b2lkKiogY3RpU3RyaW5nTGVuZ3RoVHJhbXBvbGluZSwgdm9pZCoqIGN0aVZpcnR1
YWxDYWxsUHJlTGluaywgdm9pZCoqIGN0aVZpcnR1YWxDYWxsTGluaywgdm9pZCoqIGN0aVZpcnR1
YWxDYWxsLCB2b2lkKiogY3RpTmF0aXZlQ2FsbFRodW5rKQogCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEpJVCBqaXQoZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICBqaXQucHJpdmF0ZUNvbXBpbGVD
VElNYWNoaW5lVHJhbXBvbGluZXMoZXhlY3V0YWJsZVBvb2wsIGN0aUFycmF5TGVuZ3RoVHJhbXBv
bGluZSwgY3RpU3RyaW5nTGVuZ3RoVHJhbXBvbGluZSwgY3RpVmlydHVhbENhbGxQcmVMaW5rLCBj
dGlWaXJ0dWFsQ2FsbExpbmssIGN0aVZpcnR1YWxDYWxsKTsKKyAgICAgICAgICAgIGppdC5wcml2
YXRlQ29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhleGVjdXRhYmxlUG9vbCwgZ2xvYmFsRGF0
YSwgY3RpQXJyYXlMZW5ndGhUcmFtcG9saW5lLCBjdGlTdHJpbmdMZW5ndGhUcmFtcG9saW5lLCBj
dGlWaXJ0dWFsQ2FsbFByZUxpbmssIGN0aVZpcnR1YWxDYWxsTGluaywgY3RpVmlydHVhbENhbGws
IGN0aU5hdGl2ZUNhbGxUaHVuayk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgdm9pZCBw
YXRjaEdldEJ5SWRTZWxmKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgUHJvY2Vzc29yUmV0dXJuQWRkcmVzcyByZXR1cm5BZGRyZXNzKTsKQEAgLTM5
OSw3ICszOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcml2YXRlQ29tcGls
ZVB1dEJ5SWRSZXBsYWNlKFN0cnVjdHVyZVN0dWJJbmZvKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgUHJvY2Vzc29yUmV0dXJuQWRkcmVzcyByZXR1cm5BZGRyZXNzKTsKICAgICAg
ICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKFN0cnVjdHVyZVN0dWJJbmZv
KiwgU3RydWN0dXJlKiwgU3RydWN0dXJlKiwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJl
Q2hhaW4qLCBQcm9jZXNzb3JSZXR1cm5BZGRyZXNzIHJldHVybkFkZHJlc3MpOwogCi0gICAgICAg
IHZvaWQgcHJpdmF0ZUNvbXBpbGVDVElNYWNoaW5lVHJhbXBvbGluZXMoUmVmUHRyPEV4ZWN1dGFi
bGVQb29sPiogZXhlY3V0YWJsZVBvb2wsIHZvaWQqKiBjdGlBcnJheUxlbmd0aFRyYW1wb2xpbmUs
IHZvaWQqKiBjdGlTdHJpbmdMZW5ndGhUcmFtcG9saW5lLCB2b2lkKiogY3RpVmlydHVhbENhbGxQ
cmVMaW5rLCB2b2lkKiogY3RpVmlydHVhbENhbGxMaW5rLCB2b2lkKiogY3RpVmlydHVhbENhbGwp
OworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlQ1RJTWFjaGluZVRyYW1wb2xpbmVzKFJlZlB0
cjxFeGVjdXRhYmxlUG9vbD4qIGV4ZWN1dGFibGVQb29sLCBKU0dsb2JhbERhdGEqIGRhdGEsIHZv
aWQqKiBjdGlBcnJheUxlbmd0aFRyYW1wb2xpbmUsIHZvaWQqKiBjdGlTdHJpbmdMZW5ndGhUcmFt
cG9saW5lLCB2b2lkKiogY3RpVmlydHVhbENhbGxQcmVMaW5rLCB2b2lkKiogY3RpVmlydHVhbENh
bGxMaW5rLCB2b2lkKiogY3RpVmlydHVhbENhbGwsIHZvaWQqKiBjdGlOYXRpdmVDYWxsVGh1bmsp
OwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChQcm9jZXNz
b3JSZXR1cm5BZGRyZXNzIHJldHVybkFkZHJlc3MpOwogCiAgICAgICAgIHZvaWQgYWRkU2xvd0Nh
c2UoSnVtcCk7CkBAIC00NjgsNiArNDY4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKFJlZ2lzdGVySUQgZnJvbSwgUmVnaXN0ZXJGaWxl
OjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSk7CiAgICAgICAgIHZvaWQgZW1pdFB1dEltbWVk
aWF0ZVRvQ2FsbEZyYW1lSGVhZGVyKHZvaWQqIHZhbHVlLCBSZWdpc3RlckZpbGU6OkNhbGxGcmFt
ZUhlYWRlckVudHJ5IGVudHJ5KTsKICAgICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlcihSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3RlcklE
IHRvKTsKKyAgICAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcjMyKFJlZ2lzdGVy
RmlsZTo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIFJlZ2lzdGVySUQgdG8pOwogCiAgICAg
ICAgIEpTVmFsdWUgZ2V0Q29uc3RhbnRPcGVyYW5kKHVuc2lnbmVkIHNyYyk7CiAgICAgICAgIGlu
dDMyX3QgZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KHVuc2lnbmVkIHNyYyk7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbC5jcHAKaW5kZXggNGEyMzQ3MC4uNDkwZmI0NyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxs
LmNwcApAQCAtNTYsMTAgKzU2LDExIEBAIHZvaWQgSklUOjp1bmxpbmtDYWxsKENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvKQogdm9pZCBKSVQ6OmxpbmtDYWxsKEpTRnVuY3Rpb24qIGNhbGxlZSwg
Q29kZUJsb2NrKiBjYWxsZWVDb2RlQmxvY2ssIEpJVENvZGUgY3RpQ29kZSwgQ2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8sIGludCBjYWxsZXJBcmdDb3VudCkKIHsKICAgICAvLyBDdXJyZW50bHkg
d2Ugb25seSBsaW5rIGNhbGxzIHdpdGggdGhlIGV4YWN0IG51bWJlciBvZiBhcmd1bWVudHMuCi0g
ICAgaWYgKGNhbGxlckFyZ0NvdW50ID09IGNhbGxlZUNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJz
KSB7CisgICAgaWYgKCFjYWxsZWVDb2RlQmxvY2sgfHwgY2FsbGVyQXJnQ291bnQgPT0gY2FsbGVl
Q29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpIHsKICAgICAgICAgQVNTRVJUKCFjYWxsTGlua0lu
Zm8tPmlzTGlua2VkKCkpOwogICAgIAotICAgICAgICBjYWxsZWVDb2RlQmxvY2stPmFkZENhbGxl
cihjYWxsTGlua0luZm8pOworICAgICAgICBpZiAoY2FsbGVlQ29kZUJsb2NrKQorICAgICAgICAg
ICAgY2FsbGVlQ29kZUJsb2NrLT5hZGRDYWxsZXIoY2FsbExpbmtJbmZvKTsKICAgICAKICAgICAg
ICAgY2FsbExpbmtJbmZvLT5ob3RQYXRoQmVnaW4ucmVwYXRjaChjYWxsZWUpOwogICAgICAgICBj
YWxsTGlua0luZm8tPmhvdFBhdGhPdGhlci5yZWxpbmsoY3RpQ29kZS5hZGRyZXNzRm9yQ2FsbCgp
KTsKQEAgLTczLDcgKzc0LDcgQEAgdm9pZCBKSVQ6OmNvbXBpbGVPcENhbGxJbml0aWFsaXplQ2Fs
bEZyYW1lKCkKIHsKICAgICBzdG9yZTMyKHJlZ1QxLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVy
LCBSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihS
ZWdpc3RlcikpKSk7CiAKLSAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEZJRUxEX09GRlNFVChK
U0Z1bmN0aW9uLCBtX3Njb3BlQ2hhaW4pICsgRklFTERfT0ZGU0VUKFNjb3BlQ2hhaW4sIG1fbm9k
ZSkpLCByZWdUMSk7IC8vIG5ld1Njb3BlQ2hhaW4KKyAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIs
IEZJRUxEX09GRlNFVChKU0Z1bmN0aW9uLCBtX2RhdGEpICsgRklFTERfT0ZGU0VUKFNjb3BlQ2hh
aW4sIG1fbm9kZSkpLCByZWdUMSk7IC8vIG5ld1Njb3BlQ2hhaW4KIAogICAgIHN0b3JlUHRyKElt
bVB0cihKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIFJlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVudHMgKiBzdGF0aWNfY2FzdDxp
bnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAgICAgc3RvcmVQdHIocmVnVDIsIEFkZHJlc3MoY2Fs
bEZyYW1lUmVnaXN0ZXIsIFJlZ2lzdGVyRmlsZTo6Q2FsbGVlICogc3RhdGljX2Nhc3Q8aW50Pihz
aXplb2YoUmVnaXN0ZXIpKSkpOwpAQCAtMjQyLDcgKzI0Myw3IEBAIHZvaWQgSklUOjpjb21waWxl
T3BDYWxsKE9wY29kZUlEIG9wY29kZUlELCBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24sIHVuc2ln
bmVkIGNhCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgb21pdHMgdG8gc2V0IHVwIFJlZ2lzdGVyRmls
ZTo6Q29kZUJsb2NrLCB3aGljaCBpcyBzZXQgaW4gdGhlIGNhbGxlZQogICAgIHN0b3JlUHRyKElt
bVB0cihKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKSksIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0
ZXIsIChyZWdpc3Rlck9mZnNldCArIFJlZ2lzdGVyRmlsZTo6T3B0aW9uYWxDYWxsZWVBcmd1bWVu
dHMpICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgIHN0b3JlUHRy
KHJlZ1QyLCBBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCAocmVnaXN0ZXJPZmZzZXQgKyBSZWdp
c3RlckZpbGU6OkNhbGxlZSkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7
Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBGSUVMRF9PRkZTRVQoSlNGdW5jdGlvbiwgbV9z
Y29wZUNoYWluKSArIEZJRUxEX09GRlNFVChTY29wZUNoYWluLCBtX25vZGUpKSwgcmVnVDEpOyAv
LyBuZXdTY29wZUNoYWluCisgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QyLCBGSUVMRF9PRkZTRVQo
SlNGdW5jdGlvbiwgbV9kYXRhKSArIEZJRUxEX09GRlNFVChTY29wZUNoYWluLCBtX25vZGUpKSwg
cmVnVDEpOyAvLyBuZXdTY29wZUNoYWluCiAgICAgc3RvcmUzMihJbW0zMihhcmdDb3VudCksIEFk
ZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIChyZWdpc3Rlck9mZnNldCArIFJlZ2lzdGVyRmlsZTo6
QXJndW1lbnRDb3VudCkgKiBzdGF0aWNfY2FzdDxpbnQ+KHNpemVvZihSZWdpc3RlcikpKSk7CiAg
ICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIs
IChyZWdpc3Rlck9mZnNldCArIFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUpICogc3RhdGljX2Nh
c3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwogICAgIHN0b3JlUHRyKHJlZ1QxLCBBZGRyZXNz
KGNhbGxGcmFtZVJlZ2lzdGVyLCAocmVnaXN0ZXJPZmZzZXQgKyBSZWdpc3RlckZpbGU6OlNjb3Bl
Q2hhaW4pICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSkpOwpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
b2RlLmgKaW5kZXggMWZiMTQ4ZS4uNGVmNTZhNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC01Niw3
ICs1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBvcGVyYXRvciBib29sKCkKKyAgICAgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0CiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBjb2RlICE9IDA7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmggYi9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUSW5saW5lTWV0aG9kcy5oCmluZGV4IDdiZDk1ZmUuLjA2MjNkYTEgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKKysrIGIvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZU1ldGhvZHMuaApAQCAtMTc0LDYgKzE3NCwxMiBAQCBBTFdBWVNfSU5M
SU5FIHZvaWQgSklUOjplbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlcihSZWdpc3RlckZpbGU6OkNh
bGxGcmFtZUhlYWRlcgogICAgIGtpbGxMYXN0UmVzdWx0UmVnaXN0ZXIoKTsKIH0KIAorQUxXQVlT
X0lOTElORSB2b2lkIEpJVDo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIzMihSZWdpc3RlckZp
bGU6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBSZWdpc3RlcklEIHRvKQoreworICAgIGxv
YWQzMihBZGRyZXNzKGNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3Rlcikp
LCB0byk7CisgICAga2lsbExhc3RSZXN1bHRSZWdpc3RlcigpOworfQorCiBBTFdBWVNfSU5MSU5F
IHZvaWQgSklUOjplbWl0UHV0VmlydHVhbFJlZ2lzdGVyKHVuc2lnbmVkIGRzdCwgUmVnaXN0ZXJJ
RCBmcm9tKQogewogICAgIHN0b3JlUHRyKGZyb20sIEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIs
IGRzdCAqIHNpemVvZihSZWdpc3RlcikpKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IGVh
MDI5ZTMuLmE5MTM0MmUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtNzQsOCArNzQsOSBA
QCBKSVRTdHViczo6SklUU3R1YnMoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgICwgbV9j
dGlWaXJ0dWFsQ2FsbFByZUxpbmsoMCkKICAgICAsIG1fY3RpVmlydHVhbENhbGxMaW5rKDApCiAg
ICAgLCBtX2N0aVZpcnR1YWxDYWxsKDApCisgICAgLCBtX2N0aU5hdGl2ZUNhbGxUaHVuaygwKQog
ewotICAgIEpJVDo6Y29tcGlsZUNUSU1hY2hpbmVUcmFtcG9saW5lcyhnbG9iYWxEYXRhLCAmbV9l
eGVjdXRhYmxlUG9vbCwgJm1fY3RpQXJyYXlMZW5ndGhUcmFtcG9saW5lLCAmbV9jdGlTdHJpbmdM
ZW5ndGhUcmFtcG9saW5lLCAmbV9jdGlWaXJ0dWFsQ2FsbFByZUxpbmssICZtX2N0aVZpcnR1YWxD
YWxsTGluaywgJm1fY3RpVmlydHVhbENhbGwpOworICAgIEpJVDo6Y29tcGlsZUNUSU1hY2hpbmVU
cmFtcG9saW5lcyhnbG9iYWxEYXRhLCAmbV9leGVjdXRhYmxlUG9vbCwgJm1fY3RpQXJyYXlMZW5n
dGhUcmFtcG9saW5lLCAmbV9jdGlTdHJpbmdMZW5ndGhUcmFtcG9saW5lLCAmbV9jdGlWaXJ0dWFs
Q2FsbFByZUxpbmssICZtX2N0aVZpcnR1YWxDYWxsTGluaywgJm1fY3RpVmlydHVhbENhbGwsICZt
X2N0aU5hdGl2ZUNhbGxUaHVuayk7CiB9CiAKICNpZiBFTkFCTEUoSklUX09QVElNSVpFX1BST1BF
UlRZX0FDQ0VTUykKQEAgLTgxOSwxMyArODIwLDEyIEBAIHZvaWQqIEpJVFN0dWJzOjpjdGlfb3Bf
Y2FsbF9KU0Z1bmN0aW9uKFNUVUJfQVJHUykKICAgICBBU1NFUlQoQVJHX3NyYzEuZ2V0Q2FsbERh
dGEoY2FsbERhdGEpID09IENhbGxUeXBlSlMpOwogI2VuZGlmCiAKLSAgICBTY29wZUNoYWluTm9k
ZSogY2FsbERhdGFTY29wZUNoYWluID0gYXNGdW5jdGlvbihBUkdfc3JjMSktPnNjb3BlKCkubm9k
ZSgpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmFzRnVuY3Rpb24oQVJHX3NyYzEp
LT5ib2R5KCktPmJ5dGVjb2RlKGNhbGxEYXRhU2NvcGVDaGFpbik7CisgICAgSlNGdW5jdGlvbiog
ZnVuY3Rpb24gPSBhc0Z1bmN0aW9uKEFSR19zcmMxKTsKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBi
b2R5ID0gZnVuY3Rpb24tPmJvZHkoKTsKKyAgICBTY29wZUNoYWluTm9kZSogY2FsbERhdGFTY29w
ZUNoYWluID0gZnVuY3Rpb24tPnNjb3BlKCkubm9kZSgpOworICAgIGJvZHktPmppdENvZGUoY2Fs
bERhdGFTY29wZUNoYWluKTsKIAotICAgIGlmICghbmV3Q29kZUJsb2NrLT5qaXRDb2RlKCkpCi0g
ICAgICAgIEpJVDo6Y29tcGlsZShBUkdfZ2xvYmFsRGF0YSwgbmV3Q29kZUJsb2NrKTsKLQotICAg
IHJldHVybiBuZXdDb2RlQmxvY2s7CisgICAgcmV0dXJuICYoYm9keS0+Z2VuZXJhdGVkQnl0ZWNv
ZGUoKSk7CiB9CiAKIFZvaWRQdHJQYWlyIEpJVFN0dWJzOjpjdGlfb3BfY2FsbF9hcml0eUNoZWNr
KFNUVUJfQVJHUykKQEAgLTg3OSwxMyArODc5LDEzIEBAIHZvaWQqIEpJVFN0dWJzOjpjdGlfdm1f
ZG9udExhenlMaW5rQ2FsbChTVFVCX0FSR1MpCiAKICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSBBUkdfZ2xvYmFsRGF0YTsKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9u
KEFSR19zcmMxKTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZjYWxsZWUtPmJvZHkoKS0+
Ynl0ZWNvZGUoY2FsbGVlLT5zY29wZSgpLm5vZGUoKSk7Ci0gICAgaWYgKCFjb2RlQmxvY2stPmpp
dENvZGUoKSkKLSAgICAgICAgSklUOjpjb21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jayk7Cisg
ICAgSklUQ29kZSBqaXRDb2RlID0gY2FsbGVlLT5ib2R5KCktPmdlbmVyYXRlZEpJVENvZGUoKTsK
KyAgICBpZiAoIWppdENvZGUpCisgICAgICAgIGNhbGxlZS0+Ym9keSgpLT5qaXRDb2RlKGNhbGxl
ZS0+c2NvcGUoKS5ub2RlKCkpOwogCiAgICAgY3RpUGF0Y2hOZWFyQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhBUkdfcmV0dXJuQWRkcmVzczIsIGdsb2JhbERhdGEtPmppdFN0dWJzLmN0aVZpcnR1YWxDYWxs
TGluaygpKTsKIAotICAgIHJldHVybiBjb2RlQmxvY2stPmppdENvZGUoKS5hZGRyZXNzRm9yQ2Fs
bCgpOworICAgIHJldHVybiBqaXRDb2RlLmFkZHJlc3NGb3JDYWxsKCk7CiB9CiAKIHZvaWQqIEpJ
VFN0dWJzOjpjdGlfdm1fbGF6eUxpbmtDYWxsKFNUVUJfQVJHUykKQEAgLTg5MywxNCArODkzLDE2
IEBAIHZvaWQqIEpJVFN0dWJzOjpjdGlfdm1fbGF6eUxpbmtDYWxsKFNUVUJfQVJHUykKICAgICBC
RUdJTl9TVFVCX0ZVTkNUSU9OKCk7CiAKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0
aW9uKEFSR19zcmMxKTsKLSAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZjYWxsZWUtPmJvZHko
KS0+Ynl0ZWNvZGUoY2FsbGVlLT5zY29wZSgpLm5vZGUoKSk7Ci0gICAgaWYgKCFjb2RlQmxvY2st
PmppdENvZGUoKSkKLSAgICAgICAgSklUOjpjb21waWxlKEFSR19nbG9iYWxEYXRhLCBjb2RlQmxv
Y2spOworICAgIEpJVENvZGUgaml0Q29kZSA9IGNhbGxlZS0+Ym9keSgpLT5nZW5lcmF0ZWRKSVRD
b2RlKCk7CisgICAgQVNTRVJUKGppdENvZGUpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
MDsKKyAgICBpZiAoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZUJsb2Nr
ID0gJmNhbGxlZS0+Ym9keSgpLT5ieXRlY29kZShjYWxsZWUtPnNjb3BlKCkubm9kZSgpKTsKIAog
ICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gJkFSR19jYWxsRnJhbWUtPmNhbGxlckZy
YW1lKCktPmNvZGVCbG9jaygpLT5nZXRDYWxsTGlua0luZm8oQVJHX3JldHVybkFkZHJlc3MyKTsK
LSAgICBKSVQ6OmxpbmtDYWxsKGNhbGxlZSwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmppdENvZGUo
KSwgY2FsbExpbmtJbmZvLCBBUkdfaW50Myk7CisgICAgSklUOjpsaW5rQ2FsbChjYWxsZWUsIGNv
ZGVCbG9jaywgaml0Q29kZSwgY2FsbExpbmtJbmZvLCBBUkdfaW50Myk7CiAKLSAgICByZXR1cm4g
Y29kZUJsb2NrLT5qaXRDb2RlKCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICByZXR1cm4gaml0Q29k
ZS5hZGRyZXNzRm9yQ2FsbCgpOwogfQogCiBKU09iamVjdCogSklUU3R1YnM6OmN0aV9vcF9wdXNo
X2FjdGl2YXRpb24oU1RVQl9BUkdTKQpAQCAtMTA1OSwxNiArMTA2MSwyNSBAQCBKU09iamVjdCog
SklUU3R1YnM6OmN0aV9vcF9jb25zdHJ1Y3RfSlNDb25zdHJ1Y3QoU1RVQl9BUkdTKQogewogICAg
IEJFR0lOX1NUVUJfRlVOQ1RJT04oKTsKIAorICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0g
YXNGdW5jdGlvbihBUkdfc3JjMSk7CisgICAgaWYgKGNvbnN0cnVjdG9yLT5pc0hvc3RGdW5jdGlv
bigpKSB7CisgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gQVJHX2NhbGxGcmFtZTsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOworICAg
ICAgICB1bnNpZ25lZCB2UENJbmRleCA9IGNvZGVCbG9jay0+Z2V0Qnl0ZWNvZGVJbmRleChjYWxs
RnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MpOworICAgICAgICBBUkdfZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uID0gY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoY2FsbEZyYW1lLCBjb25zdHJ1Y3Rv
ciwgdlBDSW5kZXgsIGNvZGVCbG9jayk7CisgICAgICAgIFZNX1RIUk9XX0VYQ0VQVElPTigpOwor
ICAgIH0KKwogI2lmbmRlZiBOREVCVUcKICAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
Ci0gICAgQVNTRVJUKGFzRnVuY3Rpb24oQVJHX3NyYzEpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0
cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5n
ZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CiAjZW5k
aWYKIAogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOwogICAgIGlmIChBUkdfc3JjNC5pc09iamVj
dCgpKQogICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChBUkdfc3JjNCktPmluaGVyaXRvcklE
KCk7CiAgICAgZWxzZQotICAgICAgICBzdHJ1Y3R1cmUgPSBhc0Z1bmN0aW9uKEFSR19zcmMxKS0+
c2NvcGUoKS5ub2RlKCktPmdsb2JhbE9iamVjdCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOwor
ICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS5ub2RlKCktPmdsb2JhbE9i
amVjdCgpLT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOwogICAgIHJldHVybiBuZXcgKEFSR19nbG9i
YWxEYXRhKSBKU09iamVjdChzdHJ1Y3R1cmUpOwogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaCBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCmluZGV4
IGQ3OGY3ZGYuLmQ5MzMyNmUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5oCkBAIC0yMTAsNiArMjEwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQqIGN0aVZpcnR1YWxDYWxsUHJlTGluaygp
IHsgcmV0dXJuIG1fY3RpVmlydHVhbENhbGxQcmVMaW5rOyB9CiAgICAgICAgIHZvaWQqIGN0aVZp
cnR1YWxDYWxsTGluaygpIHsgcmV0dXJuIG1fY3RpVmlydHVhbENhbGxMaW5rOyB9CiAgICAgICAg
IHZvaWQqIGN0aVZpcnR1YWxDYWxsKCkgeyByZXR1cm4gbV9jdGlWaXJ0dWFsQ2FsbDsgfQorICAg
ICAgICB2b2lkKiBjdGlOYXRpdmVDYWxsVGh1bmsoKSB7IHJldHVybiBtX2N0aU5hdGl2ZUNhbGxU
aHVuazsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPEV4ZWN1dGFibGVQb29sPiBt
X2V4ZWN1dGFibGVQb29sOwpAQCAtMjE5LDYgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkKiBtX2N0aVZpcnR1YWxDYWxsUHJlTGluazsKICAgICAgICAgdm9pZCogbV9jdGlW
aXJ0dWFsQ2FsbExpbms7CiAgICAgICAgIHZvaWQqIG1fY3RpVmlydHVhbENhbGw7CisgICAgICAg
IHZvaWQqIG1fY3RpTmF0aXZlQ2FsbFRodW5rOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKaW5kZXggZmRlMjQzMy4uY2EwMmFjNyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcuaCIK
ICNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTTG9jay5oIgogI2luY2x1ZGUgIlByb3RvdHlwZUZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiU2Ft
cGxpbmdUb29sLmgiCkBAIC0xNzYsMTggKzE3NywxOCBAQCBBU1NFUlRfQ0xBU1NfRklUU19JTl9D
RUxMKEdsb2JhbE9iamVjdCk7CiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChjb25zdCBWZWN0
b3I8VVN0cmluZz4mIGFyZ3VtZW50cykKICAgICA6IEpTR2xvYmFsT2JqZWN0KCkKIHsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBQcm90b3R5
cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIDEs
IElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAiZGVidWciKSwgZnVuY3Rpb25EZWJ1ZykpOwotICAg
IHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIFByb3Rv
dHlwZUZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwg
MSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJwcmludCIpLCBmdW5jdGlvblByaW50KSk7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgUHJv
dG90eXBlRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgp
LCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0KSk7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgUHJv
dG90eXBlRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgp
LCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImdjIiksIGZ1bmN0aW9uR0MpKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBQcm90b3R5
cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIDEs
IElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAidmVyc2lvbiIpLCBmdW5jdGlvblZlcnNpb24pKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBQ
cm90b3R5cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJl
KCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgUHJv
dG90eXBlRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgp
LCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImxvYWQiKSwgZnVuY3Rpb25Mb2FkKSk7Ci0g
ICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgUHJv
dG90eXBlRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgp
LCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInJlYWRsaW5lIiksIGZ1bmN0aW9uUmVhZGxp
bmUpKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhl
YygpKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhlYygpLCBwcm90b3R5cGVGdW5jdGlv
blN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0
aW9uRGVidWcpKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xv
YmFsRXhlYygpKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhlYygpLCBwcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByaW50Iiks
IGZ1bmN0aW9uUHJpbnQpKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5l
dyAoZ2xvYmFsRXhlYygpKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZ2xvYmFsRXhlYygpLCBwcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInF1
aXQiKSwgZnVuY3Rpb25RdWl0KSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygp
LCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGdsb2JhbEV4ZWMoKSwg
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMCwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCks
ICJnYyIpLCBmdW5jdGlvbkdDKSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygp
LCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGdsb2JhbEV4ZWMoKSwg
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCks
ICJ2ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGds
b2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihnbG9i
YWxFeGVjKCksIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24o
Z2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGds
b2JhbEV4ZWMoKSwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJsb2FkIiksIGZ1bmN0aW9uTG9hZCkpOworICAgIHB1dERpcmVjdEZ1bmN0
aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBl
cihnbG9iYWxFeGVjKCksIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIDAsIElkZW50aWZp
ZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFkbGluZSkpOwogCiAjaWYg
RU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQotICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgbmV3IChnbG9iYWxFeGVjKCkpIFByb3RvdHlwZUZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgcHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJz
ZXRTYW1wbGluZ0ZsYWciKSwgZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWcpKTsKLSAgICBwdXREaXJl
Y3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBQcm90b3R5cGVGdW5j
dGlvbihnbG9iYWxFeGVjKCksIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAiY2xlYXJTYW1wbGluZ0ZsYWciKSwgZnVuY3Rpb25DbGVhclNh
bXBsaW5nRmxhZykpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChn
bG9iYWxFeGVjKCkpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihnbG9iYWxFeGVjKCksIHByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAic2V0U2Ft
cGxpbmdGbGFnIiksIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFnKSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMoKSkgTmF0aXZlRnVuY3Rpb25XcmFw
cGVyKGdsb2JhbEV4ZWMoKSwgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUoKSwgMSwgSWRlbnRp
ZmllcihnbG9iYWxFeGVjKCksICJjbGVhclNhbXBsaW5nRmxhZyIpLCBmdW5jdGlvbkNsZWFyU2Ft
cGxpbmdGbGFnKSk7CiAjZW5kaWYKIAogICAgIEpTT2JqZWN0KiBhcnJheSA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZ2xvYmFsRXhlYygpKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IDQxMTIx
NTIuLmU1ZDgyYzQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAK
KysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMjY4NSw2ICsyNjg1LDkg
QEAgdm9pZCBFdmFsTm9kZTo6bWFyaygpCiAKIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9k
eU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogICAgIDogU2NvcGVOb2RlKGdsb2JhbERh
dGEpCisjaWYgRU5BQkxFKEpJVCkKKyAgICAsIG1faml0Q29kZSgwKQorI2VuZGlmCiAgICAgLCBt
X3BhcmFtZXRlcnMoMCkKICAgICAsIG1fcGFyYW1ldGVyQ291bnQoMCkKICAgICAsIG1fcmVmQ291
bnQoMCkKQEAgLTI2OTMsNiArMjY5Niw5IEBAIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9k
eU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQogCiBGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgU291cmNlRWxlbWVudHMqIGNo
aWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQogICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIHNvdXJjZUNvZGUsIGNoaWxk
cmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQorI2lmIEVO
QUJMRShKSVQpCisgICAgLCBtX2ppdENvZGUoMCkKKyNlbmRpZgogICAgICwgbV9wYXJhbWV0ZXJz
KDApCiAgICAgLCBtX3BhcmFtZXRlckNvdW50KDApCiAgICAgLCBtX3JlZkNvdW50KDApCkBAIC0y
NzMxLDYgKzI3MzcsMTUgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjptYXJrKCkKICAgICAgICAg
bV9jb2RlLT5tYXJrKCk7CiB9CiAKKyNpZiBFTkFCTEUoSklUKQorUGFzc1JlZlB0cjxGdW5jdGlv
bkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGVOYXRpdmVUaHVuayhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCit7CisgICAgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBib2R5
ID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSk7CisgICAgYm9keS0+bV9qaXRDb2Rl
ID0gZ2xvYmFsRGF0YS0+aml0U3R1YnMuY3RpTmF0aXZlQ2FsbFRodW5rKCk7CisgICAgcmV0dXJu
IGJvZHk7Cit9CisjZW5kaWYKKwogRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKIHsKICAgICByZXR1cm4gbmV3IEZ1bmN0
aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSk7CkBAIC0yNzYwLDYgKzI3NzUsMTggQEAgdm9pZCBGdW5j
dGlvbkJvZHlOb2RlOjpnZW5lcmF0ZUJ5dGVjb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
Tm9kZSkKICAgICBkZXN0cm95RGF0YSgpOwogfQogCisjaWYgRU5BQkxFKEpJVCkKK3ZvaWQgRnVu
Y3Rpb25Cb2R5Tm9kZTo6Z2VuZXJhdGVKSVRDb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
Tm9kZSkKK3sKKyAgICBieXRlY29kZShzY29wZUNoYWluTm9kZSk7CisgICAgQVNTRVJUKG1fY29k
ZSk7CisgICAgQVNTRVJUKCFtX2NvZGUtPmppdENvZGUoKSk7CisgICAgSklUOjpjb21waWxlKHNj
b3BlQ2hhaW5Ob2RlLT5nbG9iYWxEYXRhLCBtX2NvZGUuZ2V0KCkpOworICAgIEFTU0VSVChtX2Nv
ZGUtPmppdENvZGUoKSk7CisgICAgbV9qaXRDb2RlID0gbV9jb2RlLT5qaXRDb2RlKCk7Cit9Cisj
ZW5kaWYKKwogQ29kZUJsb2NrJiBGdW5jdGlvbkJvZHlOb2RlOjpieXRlY29kZUZvckV4Y2VwdGlv
bkluZm9SZXBhcnNlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2tCZWluZ1JlZ2VuZXJhdGVkRnJvbSkKIHsKICAgICBBU1NFUlQoIW1fY29kZSk7CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCmluZGV4IDY3M2EzNmIuLjlkMThiMjUgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIE5PREVTX0hfCiAKICNpbmNsdWRlICJFcnJv
ci5oIgorI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRl
ICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgpAQCAtMjE4OSw2ICsyMTkw
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1Ymxp
YyBTY29wZU5vZGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKKyNp
ZiBFTkFCTEUoSklUKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2Rl
PiBjcmVhdGVOYXRpdmVUaHVuayhKU0dsb2JhbERhdGEqKSBKU0NfRkFTVF9DQUxMOworI2VuZGlm
CiAgICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKikg
SlNDX0ZBU1RfQ0FMTDsKICAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShK
U0dsb2JhbERhdGEqLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayos
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpIEpTQ19G
QVNUX0NBTEw7CiAgICAgICAgIHZpcnR1YWwgfkZ1bmN0aW9uQm9keU5vZGUoKTsKQEAgLTIxOTks
MjUgKzIyMDMsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIElkZW50aWZpZXIqIGNvcHlQ
YXJhbWV0ZXJzKCk7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIEpTQ19GQVNUX0NBTEw7Ci0gICAg
ICAgIAotICAgICAgICBDb2RlQmxvY2smIGJ5dGVjb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluKSBKU0NfRkFTVF9DQUxMCisKKyAgICAgICAgYm9vbCBpc0dlbmVyYXRlZCgpIEpTQ19GQVNU
X0NBTEwKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHNjb3BlQ2hhaW4pOwotICAgICAg
ICAgICAgaWYgKCFtX2NvZGUpCi0gICAgICAgICAgICAgICAgZ2VuZXJhdGVCeXRlY29kZShzY29w
ZUNoYWluKTsKLSAgICAgICAgICAgIHJldHVybiAqbV9jb2RlOworICAgICAgICAgICAgcmV0dXJu
IG1fY29kZTsKICAgICAgICAgfQogCi0gICAgICAgIENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNv
ZGUoKSBKU0NfRkFTVF9DQUxMCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgYm9vbCBpc0hvc3RG
dW5jdGlvbigpIGNvbnN0IEpTQ19GQVNUX0NBTEwKICAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKG1fY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gKm1fY29kZTsKKyAgICAgICAgICAgIHJl
dHVybiBtX2ppdENvZGUgJiYgIW1fY29kZTsKICAgICAgICAgfQotCi0gICAgICAgIGJvb2wgaXNH
ZW5lcmF0ZWQoKSBKU0NfRkFTVF9DQUxMCisjZWxzZQorICAgICAgICBib29sIGlzSG9zdEZ1bmN0
aW9uKCkgY29uc3QgSlNDX0ZBU1RfQ0FMTAogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
bV9jb2RlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyNlbmRpZgogCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrKCk7CiAKQEAgLTIyNDEsMTMgKzIyNDMsNDAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBDb2RlQmxvY2smIGJ5dGVjb2RlRm9y
RXhjZXB0aW9uSW5mb1JlcGFyc2UoU2NvcGVDaGFpbk5vZGUqLCBDb2RlQmxvY2sqKSBKU0NfRkFT
VF9DQUxMOwotCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgSklUQ29kZSBnZW5lcmF0ZWRKSVRD
b2RlKCkgeworICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZTsKKyAgICAgICAgfQorICAgICAg
ICBKSVRDb2RlIGppdENvZGUoU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsKKyAgICAgICAg
ICAgIGlmICghbV9qaXRDb2RlKQorICAgICAgICAgICAgICAgIGdlbmVyYXRlSklUQ29kZShzY29w
ZUNoYWluKTsKKyAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGU7CisgICAgICAgIH0KKyNlbmRp
ZgorICAgICAgICBDb2RlQmxvY2smIGJ5dGVjb2RlKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
KSBKU0NfRkFTVF9DQUxMCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzY29wZUNoYWlu
KTsKKyAgICAgICAgICAgIGlmICghbV9jb2RlKQorICAgICAgICAgICAgICAgIGdlbmVyYXRlQnl0
ZWNvZGUoc2NvcGVDaGFpbik7CisgICAgICAgICAgICByZXR1cm4gKm1fY29kZTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpIEpTQ19G
QVNUX0NBTEwKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1fY29kZSk7CisgICAgICAg
ICAgICByZXR1cm4gKm1fY29kZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICBwcml2YXRlOgog
ICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSopIEpTQ19GQVNUX0NBTEw7CiAg
ICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKSBKU0NfRkFTVF9DQUxMOwogCiAgICAgICAgIHZvaWQgZ2VuZXJh
dGVCeXRlY29kZShTY29wZUNoYWluTm9kZSopIEpTQ19GQVNUX0NBTEw7Ci0KKyNpZiBFTkFCTEUo
SklUKQorICAgICAgICB2b2lkIGdlbmVyYXRlSklUQ29kZShTY29wZUNoYWluTm9kZSopIEpTQ19G
QVNUX0NBTEw7CisgICAgICAgIAorICAgICAgICBKSVRDb2RlIG1faml0Q29kZTsKKyNlbmRpZgog
ICAgICAgICBJZGVudGlmaWVyKiBtX3BhcmFtZXRlcnM7CiAgICAgICAgIHNpemVfdCBtX3BhcmFt
ZXRlckNvdW50OwogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2NvZGU7CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlci5jcHAKaW5kZXggZjYyNWViZS4uZTEwM2ZkMSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgorI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJvZmlsZS5oIgogI2luY2x1ZGUg
IlByb2ZpbGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJQcm9maWxlTm9kZS5oIgpAQCAtMTM5LDgg
KzE0MCwxMSBAQCBDYWxsSWRlbnRpZmllciBQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZpZXIo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU1ZhbHVlCiAgICAgICAgIHJldHVybiBDYWxsSWRl
bnRpZmllcihHbG9iYWxDb2RlRXhlY3V0aW9uLCBkZWZhdWx0U291cmNlVVJMLCBkZWZhdWx0TGlu
ZU51bWJlcik7CiAgICAgaWYgKCFmdW5jdGlvbi5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
Q2FsbElkZW50aWZpZXIoIih1bmtub3duKSIsIGRlZmF1bHRTb3VyY2VVUkwsIGRlZmF1bHRMaW5l
TnVtYmVyKTsKLSAgICBpZiAoYXNPYmplY3QoZnVuY3Rpb24pLT5pbmhlcml0cygmSlNGdW5jdGlv
bjo6aW5mbykpCi0gICAgICAgIHJldHVybiBjcmVhdGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlv
bkltcChnbG9iYWxEYXRhLCBhc0Z1bmN0aW9uKGZ1bmN0aW9uKSk7CisgICAgaWYgKGFzT2JqZWN0
KGZ1bmN0aW9uKS0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OmluZm8pKSB7CisgICAgICAgIEpTRnVu
Y3Rpb24qIGZ1bmMgPSBhc0Z1bmN0aW9uKGZ1bmN0aW9uKTsKKyAgICAgICAgaWYgKCFmdW5jLT5p
c0hvc3RGdW5jdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUNhbGxJZGVudGlmaWVy
RnJvbUZ1bmN0aW9uSW1wKGdsb2JhbERhdGEsIGZ1bmMpOworICAgIH0KICAgICBpZiAoYXNPYmpl
Y3QoZnVuY3Rpb24pLT5pbmhlcml0cygmSW50ZXJuYWxGdW5jdGlvbjo6aW5mbykpCiAgICAgICAg
IHJldHVybiBDYWxsSWRlbnRpZmllcihzdGF0aWNfY2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4oYXNP
YmplY3QoZnVuY3Rpb24pKS0+bmFtZShnbG9iYWxEYXRhKSwgZGVmYXVsdFNvdXJjZVVSTCwgZGVm
YXVsdExpbmVOdW1iZXIpOwogICAgIHJldHVybiBDYWxsSWRlbnRpZmllcigiKCIgKyBhc09iamVj
dChmdW5jdGlvbiktPmNsYXNzTmFtZSgpICsgIiBvYmplY3QpIiwgZGVmYXVsdFNvdXJjZVVSTCwg
ZGVmYXVsdExpbmVOdW1iZXIpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cmdMaXN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAppbmRleCA0ZTMyOGRi
Li5iODRjYTA4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaApAQCAtMSw2ICsxLDYgQEAKIC8q
CiAgKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEgSGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9y
ZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDggQXBwbGUgQ29tcHV0ZXIsIElu
Yy4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgQ29tcHV0
ZXIsIEluYy4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwCmluZGV4IDY1YjNmMWUuLmY3ZjhmNDYgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC03MiwxMiArNzIsMTMgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihDYWxsVHlwZSBjYWxsVHlwZSwgY29u
c3QgQ2FsbERhdGEmIGMKICAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgQ29kZUJsb2NrJiBjb2RlQmxvY2sgPSBjYWxsRGF0YS5qcy5m
dW5jdGlvbkJvZHktPmJ5dGVjb2RlKGNhbGxEYXRhLmpzLnNjb3BlQ2hhaW4pOwogI2lmIEVOQUJM
RShKSVQpCiAgICAgLy8gSWYgdGhlIEpJVCBpcyBlbmFibGVkIHRoZW4gd2UgbmVlZCB0byBwcmVz
ZXJ2ZSB0aGUgaW52YXJpYW50IHRoYXQgZXZlcnkKICAgICAvLyBmdW5jdGlvbiB3aXRoIGEgQ29k
ZUJsb2NrIGFsc28gaGFzIEpJVCBjb2RlLgotICAgIGlmICghY29kZUJsb2NrLmppdENvZGUoKSkK
LSAgICAgICAgSklUOjpjb21waWxlKGNhbGxEYXRhLmpzLnNjb3BlQ2hhaW4tPmdsb2JhbERhdGEs
ICZjb2RlQmxvY2spOworICAgIGNhbGxEYXRhLmpzLmZ1bmN0aW9uQm9keS0+aml0Q29kZShjYWxs
RGF0YS5qcy5zY29wZUNoYWluKTsKKyAgICBDb2RlQmxvY2smIGNvZGVCbG9jayA9IGNhbGxEYXRh
LmpzLmZ1bmN0aW9uQm9keS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKTsKKyNlbHNlCisgICAgQ29kZUJs
b2NrJiBjb2RlQmxvY2sgPSBjYWxsRGF0YS5qcy5mdW5jdGlvbkJvZHktPmJ5dGVjb2RlKGNhbGxE
YXRhLmpzLnNjb3BlQ2hhaW4pOwogI2VuZGlmCiAKICAgICByZXR1cm4gY29kZUJsb2NrLmlzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbigpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Cb29sZWFuUHJvdG90eXBlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQm9vbGVhblBy
b3RvdHlwZS5jcHAKaW5kZXggYWQzNWYwOC4uMWRmMmFkMiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Cb29sZWFuUHJvdG90eXBlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCkBAIC00MSw4ICs0MSw4IEBAIEJvb2xlYW5Qcm90
b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0CiB7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZShqc0Jvb2xlYW4oZmFsc2UpKTsK
IAotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBib29sZWFuUHJvdG9GdW5jVG9TdHJpbmcp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgYm9vbGVhblByb3RvRnVu
Y1ZhbHVlT2YpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBwcm90b3R5
cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBi
b29sZWFuUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBl
cihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLnZhbHVlT2YsIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0pOwogfQogCiAK
ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBi
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAppbmRleCA2MjdiZTM0
Li4yMDFkNTM2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3Bw
CkBAIC01Niw5ICs1Niw5IEBAIERhdGVDb25zdHJ1Y3Rvcjo6RGF0ZUNvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyCiB7CiAgICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBk
YXRlUHJvdG90eXBlLCBEb250RW51bXxEb250RGVsZXRlfFJlYWRPbmx5KTsKIAotICAgICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlw
ZUZ1bmN0aW9uKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucGFyc2UsIGRhdGVQYXJzZSksIERvbnRFbnVtKTsKLSAgICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5j
dGlvbihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgNywgZXhlYy0+cHJvcGVydHlO
YW1lcygpLlVUQywgZGF0ZVVUQyksIERvbnRFbnVtKTsKLSAgICAgIHB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVj
LCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5v
dywgZGF0ZU5vdyksIERvbnRFbnVtKTsKKyAgICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wYXJzZSwg
ZGF0ZVBhcnNlKSwgRG9udEVudW0pOworICAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBwcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgNywgZXhlYy0+cHJvcGVydHlOYW1lcygpLlVUQywgZGF0
ZVVUQyksIERvbnRFbnVtKTsKKyAgICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90eXBl
RnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ub3csIGRhdGVOb3cp
LCBEb250RW51bSk7CiAKICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMsIDcpLCBSZWFkT25seSB8IERvbnRF
bnVtIHwgRG9udERlbGV0ZSk7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0RhdGVQcm90b3R5cGUuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBl
LmNwcAppbmRleCBjOWE0MWYwLi5jNjk5MzYyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
ZVByb3RvdHlwZS5jcHAKQEAgLTUwMSw4ICs1MDEsMTAgQEAgSlNWYWx1ZSBkYXRlUHJvdG9GdW5j
VG9Mb2NhbGVUaW1lU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlIHRo
aXMKICAgICByZXR1cm4gZm9ybWF0TG9jYWxlRGF0ZShleGVjLCB0aGlzRGF0ZU9iaiwgbWlsbGks
IExvY2FsZVRpbWUsIGFyZ3MpOwogfQogCi1KU1ZhbHVlIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlz
dCYpCitKU1ZhbHVlIGRhdGVQcm90b0Z1bmNHZXRUaW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIG8sIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIFVO
VVNFRF9QQVJBTShvKTsKKyAgICBVTlVTRURfUEFSQU0oYXJncyk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoJkRhdGVJbnN0YW5jZTo6aW5mbykpCiAgICAgICAgIHJldHVybiB0aHJvd0Vy
cm9yKGV4ZWMsIFR5cGVFcnJvcik7CiAKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuY3BwIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3Rv
dHlwZS5jcHAKaW5kZXggMTMwNDQwOC4uMDZjM2RiYSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvclByb3RvdHlwZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgRXJyb3JQcm90b3R5cGU6OkVy
cm9yUHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZSwKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVz
KCkubmFtZSwganNOb250cml2aWFsU3RyaW5nKGV4ZWMsICJFcnJvciIpLCBEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3Nh
Z2UsIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCAiVW5rbm93biBlcnJvciIpLCBEb250RW51bSk7
CiAKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhl
YykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgZXJyb3JQcm90b0Z1bmNUb1N0cmluZyks
IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9u
U3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGVycm9yUHJvdG9G
dW5jVG9TdHJpbmcpLCBEb250RW51bSk7CiB9CiAKIEpTVmFsdWUgZXJyb3JQcm90b0Z1bmNUb1N0
cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNw
cAppbmRleCA5ZDU5MWFkLi42OTJmMzI1IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcApAQCAtNDMsMTIgKzQzLDEyIEBAIEZ1bmN0aW9uUHJvdG90eXBl
OjpGdW5jdGlvblByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzdHJ1CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1l
cygpLmxlbmd0aCwganNOdW1iZXIoZXhlYywgMCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERv
bnRFbnVtKTsKIH0KIAotdm9pZCBGdW5jdGlvblByb3RvdHlwZTo6YWRkRnVuY3Rpb25Qcm9wZXJ0
aWVzKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSwgUHJvdG90eXBlRnVuY3Rpb24qKiBjYWxsRnVuY3Rpb24sIFByb3RvdHlwZUZ1bmN0aW9uKiog
YXBwbHlGdW5jdGlvbikKK3ZvaWQgRnVuY3Rpb25Qcm90b3R5cGU6OmFkZEZ1bmN0aW9uUHJvcGVy
dGllcyhFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUsIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcioqIGNhbGxGdW5jdGlvbiwgTmF0aXZlRnVuY3Rpb25X
cmFwcGVyKiogYXBwbHlGdW5jdGlvbikKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywg
ZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKLSAgICAqYXBwbHlGdW5jdGlv
biA9IG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseSwgZnVuY3Rpb25Qcm90b0Z1
bmNBcHBseSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBu
ZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0
cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBmdW5jdGlvblByb3Rv
RnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOworICAgICphcHBseUZ1bmN0aW9uID0gbmV3IChleGVj
KSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUs
IDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseSwgZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSk7
CiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCAqYXBwbHlGdW5j
dGlvbiwgRG9udEVudW0pOwotICAgICpjYWxsRnVuY3Rpb24gPSBuZXcgKGV4ZWMpIFByb3RvdHlw
ZUZ1bmN0aW9uKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuY2FsbCwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxsKTsKKyAgICAqY2FsbEZ1bmN0
aW9uID0gbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90eXBlRnVu
Y3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblBy
b3RvRnVuY0NhbGwpOwogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
YywgKmNhbGxGdW5jdGlvbiwgRG9udEVudW0pOwogfQogCkBAIC04Niw5ICs4NiwxMSBAQCBKU1Zh
bHVlIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCos
IEpTVmFsdWUgdGhpc1ZhbHVlLAogewogICAgIGlmICh0aGlzVmFsdWUuaXNPYmplY3QoJkpTRnVu
Y3Rpb246OmluZm8pKSB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gYXNGdW5jdGlv
bih0aGlzVmFsdWUpOwotICAgICAgICBVU3RyaW5nIGZ1bmN0aW9uQm9keSA9IGZ1bmN0aW9uLT5i
b2R5KCktPnRvU291cmNlU3RyaW5nKCk7Ci0gICAgICAgIGluc2VydFNlbWljb2xvbklmTmVlZGVk
KGZ1bmN0aW9uQm9keSk7Ci0gICAgICAgIHJldHVybiBqc1N0cmluZyhleGVjLCAiZnVuY3Rpb24g
IiArIGZ1bmN0aW9uLT5uYW1lKCZleGVjLT5nbG9iYWxEYXRhKCkpICsgIigiICsgZnVuY3Rpb24t
PmJvZHkoKS0+cGFyYW1TdHJpbmcoKSArICIpICIgKyBmdW5jdGlvbkJvZHkpOworICAgICAgICBp
ZiAoIWZ1bmN0aW9uLT5pc0hvc3RGdW5jdGlvbigpKSB7CisgICAgICAgICAgICBVU3RyaW5nIGZ1
bmN0aW9uQm9keSA9IGZ1bmN0aW9uLT5ib2R5KCktPnRvU291cmNlU3RyaW5nKCk7CisgICAgICAg
ICAgICBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChmdW5jdGlvbkJvZHkpOworICAgICAgICAgICAg
cmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiICsgZnVuY3Rpb24tPm5hbWUoJmV4ZWMt
Pmdsb2JhbERhdGEoKSkgKyAiKCIgKyBmdW5jdGlvbi0+Ym9keSgpLT5wYXJhbVN0cmluZygpICsg
IikgIiArIGZ1bmN0aW9uQm9keSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAodGhpc1Zh
bHVlLmlzT2JqZWN0KCZJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKSkgewpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oIGIvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oCmluZGV4IGRhNjY5MWIuLjAxZjQ3MmQgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmgKQEAgLTIyLDYgKzIyLDcg
QEAKICNkZWZpbmUgRnVuY3Rpb25Qcm90b3R5cGVfaAogCiAjaW5jbHVkZSAiSW50ZXJuYWxGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIk5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oIgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtMzAsNyArMzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5j
dGlvblByb3RvdHlwZSA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIEZ1bmN0aW9uUHJvdG90eXBlKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJl
Pik7Ci0gICAgICAgIHZvaWQgYWRkRnVuY3Rpb25Qcm9wZXJ0aWVzKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZSogcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIFByb3RvdHlwZUZ1bmN0aW9uKiogY2Fs
bEZ1bmN0aW9uLCBQcm90b3R5cGVGdW5jdGlvbioqIGFwcGx5RnVuY3Rpb24pOworICAgICAgICB2
b2lkIGFkZEZ1bmN0aW9uUHJvcGVydGllcyhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqIHByb3RvdHlw
ZUZ1bmN0aW9uU3RydWN0dXJlLCBOYXRpdmVGdW5jdGlvbldyYXBwZXIqKiBjYWxsRnVuY3Rpb24s
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcioqIGFwcGx5RnVuY3Rpb24pOwogCiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG8pCiAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDk4M2YyOTcu
LmY0NTY0NTEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNDUsMTEg
KzQ1LDI5IEBAIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNGdW5jdGlvbik7CiAKIGNvbnN0
IENsYXNzSW5mbyBKU0Z1bmN0aW9uOjppbmZvID0geyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5j
dGlvbjo6aW5mbywgMCwgMCB9OwogCitKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSwgaW50IGxlbmd0aCwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuYykKKyAgICA6IEJhc2UoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgc3RydWN0dXJlLCBuYW1lKQorI2lmIEVOQUJMRShKSVQpCisgICAgLCBt
X2JvZHkoZXhlYy0+Z2xvYmFsRGF0YSgpLm5hdGl2ZUZ1bmN0aW9uVGh1bmsoKSkKKyNlbHNlCisg
ICAgLCBtX2JvZHkoMCkKKyNlbmRpZgoreworI2lmIEVOQUJMRShKSVQpCisgICAgc2V0TmF0aXZl
RnVuY3Rpb24oZnVuYyk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5n
dGgsIGpzTnVtYmVyKGV4ZWMsIGxlbmd0aCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGxlbmd0aCk7CisgICAgVU5VU0VEX1BBUkFN
KGZ1bmMpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKIEpTRnVuY3Rp
b246OkpTRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBG
dW5jdGlvbkJvZHlOb2RlKiBib2R5LCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUpCiAg
ICAgOiBCYXNlKCZleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgbmFtZSkKICAgICAsIG1fYm9keShib2R5KQotICAgICwg
bV9zY29wZUNoYWluKHNjb3BlQ2hhaW5Ob2RlKQogeworICAgIHNldFNjb3BlQ2hhaW4oc2NvcGVD
aGFpbk5vZGUpOwogfQogCiBKU0Z1bmN0aW9uOjp+SlNGdW5jdGlvbigpCkBAIC01OCw1NSArNzYs
NzIgQEAgSlNGdW5jdGlvbjo6fkpTRnVuY3Rpb24oKQogICAgIC8vIEpJVCBjb2RlIGZvciBvdGhl
ciBmdW5jdGlvbnMgbWF5IGhhdmUgaGFkIGNhbGxzIGxpbmtlZCBkaXJlY3RseSB0byB0aGUgY29k
ZSBmb3IgdGhpcyBmdW5jdGlvbjsgdGhlc2UgbGlua3MKICAgICAvLyBhcmUgYmFzZWQgb24gYSBj
aGVjayBmb3IgdGhlIHRoaXMgcG9pbnRlciB2YWx1ZSBmb3IgdGhpcyBKU0Z1bmN0aW9uIC0gd2hp
Y2ggd2lsbCBubyBsb25nZXIgYmUgdmFsaWQgb25jZQogICAgIC8vIHRoaXMgbWVtb3J5IGlzIGZy
ZWVkIGFuZCBtYXkgYmUgcmV1c2VkIChwb3RlbnRpYWxseSBmb3IgYW5vdGhlciwgZGlmZmVyZW50
IEpTRnVuY3Rpb24pLgotICAgIGlmIChtX2JvZHkgJiYgbV9ib2R5LT5pc0dlbmVyYXRlZCgpKQot
ICAgICAgICBtX2JvZHktPmdlbmVyYXRlZEJ5dGVjb2RlKCkudW5saW5rQ2FsbGVycygpOworICAg
IGlmICghaXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICBpZiAobV9ib2R5ICYmIG1fYm9keS0+
aXNHZW5lcmF0ZWQoKSkKKyAgICAgICAgICAgIG1fYm9keS0+Z2VuZXJhdGVkQnl0ZWNvZGUoKS51
bmxpbmtDYWxsZXJzKCk7CisgICAgICAgIHNjb3BlQ2hhaW4oKS5+U2NvcGVDaGFpbigpOworICAg
IH0KKyAgICAKICNlbmRpZgogfQogCiB2b2lkIEpTRnVuY3Rpb246Om1hcmsoKQogewogICAgIEJh
c2U6Om1hcmsoKTsKLSAgICBtX2JvZHktPm1hcmsoKTsKLSAgICBtX3Njb3BlQ2hhaW4ubWFyaygp
OworICAgIGlmICghaXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICBtX2JvZHktPm1hcmsoKTsK
KyAgICAgICAgc2NvcGVDaGFpbigpLm1hcmsoKTsKKyAgICB9CiB9CiAKIENhbGxUeXBlIEpTRnVu
Y3Rpb246OmdldENhbGxEYXRhKENhbGxEYXRhJiBjYWxsRGF0YSkKIHsKKyAgICBpZiAoaXNIb3N0
RnVuY3Rpb24oKSkgeworICAgICAgICBjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBuYXRpdmVG
dW5jdGlvbigpOworICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OworICAgIH0KICAgICBjYWxs
RGF0YS5qcy5mdW5jdGlvbkJvZHkgPSBtX2JvZHkuZ2V0KCk7Ci0gICAgY2FsbERhdGEuanMuc2Nv
cGVDaGFpbiA9IG1fc2NvcGVDaGFpbi5ub2RlKCk7CisgICAgY2FsbERhdGEuanMuc2NvcGVDaGFp
biA9IHNjb3BlQ2hhaW4oKS5ub2RlKCk7CiAgICAgcmV0dXJuIENhbGxUeXBlSlM7CiB9CiAKIEpT
VmFsdWUgSlNGdW5jdGlvbjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdGhpc1ZhbHVl
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIHJldHVybiBleGVjLT5pbnRlcnByZXRlcigp
LT5leGVjdXRlKG1fYm9keS5nZXQoKSwgZXhlYywgdGhpcywgdGhpc1ZhbHVlLnRvVGhpc09iamVj
dChleGVjKSwgYXJncywgbV9zY29wZUNoYWluLm5vZGUoKSwgZXhlYy0+ZXhjZXB0aW9uU2xvdCgp
KTsKKyAgICBBU1NFUlQoIWlzSG9zdEZ1bmN0aW9uKCkpOworICAgIHJldHVybiBleGVjLT5pbnRl
cnByZXRlcigpLT5leGVjdXRlKG1fYm9keS5nZXQoKSwgZXhlYywgdGhpcywgdGhpc1ZhbHVlLnRv
VGhpc09iamVjdChleGVjKSwgYXJncywgc2NvcGVDaGFpbigpLm5vZGUoKSwgZXhlYy0+ZXhjZXB0
aW9uU2xvdCgpKTsKIH0KIAogSlNWYWx1ZSBKU0Z1bmN0aW9uOjphcmd1bWVudHNHZXR0ZXIoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
KQogewogICAgIEpTRnVuY3Rpb24qIHRoaXNPYmogPSBhc0Z1bmN0aW9uKHNsb3Quc2xvdEJhc2Uo
KSk7CisgICAgQVNTRVJUKCF0aGlzT2JqLT5pc0hvc3RGdW5jdGlvbigpKTsKICAgICByZXR1cm4g
ZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVBcmd1bWVudHMoZXhlYywgdGhpc09iaik7CiB9
CiAKIEpTVmFsdWUgSlNGdW5jdGlvbjo6Y2FsbGVyR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0Z1bmN0
aW9uKiB0aGlzT2JqID0gYXNGdW5jdGlvbihzbG90LnNsb3RCYXNlKCkpOworICAgIEFTU0VSVCgh
dGhpc09iai0+aXNIb3N0RnVuY3Rpb24oKSk7CiAgICAgcmV0dXJuIGV4ZWMtPmludGVycHJldGVy
KCktPnJldHJpZXZlQ2FsbGVyKGV4ZWMsIHRoaXNPYmopOwogfQogCiBKU1ZhbHVlIEpTRnVuY3Rp
b246Omxlbmd0aEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25z
dCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNGdW5jdGlvbiogdGhpc09iaiA9IGFzRnVu
Y3Rpb24oc2xvdC5zbG90QmFzZSgpKTsKKyAgICBBU1NFUlQoIXRoaXNPYmotPmlzSG9zdEZ1bmN0
aW9uKCkpOwogICAgIHJldHVybiBqc051bWJlcihleGVjLCB0aGlzT2JqLT5tX2JvZHktPnBhcmFt
ZXRlckNvdW50KCkpOwogfQogCiBib29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlT
bG90JiBzbG90KQogeworICAgIGlmIChpc0hvc3RGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4g
QmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisKICAg
ICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsK
ICAgICAgICAgSlNWYWx1ZSogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5h
bWUpOwogCiAgICAgICAgIGlmICghbG9jYXRpb24pIHsKLSAgICAgICAgICAgIEpTT2JqZWN0KiBw
cm90b3R5cGUgPSBuZXcgKGV4ZWMpIEpTT2JqZWN0KG1fc2NvcGVDaGFpbi5nbG9iYWxPYmplY3Qo
KS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBKU09iamVjdCogcHJvdG90
eXBlID0gbmV3IChleGVjKSBKU09iamVjdChzY29wZUNoYWluKCkuZ2xvYmFsT2JqZWN0KCktPmVt
cHR5T2JqZWN0U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgcHJvdG90eXBlLT5wdXREaXJlY3Qo
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzLCBEb250RW51bSk7CiAgICAg
ICAgICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJvdG90
eXBlLCBEb250RGVsZXRlKTsKICAgICAgICAgICAgIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRp
b24ocHJvcGVydHlOYW1lKTsKQEAgLTEzNSw2ICsxNzAsMTAgQEAgYm9vbCBKU0Z1bmN0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU4KIAogdm9pZCBKU0Z1bmN0aW9uOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xv
dCkKIHsKKyAgICBpZiAoaXNIb3N0RnVuY3Rpb24oKSkgeworICAgICAgICBCYXNlOjpwdXQoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAg
ICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8
IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKQogICAgICAgICBy
ZXR1cm47CiAgICAgQmFzZTo6cHV0KGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpA
QCAtMTQyLDYgKzE4MSw4IEBAIHZvaWQgSlNGdW5jdGlvbjo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhCiAKIGJvb2wgSlNGdW5j
dGlvbjo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUpCiB7CisgICAgaWYgKGlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIHJldHVy
biBCYXNlOjpkZWxldGVQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChwcm9w
ZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmFyZ3VtZW50cyB8fCBwcm9wZXJ0eU5h
bWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIHJldHVybiBCYXNlOjpkZWxldGVQcm9wZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUpOwpA
QCAtMTUwLDEzICsxOTEsMTYgQEAgYm9vbCBKU0Z1bmN0aW9uOjpkZWxldGVQcm9wZXJ0eShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIC8vIEVDTUEgMTMu
Mi4yIFtbQ29uc3RydWN0XV0KIENvbnN0cnVjdFR5cGUgSlNGdW5jdGlvbjo6Z2V0Q29uc3RydWN0
RGF0YShDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQogeworICAgIGlmIChpc0hvc3RGdW5j
dGlvbigpKQorICAgICAgICByZXR1cm4gQ29uc3RydWN0VHlwZU5vbmU7CiAgICAgY29uc3RydWN0
RGF0YS5qcy5mdW5jdGlvbkJvZHkgPSBtX2JvZHkuZ2V0KCk7Ci0gICAgY29uc3RydWN0RGF0YS5q
cy5zY29wZUNoYWluID0gbV9zY29wZUNoYWluLm5vZGUoKTsKKyAgICBjb25zdHJ1Y3REYXRhLmpz
LnNjb3BlQ2hhaW4gPSBzY29wZUNoYWluKCkubm9kZSgpOwogICAgIHJldHVybiBDb25zdHJ1Y3RU
eXBlSlM7CiB9CiAKIEpTT2JqZWN0KiBKU0Z1bmN0aW9uOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogeworICAgIEFTU0VSVCghaXNIb3N0RnVuY3Rpb24o
KSk7CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBn
ZXQoZXhlYywgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSk7CiAgICAgaWYgKHByb3Rv
dHlwZS5pc09iamVjdCgpKQpAQCAtMTY1LDcgKzIwOSw3IEBAIEpTT2JqZWN0KiBKU0Z1bmN0aW9u
Ojpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogICAgICAg
ICBzdHJ1Y3R1cmUgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3Ry
dWN0dXJlKCk7CiAgICAgSlNPYmplY3QqIHRoaXNPYmogPSBuZXcgKGV4ZWMpIEpTT2JqZWN0KHN0
cnVjdHVyZSk7CiAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGV4ZWMtPmludGVycHJldGVyKCktPmV4
ZWN1dGUobV9ib2R5LmdldCgpLCBleGVjLCB0aGlzLCB0aGlzT2JqLCBhcmdzLCBtX3Njb3BlQ2hh
aW4ubm9kZSgpLCBleGVjLT5leGNlcHRpb25TbG90KCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
ZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShtX2JvZHkuZ2V0KCksIGV4ZWMsIHRoaXMsIHRo
aXNPYmosIGFyZ3MsIHNjb3BlQ2hhaW4oKS5ub2RlKCksIGV4ZWMtPmV4Y2VwdGlvblNsb3QoKSk7
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpIHx8ICFyZXN1bHQuaXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIHRoaXNPYmo7CiAgICAgcmV0dXJuIGFzT2JqZWN0KHJlc3VsdCk7CmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IGEyZjg2ZWIuLjU2ODRjY2YgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00NiwxMSArNDYsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgSlNGdW5jdGlvbihQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
KQogICAgICAgICAgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKHN0cnVjdHVyZSkKLSAgICAgICAgICAg
ICwgbV9zY29wZUNoYWluKE5vU2NvcGVDaGFpbigpKQogICAgICAgICB7CisgICAgICAgICAgICBj
bGVhclNjb3BlQ2hhaW4oKTsKICAgICAgICAgfQogCiAgICAgcHVibGljOgorICAgICAgICBKU0Z1
bmN0aW9uKEV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U3RydWN0dXJlPiwgaW50IGxlbmd0aCwgY29u
c3QgSWRlbnRpZmllciYsIE5hdGl2ZUZ1bmN0aW9uKTsKICAgICAgICAgSlNGdW5jdGlvbihFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIFNjb3BlQ2hhaW5O
b2RlKik7CiAgICAgICAgIH5KU0Z1bmN0aW9uKCk7CiAKQEAgLTYxLDggKzYyLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KiBjb25zdHJ1Y3QoRXhlY1N0YXRlKiwgY29uc3Qg
QXJnTGlzdCYpOwogICAgICAgICBKU1ZhbHVlIGNhbGwoRXhlY1N0YXRlKiwgSlNWYWx1ZSB0aGlz
VmFsdWUsIGNvbnN0IEFyZ0xpc3QmKTsKIAotICAgICAgICB2b2lkIHNldFNjb3BlKGNvbnN0IFNj
b3BlQ2hhaW4mIHNjb3BlQ2hhaW4pIHsgbV9zY29wZUNoYWluID0gc2NvcGVDaGFpbjsgfQotICAg
ICAgICBTY29wZUNoYWluJiBzY29wZSgpIHsgcmV0dXJuIG1fc2NvcGVDaGFpbjsgfQorICAgICAg
ICB2b2lkIHNldFNjb3BlKGNvbnN0IFNjb3BlQ2hhaW4mIHNjb3BlQ2hhaW4pIHsgc2V0U2NvcGVD
aGFpbihzY29wZUNoYWluKTsgfQorICAgICAgICBTY29wZUNoYWluJiBzY29wZSgpIHsgcmV0dXJu
IHNjb3BlQ2hhaW4oKTsgfQogCiAgICAgICAgIHZvaWQgc2V0Qm9keShGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5KSB7IG1fYm9keSA9IGJvZHk7IH0KICAgICAgICAgdm9pZCBzZXRCb2R5KFBhc3NSZWZQ
dHI8RnVuY3Rpb25Cb2R5Tm9kZT4gYm9keSkgeyBtX2JvZHkgPSBib2R5OyB9CkBAIC03Nyw2ICs3
OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIEltcGxlbWVudHNIYXNJbnN0YW5j
ZSkpOyAKICAgICAgICAgfQogCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAgYm9vbCBpc0hvc3RG
dW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYm9keSAmJiBtX2JvZHktPmlzSG9zdEZ1bmN0aW9u
KCk7IH0KKyNlbHNlCisgICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorI2VuZGlmCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CiAKQEAgLTg4LDcg
Kzk0LDM1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBsZW5ndGhH
ZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYp
OwogCiAgICAgICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBtX2JvZHk7Ci0gICAgICAgIFNj
b3BlQ2hhaW4gbV9zY29wZUNoYWluOworICAgICAgICBTY29wZUNoYWluJiBzY29wZUNoYWluKCkK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbigpKTsKKyAgICAg
ICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxTY29wZUNoYWluKj4obV9kYXRhKTsKKyAg
ICAgICAgfQorICAgICAgICB2b2lkIGNsZWFyU2NvcGVDaGFpbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEFTU0VSVCghaXNIb3N0RnVuY3Rpb24oKSk7CisgICAgICAgICAgICBuZXcgKG1fZGF0
YSkgU2NvcGVDaGFpbihOb1Njb3BlQ2hhaW4oKSk7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBz
ZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzYykKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKCFpc0hvc3RGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIG5ldyAobV9kYXRhKSBTY29w
ZUNoYWluKHNjKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oY29uc3Qg
U2NvcGVDaGFpbiYgc2MpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCghaXNIb3N0RnVu
Y3Rpb24oKSk7CisgICAgICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDxTY29wZUNoYWluKj4obV9k
YXRhKSA9IHNjOworICAgICAgICB9CisgICAgICAgIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0
aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PE5h
dGl2ZUZ1bmN0aW9uKj4obV9kYXRhKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIHNldE5hdGl2
ZUZ1bmN0aW9uKE5hdGl2ZUZ1bmN0aW9uIGZ1bmMpCisgICAgICAgIHsKKyAgICAgICAgICAgICpy
ZWludGVycHJldF9jYXN0PE5hdGl2ZUZ1bmN0aW9uKj4obV9kYXRhKSA9IGZ1bmM7CisgICAgICAg
IH0KKyAgICAgICAgdW5zaWduZWQgY2hhciBtX2RhdGFbc2l6ZW9mKHZvaWQqKV07CiAgICAgfTsK
IAogICAgIEpTRnVuY3Rpb24qIGFzRnVuY3Rpb24oSlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggMjZiNDdhZC4uNmVkN2VkNyAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
IkpTQXJyYXkuaCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgogI2luY2x1ZGUgIkpTQ2xhc3NS
ZWYuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5j
bHVkZSAiSlNOb3RBbk9iamVjdC5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIK
QEAgLTE2MSw2ICsxNjIsMTAgQEAgSlNHbG9iYWxEYXRhOjp+SlNHbG9iYWxEYXRhKCkKICAgICBy
ZWdFeHBUYWJsZS0+ZGVsZXRlVGFibGUoKTsKICAgICByZWdFeHBDb25zdHJ1Y3RvclRhYmxlLT5k
ZWxldGVUYWJsZSgpOwogICAgIHN0cmluZ1RhYmxlLT5kZWxldGVUYWJsZSgpOworI2lmIEVOQUJM
RShKSVQpCisgICAgbGF6eU5hdGl2ZUZ1bmN0aW9uVGh1bmsuY2xlYXIoKTsKKyNlbmRpZgorCiAg
ICAgZGVsZXRlIGFycmF5VGFibGU7CiAgICAgZGVsZXRlIGRhdGVUYWJsZTsKICAgICBkZWxldGUg
bWF0aFRhYmxlOwpAQCAtMjI2LDYgKzIzMSwxMyBAQCBKU0dsb2JhbERhdGEqJiBKU0dsb2JhbERh
dGE6OnNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKQogICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsK
IH0KIAordm9pZCBKU0dsb2JhbERhdGE6OmNyZWF0ZU5hdGl2ZVRodW5rKCkKK3sKKyNpZiBFTkFC
TEUoSklUKQorICAgIGxhenlOYXRpdmVGdW5jdGlvblRodW5rID0gRnVuY3Rpb25Cb2R5Tm9kZTo6
Y3JlYXRlTmF0aXZlVGh1bmsodGhpcyk7CisjZW5kaWYKK30KKwogLy8gRklYTUU6IFdlIGNhbiBh
bHNvIGRldGVjdCBmb3JtcyBsaWtlIHYxIDwgdjIgPyAtMSA6IDAsIHJldmVyc2UgY29tcGFyaXNv
biwgZXRjLgogY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPiYgSlNHbG9iYWxEYXRhOjpudW1lcmlj
Q29tcGFyZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKQEAgLTI0NCw0ICsyNTYsNSBAQCBK
U0dsb2JhbERhdGE6OkNsaWVudERhdGE6On5DbGllbnREYXRhKCkKIHsKIH0KIAorCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDYwOGYy
NzQuLmRjZjMwM2QgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAtNDYs
NiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyZ0xpc3Q7CiAgICAgY2xh
c3MgQ29tbW9uSWRlbnRpZmllcnM7CisgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZTsKICAgICBj
bGFzcyBIZWFwOwogICAgIGNsYXNzIElkZW50aWZpZXJUYWJsZTsKICAgICBjbGFzcyBJbnN0cnVj
dGlvbjsKQEAgLTExOSw2ICsxMjAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlcjsKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRTdHVicyBq
aXRTdHViczsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogbmF0aXZlRnVuY3Rpb25UaHVuaygp
IHsKKyAgICAgICAgICAgIGlmICghbGF6eU5hdGl2ZUZ1bmN0aW9uVGh1bmspCisgICAgICAgICAg
ICAgICAgY3JlYXRlTmF0aXZlVGh1bmsoKTsKKyAgICAgICAgICAgIHJldHVybiBsYXp5TmF0aXZl
RnVuY3Rpb25UaHVuay5nZXQoKTsKKyAgICAgICAgfQorICAgICAgICBSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gbGF6eU5hdGl2ZUZ1bmN0aW9uVGh1bms7CiAjZW5kaWYKICAgICAgICAgVGltZW91
dENoZWNrZXIgdGltZW91dENoZWNrZXI7CiAgICAgICAgIEhlYXAgaGVhcDsKQEAgLTE0Nyw2ICsx
NTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBKU0dsb2JhbERh
dGEoYm9vbCBpc1NoYXJlZCwgY29uc3QgVlB0clNldCYpOwogICAgICAgICBzdGF0aWMgSlNHbG9i
YWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOworICAgICAgICB2b2lkIGNyZWF0ZU5h
dGl2ZVRodW5rKCk7CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIEpTQwogCmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDk3ZTc4ZWYuLmE2NTFhNDIgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMDMsOCArMjAzLDgg
QEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAKICAgICBk
KCktPmZ1bmN0aW9uUHJvdG90eXBlID0gbmV3IChleGVjKSBGdW5jdGlvblByb3RvdHlwZShleGVj
LCBGdW5jdGlvblByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGpzTnVsbCgpKSk7IC8vIFRoZSBy
ZWFsIHByb3RvdHlwZSB3aWxsIGJlIHNldCBvbmNlIE9iamVjdFByb3RvdHlwZSBpcyBjcmVhdGVk
LgogICAgIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUgPSBQcm90b3R5cGVGdW5jdGlv
bjo6Y3JlYXRlU3RydWN0dXJlKGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUpOwotICAgIFByb3RvdHlw
ZUZ1bmN0aW9uKiBjYWxsRnVuY3Rpb24gPSAwOwotICAgIFByb3RvdHlwZUZ1bmN0aW9uKiBhcHBs
eUZ1bmN0aW9uID0gMDsKKyAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxGdW5jdGlvbiA9
IDA7CisgICAgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKiBhcHBseUZ1bmN0aW9uID0gMDsKICAgICBk
KCktPmZ1bmN0aW9uUHJvdG90eXBlLT5hZGRGdW5jdGlvblByb3BlcnRpZXMoZXhlYywgZCgpLT5w
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgJmNhbGxGdW5jdGlvbiwgJmFwcGx5RnVu
Y3Rpb24pOwogICAgIGQoKS0+Y2FsbEZ1bmN0aW9uID0gY2FsbEZ1bmN0aW9uOwogICAgIGQoKS0+
YXBwbHlGdW5jdGlvbiA9IGFwcGx5RnVuY3Rpb247CkBAIC0zMjQsMTggKzMyNCwxOCBAQCB2b2lk
IEpTR2xvYmFsT2JqZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKIAogICAgIGQoKS0+ZXZh
bEZ1bmN0aW9uID0gbmV3IChleGVjKSBHbG9iYWxFdmFsRnVuY3Rpb24oZXhlYywgR2xvYmFsRXZh
bEZ1bmN0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoZCgpLT5mdW5jdGlvblByb3RvdHlwZSksIDEsIGV4
ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFsLCBnbG9iYWxGdW5jRXZhbCwgdGhpcyk7CiAgICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBkKCktPmV2YWxGdW5jdGlvbiwg
RG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywg
bmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpLCAyLCBJZGVudGlmaWVyKGV4ZWMsICJwYXJzZUludCIpLCBnbG9iYWxG
dW5jUGFyc2VJbnQpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGQoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgInBhcnNl
RmxvYXQiKSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0
aW9uKGV4ZWMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50
aWZpZXIoZXhlYywgImlzTmFOIiksIGdsb2JhbEZ1bmNJc05hTiksIERvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90
eXBlRnVuY3Rpb24oZXhlYywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwg
MSwgSWRlbnRpZmllcihleGVjLCAiaXNGaW5pdGUiKSwgZ2xvYmFsRnVuY0lzRmluaXRlKSwgRG9u
dEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3
IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlc2NhcGUiKSwgZ2xvYmFsRnVuY0Vz
Y2FwZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZCgpLT5wcm90b3R5cGVG
dW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAidW5lc2NhcGUiKSwg
Z2xvYmFsRnVuY1VuZXNjYXBlKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBk
KCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMs
ICJkZWNvZGVVUkkiKSwgZ2xvYmFsRnVuY0RlY29kZVVSSSksIERvbnRFbnVtKTsKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBl
RnVuY3Rpb24oZXhlYywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwg
SWRlbnRpZmllcihleGVjLCAiZGVjb2RlVVJJQ29tcG9uZW50IiksIGdsb2JhbEZ1bmNEZWNvZGVV
UklDb21wb25lbnQpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGQoKS0+cHJv
dG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImVuY29k
ZVVSSSIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlv
bihleGVjLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlm
aWVyKGV4ZWMsICJlbmNvZGVVUklDb21wb25lbnQiKSwgZ2xvYmFsRnVuY0VuY29kZVVSSUNvbXBv
bmVudCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGQoKS0+cHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDIsIElkZW50aWZpZXIoZXhlYywgInBhcnNlSW50
IiksIGdsb2JhbEZ1bmNQYXJzZUludCksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGV4ZWMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZp
ZXIoZXhlYywgInBhcnNlRmxvYXQiKSwgZ2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMp
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc05hTiIpLCBnbG9iYWxGdW5jSXNOYU4p
LCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBkKCktPnByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc0Zpbml0ZSIpLCBn
bG9iYWxGdW5jSXNGaW5pdGUpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRo
b3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVj
LCBkKCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4
ZWMsICJlc2NhcGUiKSwgZ2xvYmFsRnVuY0VzY2FwZSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rp
b25XcmFwcGVyKGV4ZWMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEs
IElkZW50aWZpZXIoZXhlYywgInVuZXNjYXBlIiksIGdsb2JhbEZ1bmNVbmVzY2FwZSksIERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAo
ZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGQoKS0+cHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywgImRlY29kZVVSSSIpLCBnbG9iYWxG
dW5jRGVjb2RlVVJJKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRy
YW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgZCgp
LT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAi
ZGVjb2RlVVJJQ29tcG9uZW50IiksIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25lbnQpLCBEb250
RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcg
KGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBkKCktPnByb3RvdHlwZUZ1bmN0aW9u
U3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlbmNvZGVVUkkiKSwgZ2xvYmFs
RnVuY0VuY29kZVVSSSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIGQo
KS0+cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywg
ImVuY29kZVVSSUNvbXBvbmVudCIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KSwgRG9u
dEVudW0pOwogI2lmbmRlZiBOREVCVUcKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZCgpLT5wcm90
b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAianNjcHJp
bnQiKSwgZ2xvYmFsRnVuY0pTQ1ByaW50KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0
aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBw
ZXIoZXhlYywgZCgpLT5wcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRp
ZmllcihleGVjLCAianNjcHJpbnQiKSwgZ2xvYmFsRnVuY0pTQ1ByaW50KSwgRG9udEVudW0pOwog
I2VuZGlmCiAKICAgICByZXNldFByb3RvdHlwZShwcm90b3R5cGUpOwpkaWZmIC0tZ2l0IGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGEyMzQyOGIuLjZhMjk0ZmUgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1
ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNs
dWRlICJOYXRpdmVGdW5jdGlvbldyYXBwZXIuaCIKICNpbmNsdWRlICJOdW1iZXJQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgpAQCAtMTA3LDggKzEwOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgTmF0aXZl
RXJyb3JDb25zdHJ1Y3RvciogVVJJRXJyb3JDb25zdHJ1Y3RvcjsKIAogICAgICAgICAgICAgR2xv
YmFsRXZhbEZ1bmN0aW9uKiBldmFsRnVuY3Rpb247Ci0gICAgICAgICAgICBQcm90b3R5cGVGdW5j
dGlvbiogY2FsbEZ1bmN0aW9uOwotICAgICAgICAgICAgUHJvdG90eXBlRnVuY3Rpb24qIGFwcGx5
RnVuY3Rpb247CisgICAgICAgICAgICBOYXRpdmVGdW5jdGlvbldyYXBwZXIqIGNhbGxGdW5jdGlv
bjsKKyAgICAgICAgICAgIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlciogYXBwbHlGdW5jdGlvbjsKIAog
ICAgICAgICAgICAgT2JqZWN0UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGU7CiAgICAgICAgICAg
ICBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGU7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xv
b2t1cC5jcHAKaW5kZXggZWMzMzgzMy4uNTkzNjA5NSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgSlNWYWx1
ZSogbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOwog
CiAgICAgaWYgKCFsb2NhdGlvbikgewotICAgICAgICBQcm90b3R5cGVGdW5jdGlvbiogZnVuY3Rp
b24gPSBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGVudHJ5LT5mdW5jdGlvbkxl
bmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpKTsKKyAgICAgICAgSW50ZXJu
YWxGdW5jdGlvbiogZnVuY3Rpb24gPSBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihl
eGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlKCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5j
dGlvbigpKTsKICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0KHByb3BlcnR5TmFtZSwgZnVuY3Rp
b24sIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOwogICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdl
dERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmgKaW5kZXggMDVlZWM3NC4uYmU4MThiMSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Mb29rdXAuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5oCkBAIC0y
Myw3ICsyMyw2IEBACiAKICNpbmNsdWRlICJDYWxsRnJhbWUuaCIKICNpbmNsdWRlICJJZGVudGlm
aWVyLmgiCi0jaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJQcm9wZXJ0eVNsb3QuaCIKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCBmY2U1ZDhjLi5j
MDYyYTU2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCkBA
IC01MSwxMiArNTEsMTIgQEAgTnVtYmVyUHJvdG90eXBlOjpOdW1iZXJQcm90b3R5cGUoRXhlY1N0
YXRlKiBleGVjLCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXIKIAogICAgIC8vIFRoZSBj
b25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBOdW1iZXJDb25zdHJ1Y3RvciBo
YXMgYmVlbiBjb25zdHJ1Y3RlZAogCi0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNp
dGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHByb3RvdHlwZUZ1
bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIG51bWJl
clByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBw
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvTG9j
YWxlU3RyaW5nLCBudW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJv
dG90eXBlRnVuY3Rpb24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVu
dW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChl
eGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwg
MSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvRml4ZWQsIG51bWJlclByb3RvRnVuY1RvRml4ZWQp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVj
LCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3Ry
dWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9FeHBvbmVudGlhbCwgbnVtYmVyUHJv
dG9GdW5jVG9FeHBvbmVudGlhbCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywg
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1By
ZWNpc2lvbiwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24pLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1
bmN0aW9uV3JhcHBlcihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBudW1iZXJQcm90b0Z1bmNUb1N0cmluZyksIERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAo
ZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9Mb2NhbGVTdHJpbmcsIG51bWJlclByb3Rv
RnVuY1RvTG9jYWxlU3RyaW5nKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhl
YywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52
YWx1ZU9mLCBudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlv
bldyYXBwZXIoZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS50b0ZpeGVkLCBudW1iZXJQcm90b0Z1bmNUb0ZpeGVkKSwgRG9udEVudW0pOwor
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBO
YXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b0V4cG9uZW50aWFsLCBudW1iZXJQcm90b0Z1bmNUb0V4
cG9uZW50aWFsKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1ByZWNpc2lv
biwgbnVtYmVyUHJvdG9GdW5jVG9QcmVjaXNpb24pLCBEb250RW51bSk7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlw
ZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXgg
N2I4MWYzMi4uOTQ1YTg3OSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmpl
Y3RQcm90b3R5cGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcApAQCAtNDIsMTggKzQyLDE4IEBAIHN0YXRpYyBKU1ZhbHVlIG9iamVjdFByb3RvRnVu
Y1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSwgY29uCiBPYmpl
Y3RQcm90b3R5cGU6Ok9iamVjdFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBzdHVjdHVyZSwgU3RydWN0dXJlKiBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVy
ZSkKICAgICA6IEpTT2JqZWN0KHN0dWN0dXJlKQogewotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBw
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3Ry
aW5nLCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RG
dW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rp
b24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS50b0xvY2FsZVN0cmluZywgb2JqZWN0UHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpLCBEb250
RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcg
KGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJl
LCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVP
ZiksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5oYXNPd25Qcm9wZXJ0eSwgb2JqZWN0
UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4
ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvcGVydHlJc0VudW1lcmFibGUsIG9iamVjdFByb3RvRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxl
KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhl
YywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0
cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJvdG90eXBlT2YsIG9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb25X
aXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihl
eGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygp
LnRvU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb1N0cmluZyksIERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVu
Y3Rpb25XcmFwcGVyKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudG9Mb2NhbGVTdHJpbmcsIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3Ry
aW5nKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90eXBlRnVu
Y3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBvYmplY3RQ
cm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywg
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5oYXNP
d25Qcm9wZXJ0eSwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpLCBEb250RW51bSk7Cisg
ICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5h
dGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3BlcnR5SXNFbnVtZXJhYmxlLCBvYmplY3RQcm90b0Z1
bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVy
KGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuaXNQcm90b3R5cGVPZiwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiksIERvbnRFbnVt
KTsKIAogICAgIC8vIE1vemlsbGEgZXh0ZW5zaW9ucwotICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBw
cm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLl9fZGVm
aW5lR2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJv
dG90eXBlRnVuY3Rpb24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMt
PnByb3BlcnR5TmFtZXMoKS5fX2RlZmluZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVT
ZXR0ZXIpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHByb3RvdHlwZUZ1bmN0
aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19sb29rdXBHZXR0ZXJfXywg
b2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1
bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlv
bihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1l
cygpLl9fbG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xvb2t1cFNldHRlciksIERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAo
ZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0
dXJlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19kZWZpbmVHZXR0ZXJfXywgb2JqZWN0UHJv
dG9GdW5jRGVmaW5lR2V0dGVyKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0
aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhl
YywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5f
X2RlZmluZVNldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVTZXR0ZXIpLCBEb250RW51bSk7
CisgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMp
IE5hdGl2ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwg
MSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLl9fbG9va3VwR2V0dGVyX18sIG9iamVjdFByb3RvRnVu
Y0xvb2t1cEdldHRlciksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgTmF0aXZlRnVuY3Rpb25XcmFwcGVyKGV4ZWMsIHBy
b3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19sb29r
dXBTZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwU2V0dGVyKSwgRG9udEVudW0pOwogfQog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5jcHAKaW5kZXggOGRlNjVkZS4uM2EzMGYwZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtNDcsMTAgKzQ3LDEwIEBAIGNvbnN0IENsYXNzSW5m
byBSZWdFeHBQcm90b3R5cGU6OmluZm8gPSB7ICJSZWdFeHBQcm90b3R5cGUiLCAwLCAwLCAwIH07
CiBSZWdFeHBQcm90b3R5cGU6OlJlZ0V4cFByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMsIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUsIFN0cnVjdHVyZSogcHJvdG90eXBlRnVuY3Rpb25T
dHJ1Y3R1cmUpCiAgICAgOiBKU09iamVjdChzdHJ1Y3R1cmUpCiB7Ci0gICAgcHV0RGlyZWN0RnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9u
KGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVz
KCkuY29tcGlsZSwgcmVnRXhwUHJvdG9GdW5jQ29tcGlsZSksIERvbnRFbnVtKTsKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBl
RnVuY3Rpb24oZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5leGVjLCByZWdFeHBQcm90b0Z1bmNFeGVjKSwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5
cGVGdW5jdGlvbihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMCwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnRlc3QsIHJlZ0V4cFByb3RvRnVuY1Rlc3QpLCBEb250RW51bSk7Ci0gICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3Rv
dHlwZUZ1bmN0aW9uKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAwLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIHJlZ0V4cFByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChl
eGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1
cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21waWxlLCByZWdFeHBQcm90b0Z1bmNDb21w
aWxlKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24o
ZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90eXBlRnVu
Y3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5leGVjLCByZWdFeHBQcm90
b0Z1bmNFeGVjKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5z
aXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywgcHJvdG90
eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50ZXN0LCByZWdF
eHBQcm90b0Z1bmNUZXN0KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91
dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBOYXRpdmVGdW5jdGlvbldyYXBwZXIoZXhlYywg
cHJvdG90eXBlRnVuY3Rpb25TdHJ1Y3R1cmUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZywgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CiB9CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDkwYjAwODYuLmNjYmJjMGQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
Q29uc3RydWN0b3IuY3BwCkBAIC01Myw3ICs1Myw3IEBAIFN0cmluZ0NvbnN0cnVjdG9yOjpTdHJp
bmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzdHJ1
CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24oZXhlYy0+cHJvcGVydHlOYW1lcygpLnBy
b3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0
ZSk7CiAKICAgICAvLyBFQ01BIDE1LjUuMy4yIGZyb21DaGFyQ29kZSgpCi0gICAgcHV0RGlyZWN0
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0
aW9uKGV4ZWMsIHByb3RvdHlwZUZ1bmN0aW9uU3RydWN0dXJlLCAxLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuZnJvbUNoYXJDb2RlLCBzdHJpbmdGcm9tQ2hhckNvZGUpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIE5hdGl2
ZUZ1bmN0aW9uV3JhcHBlcihleGVjLCBwcm90b3R5cGVGdW5jdGlvblN0cnVjdHVyZSwgMSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmZyb21DaGFyQ29kZSwgc3RyaW5nRnJvbUNoYXJDb2RlKSwgRG9u
dEVudW0pOwogCiAgICAgLy8gbm8uIG9mIGFyZ3VtZW50cyBmb3IgY29uc3RydWN0b3IKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBq
c051bWJlcihleGVjLCAxKSwgUmVhZE9ubHkgfCBEb250RW51bSB8IERvbnREZWxldGUpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3N2U3
ZTFmLi43MjcxZDQxIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTA1LTA1ICBPbGl2ZXIgSHVudCAgPG9s
aXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQnVnIDI1NTU5OiBJbXByb3ZlIG5hdGl2ZSBmdW5jdGlvbiBjYWxsIHBlcmZvcm1h
bmNlCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjU1
NTk+CisKKyAgICAgICAgQWRkIGZvcndhcmRpbmcgaGVhZGVyIG5lY2Vzc2FyeSBmb3IgY29tcGls
YXRpb24sIGFuZCBmaXggZGVidWdnZXIKKyAgICAgICAgdG8gY29ycmVjdGx5IGFjY291bnQgZm9y
IGNoYW5nZSBpbiBKU0Z1bmN0aW9uIGJlaGF2aW91ci4KKworICAgICAgICAqIEZvcndhcmRpbmdI
ZWFkZXJzL2ppdC9KSVRDb2RlLmg6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9KYXZhU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SmF2YVNjcmlwdERlYnVnU2Vy
dmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyk6CisKIDIwMDktMDUtMDUgIFNpbW9uIEhhdXNt
YW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgU1ZH
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaml0L0pJ
VENvZGUuaCBiL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaml0L0pJVENvZGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTk2NjE1Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9qaXQvSklUQ29kZS5oCkBAIC0wLDAgKzEsNCBAQAor
I2lmbmRlZiBXZWJDb3JlX0ZXRF9KSVRDb2RlX2gKKyNkZWZpbmUgV2ViQ29yZV9GV0RfSklUQ29k
ZV9oCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSklUQ29kZS5oPgorI2VuZGlmCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSmF2YVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA4YzY1ODBmLi5kNTcw
MzgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAg
LTU1MSw4ICs1NTEsMTEgQEAgdm9pZCBKYXZhU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKFRpbWVyPEphdmFTY3JpcHREZWJ1Z1NlcnZlcj4KICAgICBWZWN0b3I8UHJv
dGVjdGVkUHRyPEpTRnVuY3Rpb24+ID4gZnVuY3Rpb25zOwogICAgIEhlYXA6Oml0ZXJhdG9yIGhl
YXBFbmQgPSBnbG9iYWxEYXRhLT5oZWFwLnByaW1hcnlIZWFwRW5kKCk7CiAgICAgZm9yIChIZWFw
OjppdGVyYXRvciBpdCA9IGdsb2JhbERhdGEtPmhlYXAucHJpbWFyeUhlYXBCZWdpbigpOyBpdCAh
PSBoZWFwRW5kOyArK2l0KSB7Ci0gICAgICAgIGlmICgoKml0KS0+aXNPYmplY3QoJkpTRnVuY3Rp
b246OmluZm8pKQotICAgICAgICAgICAgZnVuY3Rpb25zLmFwcGVuZChzdGF0aWNfY2FzdDxKU0Z1
bmN0aW9uKj4oKml0KSk7CisgICAgICAgIGlmICgoKml0KS0+aXNPYmplY3QoJkpTRnVuY3Rpb246
OmluZm8pKSB7CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IHN0YXRpY19jYXN0
PEpTRnVuY3Rpb24qPigqaXQpOworICAgICAgICAgICAgaWYgKCFmdW5jdGlvbi0+aXNIb3N0RnVu
Y3Rpb24oKSkKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMuYXBwZW5kKGZ1bmN0aW9uKTsKKyAg
ICAgICAgfQogICAgIH0KIAogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8RnVuY3Rpb25Cb2R5
Tm9kZT4sIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiA+IEZ1bmN0aW9uQm9keU1hcDsK
</data>
<flag name="review"
          id="15059"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>