<?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>220868</bug_id>
          
          <creation_ts>2021-01-22 10:54:58 -0800</creation_ts>
          <short_desc>REGRESSION (r271731): Unchecked JS exception under GlobalObject::moduleLoaderFetch</short_desc>
          <delta_ts>2021-01-22 16:07:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220820</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1721626</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2021-01-22 10:54:58 -0800</bug_when>
    <thetext>After https://trac.webkit.org/changeset/271731/webkit landed, the debug JSC bot has thousands of test failing with the following:

ERROR: Unchecked JS exception:
    This scope can throw a JS exception: resolve @ ./runtime/JSPromise.cpp:162
        (ExceptionScope::m_recursionDepth was 13)
    But the exception was unchecked as of this scope: moduleLoaderFetch @ /Volumes/Data/slave/catalina-debug/build/Source/JavaScriptCore/jsc.cpp:1184
        (ExceptionScope::m_recursionDepth was 12)

Unchecked exception detected at:
    1   0x10796343e JSC::VM::verifyExceptionCheckNeedIsSatisfied(unsigned int, JSC::ExceptionEventLocation&amp;)
    2   0x10752de11 JSC::CatchScope::~CatchScope()
    3   0x10752db65 JSC::CatchScope::~CatchScope()
    4   0x105b17bf3 GlobalObject::moduleLoaderFetch(JSC::JSGlobalObject*, JSC::JSModuleLoader*, JSC::JSValue, JSC::JSValue, JSC::JSValue)
    5   0x1077755b5 JSC::JSModuleLoader::fetch(JSC::JSGlobalObject*, JSC::JSValue, JSC::JSValue, JSC::JSValue)
    6   0x10777b51d JSC::moduleLoaderFetch(JSC::JSGlobalObject*, JSC::CallFrame*)
    7   0x5af48d801178
    8   0x1062f4eb2 llint_entry
    9   0x1062f4eb2 llint_entry
    10  0x1062f4eb2 llint_entry
    11  0x1062f4eb2 llint_entry
    12  0x1062f4eb2 llint_entry
    13  0x1062f4eb2 llint_entry
    14  0x1062d3740 vmEntryToJavaScript
    15  0x1071bfefb JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
    16  0x1071c06b7 JSC::Interpreter::executeCall(JSC::JSGlobalObject*, JSC::JSObject*, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
    17  0x10752d90d JSC::call(JSC::JSGlobalObject*, JSC::JSValue, JSC::CallData const&amp;, JSC::JSValue, JSC::ArgList const&amp;)
    18  0x107774a22 JSC::JSModuleLoader::requestImportModule(JSC::JSGlobalObject*, JSC::Identifier const&amp;, JSC::JSValue, JSC::JSValue)
    19  0x1075a5495 JSC::importModule(JSC::JSGlobalObject*, JSC::Identifier const&amp;, JSC::JSValue, JSC::JSValue)
    20  0x105b170df GlobalObject::moduleLoaderImportModule(JSC::JSGlobalObject*, JSC::JSModuleLoader*, JSC::JSString*, JSC::JSValue, JSC::SourceOrigin const&amp;)
    21  0x107774c0f JSC::JSModuleLoader::importModule(JSC::JSGlobalObject*, JSC::JSString*, JSC::JSValue, JSC::SourceOrigin const&amp;)
    22  0x107711830 JSC::globalFuncImportModule(JSC::JSGlobalObject*, JSC::CallFrame*)
    23  0x5af48d801178
    24  0x1062f4eb2 llint_entry
    25  0x1062d3740 vmEntryToJavaScript
    26  0x1071bfefb JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
    27  0x1071bf452 JSC::Interpreter::executeProgram(JSC::SourceCode const&amp;, JSC::JSGlobalObject*, JSC::JSObject*)
    28  0x1075a43b7 JSC::evaluate(JSC::JSGlobalObject*, JSC::SourceCode const&amp;, JSC::JSValue, WTF::NakedPtr&lt;JSC::Exception&gt;&amp;)
    29  0x105b8dab3 runWithOptions(GlobalObject*, CommandLine&amp;, bool&amp;)
    30  0x105b491ea jscmain(int, char**)::$_10::operator()(JSC::VM&amp;, GlobalObject*, bool&amp;) const
    31  0x105b1d7a3 int runJSC&lt;jscmain(int, char**)::$_10&gt;(CommandLine const&amp;, bool, jscmain(int, char**)::$_10 const&amp;)
    32  0x105b1b1f2 jscmain(int, char**)
    33  0x105b1af2e main
    34  0x7fff6e98ecc9 start


https://build.webkit.org/builders/Apple-Catalina-Debug-JSC-Tests/builds/2224/steps/jscore-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721627</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-22 10:55:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/73506709&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721711</commentid>
    <comment_count>2</comment_count>
      <attachid>418179</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-22 14:03:20 -0800</bug_when>
    <thetext>Created attachment 418179
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721728</commentid>
    <comment_count>3</comment_count>
      <attachid>418179</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2021-01-22 14:52:15 -0800</bug_when>
    <thetext>Comment on attachment 418179
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=418179&amp;action=review

r=me

&gt; Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp:244
&gt; +            JSC::instantiate(vm, globalObject, promise, module, importObject, moduleKey, resolveKind, creationMode);

I think we don&apos;t need this JSC:: qualifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721729</commentid>
    <comment_count>4</comment_count>
      <attachid>418179</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-22 14:53:51 -0800</bug_when>
    <thetext>Comment on attachment 418179
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=418179&amp;action=review

&gt;&gt; Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp:244
&gt;&gt; +            JSC::instantiate(vm, globalObject, promise, module, importObject, moduleKey, resolveKind, creationMode);
&gt; 
&gt; I think we don&apos;t need this JSC:: qualifier.

Removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721763</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-22 16:07:39 -0800</bug_when>
    <thetext>Committed r271766: &lt;https://trac.webkit.org/changeset/271766&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418179</attachid>
            <date>2021-01-22 14:03:20 -0800</date>
            <delta_ts>2021-01-22 14:52:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220868-20210122140319.patch</filename>
            <type>text/plain</type>
            <size>48021</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
NTZhZTljNTYyYWI1NTVkNjEzYzI0ODMxZTAxOGUwNGZhOGI3NzRiLi4wZWI2NjdhOTAwOGMyYjUz
YmFlOWNjM2Q1NWFiNTVlNTkwOTMyMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAyMS0wMS0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNzE3MzEpOiBVbmNoZWNrZWQgSlMgZXhjZXB0aW9u
IHVuZGVyIEdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0Y2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJlY2F1c2UgVGVybWluYXRlZEV4ZWN1dGlv
bkVycm9yIG5lZWRzIHRvIGJlIHVuY2F1Z2h0LCBDYXRjaFNjb3BlJ3Mgc2VtYW50aWNzIGRvZXMg
bm90IHdvcmsgd2VsbC4KKyAgICAgICAgU28sIHdlIGV4dGVuZCBUaHJvd1Njb3BlIHRvIGltcGxl
bWVudCBDYXRjaFNjb3BlJ3MgZmVhdHVyZSwgYW5kIHVzZSBUaHJvd1Njb3BlIGV0Yy4KKyAgICAg
ICAgV2UgYWxzbyBhZGQgSlNQcm9taXNlOjpyZWplY3RXaXRoQ2F1Z2h0RXhjZXB0aW9uIHNpbmNl
IHRoaXMgcGF0dGVybiBpcyBjb21tb24gZW5vdWdoLgorCisgICAgICAgICogQVBJL0pTQVBJR2xv
YmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9h
ZGVySW1wb3J0TW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNBUElHbG9iYWxPYmplY3Q6Om1vZHVs
ZUxvYWRlckZldGNoKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0
Ojptb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUpOgorICAgICAgICAoR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJGZXRjaCk6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6cmVqZWN0UHJvbWlzZSk6CisgICAgICAgIChKU0M6OmxvYWRBbmRFdmFsdWF0ZU1v
ZHVsZSk6CisgICAgICAgIChKU0M6OmxvYWRNb2R1bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuY3BwOgorICAg
ICAgICAoSlNDOjpKU0ludGVybmFsUHJvbWlzZTo6cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbik6
CisgICAgICAgICogcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6aW1w
b3J0TW9kdWxlKToKKyAgICAgICAgKEpTQzo6SlNNb2R1bGVMb2FkZXI6OnJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpKU01vZHVsZUxvYWRlcjo6ZmV0Y2gpOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpyZWplY3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9taXNlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlOjpy
ZWplY3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvbWlzZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvVGhyb3dTY29wZS5oOgorICAgICAgICAoSlNDOjpUaHJvd1Nj
b3BlOjpjbGVhckV4Y2VwdGlvbik6CisgICAgICAgICogd2FzbS9qcy9KU1dlYkFzc2VtYmx5LmNw
cDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpT
Qzo6cmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkpTV2ViQXNzZW1ibHk6OndlYkFzc2VtYmx5TW9k
dWxlVmFsaWRhdGVBc3luYyk6CisgICAgICAgIChKU0M6Omluc3RhbnRpYXRlKToKKyAgICAgICAg
KEpTQzo6Y29tcGlsZUFuZEluc3RhbnRpYXRlKToKKyAgICAgICAgKEpTQzo6SlNXZWJBc3NlbWJs
eTo6d2ViQXNzZW1ibHlNb2R1bGVJbnN0YW50aW5hdGVBc3luYyk6CisgICAgICAgIChKU0M6OnJl
amVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVB
c3luY0ludGVybmFsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVJ
bnN0YW50aW5hdGVBc3luY0ludGVybmFsKTogRGVsZXRlZC4KKwogMjAyMS0wMS0yMiAgTWFyayBM
YW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBPcHRpb25zOnVzZUF0
TWV0aG9kIGJlY2F1c2Ugb2YgY29tcGF0aWJpbGl0eSBpc3N1ZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCmluZGV4IDdhOGE4YjMwNjI4OWE0YjVk
MGNkOTBjYTY4NDkxNDNkOGZjODMyNGEuLmRlZTczMjUzZjg1ZDViMTI4ZDJjMmIzYWE1MjRhYzQy
YmQ5YWE4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9i
YWxPYmplY3QubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9i
amVjdC5tbQpAQCAtMTM0LDMzICsxMzQsMjUgQEAgSWRlbnRpZmllciBKU0FQSUdsb2JhbE9iamVj
dDo6bW9kdWxlTG9hZGVyUmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogSlNJ
bnRlcm5hbFByb21pc2UqIEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJbXBvcnRNb2R1
bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmlu
Zyogc3BlY2lmaWVyVmFsdWUsIEpTVmFsdWUsIGNvbnN0IFNvdXJjZU9yaWdpbiYgc291cmNlT3Jp
Z2luKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAgYXV0byByZWplY3QgPSBbJl0gKEV4Y2Vw
dGlvbiogZXhjZXB0aW9uKSAtPiBKU0ludGVybmFsUHJvbWlzZSogeworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvIHJlamVjdCA9IFsmXSAoVGhyb3dT
Y29wZSYgc2NvcGUpIC0+IEpTSW50ZXJuYWxQcm9taXNlKiB7CiAgICAgICAgIGF1dG8qIHByb21p
c2UgPSBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGVybmFs
UHJvbWlzZVN0cnVjdHVyZSgpKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGVybWluYXRlZEV4
ZWN1dGlvbkV4Y2VwdGlvbih2bSwgZXhjZXB0aW9uKSkpCi0gICAgICAgICAgICByZXR1cm4gcHJv
bWlzZTsKLSAgICAgICAgSlNWYWx1ZSBlcnJvciA9IGV4Y2VwdGlvbi0+dmFsdWUoKTsKLSAgICAg
ICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIGhh
dmUgZXJyb3Igc2luY2UgYW55IEpTIGNhbGwgY2FuIHRocm93IHN0YWNrLW92ZXJmbG93IGVycm9y
cy4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIw
MzQwMgotICAgICAgICBwcm9taXNlLT5yZWplY3QoZ2xvYmFsT2JqZWN0LCBlcnJvcik7Ci0gICAg
ICAgIHJldHVybiBwcm9taXNlOworICAgICAgICByZXR1cm4gcHJvbWlzZS0+cmVqZWN0V2l0aENh
dWdodEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKTsKICAgICB9OwogCiAgICAgYXV0byBp
bXBvcnQgPSBbJl0gKFVSTCYgdXJsKSB7CiAgICAgICAgIGF1dG8gcmVzdWx0ID0gaW1wb3J0TW9k
dWxlKGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgdXJsLnN0cmluZygp
KSwganNVbmRlZmluZWQoKSwganNVbmRlZmluZWQoKSk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0KHNjb3BlLmV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KHNjb3Bl
KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfTsKIAogICAgIGF1dG8gc3BlY2lmaWVy
ID0gc3BlY2lmaWVyVmFsdWUtPnZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFVOTElLRUxZ
KHNjb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdChzY29wZS5leGNlcHRp
b24oKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KHNjb3BlKSk7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IGNvbXB1dGVWYWxpZEltcG9ydFNwZWNpZmllcihzb3VyY2VPcmln
aW4udXJsKCksIHNwZWNpZmllcik7CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIGlt
cG9ydChyZXN1bHQudmFsdWUoKSk7CisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGF1dG8qIHBy
b21pc2UgPSBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGVy
bmFsUHJvbWlzZVN0cnVjdHVyZSgpKTsKICAgICAvLyBGSVhNRTogV2UgY291bGQgaGF2ZSBlcnJv
ciBzaW5jZSBhbnkgSlMgY2FsbCBjYW4gdGhyb3cgc3RhY2stb3ZlcmZsb3cgZXJyb3JzLgogICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0MDIKQEAgLTE3
MSw3ICsxNjMsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogSlNBUElHbG9iYWxPYmplY3Q6Om1vZHVs
ZUxvYWRlckltcG9ydE1vZHVsZShKU0dsb2JhbE9iamVjdCogZwogSlNJbnRlcm5hbFByb21pc2Uq
IEpTQVBJR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU01vZHVsZUxvYWRlciosIEpTVmFsdWUga2V5LCBKU1ZhbHVlLCBKU1ZhbHVl
KQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgQVNTRVJUKGdsb2JhbE9iamVjdCA9PSBnbG9iYWxPYmplY3QpOwog
ICAgIEpTQ29udGV4dCAqY29udGV4dCA9IFtKU0NvbnRleHQgY29udGV4dFdpdGhKU0dsb2JhbENv
bnRleHRSZWY6dG9HbG9iYWxSZWYoZ2xvYmFsT2JqZWN0KV07CkBAIC0xNzksMTYgKzE3MSwxMCBA
QCBKU0ludGVybmFsUHJvbWlzZSogSlNBUElHbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckZldGNo
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIEpTSW50ZXJuYWxQcm9taXNlKiBwcm9taXNl
ID0gSlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnRlcm5hbFBy
b21pc2VTdHJ1Y3R1cmUoKSk7CiAKICAgICBJZGVudGlmaWVyIG1vZHVsZUtleSA9IGtleS50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgewotICAgICAgICBFeGNlcHRpb24qIGV4Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigp
OwotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZt
LCBleGNlcHRpb24pKSkKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwotICAgICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICBwcm9taXNlLT5yZWplY3QoZ2xvYmFsT2JqZWN0
LCBleGNlcHRpb24tPnZhbHVlKCkpOwotICAgICAgICByZXR1cm4gcHJvbWlzZTsKLSAgICB9Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcHJvbWlzZS0+cmVqZWN0V2l0aENhdWdodEV4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIVtjb250
ZXh0IG1vZHVsZUxvYWRlckRlbGVnYXRlXSkpIHsKKyAgICAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgICAgICBwcm9taXNlLT5yZWplY3QoZ2xvYmFsT2JqZWN0LCBjcmVhdGVFcnJvcihnbG9iYWxP
YmplY3QsICJObyBtb2R1bGUgbG9hZGVyIHByb3ZpZGVkLiIpKTsKICAgICAgICAgcmV0dXJuIHBy
b21pc2U7CiAgICAgfQpAQCAtMjMyLDYgKzIxOCw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU0FQ
SUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
CiAKICAgICBbW2NvbnRleHQgbW9kdWxlTG9hZGVyRGVsZWdhdGVdIGNvbnRleHQ6Y29udGV4dCBm
ZXRjaE1vZHVsZUZvcklkZW50aWZpZXI6Wzo6SlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRv
UmVmKGdsb2JhbE9iamVjdCwga2V5KSBpbkNvbnRleHQ6Y29udGV4dF0gd2l0aFJlc29sdmVIYW5k
bGVyOls6OkpTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp0b1JlZihnbG9iYWxPYmplY3QsIHJl
c29sdmUpIGluQ29udGV4dDpjb250ZXh0XSBhbmRSZWplY3RIYW5kbGVyOls6OkpTVmFsdWUgdmFs
dWVXaXRoSlNWYWx1ZVJlZjp0b1JlZihnbG9iYWxPYmplY3QsIHJlamVjdCkgaW5Db250ZXh0OmNv
bnRleHRdXTsKICAgICBpZiAoY29udGV4dC5leGNlcHRpb24pIHsKKyAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoZ2xvYmFsT2JqZWN0LCB0b0pTKGdsb2Jh
bE9iamVjdCwgW2NvbnRleHQuZXhjZXB0aW9uIEpTVmFsdWVSZWZdKSk7CiAgICAgICAgIGNvbnRl
eHQuZXhjZXB0aW9uID0gbmlsOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggOTZmMDhm
MDJmZDJiMzYyZGIyMGU2NmUxZmNiZjFiZmUyMThhYTQ0NS4uZTMzZWIyYmM2YTgxNWJmMjRmNTIy
NTg3NmJiNGYyNzVhMGVjNzdiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTgyNiw0NCArODI2
LDMyIEBAIHN0YXRpYyBVUkwgYWJzb2x1dGVQYXRoKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiBK
U0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNNb2R1bGVMb2FkZXIqLCBKU1N0cmluZyog
bW9kdWxlTmFtZVZhbHVlLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIGNvbnN0IFNvdXJjZU9yaWdpbiYg
c291cmNlT3JpZ2luKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvKiBwcm9taXNlID0gSlNJbnRl
cm5hbFByb21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5pbnRlcm5hbFByb21pc2VTdHJ1
Y3R1cmUoKSk7CiAKLSAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZt
KTsKLQogICAgIGF1dG8gcmVqZWN0V2l0aEVycm9yID0gWyZdKEpTVmFsdWUgZXJyb3IpIHsKICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KGdsb2JhbE9iamVjdCwgZXJyb3IpOwogICAgICAgICByZXR1
cm4gcHJvbWlzZTsKICAgICB9OwogCi0gICAgYXV0byByZWplY3QgPSBbJl0oRXhjZXB0aW9uKiBl
eGNlcHRpb24pIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVGVybWluYXRlZEV4ZWN1dGlvbkV4
Y2VwdGlvbih2bSwgZXhjZXB0aW9uKSkpCi0gICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKLSAg
ICAgICAgSlNWYWx1ZSBlcnJvciA9IGV4Y2VwdGlvbi0+dmFsdWUoKTsKLSAgICAgICAgY2F0Y2hT
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEVycm9yKGVy
cm9yKTsKLSAgICB9OwotCiAgICAgYXV0byByZWZlcnJlciA9IHNvdXJjZU9yaWdpbi51cmwoKTsK
ICAgICBhdXRvIHNwZWNpZmllciA9IG1vZHVsZU5hbWVWYWx1ZS0+dmFsdWUoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwotICAgIGlm
IChVTkxJS0VMWShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHJlamVj
dChjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBwcm9taXNlLT5yZWplY3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUp
KTsKIAogICAgIGlmICghcmVmZXJyZXIuaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIHJl
amVjdFdpdGhFcnJvcihjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNvdWxk
IG5vdCByZXNvbHZlIHRoZSByZWZlcnJlcidzIHBhdGggJyIsIHJlZmVycmVyLnN0cmluZygpLCAi
Jywgd2hpbGUgdHJ5aW5nIHRvIHJlc29sdmUgbW9kdWxlICciLCBzcGVjaWZpZXIsICInLiIpKSk7
CisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVqZWN0V2l0aEVycm9yKGNyZWF0
ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQgbm90IHJlc29sdmUgdGhlIHJl
ZmVycmVyJ3MgcGF0aCAnIiwgcmVmZXJyZXIuc3RyaW5nKCksICInLCB3aGlsZSB0cnlpbmcgdG8g
cmVzb2x2ZSBtb2R1bGUgJyIsIHNwZWNpZmllciwgIicuIikpKSk7CiAKICAgICBpZiAoIXNwZWNp
Zmllci5zdGFydHNXaXRoKCcvJykgJiYgIXNwZWNpZmllci5zdGFydHNXaXRoKCIuLyIpICYmICFz
cGVjaWZpZXIuc3RhcnRzV2l0aCgiLi4vIikpCi0gICAgICAgIHJldHVybiByZWplY3RXaXRoRXJy
b3IoY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiTW9kdWxlIHNwZWNp
ZmllciwgJyJfcywgc3BlY2lmaWVyLCAiJyBkb2VzIG5vdCBzdGFydCB3aXRoIFwiL1wiLCBcIi4v
XCIsIG9yIFwiLi4vXCIuIFJlZmVyZW5jZWQgZnJvbTogIl9zLCByZWZlcnJlci5maWxlU3lzdGVt
UGF0aCgpKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlamVjdFdpdGhF
cnJvcihjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJNb2R1bGUgc3Bl
Y2lmaWVyLCAnIl9zLCBzcGVjaWZpZXIsICInIGRvZXMgbm90IHN0YXJ0IHdpdGggXCIvXCIsIFwi
Li9cIiwgb3IgXCIuLi9cIi4gUmVmZXJlbmNlZCBmcm9tOiAiX3MsIHJlZmVycmVyLmZpbGVTeXN0
ZW1QYXRoKCkpKSkpOwogCiAgICAgVVJMIG1vZHVsZVVSTChyZWZlcnJlciwgc3BlY2lmaWVyKTsK
ICAgICBpZiAoIW1vZHVsZVVSTC5pc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gcmVqZWN0
V2l0aEVycm9yKGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiTW9kdWxlIHVy
bCwgJyIsIG1vZHVsZVVSTC5zdHJpbmcoKSwgIicgZG9lcyBub3QgbWFwIHRvIGEgbG9jYWwgZmls
ZS4iKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlamVjdFdpdGhFcnJv
cihjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIk1vZHVsZSB1cmwsICciLCBt
b2R1bGVVUkwuc3RyaW5nKCksICInIGRvZXMgbm90IG1hcCB0byBhIGxvY2FsIGZpbGUuIikpKSk7
CiAKICAgICBhdXRvIHJlc3VsdCA9IEpTQzo6aW1wb3J0TW9kdWxlKGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgbW9kdWxlVVJMLnN0cmluZygpKSwgcGFyYW1ldGVycywg
anNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkp
KQotICAgICAgICByZXR1cm4gcmVqZWN0KGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHByb21pc2UtPnJlamVjdFdpdGhDYXVnaHRFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSkpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
MTE4MSwyNCArMTE2OSwxNSBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1
bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0ludGVybmFsUHJvbWlzZSogcHJvbWlzZSA9IEpT
SW50ZXJuYWxQcm9taXNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNl
U3RydWN0dXJlKCkpOwogCi0gICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
YXV0byByZWplY3RXaXRoRXJyb3IgPSBbJl0oSlNWYWx1ZSBlcnJvcikgewogICAgICAgICBwcm9t
aXNlLT5yZWplY3QoZ2xvYmFsT2JqZWN0LCBlcnJvcik7CiAgICAgICAgIHJldHVybiBwcm9taXNl
OwogICAgIH07CiAKLSAgICBhdXRvIHJlamVjdCA9IFsmXShFeGNlcHRpb24qIGV4Y2VwdGlvbikg
ewotICAgICAgICBpZiAoVU5MSUtFTFkoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZt
LCBleGNlcHRpb24pKSkKLSAgICAgICAgICAgIHJldHVybiBwcm9taXNlOwotICAgICAgICBKU1Zh
bHVlIGVycm9yID0gZXhjZXB0aW9uLT52YWx1ZSgpOwotICAgICAgICBjYXRjaFNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiByZWplY3RXaXRoRXJyb3IoZXJyb3IpOwotICAg
IH07Ci0KICAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm4gcmVqZWN0KGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHByb21pc2UtPnJlamVjdFdpdGhDYXVnaHRFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSkpOwogCiAgICAgVVJMIG1vZHVsZVVSTCh7IH0sIG1vZHVsZUtleSk7CiAgICAg
QVNTRVJUKG1vZHVsZVVSTC5pc0xvY2FsRmlsZSgpKTsKQEAgLTEyMDcsMTYgKzExODYsMTYgQEAg
SlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0Y2goSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7CiAg
ICAgaWYgKCFmZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0obW9kdWxlVVJMLCBidWZmZXIp
KQotICAgICAgICByZXR1cm4gcmVqZWN0V2l0aEVycm9yKGNyZWF0ZUVycm9yKGdsb2JhbE9iamVj
dCwgbWFrZVN0cmluZygiQ291bGQgbm90IG9wZW4gZmlsZSAnIiwgbW9kdWxlS2V5LCAiJy4iKSkp
OworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlamVjdFdpdGhFcnJvcihjcmVh
dGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJyIs
IG1vZHVsZUtleSwgIicuIikpKSk7CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgLy8g
RmlsZVN5c3RlbSBkb2VzIG5vdCBoYXZlIG1pbWUtdHlwZSBoZWFkZXIuIFRoZSBKU0Mgc2hlbGwg
cmVjb2duaXplcyBXZWJBc3NlbWJseSdzIG1hZ2ljIGhlYWRlci4KICAgICBpZiAoYnVmZmVyLnNp
emUoKSA+PSA0KSB7CiAgICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ1wwJyAmJiBidWZmZXJbMV0g
PT0gJ2EnICYmIGJ1ZmZlclsyXSA9PSAncycgJiYgYnVmZmVyWzNdID09ICdtJykgewogICAgICAg
ICAgICAgYXV0byBzb3VyY2UgPSBTb3VyY2VDb2RlKFdlYkFzc2VtYmx5U291cmNlUHJvdmlkZXI6
OmNyZWF0ZShXVEZNb3ZlKGJ1ZmZlciksIFNvdXJjZU9yaWdpbiB7IG1vZHVsZVVSTCB9LCBXVEZN
b3ZlKG1vZHVsZUtleSkpKTsKLSAgICAgICAgICAgIGNhdGNoU2NvcGUucmVsZWFzZUFzc2VydE5v
RXhjZXB0aW9uKCk7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24o
KTsKICAgICAgICAgICAgIGF1dG8gc291cmNlQ29kZSA9IEpTU291cmNlQ29kZTo6Y3JlYXRlKHZt
LCBXVEZNb3ZlKHNvdXJjZSkpOwotICAgICAgICAgICAgY2F0Y2hTY29wZS5yZWxlYXNlQXNzZXJ0
Tm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICAgICAgICAg
IHByb21pc2UtPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlKTsKICAgICAgICAgICAg
IHJldHVybiBwcm9taXNlOwogICAgICAgICB9CkBAIC0xMjI0LDcgKzEyMDMsNyBAQCBKU0ludGVy
bmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogI2VuZGlmCiAKICAgICBhdXRvIHNvdXJjZUNvZGUgPSBKU1NvdXJj
ZUNvZGU6OmNyZWF0ZSh2bSwganNjU291cmNlKHN0cmluZ0Zyb21VVEYoYnVmZmVyKSwgU291cmNl
T3JpZ2luIHsgbW9kdWxlVVJMIH0sIFdURk1vdmUobW9kdWxlS2V5KSwgVGV4dFBvc2l0aW9uKCks
IFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSk7Ci0gICAgY2F0Y2hTY29wZS5yZWxl
YXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcHJvbWlz
ZS0+cmVzb2x2ZShnbG9iYWxPYmplY3QsIHNvdXJjZUNvZGUpOwogICAgIHJldHVybiBwcm9taXNl
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRl
eCA0ZTJkNThjMTgzNjY2NDIzYjgzNmRmMjYyMWMyNWU0ZjZlNjI2YzU1Li4zZmJmMWQ4ZDMzODNh
N2FiMjE3MWE5MzhhZmFlNjk2MmM3ZmNiMGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcApAQCAtMTc2LDE2ICsxNzYsMTEgQEAgc3RhdGljIFN5bWJv
bCogY3JlYXRlU3ltYm9sRm9yRW50cnlQb2ludE1vZHVsZShWTSYgdm0pCiAgICAgcmV0dXJuIFN5
bWJvbDo6Y3JlYXRlKHZtLCBwcml2YXRlTmFtZS51aWQoKSk7CiB9CiAKLXN0YXRpYyBKU0ludGVy
bmFsUHJvbWlzZSogcmVqZWN0UHJvbWlzZShDYXRjaFNjb3BlJiBzY29wZSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3N0YXRpYyBKU0ludGVybmFsUHJvbWlzZSogcmVqZWN0UHJvbWlz
ZShUaHJvd1Njb3BlJiBzY29wZSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNJbnRlcm5hbFByb21pc2UqIHBy
b21pc2UgPSBKU0ludGVybmFsUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGVy
bmFsUHJvbWlzZVN0cnVjdHVyZSgpKTsKLSAgICBpZiAoVU5MSUtFTFkoaXNUZXJtaW5hdGVkRXhl
Y3V0aW9uRXhjZXB0aW9uKHZtLCBzY29wZS5leGNlcHRpb24oKSkpKQotICAgICAgICByZXR1cm4g
cHJvbWlzZTsKLSAgICBKU1ZhbHVlIGVycm9yID0gc2NvcGUuZXhjZXB0aW9uKCktPnZhbHVlKCk7
Ci0gICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICBwcm9taXNlLT5yZWplY3QoZ2xvYmFs
T2JqZWN0LCBlcnJvcik7Ci0gICAgcmV0dXJuIHByb21pc2U7CisgICAgcmV0dXJuIHByb21pc2Ut
PnJlamVjdFdpdGhDYXVnaHRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiB9CiAKIEpT
SW50ZXJuYWxQcm9taXNlKiBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3ltYm9sKiBtb2R1bGVJZCwgSlNWYWx1ZSBwYXJhbWV0ZXJzLCBKU1ZhbHVl
IHNjcmlwdEZldGNoZXIpCkBAIC0yMTIsNyArMjA3LDcgQEAgSlNJbnRlcm5hbFByb21pc2UqIGxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBT
b3UKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sodm0pOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgUkVMRUFTRV9BU1NF
UlQodm0uYXRvbVN0cmluZ1RhYmxlKCkgPT0gVGhyZWFkOjpjdXJyZW50KCkuYXRvbVN0cmluZ1Rh
YmxlKCkpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bS5pc0NvbGxlY3RvckJ1c3lPbkN1cnJlbnRU
aHJlYWQoKSk7CiAKQEAgLTIyMSw3ICsyMTYsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZEFu
ZEV2YWx1YXRlTW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdQog
ICAgIC8vIEluc2VydCB0aGUgZ2l2ZW4gc291cmNlIGNvZGUgdG8gdGhlIE1vZHVsZUxvYWRlciBy
ZWdpc3RyeSBhcyB0aGUgZmV0Y2hlZCByZWdpc3RyeSBlbnRyeS4KICAgICBnbG9iYWxPYmplY3Qt
Pm1vZHVsZUxvYWRlcigpLT5wcm92aWRlRmV0Y2goZ2xvYmFsT2JqZWN0LCBrZXksIHNvdXJjZSk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcmVqZWN0UHJvbWlzZShzY29wZSwgZ2xv
YmFsT2JqZWN0KSk7Ci0gICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPmxv
YWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxPYmplY3QsIGtleSwganNVbmRlZmluZWQoKSwgc2Ny
aXB0RmV0Y2hlcik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnbG9iYWxPYmplY3Qt
Pm1vZHVsZUxvYWRlcigpLT5sb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LCBrZXks
IGpzVW5kZWZpbmVkKCksIHNjcmlwdEZldGNoZXIpKTsKIH0KIAogSlNJbnRlcm5hbFByb21pc2Uq
IGxvYWRNb2R1bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBt
b2R1bGVOYW1lLCBKU1ZhbHVlIHBhcmFtZXRlcnMsIEpTVmFsdWUgc2NyaXB0RmV0Y2hlcikKQEAg
LTIzOCw3ICsyMzMsNyBAQCBKU0ludGVybmFsUHJvbWlzZSogbG9hZE1vZHVsZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTb3VyY2VDb2RlJiBzbwogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7Ci0gICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9tU3RyaW5nVGFi
bGUoKSA9PSBUaHJlYWQ6OmN1cnJlbnQoKS5hdG9tU3RyaW5nVGFibGUoKSk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoIXZtLmlzQ29sbGVjdG9yQnVzeU9uQ3VycmVudFRocmVhZCgpKTsKIApAQCAtMjQ4
LDcgKzI0Myw3IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBsb2FkTW9kdWxlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGNvbnN0IFNvdXJjZUNvZGUmIHNvCiAgICAgLy8gRklYTUU6IEludHJv
ZHVjZSBKU1NvdXJjZUNvZGUgb2JqZWN0IHRvIHdyYXAgYXJvdW5kIHRoaXMgc291cmNlLgogICAg
IGdsb2JhbE9iamVjdC0+bW9kdWxlTG9hZGVyKCktPnByb3ZpZGVGZXRjaChnbG9iYWxPYmplY3Qs
IGtleSwgc291cmNlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3RQcm9t
aXNlKHNjb3BlLCBnbG9iYWxPYmplY3QpKTsKLSAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5tb2R1
bGVMb2FkZXIoKS0+bG9hZE1vZHVsZShnbG9iYWxPYmplY3QsIGtleSwganNVbmRlZmluZWQoKSwg
c2NyaXB0RmV0Y2hlcik7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnbG9iYWxPYmpl
Y3QtPm1vZHVsZUxvYWRlcigpLT5sb2FkTW9kdWxlKGdsb2JhbE9iamVjdCwga2V5LCBqc1VuZGVm
aW5lZCgpLCBzY3JpcHRGZXRjaGVyKSk7CiB9CiAKIEpTVmFsdWUgbGlua0FuZEV2YWx1YXRlTW9k
dWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZUtleSwgSlNWYWx1ZSBzY3JpcHRGZXRjaGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDI5MzAz
ZDc1YTI3NzRiNWFkOWU2ZTU0OTkyODhmOWMwYjFjNzViMzcuLmQ0ZGYwMzNlOWMzMWE1NDgzMDNj
Yzk1M2NhNTkyOWYxYWNkZWZkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTI2LDcgKzI2LDYg
QEAKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgogCiAjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCi0jaW5jbHVkZSAiQ2F0Y2hTY29wZS5oIgogI2luY2x1ZGUgIkluZGlyZWN0RXZh
bEV4ZWN1dGFibGUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkludGxE
YXRlVGltZUZvcm1hdC5oIgpAQCAtNzk4LDMwICs3OTcsMjAgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGdsb2JhbEZ1bmNJbXBvcnRNb2R1bGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogCiAgICAgYXV0byogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPnByb21pc2VTdHJ1Y3R1cmUoKSk7CiAKLSAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNM
QVJFX0NBVENIX1NDT1BFKHZtKTsKLQotICAgIGF1dG8gcmVqZWN0ID0gWyZdKEV4Y2VwdGlvbiog
ZXhjZXB0aW9uKSB7Ci0gICAgICAgIGlmIChVTkxJS0VMWShpc1Rlcm1pbmF0ZWRFeGVjdXRpb25F
eGNlcHRpb24odm0sIGV4Y2VwdGlvbikpKQotICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7Ci0g
ICAgICAgIEpTVmFsdWUgZXJyb3IgPSBleGNlcHRpb24tPnZhbHVlKCk7Ci0gICAgICAgIGNhdGNo
U2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGdsb2JhbE9i
amVjdCwgZXJyb3IpOwotICAgICAgICByZXR1cm4gcHJvbWlzZTsKLSAgICB9OworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGF1dG8gc291cmNlT3JpZ2lu
ID0gY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pOwogICAgIFJFTEVBU0VfQVNTRVJU
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpID09IDEpOwogICAgIGF1dG8qIHNwZWNpZmllciA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsK
LSAgICBpZiAoRXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlamVjdChleGNlcHRpb24pKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cmVqZWN0
V2l0aENhdWdodEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKSkpOwogCiAgICAgLy8gV2Ug
YWx3YXlzIHNwZWNpZnkgcGFyYW1ldGVycyBhcyB1bmRlZmluZWQuIE9uY2UgZHluYW1pYyBpbXBv
cnQoKSBzdGFydHMgYWNjZXB0aW5nIGZldGNoaW5nIHBhcmFtZXRlcnMsCiAgICAgLy8gd2Ugc2hv
dWxkIHJldHJpZXZlIHRoaXMgZnJvbSB0aGUgYXJndW1lbnRzLgogICAgIEpTVmFsdWUgcGFyYW1l
dGVycyA9IGpzVW5kZWZpbmVkKCk7CiAgICAgYXV0byogaW50ZXJuYWxQcm9taXNlID0gZ2xvYmFs
T2JqZWN0LT5tb2R1bGVMb2FkZXIoKS0+aW1wb3J0TW9kdWxlKGdsb2JhbE9iamVjdCwgc3BlY2lm
aWVyLCBwYXJhbWV0ZXJzLCBzb3VyY2VPcmlnaW4pOwotICAgIGlmIChFeGNlcHRpb24qIGV4Y2Vw
dGlvbiA9IGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVqZWN0KGV4Y2VwdGlvbikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShwcm9taXNlLT5yZWplY3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgc2NvcGUpKSk7CiAKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcHJvbWlzZS0+
cmVzb2x2ZShnbG9iYWxPYmplY3QsIGludGVybmFsUHJvbWlzZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShwcm9taXNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmNwcAppbmRleCBlZWNhODM2Zjg0MzAwYjVhMDA0MjQ3
NjE3NzFjMGYwMjliNDFlYWZmLi5lZmU4NzM5ODNjMzk0MGIyYzcxZmNjOWQ0YmEwZThiZDBkZGY0
MmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFs
UHJvbWlzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNJbnRlcm5h
bFByb21pc2UuY3BwCkBAIC03Myw0ICs3Myw5IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVy
bmFsUHJvbWlzZTo6dGhlbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Z1bmN0CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBqc0Nhc3Q8SlNJbnRlcm5hbFByb21pc2UqPihj
YWxsKGdsb2JhbE9iamVjdCwgZnVuY3Rpb24sIGNhbGxEYXRhLCB0aGlzLCBhcmd1bWVudHMpKSk7
CiB9CiAKK0pTSW50ZXJuYWxQcm9taXNlKiBKU0ludGVybmFsUHJvbWlzZTo6cmVqZWN0V2l0aENh
dWdodEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBz
Y29wZSkKK3sKKyAgICByZXR1cm4ganNDYXN0PEpTSW50ZXJuYWxQcm9taXNlKj4oSlNQcm9taXNl
OjpyZWplY3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUpKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0ludGVybmFsUHJvbWlzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNJbnRlcm5hbFByb21pc2UuaAppbmRleCBkNzBmZDMzODI4NWE5NDRhZGMyYTI2MDZjZWU5NDBh
ZGNmZDFhZGRiLi5jOGUzOTE1ZjU2MGJlN2JjZmExMjE4YTY4N2I2MWE1NmQ2ZTIzNjQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlLmgK
QEAgLTUxLDYgKzUxLDggQEAgY2xhc3MgSlNJbnRlcm5hbFByb21pc2UgZmluYWwgOiBwdWJsaWMg
SlNQcm9taXNlIHsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTSW50ZXJuYWxQcm9taXNlKiB0
aGVuKEpTR2xvYmFsT2JqZWN0KiwgSlNGdW5jdGlvbiogPSBudWxscHRyLCBKU0Z1bmN0aW9uKiA9
IG51bGxwdHIpOwogCisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNJbnRlcm5hbFByb21pc2UqIHJl
amVjdFdpdGhDYXVnaHRFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJik7CisK
IHByaXZhdGU6CiAgICAgSlNJbnRlcm5hbFByb21pc2UoVk0mLCBTdHJ1Y3R1cmUqKTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUxvYWRlci5jcHAKaW5k
ZXggMTRhZDRiNWFkNTQzZmRlNmFhOGRlZjBiYjg1ODZjNjkyNGIyMmQ4Yy4uNzdiYjJiMGI1OWQ3
ZDZmYmY2MDU2OTc3MGM1YzZjMjkyODRiNDJjOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcApAQCAtMTIwLDE4ICsxMjAsNiBAQCBzdGF0
aWMgU3RyaW5nIHByaW50YWJsZU1vZHVsZUtleShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGtleSkKICAgICByZXR1cm4gdm0ucHJvcGVydHlOYW1lcy0+ZW1wdHlJZGVudGlm
aWVyLmltcGwoKTsKIH0KIAotc3RhdGljIEpTSW50ZXJuYWxQcm9taXNlKiByZWplY3QoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2F0Y2hTY29wZSYgY2F0Y2hTY29wZSwgSlNJbnRlcm5h
bFByb21pc2UqIHByb21pc2UpCi17Ci0gICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwot
ICAgIEV4Y2VwdGlvbiogZXhjZXB0aW9uID0gY2F0Y2hTY29wZS5leGNlcHRpb24oKTsKLSAgICBB
U1NFUlQoZXhjZXB0aW9uKTsKLSAgICBpZiAoVU5MSUtFTFkoaXNUZXJtaW5hdGVkRXhlY3V0aW9u
RXhjZXB0aW9uKHZtLCBleGNlcHRpb24pKSkKLSAgICAgICAgcmV0dXJuIHByb21pc2U7Ci0gICAg
Y2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgIHByb21pc2UtPnJlamVjdChnbG9iYWxP
YmplY3QsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIHByb21pc2U7Ci19Ci0KIEpT
QXJyYXkqIEpTTW9kdWxlTG9hZGVyOjpkZXBlbmRlbmN5S2V5c0lmRXZhbHVhdGVkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUga2V5KQogewogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKQEAgLTI1NiwxNSArMjQ0LDE2IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBK
U01vZHVsZUxvYWRlcjo6aW1wb3J0TW9kdWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTCiAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6ZHVtcE1vZHVsZUxvYWRpbmdTdGF0ZSgpLCAi
TG9hZGVyIFtpbXBvcnRdICIsIHByaW50YWJsZU1vZHVsZUtleShnbG9iYWxPYmplY3QsIG1vZHVs
ZU5hbWUpKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIGNh
dGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3RNZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJJbXBvcnRNb2R1bGUpCi0gICAgICAgIHJldHVy
biBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlcklt
cG9ydE1vZHVsZShnbG9iYWxPYmplY3QsIHRoaXMsIG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIHJl
ZmVycmVyKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPm1vZHVsZUxvYWRlckltcG9ydE1vZHVsZShnbG9i
YWxPYmplY3QsIHRoaXMsIG1vZHVsZU5hbWUsIHBhcmFtZXRlcnMsIHJlZmVycmVyKSk7CiAKICAg
ICBhdXRvKiBwcm9taXNlID0gSlNJbnRlcm5hbFByb21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LT5pbnRlcm5hbFByb21pc2VTdHJ1Y3R1cmUoKSk7CiAgICAgU3RyaW5nIG1vZHVsZU5hbWVT
dHJpbmcgPSBtb2R1bGVOYW1lLT52YWx1ZShnbG9iYWxPYmplY3QpOwotICAgIGlmIChVTkxJS0VM
WShjYXRjaFNjb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdChnbG9iYWxP
YmplY3QsIGNhdGNoU2NvcGUsIHByb21pc2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHByb21pc2UtPnJlamVjdFdpdGhDYXVnaHRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSkpOworCisgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIHByb21pc2UtPnJlamVjdChnbG9iYWxP
YmplY3QsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ291bGQgbm90IGlt
cG9ydCB0aGUgbW9kdWxlICciLCBtb2R1bGVOYW1lU3RyaW5nLCAiJy4iKSkpOwogICAgIHJldHVy
biBwcm9taXNlOwogfQpAQCAtMjgxLDEyICsyNzAsMTMgQEAgSWRlbnRpZmllciBKU01vZHVsZUxv
YWRlcjo6cmVzb2x2ZVN5bmMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBu
YW0KIEpTSW50ZXJuYWxQcm9taXNlKiBKU01vZHVsZUxvYWRlcjo6cmVzb2x2ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG5hbWUsIEpTVmFsdWUgcmVmZXJyZXIsIEpTVmFs
dWUgc2NyaXB0RmV0Y2hlcikKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Ci0g
ICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgYXV0byogcHJvbWlzZSA9IEpT
SW50ZXJuYWxQcm9taXNlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+aW50ZXJuYWxQcm9taXNl
U3RydWN0dXJlKCkpOwogICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gcmVzb2x2ZVN5
bmMoZ2xvYmFsT2JqZWN0LCBuYW1lLCByZWZlcnJlciwgc2NyaXB0RmV0Y2hlcik7Ci0gICAgaWYg
KFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gcmVqZWN0
KGdsb2JhbE9iamVjdCwgY2F0Y2hTY29wZSwgcHJvbWlzZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgcHJvbWlzZS0+cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbihnbG9iYWxPYmpl
Y3QsIHNjb3BlKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcHJvbWlzZS0+cmVzb2x2
ZShnbG9iYWxPYmplY3QsIGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIG1vZHVsZUtleSkpOwogICAg
IHJldHVybiBwcm9taXNlOwogfQpAQCAtMjk2LDE1ICsyODYsMTYgQEAgSlNJbnRlcm5hbFByb21p
c2UqIEpTTW9kdWxlTG9hZGVyOjpmZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGsKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjpkdW1wTW9kdWxlTG9hZGluZ1N0YXRl
KCksICJMb2FkZXIgW2ZldGNoXSAiLCBwcmludGFibGVNb2R1bGVLZXkoZ2xvYmFsT2JqZWN0LCBr
ZXkpKTsKIAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIGNhdGNo
U2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RN
ZXRob2RUYWJsZSgpLT5tb2R1bGVMb2FkZXJGZXRjaCkKLSAgICAgICAgcmV0dXJuIGdsb2JhbE9i
amVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+bW9kdWxlTG9hZGVyRmV0Y2goZ2xvYmFs
T2JqZWN0LCB0aGlzLCBrZXksIHBhcmFtZXRlcnMsIHNjcmlwdEZldGNoZXIpOworICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUoKS0+bW9kdWxlTG9hZGVyRmV0Y2goZ2xvYmFsT2JqZWN0LCB0aGlzLCBrZXksIHBhcmFt
ZXRlcnMsIHNjcmlwdEZldGNoZXIpKTsKIAogICAgIGF1dG8qIHByb21pc2UgPSBKU0ludGVybmFs
UHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVy
ZSgpKTsKICAgICBTdHJpbmcgbW9kdWxlS2V5ID0ga2V5LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVj
dCk7Ci0gICAgaWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICBy
ZXR1cm4gcmVqZWN0KGdsb2JhbE9iamVjdCwgY2F0Y2hTY29wZSwgcHJvbWlzZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgcHJvbWlzZS0+cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlKSk7CisKKyAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgcHJv
bWlzZS0+cmVqZWN0KGdsb2JhbE9iamVjdCwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtl
U3RyaW5nKCJDb3VsZCBub3Qgb3BlbiB0aGUgbW9kdWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7
CiAgICAgcmV0dXJuIHByb21pc2U7CiB9CkBAIC0zNTUsNyArMzQ2LDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKG1vZHVsZUxvYWRlclBhcnNlTW9kdWxlLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwKIAogICAgIGF1dG8qIHByb21pc2UgPSBKU0ludGVybmFsUHJvbWlzZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGVybmFsUHJvbWlzZVN0cnVjdHVyZSgpKTsKIAotICAg
IGF1dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGF1dG8gcmVqZWN0V2l0aEVycm9y
ID0gWyZdKEpTVmFsdWUgZXJyb3IpIHsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGdsb2JhbE9i
amVjdCwgZXJyb3IpOwpAQCAtMzYzLDggKzM1NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tihtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgfTsKIAogICAgIGNvbnN0IElkZW50aWZpZXIgbW9kdWxlS2V5ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7Ci0gICAgaWYgKFVOTElLRUxZ
KGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlamVjdChnbG9iYWxPYmplY3QsIGNhdGNoU2NvcGUsIHByb21pc2UpKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+cmVqZWN0V2l0aENh
dWdodEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKSkpOwogCiAgICAgSlNWYWx1ZSBzb3Vy
Y2UgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGF1dG8qIGpzU291cmNlQ29kZSA9IGpz
Q2FzdDxKU1NvdXJjZUNvZGUqPihzb3VyY2UpOwpAQCAtMzcyLDcgKzM2Miw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihtb2R1bGVMb2FkZXJQYXJzZU1vZHVsZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsCiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgaWYgKHNvdXJj
ZUNvZGUucHJvdmlkZXIoKS0+c291cmNlVHlwZSgpID09IFNvdXJjZVByb3ZpZGVyU291cmNlVHlw
ZTo6V2ViQXNzZW1ibHkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNXZWJBc3Nl
bWJseTo6aW5zdGFudGlhdGUoZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBtb2R1bGVLZXksIGpzU291
cmNlQ29kZSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShKU1dlYkFzc2VtYmx5OjppbnN0YW50aWF0ZShnbG9iYWxPYmplY3QsIHByb21pc2UsIG1v
ZHVsZUtleSwganNTb3VyY2VDb2RlKSkpOwogI2VuZGlmCiAKICAgICBQYXJzZXJFcnJvciBlcnJv
cjsKQEAgLTM4MCwxNSArMzcwLDE0IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihtb2R1bGVM
b2FkZXJQYXJzZU1vZHVsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAg
IHZtLCBzb3VyY2VDb2RlLCBJZGVudGlmaWVyKCksIEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1
aWx0aW4sCiAgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0LCBKU1BhcnNlclNjcmlw
dE1vZGU6Ok1vZHVsZSwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgU3VwZXJC
aW5kaW5nOjpOb3ROZWVkZWQsIGVycm9yKTsKICAgICBpZiAoZXJyb3IuaXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlamVjdFdpdGhFcnJvcihlcnJvci50b0Vycm9y
T2JqZWN0KGdsb2JhbE9iamVjdCwgc291cmNlQ29kZSkpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVqZWN0V2l0aEVycm9yKGVycm9yLnRvRXJy
b3JPYmplY3QoZ2xvYmFsT2JqZWN0LCBzb3VyY2VDb2RlKSkpKTsKICAgICBBU1NFUlQobW9kdWxl
UHJvZ3JhbU5vZGUpOwogCiAgICAgTW9kdWxlQW5hbHl6ZXIgbW9kdWxlQW5hbHl6ZXIoZ2xvYmFs
T2JqZWN0LCBtb2R1bGVLZXksIHNvdXJjZUNvZGUsIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNs
YXJhdGlvbnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7Ci0gICAg
aWYgKFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlamVjdChnbG9iYWxPYmplY3QsIGNhdGNoU2NvcGUsIHByb21pc2UpKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZS0+
cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKSkpOwogCisgICAg
c2NvcGUucmVsZWFzZSgpOwogICAgIHByb21pc2UtPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBtb2R1
bGVBbmFseXplci5hbmFseXplKCptb2R1bGVQcm9ncmFtTm9kZSkpOwotICAgIGNhdGNoU2NvcGUu
Y2xlYXJFeGNlcHRpb24oKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2Uu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmNwcAppbmRleCA0
ZjM0YjZiNDljYTg5ZTY2OGNiOWEyNjcxMDMyM2NhZTE3ODY0YjQ1Li5lODY3NTcyMTZiMjRiOTEw
MmFjMTY5YmExYzVhZWNhMDE0ZTgwYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5jcHAKQEAgLTIwNiw0ICsyMDYsMTkgQEAgdm9pZCBKU1Byb21pc2U6OnJl
amVjdEFzSGFuZGxlZChKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRXhjZXB0
aW9uKgogICAgIHJlamVjdEFzSGFuZGxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCByZWFzb24tPnZh
bHVlKCkpOwogfQogCitKU1Byb21pc2UqIEpTUHJvbWlzZTo6cmVqZWN0V2l0aENhdWdodEV4Y2Vw
dGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgRXhjZXB0aW9uKiBleGNlcHRp
b24gPSBzY29wZS5leGNlcHRpb24oKTsKKyAgICBBU1NFUlQoZXhjZXB0aW9uKTsKKyAgICBpZiAo
VU5MSUtFTFkoaXNUZXJtaW5hdGVkRXhlY3V0aW9uRXhjZXB0aW9uKHZtLCBleGNlcHRpb24pKSkg
eworICAgICAgICBzY29wZS5yZWxlYXNlKCk7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0K
KyAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICBy
ZWplY3QoZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24tPnZhbHVlKCkpOworICAgIHJldHVybiB0aGlz
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9taXNlLmgKaW5kZXggMzM2M2EwZDM0MmE0MWEyN2VhYzUyOWYzMTJjZDQ0MmMyMTllZGFm
OC4uMDMzMGVmYjc0YTY4MzQ3YjQwNzllMGFkMzE4ODk2YjI3NmZmNDdlNyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKQEAgLTg0LDYgKzg0LDggQEAgY2xhc3Mg
SlNQcm9taXNlIDogcHVibGljIEpTSW50ZXJuYWxGaWVsZE9iamVjdEltcGw8Mj4gewogICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgcmVqZWN0KEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKik7
CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZWplY3RBc0hhbmRsZWQoSlNHbG9iYWxPYmpl
Y3QqLCBFeGNlcHRpb24qKTsKIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTUHJvbWlzZSogcmVq
ZWN0V2l0aENhdWdodEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmKTsKKwog
ICAgIHN0cnVjdCBEZWZlcnJlZERhdGEgewogICAgICAgICBXVEZfRk9SQklEX0hFQVBfQUxMT0NB
VElPTjsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UaHJvd1Njb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UaHJvd1Nj
b3BlLmgKaW5kZXggY2YzMzZmYzI0M2I2MDRhOGU3ZDVmMTRhODFiNjMxODJmMzg4NzhhZi4uZjFm
NmIyMjJmZjZjNTcxYjA1OWE0NzE1YTY0MjM0ZGI4MTFiMzZlNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGhyb3dTY29wZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Rocm93U2NvcGUuaApAQCAtNTIsNiArNTIsOCBAQCBjbGFzcyBUaHJv
d1Njb3BlIDogcHVibGljIEV4Y2VwdGlvblNjb3BlIHsKIAogICAgIHZvaWQgcmVsZWFzZSgpIHsg
bV9pc1JlbGVhc2VkID0gdHJ1ZTsgfQogCisgICAgdm9pZCBjbGVhckV4Y2VwdGlvbigpIHsgbV92
bS5jbGVhckV4Y2VwdGlvbigpOyB9CisKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHByaW50
SWZOZWVkQ2hlY2soY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBjb25zdCBjaGFyKiBmaWxlLCB1
bnNpZ25lZCBsaW5lKTsKIAogcHJpdmF0ZToKQEAgLTgwLDYgKzgyLDggQEAgY2xhc3MgVGhyb3dT
Y29wZSA6IHB1YmxpYyBFeGNlcHRpb25TY29wZSB7CiAgICAgQUxXQVlTX0lOTElORSBFeGNlcHRp
b24qIHRocm93RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
dmFsdWUpIHsgcmV0dXJuIG1fdm0udGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZWxlYXNlKCkgeyB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgY2xlYXJFeGNlcHRpb24oKSB7IG1fdm0uY2xlYXJFeGNlcHRpb24oKTsgfQog
fTsKIAogI2RlZmluZSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtX18pIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseS5jcHAKaW5kZXggZGQwNGVmNGM3Y2Fm
ODBiNTcwMDgyMGFkYTMzOTUyODY1MjJhMjVkOC4uMjliN2FhNzg4Njg0ODQxNmFiYmQyNTg5NThl
Y2Q2OTdkN2QwZWE1YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
SlNXZWJBc3NlbWJseS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNX
ZWJBc3NlbWJseS5jcHAKQEAgLTExOSw2OSArMTE5LDMzIEBAIEpTV2ViQXNzZW1ibHk6OkpTV2Vi
QXNzZW1ibHkoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKIH0KIAotc3RhdGljIHZv
aWQgcmVqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhdGNoU2NvcGUmIGNhdGNo
U2NvcGUsIEpTUHJvbWlzZSogcHJvbWlzZSkKLXsKLSAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7Ci0gICAgRXhjZXB0aW9uKiBleGNlcHRpb24gPSBjYXRjaFNjb3BlLmV4Y2VwdGlvbigp
OwotICAgIEFTU0VSVChleGNlcHRpb24pOwotICAgIGlmIChVTkxJS0VMWShpc1Rlcm1pbmF0ZWRF
eGVjdXRpb25FeGNlcHRpb24odm0sIGV4Y2VwdGlvbikpKQotICAgICAgICByZXR1cm47Ci0gICAg
Y2F0Y2hTY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgIHByb21pc2UtPnJlamVjdChnbG9iYWxP
YmplY3QsIGV4Y2VwdGlvbi0+dmFsdWUoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYkFzc2VtYmx5
TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTUHJvbWlzZSogcHJvbWlzZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc291cmNlKQotewotICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLQotICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4g
ZGVwZW5kZW5jaWVzOwotICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0s
IGdsb2JhbE9iamVjdCkpOwotCi0gICAgdm0uZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdX
b3JrKHZtLCBwcm9taXNlLCBXVEZNb3ZlKGRlcGVuZGVuY2llcykpOwotCi0gICAgV2FzbTo6TW9k
dWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVh
dGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJhY2tUeXBlPihbcHJvbWlzZSwgZ2xvYmFs
T2JqZWN0LCAmdm1dIChXYXNtOjpNb2R1bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11
dGFibGUgewotICAgICAgICB2bS5kZWZlcnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihw
cm9taXNlLCBbcHJvbWlzZSwgZ2xvYmFsT2JqZWN0LCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCks
ICZ2bV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7Ci0gICAgICAgICAgICBKU1ZhbHVlIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlN
b2R1bGU6OmNyZWF0ZVN0dWIodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3Nl
bWJseU1vZHVsZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewotICAgICAgICAgICAgICAgIHJlamVjdChn
bG9iYWxPYmplY3QsIHNjb3BlLCBwcm9taXNlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoZ2xvYmFsT2JqZWN0
LCBtb2R1bGUpOwotICAgICAgICAgICAgQ0xFQVJfQU5EX1JFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHZvaWQoKSk7Ci0gICAgICAgIH0pOwotICAgIH0pKTsKLX0KLQogSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHdlYkFzc2VtYmx5Q29tcGlsZUZ1bmMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGF1dG8q
IHByb21pc2UgPSBKU1Byb21pc2U6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3Ry
dWN0dXJlKCkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAotICAgIHsK
LSAgICAgICAgYXV0byBjYXRjaFNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7Ci0gICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3VyY2VCdWZmZXJGcm9tVmFsdWUo
dm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7Ci0KLSAgICAgICAgaWYg
KFVOTElLRUxZKGNhdGNoU2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICAgICAgcmVqZWN0KGds
b2JhbE9iamVjdCwgY2F0Y2hTY29wZSwgcHJvbWlzZSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHdlYkFzc2VtYmx5TW9kdWxlVmFsaWRhdGVBc3luY0ludGVybmFsKGdsb2JhbE9iamVjdCwg
cHJvbWlzZSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICBWZWN0b3I8dWludDhfdD4gc291cmNlID0g
Y3JlYXRlU291cmNlQnVmZmVyRnJvbVZhbHVlKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShwcm9taXNlLT5yZWplY3RXaXRoQ2F1Z2h0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUpKSk7CiAKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKLSAgICB9
CisgICAgc2NvcGUucmVsZWFzZSgpOworICAgIEpTV2ViQXNzZW1ibHk6OndlYkFzc2VtYmx5TW9k
dWxlVmFsaWRhdGVBc3luYyhnbG9iYWxPYmplY3QsIHByb21pc2UsIFdURk1vdmUoc291cmNlKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKIH0KIAogZW51bSBjbGFzcyBS
ZXNvbHZlIHsgV2l0aEluc3RhbmNlLCBXaXRoTW9kdWxlUmVjb3JkLCBXaXRoTW9kdWxlQW5kSW5z
dGFuY2UgfTsKIHN0YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1Byb21pc2UqIHByb21pc2UsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5z
dGFuY2UsIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSwgSlNPYmplY3QqIGltcG9ydE9iamVj
dCwgUmVmPFdhc206OkNvZGVCbG9jaz4mJiBjb2RlQmxvY2ssIFJlc29sdmUgcmVzb2x2ZUtpbmQs
IFdhc206OkNyZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfQ0FUQ0hfU0NPUEUodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICBpbnN0YW5jZS0+ZmluYWxpemVDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGNvZGVCbG9jayksIGltcG9ydE9iamVjdCwgY3JlYXRpb25Nb2RlKTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZSwgcHJv
bWlzZSkpOworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAg
cHJvbWlzZS0+cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KIAorICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBpZiAo
cmVzb2x2ZUtpbmQgPT0gUmVzb2x2ZTo6V2l0aEluc3RhbmNlKQogICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlKGdsb2JhbE9iamVjdCwgaW5zdGFuY2UpOwogICAgIGVsc2UgaWYgKHJlc29sdmVLaW5k
ID09IFJlc29sdmU6OldpdGhNb2R1bGVSZWNvcmQpIHsKQEAgLTE5NSwyMyArMTU5LDQxIEBAIHN0
YXRpYyB2b2lkIHJlc29sdmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1Byb21pc2UqIHByb21pc2UsIEpTCiAgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiaW5zdGFuY2UiX3MpLCBpbnN0YW5jZSk7CiAgICAgICAg
IHByb21pc2UtPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCByZXN1bHQpOwogICAgIH0KLSAgICBDTEVB
Ul9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIH0KIAogdm9pZCBKU1dl
YkFzc2VtYmx5Ojp3ZWJBc3NlbWJseU1vZHVsZVZhbGlkYXRlQXN5bmMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNlLCBWZWN0b3I8dWludDhfdD4mJiBzb3Vy
Y2UpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIGF1dG8gY2F0Y2hT
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotICAgIHdlYkFzc2VtYmx5TW9kdWxlVmFs
aWRhdGVBc3luY0ludGVybmFsKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgV1RGTW92ZShzb3VyY2Up
KTsKLSAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCB2b2lkKCkp
OworCisgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNpZXM7CisgICAgZGVwZW5k
ZW5jaWVzLmFwcGVuZChTdHJvbmc8SlNDZWxsPih2bSwgZ2xvYmFsT2JqZWN0KSk7CisKKyAgICB2
bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dvcmsodm0sIHByb21pc2UsIFdURk1vdmUo
ZGVwZW5kZW5jaWVzKSk7CisKKyAgICBXYXNtOjpNb2R1bGU6OnZhbGlkYXRlQXN5bmMoJnZtLndh
c21Db250ZXh0LCBXVEZNb3ZlKHNvdXJjZSksIGNyZWF0ZVNoYXJlZFRhc2s8V2FzbTo6TW9kdWxl
OjpDYWxsYmFja1R5cGU+KFtwcm9taXNlLCBnbG9iYWxPYmplY3QsICZ2bV0gKFdhc206Ok1vZHVs
ZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHZtLmRlZmVy
cmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBnbG9iYWxP
YmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVzdWx0KSwgJnZtXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICAgICAgICAg
IEpTVmFsdWUgbW9kdWxlID0gSlNXZWJBc3NlbWJseU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdU
Rk1vdmUocmVzdWx0KSk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9u
KCkpKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHByb21p
c2UtPnJlc29sdmUoZ2xvYmFsT2JqZWN0LCBtb2R1bGUpOworICAgICAgICB9KTsKKyAgICB9KSk7
CiB9CiAKIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNlLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1
bGUsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwg
UmVzb2x2ZSByZXNvbHZlS2luZCwgV2FzbTo6Q3JlYXRpb25Nb2RlIGNyZWF0aW9uTW9kZSkKIHsK
LSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIHBv
dGVudGlhbGx5IHJlY29tcGlsaW5nIGEgbW9kdWxlLiBXZSBmaXJzdCBnYXRoZXIgYWxsIHRoZSBp
bXBvcnQvbWVtb3J5IGluZm9ybWF0aW9uIHByaW9yIHRvIGNvbXBpbGluZyBjb2RlLgogICAgIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdGFuY2UgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6OnRy
eUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBtb2R1bGVLZXksIG1vZHVsZSwgaW1wb3J0T2JqZWN0
LCBnbG9iYWxPYmplY3QtPndlYkFzc2VtYmx5SW5zdGFuY2VTdHJ1Y3R1cmUoKSwgUmVmPFdhc206
Ok1vZHVsZT4obW9kdWxlLT5tb2R1bGUoKSksIGNyZWF0aW9uTW9kZSk7Ci0gICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgcmVqZWN0KGdsb2JhbE9iamVjdCwgc2NvcGUsIHByb21pc2UpKTsK
KyAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgIHByb21pc2Ut
PnJlamVjdFdpdGhDYXVnaHRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CiAKICAgICBWZWN0b3I8U3Ryb25nPEpTQ2VsbD4+IGRlcGVuZGVuY2ll
czsKICAgICAvLyBUaGUgaW5zdGFuY2Uga2VlcHMgdGhlIG1vZHVsZSBhbGl2ZS4KQEAgLTIzMCw3
ICsyMTIsNyBAQCBzdGF0aWMgdm9pZCBpbnN0YW50aWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbWlzZQogCiBzdGF0aWMgdm9pZCBjb21waWxl
QW5kSW5zdGFudGlhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1By
b21pc2UqIHByb21pc2UsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZUtleSwgSlNWYWx1ZSBidWZm
ZXIsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QsIFJlc29sdmUgcmVzb2x2ZUtpbmQsIFdhc206OkNy
ZWF0aW9uTW9kZSBjcmVhdGlvbk1vZGUpCiB7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIEpTQ2VsbCogbW9kdWxlS2V5Q2VsbCA9IGlkZW50aWZpZXJUb0pTVmFsdWUodm0sIG1v
ZHVsZUtleSkuYXNDZWxsKCk7CiAgICAgVmVjdG9yPFN0cm9uZzxKU0NlbGw+PiBkZXBlbmRlbmNp
ZXM7CkBAIC0yMzksMjAgKzIyMSwzMSBAQCBzdGF0aWMgdm9pZCBjb21waWxlQW5kSW5zdGFudGlh
dGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pcwogICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShk
ZXBlbmRlbmNpZXMpKTsKIAogICAgIFZlY3Rvcjx1aW50OF90PiBzb3VyY2UgPSBjcmVhdGVTb3Vy
Y2VCdWZmZXJGcm9tVmFsdWUodm0sIGdsb2JhbE9iamVjdCwgYnVmZmVyKTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCByZWplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZSwgcHJvbWlzZSkp
OworICAgIGlmIChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKKyAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0V2l0aENhdWdodEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KIAogICAgIFdhc206Ok1vZHVsZTo6dmFsaWRhdGVBc3luYygmdm0u
d2FzbUNvbnRleHQsIFdURk1vdmUoc291cmNlKSwgY3JlYXRlU2hhcmVkVGFzazxXYXNtOjpNb2R1
bGU6OkNhbGxiYWNrVHlwZT4oW3Byb21pc2UsIGltcG9ydE9iamVjdCwgbW9kdWxlS2V5Q2VsbCwg
Z2xvYmFsT2JqZWN0LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlLCAmdm1dIChXYXNtOjpNb2R1
bGU6OlZhbGlkYXRpb25SZXN1bHQmJiByZXN1bHQpIG11dGFibGUgewogICAgICAgICB2bS5kZWZl
cnJlZFdvcmtUaW1lci0+c2NoZWR1bGVXb3JrU29vbihwcm9taXNlLCBbcHJvbWlzZSwgaW1wb3J0
T2JqZWN0LCBtb2R1bGVLZXlDZWxsLCBnbG9iYWxPYmplY3QsIHJlc3VsdCA9IFdURk1vdmUocmVz
dWx0KSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSwgJnZtXSAoKSBtdXRhYmxlIHsKLSAgICAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICAgICAgICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAgICAgIEpTV2Vi
QXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IEpTV2ViQXNzZW1ibHlNb2R1bGU6OmNyZWF0ZVN0dWIo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT53ZWJBc3NlbWJseU1vZHVsZVN0cnVjdHVy
ZSgpLCBXVEZNb3ZlKHJlc3VsdCkpOwotICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4
Y2VwdGlvbigpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVqZWN0KGdsb2JhbE9iamVjdCwg
c2NvcGUsIHByb21pc2UpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgeworICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdFdpdGhDYXVnaHRFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyIG1vZHVsZUtleSA9IEpTVmFs
dWUobW9kdWxlS2V5Q2VsbCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwotICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gcmVqZWN0KGdsb2JhbE9iamVjdCwgc2NvcGUsIHByb21pc2UpOworICAgICAgICAgICAgaWYg
KFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgICAgIHByb21pc2Ut
PnJlamVjdFdpdGhDYXVnaHRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpbnN0YW50aWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBtb2R1bGUsIGltcG9ydE9iamVjdCwgbW9kdWxl
S2V5LCByZXNvbHZlS2luZCwgY3JlYXRpb25Nb2RlKTsKKyAgICAgICAgICAgIEpTQzo6aW5zdGFu
dGlhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIG1v
ZHVsZUtleSwgcmVzb2x2ZUtpbmQsIGNyZWF0aW9uTW9kZSk7CisgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0V2l0aENhdWdodEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH0pKTsKIH0KQEAg
LTI2NCw3ICsyNTcsNyBAQCBKU1ZhbHVlIEpTV2ViQXNzZW1ibHk6Omluc3RhbnRpYXRlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTUHJvbWlzZSogcHJvbQogICAgIHJldHVybiBwcm9t
aXNlOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5j
SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNl
LCBWZWN0b3I8dWludDhfdD4mJiBzb3VyY2UsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QpCit2b2lk
IEpTV2ViQXNzZW1ibHk6OndlYkFzc2VtYmx5TW9kdWxlSW5zdGFudGluYXRlQXN5bmMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNQcm9taXNlKiBwcm9taXNlLCBWZWN0b3I8dWludDhf
dD4mJiBzb3VyY2UsIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QpCiB7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogCkBAIC0yNzUsNDkgKzI2OCw0MiBAQCBzdGF0aWMgdm9pZCB3ZWJB
c3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogCiAgICAgV2FzbTo6TW9kdWxlOjp2YWxpZGF0ZUFzeW5jKCZ2bS53YXNtQ29udGV4
dCwgV1RGTW92ZShzb3VyY2UpLCBjcmVhdGVTaGFyZWRUYXNrPFdhc206Ok1vZHVsZTo6Q2FsbGJh
Y2tUeXBlPihbcHJvbWlzZSwgaW1wb3J0T2JqZWN0LCBnbG9iYWxPYmplY3QsICZ2bV0gKFdhc206
Ok1vZHVsZTo6VmFsaWRhdGlvblJlc3VsdCYmIHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIHZt
LmRlZmVycmVkV29ya1RpbWVyLT5zY2hlZHVsZVdvcmtTb29uKHByb21pc2UsIFtwcm9taXNlLCBp
bXBvcnRPYmplY3QsIGdsb2JhbE9iamVjdCwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCAmdm1d
ICgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NP
UEUodm0pOworICAgICAgICAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgICAgICAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gSlNXZWJBc3NlbWJs
eU1vZHVsZTo6Y3JlYXRlU3R1Yih2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPndlYkFz
c2VtYmx5TW9kdWxlU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBy
ZWplY3QoZ2xvYmFsT2JqZWN0LCBzY29wZSwgcHJvbWlzZSk7CisgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CisgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0V2l0aENhdWdodEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGluc3RhbnRpYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb21pc2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgIFJlc29sdmU6OldpdGhNb2R1
bGVBbmRJbnN0YW5jZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOwotICAgICAgICAgICAg
Q0xFQVJfQU5EX1JFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHJlamVjdChnbG9iYWxPYmplY3Qs
IHNjb3BlLCBwcm9taXNlKSk7CisgICAgICAgICAgICBKU0M6Omluc3RhbnRpYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb21pc2UsIG1vZHVsZSwgaW1wb3J0T2JqZWN0LCBKU1dlYkFzc2VtYmx5SW5z
dGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgIFJlc29sdmU6OldpdGhNb2R1bGVBbmRJ
bnN0YW5jZSwgV2FzbTo6Q3JlYXRpb25Nb2RlOjpGcm9tSlMpOworICAgICAgICAgICAgaWYgKFVO
TElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgICAgIHByb21pc2UtPnJl
amVjdFdpdGhDYXVnaHRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9KSk7CiB9CiAK
LXZvaWQgSlNXZWJBc3NlbWJseTo6d2ViQXNzZW1ibHlNb2R1bGVJbnN0YW50aW5hdGVBc3luYyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Byb21pc2UqIHByb21pc2UsIFZlY3Rvcjx1
aW50OF90PiYmIHNvdXJjZSwgSlNPYmplY3QqIGltcG9ydGVkT2JqZWN0KQotewotICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKLSAgICB3ZWJBc3NlbWJseU1vZHVsZUluc3RhbnRpbmF0ZUFzeW5jSW50
ZXJuYWwoZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBXVEZNb3ZlKHNvdXJjZSksIGltcG9ydGVkT2Jq
ZWN0KTsKLSAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCB2b2lk
KCkpOwotfQotCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlJbnN0YW50aWF0
ZUZ1bmMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgYXV0byogcHJv
bWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnByb21pc2VTdHJ1Y3R1
cmUoKSk7Ci0gICAgewotICAgICAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKLQotICAgICAgICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgxKTsKLSAgICAgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGltcG9ydEFyZ3Vt
ZW50LmdldE9iamVjdCgpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIWltcG9ydEFyZ3VtZW50Lmlz
VW5kZWZpbmVkKCkgJiYgIWltcG9ydE9iamVjdCkpIHsKLSAgICAgICAgICAgIHByb21pc2UtPnJl
amVjdChnbG9iYWxPYmplY3QsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsCi0gICAgICAg
ICAgICAgICAgInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZSBtdXN0
IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiX3MsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgcnVu
dGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0QXJndW1lbnQpKSk7Ci0gICAgICAgICAgICBDTEVB
Ul9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJv
bWlzZSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgSlNWYWx1ZSBmaXJzdEFyZ3Vt
ZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiBtb2R1
bGUgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZmlyc3RBcmd1bWVu
dCkpCi0gICAgICAgICAgICAgICAgaW5zdGFudGlhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlz
ZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJp
dmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpXaXRoSW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9k
ZTo6RnJvbUpTKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb21waWxlQW5k
SW5zdGFudGlhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOjpjcmVhdGVQcml2YXRlTW9kdWxlS2V5KCksIGZpcnN0QXJndW1lbnQsIGltcG9ydE9iamVj
dCwgUmVzb2x2ZTo6V2l0aE1vZHVsZUFuZEluc3RhbmNlLCBXYXNtOjpDcmVhdGlvbk1vZGU6OkZy
b21KUyk7Ci0gICAgICAgIH0KLQorICAgIEpTVmFsdWUgaW1wb3J0QXJndW1lbnQgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpOworICAgIEpTT2JqZWN0KiBpbXBvcnRPYmplY3QgPSBpbXBvcnRBcmd1
bWVudC5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWltcG9ydEFyZ3VtZW50LmlzVW5k
ZWZpbmVkKCkgJiYgIWltcG9ydE9iamVjdCkpIHsKKyAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGds
b2JhbE9iamVjdCwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICJz
ZWNvbmQgYXJndW1lbnQgdG8gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUgbXVzdCBiZSB1bmRlZmlu
ZWQgb3IgYW4gT2JqZWN0Il9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9y
VmFsdWUodm0sIGltcG9ydEFyZ3VtZW50KSkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHByb21pc2UpOwogICAgIH0KKworICAgIEpTVmFsdWUgZmlyc3RBcmd1bWVudCA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKGF1dG8qIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8
SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBmaXJzdEFyZ3VtZW50KSkKKyAgICAgICAgaW5zdGFu
dGlhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgbW9kdWxlLCBpbXBvcnRPYmplY3QsIEpT
V2ViQXNzZW1ibHlJbnN0YW5jZTo6Y3JlYXRlUHJpdmF0ZU1vZHVsZUtleSgpLCBSZXNvbHZlOjpX
aXRoSW5zdGFuY2UsIFdhc206OkNyZWF0aW9uTW9kZTo6RnJvbUpTKTsKKyAgICBlbHNlCisgICAg
ICAgIGNvbXBpbGVBbmRJbnN0YW50aWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm9taXNlLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2U6OmNyZWF0ZVByaXZhdGVNb2R1bGVLZXkoKSwgZmlyc3RBcmd1bWVu
dCwgaW1wb3J0T2JqZWN0LCBSZXNvbHZlOjpXaXRoTW9kdWxlQW5kSW5zdGFuY2UsIFdhc206OkNy
ZWF0aW9uTW9kZTo6RnJvbUpTKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlz
ZSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih3ZWJBc3NlbWJseVZhbGlkYXRlRnVu
YywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkK
QEAgLTMzNiw3ICszMjIsNiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlW
YWxpZGF0ZUZ1bmMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5Q29tcGlsZVN0cmVhbWluZ0ludGVybmFsLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKLSAgICBhdXRvIGNhdGNoU2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKIAogICAgIGF1dG8qIHByb21pc2UgPSBKU1Byb21pc2U6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wcm9taXNlU3RydWN0dXJlKCkpOwogCkBAIC0zNDQsMTUgKzMy
OSwxMiBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04od2ViQXNzZW1ibHlDb21waWxlU3RyZWFt
aW5nSW50ZXJuYWwsIChKU0dsb2JhbE9iamVjdCogZwogICAgIGRlcGVuZGVuY2llcy5hcHBlbmQo
U3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwogICAgIHZtLmRlZmVycmVkV29ya1Rp
bWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsK
IAotICAgIGlmIChnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmNvbXBp
bGVTdHJlYW1pbmcpCi0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+Y29tcGlsZVN0cmVhbWluZyhnbG9iYWxPYmplY3QsIHByb21pc2UsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOwotICAgIGVsc2UgeworICAgIGlmICghZ2xvYmFsT2JqZWN0LT5nbG9iYWxP
YmplY3RNZXRob2RUYWJsZSgpLT5jb21waWxlU3RyZWFtaW5nKSB7CiAgICAgICAgIC8vIENvbXBp
bGVTdHJlYW1pbmcgaXMgbm90IHN1cHBvcnRlZCBpbiBqc2MsIG9ubHkgaW4gYnJvd3NlciBlbnZp
cm9ubWVudAogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKLSAgICBDTEVB
Ul9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocHJv
bWlzZSkpOwotCisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5j
b21waWxlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKTsKIH0KIApAQCAtMzYx
LDMzICszNDMsMjcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHdlYkFzc2VtYmx5SW5zdGFu
dGlhdGVTdHJlYW1pbmdJbnRlcm5hbCwgKEpTR2xvYmFsT2JqZWMKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAKICAgICBhdXRvKiBwcm9taXNlID0gSlNQcm9taXNlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+cHJvbWlzZVN0cnVjdHVyZSgpKTsKLSAgICB7Ci0gICAgICAgIGF1
dG8gY2F0Y2hTY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwotCi0gICAgICAgIEpTVmFs
dWUgaW1wb3J0QXJndW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgICAgICBKU09i
amVjdCogaW1wb3J0T2JqZWN0ID0gaW1wb3J0QXJndW1lbnQuZ2V0T2JqZWN0KCk7Ci0gICAgICAg
IGlmIChVTkxJS0VMWSghaW1wb3J0QXJndW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2Jq
ZWN0KSkgewotICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KGdsb2JhbE9iamVjdCwgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwKLSAgICAgICAgICAgICAgICAic2Vjb25kIGFyZ3VtZW50
IHRvIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nIG11c3QgYmUgdW5kZWZpbmVkIG9y
IGFuIE9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVl
KHZtLCBpbXBvcnRBcmd1bWVudCkpKTsKLSAgICAgICAgICAgIENMRUFSX0FORF9SRVRVUk5fSUZf
RVhDRVBUSU9OKGNhdGNoU2NvcGUsIEpTVmFsdWU6OmVuY29kZShwcm9taXNlKSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSgpLT5pbnN0YW50aWF0ZVN0cmVhbWluZykgewotICAgICAgICAgICAgICAgIFZlY3Rv
cjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVzOwotICAgICAgICAgICAgICAgIGRlcGVuZGVu
Y2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVjdCkpOwotICAgICAgICAg
ICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9iamVj
dCkpOwotICAgICAgICAgICAgICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29y
ayh2bSwgcHJvbWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKLQotICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiA8aHR0cDovL3dlYmtpdC5vcmcvYi8xODQ4ODg+IGlmIHRoZXJlJ3MgYW4gaW1w
b3J0T2JqZWN0IGFuZCBpdCBjb250YWlucyBhIE1lbW9yeSwgdGhlbiB3ZSBjYW4gY29tcGlsZSB0
aGUgbW9kdWxlIHdpdGggdGhlIHJpZ2h0IG1lbW9yeSB0eXBlIChmYXN0IG9yIG5vdCkgYnkgbG9v
a2luZyBhdCB0aGUgbWVtb3J5J3MgdHlwZS4KLSAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3RhbnRpYXRlU3RyZWFtaW5nKGdsb2JhbE9i
amVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgaW1wb3J0T2JqZWN0KTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSW5zdGFudGlhdGVTdHJlYW1p
bmcgaXMgbm90IHN1cHBvcnRlZCBpbiBqc2MsIG9ubHkgaW4gYnJvd3NlciBlbnZpcm9ubWVudC4K
LSAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICBDTEVBUl9BTkRfUkVUVVJOX0lGX0VYQ0VQVElPTihjYXRjaFNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZSkpOwotCisgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVu
dCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CisgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9
IGltcG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaW1wb3J0QXJn
dW1lbnQuaXNVbmRlZmluZWQoKSAmJiAhaW1wb3J0T2JqZWN0KSkgeworICAgICAgICBwcm9taXNl
LT5yZWplY3QoZ2xvYmFsT2JqZWN0LCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LAorICAg
ICAgICAgICAgInNlY29uZCBhcmd1bWVudCB0byBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVh
bWluZyBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QiX3MsIGRlZmF1bHRTb3VyY2VBcHBl
bmRlciwgcnVudGltZVR5cGVGb3JWYWx1ZSh2bSwgaW1wb3J0QXJndW1lbnQpKSk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocHJvbWlzZSk7CiAgICAgfQorCisgICAgaWYgKCFnbG9i
YWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3RhbnRpYXRlU3RyZWFtaW5n
KSB7CisgICAgICAgIC8vIEluc3RhbnRpYXRlU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4g
anNjLCBvbmx5IGluIGJyb3dzZXIgZW52aXJvbm1lbnQuCisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIH0KKworICAgIFZlY3RvcjxTdHJvbmc8SlNDZWxsPj4gZGVwZW5kZW5jaWVz
OworICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGdsb2JhbE9iamVj
dCkpOworICAgIGRlcGVuZGVuY2llcy5hcHBlbmQoU3Ryb25nPEpTQ2VsbD4odm0sIGltcG9ydE9i
amVjdCkpOworICAgIHZtLmRlZmVycmVkV29ya1RpbWVyLT5hZGRQZW5kaW5nV29yayh2bSwgcHJv
bWlzZSwgV1RGTW92ZShkZXBlbmRlbmNpZXMpKTsKKworICAgIC8vIEZJWE1FOiA8aHR0cDovL3dl
YmtpdC5vcmcvYi8xODQ4ODg+IGlmIHRoZXJlJ3MgYW4gaW1wb3J0T2JqZWN0IGFuZCBpdCBjb250
YWlucyBhIE1lbW9yeSwgdGhlbiB3ZSBjYW4gY29tcGlsZSB0aGUgbW9kdWxlIHdpdGggdGhlIHJp
Z2h0IG1lbW9yeSB0eXBlIChmYXN0IG9yIG5vdCkgYnkgbG9va2luZyBhdCB0aGUgbWVtb3J5J3Mg
dHlwZS4KKyAgICBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCktPmluc3Rh
bnRpYXRlU3RyZWFtaW5nKGdsb2JhbE9iamVjdCwgcHJvbWlzZSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSwgaW1wb3J0T2JqZWN0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2Up
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
</data>
<flag name="review"
          id="436078"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>