<?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>195589</bug_id>
          
          <creation_ts>2019-03-11 17:51:53 -0700</creation_ts>
          <short_desc>Web Inspector: DOM: lazily create the agent</short_desc>
          <delta_ts>2019-03-20 20:10:35 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>195592</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1515141</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-11 17:51:53 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1515146</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-11 17:54:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/48791742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517591</commentid>
    <comment_count>2</comment_count>
      <attachid>364992</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-17 18:21:44 -0700</bug_when>
    <thetext>Created attachment 364992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518957</commentid>
    <comment_count>3</comment_count>
      <attachid>364992</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-20 10:15:38 -0700</bug_when>
    <thetext>Comment on attachment 364992
Patch

Rejecting attachment 364992 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 364992, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Logging in as commit-queue@webkit.org...
Fetching: https://bugs.webkit.org/attachment.cgi?id=364992&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=195589&amp;ctype=xml&amp;excludefield=attachmentdata
Processing 1 patch from 1 bug.
Processing patch 364992 from bug 195589.
Fetching: https://bugs.webkit.org/attachment.cgi?id=364992
Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Timothy Hatcher&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Parsed 12 diffs from patch file(s).
patching file Source/WebCore/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebCore/inspector/InspectorController.cpp
Hunk #2 FAILED at 134.
Hunk #3 succeeded at 174 (offset -14 lines).
Hunk #4 succeeded at 387 (offset -6 lines).
Hunk #5 succeeded at 408 (offset -6 lines).
1 out of 5 hunks FAILED -- saving rejects to file Source/WebCore/inspector/InspectorController.cpp.rej
patching file Source/WebCore/inspector/InspectorController.h
patching file Source/WebCore/inspector/InspectorStyleSheet.cpp
patching file Source/WebCore/inspector/agents/InspectorCSSAgent.cpp
patching file Source/WebCore/inspector/agents/InspectorCSSAgent.h
patching file Source/WebCore/inspector/agents/InspectorDOMAgent.cpp
patching file Source/WebCore/inspector/agents/InspectorDOMAgent.h
patching file Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp
Hunk #1 FAILED at 62.
Hunk #2 succeeded at 232 (offset 4 lines).
Hunk #3 succeeded at 256 (offset 4 lines).
Hunk #4 succeeded at 328 (offset 4 lines).
Hunk #5 succeeded at 354 (offset 4 lines).
Hunk #6 succeeded at 402 with fuzz 2 (offset 13 lines).
1 out of 6 hunks FAILED -- saving rejects to file Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp.rej
patching file Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h
Hunk #1 succeeded at 47 (offset 4 lines).
Hunk #2 succeeded at 56 (offset 4 lines).
Hunk #3 FAILED at 101.
1 out of 3 hunks FAILED -- saving rejects to file Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.h.rej
patching file Source/WebCore/inspector/agents/page/PageConsoleAgent.cpp
Hunk #1 FAILED at 34.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/inspector/agents/page/PageConsoleAgent.cpp.rej
patching file Source/WebCore/inspector/agents/page/PageConsoleAgent.h
Hunk #1 FAILED at 36.
1 out of 1 hunk FAILED -- saving rejects to file Source/WebCore/inspector/agents/page/PageConsoleAgent.h.rej

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Timothy Hatcher&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: https://webkit-queues.webkit.org/results/11581315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518998</commentid>
    <comment_count>4</comment_count>
      <attachid>365360</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-20 10:59:18 -0700</bug_when>
    <thetext>Created attachment 365360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519070</commentid>
    <comment_count>5</comment_count>
      <attachid>365380</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-20 12:05:58 -0700</bug_when>
    <thetext>Created attachment 365380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519281</commentid>
    <comment_count>6</comment_count>
      <attachid>365428</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-20 16:20:15 -0700</bug_when>
    <thetext>Created attachment 365428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519418</commentid>
    <comment_count>7</comment_count>
      <attachid>365428</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-20 20:10:33 -0700</bug_when>
    <thetext>Comment on attachment 365428
Patch

Clearing flags on attachment: 365428

Committed r243273: &lt;https://trac.webkit.org/changeset/243273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519419</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-20 20:10:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364992</attachid>
            <date>2019-03-17 18:21:44 -0700</date>
            <delta_ts>2019-03-20 10:59:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195589-20190317182143.patch</filename>
            <type>text/plain</type>
            <size>37351</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MzQxYTJkODBiYzRlMzRhMWYwY2M0NDliN2JkODY5OGFmOTdmYWZmLi42
NjQ4NzNjZTFmMjgzNWM3MzA3MWM1ZTU2OTIxOThkNDhmOWZiM2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjYgQEAKKzIwMTktMDMtMTcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTTogbGF6aWx5IGNyZWF0ZSB0aGUgYWdlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTU4OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg3OTE3NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnBhZ2VBZ2VudCk6IERlbGV0ZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6dW5iaW5kKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRET01MaXN0ZW5lcik6IERlbGV0
ZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNr
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpyZXNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50Ojpjb2xsZWN0QWxsU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6Y3JlYXRlU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6YWRkUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjplbGVtZW50Rm9ySWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmJpbmRTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0Fn
ZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmRpc2NhcmRBZ2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXROb25QZXJzaXN0ZW50RGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
RE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpyZW1vdmVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KToKKworICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUNvbnNvbGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ29uc29sZUFnZW50OjpjbGVhck1lc3NhZ2VzKToKKworICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9s
bGVyOjpjcmVhdGVMYXp5QWdlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6Omluc3BlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
aGlkZUhpZ2hsaWdodCk6CisKIDIwMTktMDMtMTYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEltcHJvdmUgbm9ybWFsaXphdGlvbiBjb2RlLCBpbmNsdWRpbmcgbW92
aW5nIGZyb20gdW5vcm0uaCB0byB1bm9ybTIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDk3Zjk0ODA0Njk0MGE0MmNiMjcyNWUy
ZGMxNjc3YTAzNTE5N2U0YzguLjEyYmM5YjFhMGNiZDZjYmRiN2ViZTNhNjBjZGI3NWMwOTliMDNi
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKQEAgLTExMSwxOCArMTExLDEzIEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAg
bV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnRQdHIpKTsKIAogICAgIGF1dG8g
cGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdlbnQ+KHBhZ2VD
b250ZXh0LCBpbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7Ci0gICAgSW5zcGVjdG9y
UGFnZUFnZW50KiBwYWdlQWdlbnQgPSBwYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9wYWdlQWdl
bnQgPSBwYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUocGFn
ZUFnZW50UHRyKSk7CiAKLSAgICBhdXRvIHJ1bnRpbWVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCk7CisgICAgYXV0byBydW50
aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBhZ2VDb250ZXh0
LCBtX3BhZ2VBZ2VudCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlUnVudGlt
ZUFnZW50KHJ1bnRpbWVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUo
cnVudGltZUFnZW50KSk7CiAKLSAgICBhdXRvIGRvbUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1
ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCwgbV9vdmVybGF5Lmdl
dCgpKTsKLSAgICBtX2RvbUFnZW50ID0gZG9tQWdlbnRQdHIuZ2V0KCk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKFdURk1vdmUoZG9tQWdlbnRQdHIpKTsKLQogICAgIGF1dG8gZGF0YWJhc2VBZ2VudFB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFnZUNvbnRleHQp
OwogICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIGRhdGFiYXNlQWdlbnQgPSBkYXRhYmFzZUFn
ZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRhdGFiYXNlQWdlbnRQ
dHIpKTsKQEAgLTEzOSwxMiArMTM0LDEyIEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAg
SW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudCogc2NyaXB0UHJvZmlsZXJBZ2VudCA9IHNjcmlw
dFByb2ZpbGVyQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoc2Ny
aXB0UHJvZmlsZXJBZ2VudFB0cikpOwogCi0gICAgYXV0byBjb25zb2xlQWdlbnRQdHIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250ZXh0LCBoZWFwQWdlbnQsIG1f
ZG9tQWdlbnQpOworICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCwgaGVhcEFnZW50KTsKICAgICBXZWJDb25zb2xl
QWdlbnQqIGNvbnNvbGVBZ2VudCA9IGNvbnNvbGVBZ2VudFB0ci5nZXQoKTsKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChjb25zb2xlQWdlbnRQdHIuZ2V0KCkp
OwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNvbGVBZ2VudFB0cikpOwogCi0gICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVBZ2VudD4o
cGFnZUNvbnRleHQsIHNjcmlwdFByb2ZpbGVyQWdlbnQsIGhlYXBBZ2VudCwgcGFnZUFnZW50KSk7
CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yVGltZWxpbmVB
Z2VudD4ocGFnZUNvbnRleHQsIHNjcmlwdFByb2ZpbGVyQWdlbnQsIGhlYXBBZ2VudCwgbV9wYWdl
QWdlbnQpKTsKIAogICAgIEFTU0VSVChtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+Y29tbWFuZExp
bmVBUElIb3N0KCkpOwogICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRMaW5lQVBJ
SG9zdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKQEAg
LTE5Myw4ICsxODgsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2Vu
dHMoKQogCiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VD
b250ZXh0LCBtX3BhZ2VBZ2VudCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckNTU0FnZW50PihwYWdlQ29udGV4dCwgbV9kb21BZ2VudCkpOwotICAgIG1f
YWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+
KHBhZ2VDb250ZXh0LCBtX2RvbUFnZW50LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAgbV9hZ2Vu
dHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdl
bnQ+KHBhZ2VDb250ZXh0LCBtX3BhZ2VBZ2VudCwgbV9vdmVybGF5LmdldCgpKSk7CisgICAgbV9h
Z2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4o
cGFnZUNvbnRleHQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3Rk
OjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0
LCBtX3BhZ2VBZ2VudCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RvckxheWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOwogICAgIG1fYWdlbnRzLmFwcGVu
ZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkpOwpA
QCAtMzk3LDcgKzM5Myw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChOb2Rl
KiBub2RlKQogICAgIGlmICghaGFzUmVtb3RlRnJvbnRlbmQoKSkKICAgICAgICAgc2hvdygpOwog
Ci0gICAgbV9kb21BZ2VudC0+aW5zcGVjdChub2RlKTsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGRv
bUFnZW50LT5pbnNwZWN0KG5vZGUpOwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmVu
YWJsZWQoKSBjb25zdApAQCAtNDE3LDggKzQxNCwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCiB7Ci0gICAgRXJyb3JT
dHJpbmcgdW51c2VkOwotICAgIG1fZG9tQWdlbnQtPmhpZGVIaWdobGlnaHQodW51c2VkKTsKKyAg
ICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRP
TUFnZW50KCkpIHsKKyAgICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgICAgICBkb21BZ2Vu
dC0+aGlkZUhpZ2hsaWdodCh1bnVzZWQpOworICAgIH0KIH0KIAogTm9kZSogSW5zcGVjdG9yQ29u
dHJvbGxlcjo6aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDFhNWYyNzA1YTVlMDJhYjNiZWU4NDQ5
NTI5NTc3YTlmNWYwZTNlOTkuLjA3NThmNWNiYTQ3OTcyN2ZkYTQ5ZWI0NWQ0ODY0NDk3MzEzNmFk
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aApAQCAtMTM3LDcgKzEzNyw2IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQqIG1faW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgeyBudWxscHRyIH07CiAKICAgICBJbnNwZWN0
b3I6Okluc3BlY3RvckFnZW50KiBtX2luc3BlY3RvckFnZW50IHsgbnVsbHB0ciB9OwotICAgIElu
c3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50IHsgbnVsbHB0ciB9OwogICAgIEluc3BlY3RvclBh
Z2VBZ2VudCogbV9wYWdlQWdlbnQgeyBudWxscHRyIH07CiAKICAgICBib29sIG1faXNVbmRlclRl
c3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCmluZGV4IDY4NzE2NTRjZWQ4N2MxY2U4YzI5ODM2ZjgxZDdmYzg0YTMzNWI3
ZDguLjA5MzFlNGIyNTM1YTJiMmRmNzNjODQzZTgyOTA0Y2MzYzVmYmM3N2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTQ2LDYg
KzQ2LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFN0
eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNTU0FnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNp
bmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJOb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDE3
YTU0MjYzZWZiYzNjYzM0ZTA2M2QwNTUyMjg5MjE2NjAyYjViMmUuLjMxNzZiYTIyZmVkYzBlNTZm
YzU0MTIwMTgyZDE2NzBhZWY5MTQ4MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MSGVhZEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50
LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgpAQCAtMjk0LDE5ICsyOTUsMTEg
QEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVs
ZSYgcnVsZSkKICAgICByZXR1cm4gZG93bmNhc3Q8Q1NTU3R5bGVSdWxlPigmcnVsZSk7CiB9CiAK
LUluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNv
bnRleHQsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKK0luc3BlY3RvckNTU0FnZW50OjpJ
bnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0
b3JBZ2VudEJhc2UoIkNTUyJfcywgY29udGV4dCkKICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVy
KHN0ZDo6bWFrZV91bmlxdWU8Q1NTRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5k
Um91dGVyKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQ1NTQmFja2VuZERpc3BhdGNoZXI6
OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fZG9tQWdl
bnQoZG9tQWdlbnQpCiB7Ci0gICAgbV9kb21BZ2VudC0+c2V0RE9NTGlzdGVuZXIodGhpcyk7Ci19
Ci0KLUluc3BlY3RvckNTU0FnZW50Ojp+SW5zcGVjdG9yQ1NTQWdlbnQoKQotewotICAgIEFTU0VS
VCghbV9kb21BZ2VudCk7Ci0gICAgcmVzZXQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIq
LCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikKQEAgLTMxNSwxOCArMzA4LDEwIEBAIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6OkZyb250ZW5kUm91dGVyKiwKIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ry
b3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAg
IHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKLQogICAgIFN0cmluZyB1bnVzZWQ7CiAgICAgZGlz
YWJsZSh1bnVzZWQpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaXNjYXJkQWdlbnQo
KQotewotICAgIG1fZG9tQWdlbnQtPnNldERPTUxpc3RlbmVyKG51bGxwdHIpOwotICAgIG1fZG9t
QWdlbnQgPSBudWxscHRyOwotfQotCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiB7
CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBiZSByZXNldHRpbmcgb24gbWFpbiBmcmFtZSBuYXZp
Z2F0aW9ucz8KQEAgLTMzNSwyNSArMzIwLDI3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJl
c2V0KCkKICAgICBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuY2xlYXIoKTsKICAgICBtX2Rv
Y3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LmNsZWFyKCk7CiAgICAgbV9kb2N1bWVudFRvS25v
d25DU1NTdHlsZVNoZWV0cy5jbGVhcigpOwotICAgIHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXROb25QZXJzaXN0ZW50RGF0YSgpCi17
CiAgICAgcmVzZXRQc2V1ZG9TdGF0ZXMoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
ZW5hYmxlKEVycm9yU3RyaW5nJikKIHsKKyAgICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckNTU0FnZW50KCkgPT0gdGhpcykKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckNTU0FnZW50KHRoaXMpOwogCi0gICAgZm9yIChh
dXRvKiBkb2N1bWVudCA6IG1fZG9tQWdlbnQtPmRvY3VtZW50cygpKQotICAgICAgICBhY3RpdmVT
dHlsZVNoZWV0c1VwZGF0ZWQoKmRvY3VtZW50KTsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkgeworICAgICAgICBmb3Ig
KGF1dG8qIGRvY3VtZW50IDogZG9tQWdlbnQtPmRvY3VtZW50cygpKQorICAgICAgICAgICAgYWN0
aXZlU3R5bGVTaGVldHNVcGRhdGVkKCpkb2N1bWVudCk7CisgICAgfQogfQogCiB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKIHsKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0SW5zcGVjdG9yQ1NTQWdlbnQobnVsbHB0cik7CisKKyAgICByZXNldCgpOwog
fQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudERldGFjaGVkKERvY3VtZW50JiBk
b2N1bWVudCkKQEAgLTQxNSw3ICs0MDIsMTEgQEAgYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9y
Y2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHMKICAg
ICBpZiAobV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgaW50IG5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKCZl
bGVtZW50KTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JET01BZ2VudCgpOworICAgIGlmICghZG9tQWdlbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGludCBub2RlSWQgPSBkb21BZ2VudC0+Ym91bmROb2RlSWQoJmVsZW1lbnQpOwog
ICAgIGlmICghbm9kZUlkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTU3NCw4ICs1NjUs
MTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJp
bmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnMKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNv
bGxlY3RBbGxTdHlsZVNoZWV0cyhWZWN0b3I8SW5zcGVjdG9yU3R5bGVTaGVldCo+JiByZXN1bHQp
CiB7CiAgICAgVmVjdG9yPENTU1N0eWxlU2hlZXQqPiBjc3NTdHlsZVNoZWV0czsKLSAgICBmb3Ig
KGF1dG8qIGRvY3VtZW50IDogbV9kb21BZ2VudC0+ZG9jdW1lbnRzKCkpCi0gICAgICAgIGNvbGxl
Y3RBbGxEb2N1bWVudFN0eWxlU2hlZXRzKCpkb2N1bWVudCwgY3NzU3R5bGVTaGVldHMpOworICAg
IGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01B
Z2VudCgpKSB7CisgICAgICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBkb21BZ2VudC0+ZG9jdW1l
bnRzKCkpCisgICAgICAgICAgICBjb2xsZWN0QWxsRG9jdW1lbnRTdHlsZVNoZWV0cygqZG9jdW1l
bnQsIGNzc1N0eWxlU2hlZXRzKTsKKyAgICB9CiAKICAgICBmb3IgKGF1dG8qIGNzc1N0eWxlU2hl
ZXQgOiBjc3NTdHlsZVNoZWV0cykKICAgICAgICAgcmVzdWx0LmFwcGVuZChiaW5kU3R5bGVTaGVl
dChjc3NTdHlsZVNoZWV0KSk7CkBAIC02MjcsNyArNjIwLDEzIEBAIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nCiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIHJlc3VsdCA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1h
a2VfdW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0
ZXh0KSk7CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yRE9NQWdlbnQoKTsKKyAgICBpZiAoIWRvbUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsK
ICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBlcnJvclN0cmluZyA9IElu
c3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkp
OwogfQpAQCAtNjQxLDcgKzY0MCwxMyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHls
ZVRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplYwogICAgIGlm
ICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwZXJm
b3JtUmVzdWx0ID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0
ZXh0KSk7CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yRE9NQWdlbnQoKTsKKyAgICBpZiAoIWRvbUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
YXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1h
a2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91
bmRJZCwgdGV4dCkpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVy
Zm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC02NTks
NyArNjY0LDEzIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iCiAgICAgaWYgKCFpbnNwZWN0b3JT
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBt
X2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxlU2Vs
ZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7
CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
QWdlbnQoKTsKKyAgICBpZiAoIWRvbUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1p
c3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBw
ZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5p
cXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJ
ZCwgc2VsZWN0b3IpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBl
cmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjcw
LDcgKzY4MSwxMyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYgogCiB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpjcmVhdGVTdHlsZVNoZWV0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIHN0eWxlU2hlZXRJZCkKIHsKLSAgICBGcmFtZSogZnJh
bWUgPSBtX2RvbUFnZW50LT5wYWdlQWdlbnQoKS0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKKyAgICBh
dXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50
KCk7CisgICAgaWYgKCFwYWdlQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2lu
ZyBQYWdlIGFnZW50Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRnJhbWUqIGZy
YW1lID0gcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOwogICAgIGlmICghZnJhbWUpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gZnJhbWUgZm9yIGdpdmVuIGlkIGZvdW5kIl9zOwog
ICAgICAgICByZXR1cm47CkBAIC03NDAsOSArNzU3LDE1IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxl
U2hlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGlmICghZG9tQWdlbnQp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00gYWdlbnQiX3M7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QWRk
UnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOwogICAgIGF1dG8mIHJh
d0FjdGlvbiA9ICphY3Rpb247Ci0gICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gbV9kb21BZ2VudC0+
aGlzdG9yeSgpLT5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7CisgICAgYXV0byBwZXJmb3JtUmVz
dWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAg
IGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5n
ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC04MTYsNyArODM5LDEzIEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJv
clN0cmluZyYsIFJlZlB0cjxKCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRv
U3RhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBKU09OOjpB
cnJheSYgZm9yY2VkUHNldWRvQ2xhc3NlcykKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9k
b21BZ2VudC0+YXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKKyAgICBhdXRvKiBk
b21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAg
IGlmICghZG9tQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00gYWdl
bnQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50ID0g
ZG9tQWdlbnQtPmFzc2VydEVsZW1lbnQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFl
bGVtZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTg0Miw3ICs4NzEsNyBAQCBJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUmIEluc3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0
eWxlU2hlZXQoU3R5bAogewogICAgIHJldHVybiBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQu
ZW5zdXJlKCZlbGVtZW50LCBbdGhpcywgJmVsZW1lbnRdIHsKICAgICAgICAgU3RyaW5nIG5ld1N0
eWxlU2hlZXRJZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICAg
ICAgYXV0byBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGlu
ZVN0eWxlOjpjcmVhdGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwg
ZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1
bGFyLCB0aGlzKTsKKyAgICAgICAgYXV0byBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclBhZ2VBZ2VudCgpLCBuZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7CiAgICAgICAg
IG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KG5ld1N0eWxlU2hlZXRJZCwgaW5zcGVjdG9y
U3R5bGVTaGVldC5jb3B5UmVmKCkpOwogICAgICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVl
dDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CkBAIC04NTAsNyArODc5LDEzIEBAIEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9y
U3R5bGVTaGVldChTdHlsCiAKIEVsZW1lbnQqIEluc3BlY3RvckNTU0FnZW50OjplbGVtZW50Rm9y
SWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogewotICAgIE5vZGUqIG5v
ZGUgPSBtX2RvbUFnZW50LT5ub2RlRm9ySWQobm9kZUlkKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGlmICghZG9t
QWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00gYWdlbnQiX3M7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIE5vZGUqIG5vZGUgPSBkb21BZ2Vu
dC0+bm9kZUZvcklkKG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBpZCBmb3VuZCJfczsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC04NzcsNyArOTEyLDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9y
Q1NTQWdlbnQ6OmJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQKICAgICBp
ZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpIHsKICAgICAgICAgU3RyaW5nIGlkID0gU3RyaW5nOjpu
dW1iZXIobV9sYXN0U3R5bGVTaGVldElkKyspOwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBzdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCk7Ci0gICAgICAgIGluc3BlY3RvclN0eWxlU2hl
ZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0OjpjcmVhdGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCks
IGlkLCBzdHlsZVNoZWV0LCBkZXRlY3RPcmlnaW4oc3R5bGVTaGVldCwgZG9jdW1lbnQpLCBJbnNw
ZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKKyAgICAg
ICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCksIGlkLCBzdHlsZVNoZWV0LCBk
ZXRlY3RPcmlnaW4oc3R5bGVTaGVldCwgZG9jdW1lbnQpLCBJbnNwZWN0b3JET01BZ2VudDo6ZG9j
dW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKICAgICAgICAgbV9pZFRvSW5zcGVjdG9y
U3R5bGVTaGVldC5zZXQoaWQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwogICAgICAgICBtX2Nzc1N0
eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KHN0eWxlU2hlZXQsIGluc3BlY3RvclN0
eWxlU2hlZXQpOwogICAgICAgICBpZiAobV9jcmVhdGluZ1ZpYUluc3BlY3RvclN0eWxlU2hlZXQp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuaAppbmRleCAzNTQ5NGZlNWM5MWJkMGQwM2U0M2U1MjQ3NWE1YzIwMWE5MTIzMWUzLi5m
NGFiNDViZGNhMGNiMjRkNjRmNDYwOGU2M2U4MDdhMjYwZDk5MmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0yNyw3
ICsyNyw2IEBACiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFz
ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29udGV4dC5oIgpAQCAtNTYsNyArNTUsNiBAQCBjbGFz
cyBTdHlsZVJ1bGU7CiAKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50IGZpbmFsCiAgICAgOiBwdWJs
aWMgSW5zcGVjdG9yQWdlbnRCYXNlCi0gICAgLCBwdWJsaWMgSW5zcGVjdG9yRE9NQWdlbnQ6OkRP
TUxpc3RlbmVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ1NTQWdlbnQpOwpAQCAtNzksMTQgKzc3LDEz
IEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5KiBtX2NvbnRlbnRTZWN1
cml0eVBvbGljeTsKICAgICB9OwogCi0gICAgSW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250
ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDU1NBZ2Vu
dCgpOworICAgIEluc3BlY3RvckNTU0FnZW50KFdlYkFnZW50Q29udGV4dCYpOworICAgIHZpcnR1
YWwgfkluc3BlY3RvckNTU0FnZW50KCkgPSBkZWZhdWx0OwogCiAgICAgc3RhdGljIENTU1N0eWxl
UnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYpOwogCiAgICAgdm9pZCBkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAg
IHZvaWQgcmVzZXQoKTsKQEAgLTk3LDYgKzk0LDcgQEAgcHVibGljOgogICAgIHZvaWQgYWN0aXZl
U3R5bGVTaGVldHNVcGRhdGVkKERvY3VtZW50Jik7CiAgICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRl
KGNvbnN0IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKIAorICAgIC8v
IENTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZv
ck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5v
ZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVT
dHlsZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1
dGVzKSBvdmVycmlkZTsKICAgICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCog
aW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpSdWxlTWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiwgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5
Pj4mIGluaGVyaXRlZEVudHJpZXMpIG92ZXJyaWRlOwpAQCAtMTEyLDYgKzExMCwxMCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoRXJyb3JTdHJp
bmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAg
ICB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBK
U09OOjpBcnJheSYgZm9yY2VkUHNldWRvQ2xhc3Nlcykgb3ZlcnJpZGU7CiAKKyAgICAvLyBJbnNw
ZWN0b3JET01BZ2VudCBob29rcworICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiwgaW50
IG5vZGVJZCk7CisgICAgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQmKTsKKwogcHJpdmF0
ZToKICAgICBjbGFzcyBTdHlsZVNoZWV0QWN0aW9uOwogICAgIGNsYXNzIFNldFN0eWxlU2hlZXRU
ZXh0QWN0aW9uOwpAQCAtMTI0LDcgKzEyNiw2IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFJlZlB0cjxEb2N1bWVudD4sIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4+
PiBEb2N1bWVudFRvVmlhSW5zcGVjdG9yU3R5bGVTaGVldDsgLy8gInZpYSBpbnNwZWN0b3IiIHN0
eWxlc2hlZXRzCiAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgdW5zaWduZWQ+IE5vZGVJZFRvRm9y
Y2VkUHNldWRvU3RhdGU7CiAKLSAgICB2b2lkIHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKICAg
ICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUmIGFzSW5zcGVjdG9yU3R5bGVTaGVl
dChTdHlsZWRFbGVtZW50Jik7CiAgICAgRWxlbWVudCogZWxlbWVudEZvcklkKEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCk7CiAKQEAgLTE0NCwxMCArMTQ1LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1
aWxkQXJyYXlGb3JNYXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+
PiYsIFN0eWxlUmVzb2x2ZXImLCBFbGVtZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNT
dHlsZShTdHlsZWRFbGVtZW50Jik7CiAKLSAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlz
dGVuZXIgaW1wbGVtZW50YXRpb24KLSAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYsIGlu
dCBub2RlSWQpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Jikg
b3ZlcnJpZGU7Ci0KICAgICAvLyBJbnNwZWN0b3JDU1NBZ2VudDo6TGlzdGVuZXIgaW1wbGVtZW50
YXRpb24KICAgICB2b2lkIHN0eWxlU2hlZXRDaGFuZ2VkKEluc3BlY3RvclN0eWxlU2hlZXQqKSBv
dmVycmlkZTsKIApAQCAtMTU1LDcgKzE1Miw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9yOjpDU1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOwotICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50IHsgbnVsbHB0
ciB9OwogCiAgICAgSWRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9pZFRvSW5zcGVjdG9yU3R5bGVT
aGVldDsKICAgICBDU1NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0IG1fY3NzU3R5bGVT
aGVldFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYTlmZjM5MjNmN2NhYmFl
MmQ3YzQ0NGRkM2JhMjk5YTJmYTFlMzFhOS4uYjNiOTM0ZTI5ZGE5N2JjZjc0MzExMTFiMGY5MTE4
MDlmOWE0YWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJIVE1M
VGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5LmgiCkBAIC0zNTQsMTEgKzM1NSw2IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlc2V0KCkKICAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsK
IH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIq
IGxpc3RlbmVyKQotewotICAgIG1fZG9tTGlzdGVuZXIgPSBsaXN0ZW5lcjsKLX0KLQogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAg
IGlmIChkb2N1bWVudCA9PSBtX2RvY3VtZW50LmdldCgpKQpAQCAtNDE4LDggKzQxNCw5IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9k
ZXNNYXApCiAgICAgfQogCiAgICAgbm9kZXNNYXAtPnJlbW92ZShub2RlKTsKLSAgICBpZiAobV9k
b21MaXN0ZW5lcikKLSAgICAgICAgbV9kb21MaXN0ZW5lci0+ZGlkUmVtb3ZlRE9NTm9kZSgqbm9k
ZSwgaWQpOworCisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRSZW1vdmVET01Ob2Rl
KCpub2RlLCBpZCk7CiAKICAgICBpZiAobV9jaGlsZHJlblJlcXVlc3RlZC5yZW1vdmUoaWQpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgdG8gZG8gdGhpcyBpdGVyYXRpdmVs
eSByYXRoZXIgdGhhbiByZWN1cnNpdmVseS4KQEAgLTIyNDEsMTIgKzIyMzgsMTEgQEAgdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmIG4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IGlkID0gYm91bmRO
b2RlSWQoJmVsZW1lbnQpOwotICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdu
b3JlIHRoZSBldmVudC4KICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
bV9kb21MaXN0ZW5lcikKLSAgICAgICAgbV9kb21MaXN0ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cihl
bGVtZW50KTsKKyAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIo
ZWxlbWVudCk7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YXR0cmlidXRlTW9kaWZpZWQo
aWQsIG5hbWUsIHZhbHVlKTsKIH0KQEAgLTIyNTQsMTIgKzIyNTAsMTEgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9t
aWNTdHJpbmcmIG4KIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGludCBpZCA9
IGJvdW5kTm9kZUlkKCZlbGVtZW50KTsKLSAgICAvLyBJZiBub2RlIGlzIG5vdCBtYXBwZWQgeWV0
IC0+IGlnbm9yZSB0aGUgZXZlbnQuCiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKG1fZG9tTGlzdGVuZXIpCi0gICAgICAgIG1fZG9tTGlzdGVuZXItPmRpZE1vZGlmeURP
TUF0dHIoZWxlbWVudCk7CisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRNb2RpZnlE
T01BdHRyKGVsZW1lbnQpOwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmF0dHJpYnV0ZVJl
bW92ZWQoaWQsIG5hbWUpOwogfQpAQCAtMjI2OSwxMiArMjI2NCwxMiBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50
Kj4mIGVsZW1lbgogICAgIGF1dG8gbm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRl
KCk7CiAgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKICAgICAgICAgaW50IGlk
ID0gYm91bmROb2RlSWQoZWxlbWVudCk7Ci0gICAgICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBl
ZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KICAgICAgICAgaWYgKCFpZCkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChtX2RvbUxpc3RlbmVyKQotICAgICAgICAgICAgbV9k
b21MaXN0ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cigqZWxlbWVudCk7CisgICAgICAgIGlmIChhdXRv
KiBjc3NBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQor
ICAgICAgICAgICAgY3NzQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoKmVsZW1lbnQpOworCiAgICAg
ICAgIG5vZGVJZHMtPmFkZEl0ZW0oaWQpOwogICAgIH0KICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+aW5saW5lU3R5bGVJbnZhbGlkYXRlZChXVEZNb3ZlKG5vZGVJZHMpKTsKQEAgLTIyOTQsNyAr
MjI4OSw2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZChD
aGFyYWN0ZXJEYXRhJiBjaGFyYWN0ZXJEYXRhKQogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlk
SW52YWxpZGF0ZVN0eWxlQXR0cihOb2RlJiBub2RlKQogewogICAgIGludCBpZCA9IG1fZG9jdW1l
bnROb2RlVG9JZE1hcC5nZXQoJm5vZGUpOwotICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5
ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuaAppbmRleCA4MzdiN2JlYjc5YjUyNDAzYTFhMjkzMThjMTMxYzhiM2JlZTE1YmNhLi5jYWVk
ZjIzYjdhZGM4NmFiNzUyNGU4Yjc2MDg0N2UxOTA3YjI0NWE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC01MSw3ICs1
MSw3IEBAIGNsYXNzIEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwog
Y2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBE
T01FZGl0b3I7CkBAIC05NCwxMiArOTQsNiBAQCBjbGFzcyBJbnNwZWN0b3JET01BZ2VudCBmaW5h
bCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTQogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTUFnZW50KTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgRE9NTGlzdGVuZXIgewotICAgICAg
ICB2aXJ0dWFsIH5ET01MaXN0ZW5lcigpID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlbW92ZURPTU5vZGUoTm9kZSYsIGludCBub2RlSWQpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCYpID0gMDsKLSAgICB9OwotCiAgICAgSW5z
cGVjdG9yRE9NQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5z
cGVjdG9yT3ZlcmxheSopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTUFnZW50KCk7CiAKQEAg
LTE5MSw3ICsxODUsNiBAQCBwdWJsaWM6CiAgICAgaW50IHB1c2hOb2RlVG9Gcm9udGVuZChFcnJv
clN0cmluZyYsIGludCBkb2N1bWVudE5vZGVJZCwgTm9kZSopOwogICAgIE5vZGUqIG5vZGVGb3JJ
ZChpbnQgbm9kZUlkKTsKICAgICBpbnQgYm91bmROb2RlSWQoY29uc3QgTm9kZSopOwotICAgIHZv
aWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgZG9j
dW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqKTsKIApAQCAtMjE4LDkgKzIxMSw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVBc05vZGUoSlNDOjpKU1ZhbHVlKTsKICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgTm9k
ZSopOwogCi0gICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCi0gICAgSW5z
cGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQotCiAg
ICAgYm9vbCBoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsK
ICAgICBpbnQgaWRGb3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogCkBAIC0yNjMs
OSArMjUzLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01G
cm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OkRPTUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIElu
c3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQgeyBudWxscHRyIH07Ci0KICAgICBJbnNwZWN0
b3JPdmVybGF5KiBtX292ZXJsYXkgeyBudWxscHRyIH07Ci0gICAgRE9NTGlzdGVuZXIqIG1fZG9t
TGlzdGVuZXIgeyBudWxscHRyIH07CiAgICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVudE5vZGVUb0lk
TWFwOwogICAgIC8vIE93bnMgbm9kZSBtYXBwaW5ncyBmb3IgZGFuZ2xpbmcgbm9kZXMuCiAgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxOb2RlVG9JZE1hcD4+IG1fZGFuZ2xpbmdOb2RlVG9JZE1h
cHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1MjEzYmRkMjg1NmQyNGNhYzcyZmI1
Nzg0NWMzZmQ5MzMwM2JmNjA5Li5hZjU4M2Y2NGJjZDhkNmM3ODkxODRiODM2YmRmMDc3YzFmMjMw
MjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTYyLDEwICs2Miw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChXZWJBZ2VudENvbnRl
eHQmIGNvbnRleHQsIEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCwgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCogZGVidWdnZXJBZ2VudCkKK0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJE
T01EZWJ1Z2dlciJfcywgY29udGV4dCkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVj
dG9yOjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5k
RGlzcGF0Y2hlciwgdGhpcykpCi0gICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogICAgICwgbV9k
ZWJ1Z2dlckFnZW50KGRlYnVnZ2VyQWdlbnQpCiB7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5zZXRM
aXN0ZW5lcih0aGlzKTsKQEAgLTIyOSw3ICsyMjgsMTMgQEAgc3RhdGljIFN0cmluZyBkb21UeXBl
TmFtZShpbnQgdHlwZSkKIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRET01C
cmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3Ry
aW5nJiB0eXBlU3RyaW5nKQogewotICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFnZW50LT5hc3NlcnRO
b2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaWYgKCFkb21BZ2VudCkgewor
ICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIE5vZGUqIG5vZGUgPSBkb21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJv
clN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MjQ3LDkgKzI1MiwxNiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbgogCiB2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCiB7Ci0gICAgTm9k
ZSogbm9kZSA9IG1fZG9tQWdlbnQtPmFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7Cisg
ICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdl
bnQoKTsKKyAgICBpZiAoIWRvbUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Np
bmcgRE9NIGFnZW50Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTm9kZSogbm9k
ZSA9IGRvbUFnZW50LT5hc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOwogICAgIGlmICgh
bm9kZSkKICAgICAgICAgcmV0dXJuOworCiAgICAgaW50IHR5cGUgPSBkb21UeXBlRm9yTmFtZShl
cnJvclN0cmluZywgdHlwZVN0cmluZyk7CiAgICAgaWYgKHR5cGUgPT0gLTEpCiAgICAgICAgIHJl
dHVybjsKQEAgLTMxMiwxMiArMzI0LDE2IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBicmVha3BvCiB7CiAg
ICAgQVNTRVJUKGhhc0JyZWFrcG9pbnQoJnRhcmdldCwgYnJlYWtwb2ludFR5cGUpKTsKIAorICAg
IGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50
KCk7CisKICAgICBOb2RlKiBicmVha3BvaW50T3duZXIgPSAmdGFyZ2V0OwogICAgIGlmICgoMSA8
PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsK
LSAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJyZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2Rl
IGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUgbm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50
LgotICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwgc28g
d2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gbV9kb21BZ2Vu
dC0+cmVzb2x2ZU5vZGUoJnRhcmdldCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNl
T2JqZWN0R3JvdXApOwotICAgICAgICBkZXNjcmlwdGlvbi5zZXRWYWx1ZSgidGFyZ2V0Tm9kZSIs
IHRhcmdldE5vZGVPYmplY3QpOworICAgICAgICBpZiAoZG9tQWdlbnQpIHsKKyAgICAgICAgICAg
IC8vIEZvciBpbmhlcml0YWJsZSBicmVha3BvaW50IHR5cGVzLCB0YXJnZXQgbm9kZSBpc24ndCBh
bHdheXMgdGhlIHNhbWUgYXMgdGhlIG5vZGUgdGhhdCBvd25zIGEgYnJlYWtwb2ludC4KKyAgICAg
ICAgICAgIC8vIFRhcmdldCBub2RlIG1heSBiZSB1bmtub3duIHRvIGZyb250ZW5kLCBzbyB3ZSBu
ZWVkIHRvIHB1c2ggaXQgZmlyc3QuCisgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0YXJnZXROb2RlT2JqZWN0ID0gZG9tQWdlbnQt
PnJlc29sdmVOb2RlKCZ0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9i
amVjdEdyb3VwKTsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLnNldFZhbHVlKCJ0YXJnZXROb2Rl
IiwgdGFyZ2V0Tm9kZU9iamVjdCk7CisgICAgICAgIH0KIAogICAgICAgICAvLyBGaW5kIGJyZWFr
cG9pbnQgb3duZXIgbm9kZS4KICAgICAgICAgaWYgKCFpbnNlcnRpb24pCkBAIC0zMzQsOSArMzUw
LDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01F
dmVudChOb2RlJiB0YXJnZXQsIGludCBicmVha3BvCiAgICAgICAgICAgICBkZXNjcmlwdGlvbi5z
ZXRCb29sZWFuKCJpbnNlcnRpb24iLCBpbnNlcnRpb24pOwogICAgIH0KIAotICAgIGludCBicmVh
a3BvaW50T3duZXJOb2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChicmVha3BvaW50T3du
ZXIpOwotICAgIEFTU0VSVChicmVha3BvaW50T3duZXJOb2RlSWQpOwotICAgIGRlc2NyaXB0aW9u
LnNldEludGVnZXIoIm5vZGVJZCIsIGJyZWFrcG9pbnRPd25lck5vZGVJZCk7CisgICAgaWYgKGRv
bUFnZW50KSB7CisgICAgICAgIGludCBicmVha3BvaW50T3duZXJOb2RlSWQgPSBkb21BZ2VudC0+
Ym91bmROb2RlSWQoYnJlYWtwb2ludE93bmVyKTsKKyAgICAgICAgQVNTRVJUKGJyZWFrcG9pbnRP
d25lck5vZGVJZCk7CisgICAgICAgIGRlc2NyaXB0aW9uLnNldEludGVnZXIoIm5vZGVJZCIsIGJy
ZWFrcG9pbnRPd25lck5vZGVJZCk7CisgICAgfQorCiAgICAgZGVzY3JpcHRpb24uc2V0U3RyaW5n
KCJ0eXBlIiwgZG9tVHlwZU5hbWUoYnJlYWtwb2ludFR5cGUpKTsKIH0KIApAQCAtMzcwLDE4ICsz
ODksMjAgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQo
Y29uc3QgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3QKICAgICBpZiAoIW1fZGVidWdnZXJBZ2Vu
dC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byogZG9t
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKwogICAg
IGJvb2wgc2hvdWxkUGF1c2UgPSBtX2RlYnVnZ2VyQWdlbnQtPnBhdXNlT25OZXh0U3RhdGVtZW50
RW5hYmxlZCgpIHx8IG1fZXZlbnRCcmVha3BvaW50cy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihJ
bnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6TGlz
dGVuZXIsIGV2ZW50LnR5cGUoKSkpOwogCi0gICAgaWYgKCFzaG91bGRQYXVzZSAmJiBtX2RvbUFn
ZW50KQotICAgICAgICBzaG91bGRQYXVzZSA9IG1fZG9tQWdlbnQtPmhhc0JyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNl
Q2FwdHVyZSgpKTsKKyAgICBpZiAoIXNob3VsZFBhdXNlICYmIGRvbUFnZW50KQorICAgICAgICBz
aG91bGRQYXVzZSA9IGRvbUFnZW50LT5oYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcigqZXZl
bnQuY3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LmNhbGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7CiAKICAg
ICBpZiAoIXNob3VsZFBhdXNlKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8SlNPTjo6T2Jq
ZWN0PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGV2ZW50RGF0YS0+
c2V0U3RyaW5nKCJldmVudE5hbWUiX3MsIGV2ZW50LnR5cGUoKSk7Ci0gICAgaWYgKG1fZG9tQWdl
bnQpIHsKLSAgICAgICAgaW50IGV2ZW50TGlzdGVuZXJJZCA9IG1fZG9tQWdlbnQtPmlkRm9yRXZl
bnRMaXN0ZW5lcigqZXZlbnQuY3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJlZ2lzdGVy
ZWRFdmVudExpc3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNh
cHR1cmUoKSk7CisgICAgaWYgKGRvbUFnZW50KSB7CisgICAgICAgIGludCBldmVudExpc3RlbmVy
SWQgPSBkb21BZ2VudC0+aWRGb3JFdmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCks
IGV2ZW50LnR5cGUoKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSgpKTsKICAgICAgICAgaWYgKGV2ZW50TGlzdGVu
ZXJJZCkKICAgICAgICAgICAgIGV2ZW50RGF0YS0+c2V0SW50ZWdlcigiZXZlbnRMaXN0ZW5lcklk
Il9zLCBldmVudExpc3RlbmVySWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXgg
NDU5Y2IzNjk0M2M0MjQwYjlmN2Q0OGFjMzQwYzhlNDcxMTQzZGViYi4uNzQ5YTdiNTI3M2Q0M2Jj
MTU1ZjgxYTM4ZWFiNWM0NDE1NWU5ODdjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTQz
LDcgKzQzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2
ZW50OwogY2xhc3MgRnJhbWU7Ci1jbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIE5vZGU7
CiBjbGFzcyBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjsKIApAQCAtNTMsNyArNTIsNyBAQCBjbGFz
cyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSwgcHVibGljIEluc3BlYwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9y
RE9NQWdlbnQqLCBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsKKyAgICBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudCopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQoKTsKIAogICAgIC8vIERPTURlYnVnZ2VyIEFQSQpAQCAtOTgsNyArOTcsNiBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpE
T01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIElu
c3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50IHsgbnVsbHB0ciB9OwogICAgIEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50IHsgbnVsbHB0ciB9OwogCiAg
ICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2Vu
dC5jcHAKaW5kZXggNzVlNTY3MGFmM2FmNGIzOWU5ZmZlNzBkYTFkYzBkZWIyZjQ2ZDNiYy4uYzFk
MDYxZTRhYzAwY2U4YmU5N2NjMTRlMTVhZjBmNTQwNzk0YjZjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNw
cApAQCAtMzQsMjMgKzM0LDI0IEBACiAKICNpbmNsdWRlICJDb21tYW5kTGluZUFQSUhvc3QuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiV2ViSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCi1QYWdlQ29uc29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KFdlYkFnZW50Q29u
dGV4dCYgY29udGV4dCwgSW5zcGVjdG9ySGVhcEFnZW50KiBoZWFwQWdlbnQsIEluc3BlY3RvckRP
TUFnZW50KiBkb21BZ2VudCkKK1BhZ2VDb25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQoV2Vi
QWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JIZWFwQWdlbnQqIGhlYXBBZ2VudCkKICAg
ICA6IFdlYkNvbnNvbGVBZ2VudChjb250ZXh0LCBoZWFwQWdlbnQpCi0gICAgLCBtX2luc3BlY3Rv
ckRPTUFnZW50KGRvbUFnZW50KQorICAgICwgbV9pbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQu
aW5zdHJ1bWVudGluZ0FnZW50cykKIHsKIH0KIAogdm9pZCBQYWdlQ29uc29sZUFnZW50OjpjbGVh
ck1lc3NhZ2VzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKIHsKLSAgICBtX2luc3BlY3RvckRP
TUFnZW50LT5yZWxlYXNlRGFuZ2xpbmdOb2RlcygpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICBkb21B
Z2VudC0+cmVsZWFzZURhbmdsaW5nTm9kZXMoKTsKIAogICAgIFdlYkNvbnNvbGVBZ2VudDo6Y2xl
YXJNZXNzYWdlcyhlcnJvclN0cmluZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuaAppbmRleCBkNWY1NTllNWIw
MDI2YWQxNTI2NzJhNTYwMjg1NGU0NmM4YTkyMTE4Li45Yjg0NmY0NGVkNTNhZTk4NDc5NDVmZDY3
MTViMWQzZmNmOWZiNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmgKQEAgLTM2LDE5ICszNiwxNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50OwotCiBjbGFzcyBQ
YWdlQ29uc29sZUFnZW50IGZpbmFsIDogcHVibGljIFdlYkNvbnNvbGVBZ2VudCB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbnNvbGVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZUNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRleHQm
LCBJbnNwZWN0b3I6Okluc3BlY3RvckhlYXBBZ2VudCosIEluc3BlY3RvckRPTUFnZW50Kik7Cisg
ICAgUGFnZUNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3I6Okluc3BlY3Rv
ckhlYXBBZ2VudCopOwogICAgIHZpcnR1YWwgflBhZ2VDb25zb2xlQWdlbnQoKSA9IGRlZmF1bHQ7
CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CiAKLSAgICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0b3JET01BZ2VudDsKKyAgICBJ
bnN0cnVtZW50aW5nQWdlbnRzJiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365360</attachid>
            <date>2019-03-20 10:59:18 -0700</date>
            <delta_ts>2019-03-20 12:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195589-20190320105917.patch</filename>
            <type>text/plain</type>
            <size>37039</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1OGFlYmJlMjM1YWFmMmM4MDU3MGFhMDZlMzcyYzUyYWZjM2YzMzg5Li4z
MTRmNjU1MDBmMTRiNmNkZjM4YmEzOGVlY2MwYjc2OGQzYzA1ZmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjYgQEAKKzIwMTktMDMtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTTogbGF6aWx5IGNyZWF0ZSB0aGUgYWdlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTU4OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg3OTE3NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwYWdlQWdlbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0RE9NTGlzdGVuZXIpOiBEZWxl
dGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6Y29sbGVjdEFsbFN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6ZWxlbWVudEZvcklkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpiaW5kU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6fkluc3BlY3RvckNTU0FnZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpkaXNjYXJkQWdlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKworICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNl
dERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyk6CisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjppbnNwZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmhpZGVIaWdobGlnaHQpOgorCiAyMDE5LTAzLTIwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFNvbWUgZWxlbWVudHMgbGFnIGJlaGluZCBhc3luYyBv
dmVyZmxvdyBzY3JvbGxpbmcgb24gcGFsYWNlLWdhbWVzLmNvbQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGJmMTYyMzc1YmFiNGRh
Y2M3Mzc3NjVjYjhlYTQwNmVmM2RjZGRiODEuLjdlYmIxYzZlOWQxNWI3MWJkNmRmY2E0MTI3MmM0
NzZiMTAxOWRhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKQEAgLTExMSwyMyArMTExLDE4IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDCiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoaW5zcGVjdG9yQWdlbnRQdHIpKTsKIAog
ICAgIGF1dG8gcGFnZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JQYWdlQWdl
bnQ+KHBhZ2VDb250ZXh0LCBpbnNwZWN0b3JDbGllbnQsIG1fb3ZlcmxheS5nZXQoKSk7Ci0gICAg
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBwYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAg
bV9wYWdlQWdlbnQgPSBwYWdlQWdlbnRQdHIuZ2V0KCk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKFdU
Rk1vdmUocGFnZUFnZW50UHRyKSk7CiAKLSAgICBhdXRvIHJ1bnRpbWVBZ2VudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGFnZVJ1bnRpbWVBZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCk7CisgICAg
YXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+KHBh
Z2VDb250ZXh0LCBtX3BhZ2VBZ2VudCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQ
YWdlUnVudGltZUFnZW50KHJ1bnRpbWVBZ2VudC5nZXQoKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5k
KFdURk1vdmUocnVudGltZUFnZW50KSk7CiAKLSAgICBhdXRvIGRvbUFnZW50UHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIHBhZ2VBZ2VudCwgbV9v
dmVybGF5LmdldCgpKTsKLSAgICBtX2RvbUFnZW50ID0gZG9tQWdlbnRQdHIuZ2V0KCk7Ci0gICAg
bV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZG9tQWdlbnRQdHIpKTsKLQogICAgIGF1dG8gZGF0YWJh
c2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRGF0YWJhc2VBZ2VudD4ocGFn
ZUNvbnRleHQpOwogICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIGRhdGFiYXNlQWdlbnQgPSBk
YXRhYmFzZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRhdGFi
YXNlQWdlbnRQdHIpKTsKIAotICAgIGF1dG8gY29uc29sZUFnZW50UHRyID0gc3RkOjptYWtlX3Vu
aXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCwgbV9kb21BZ2VudCk7CisgICAgYXV0
byBjb25zb2xlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBh
Z2VDb250ZXh0KTsKICAgICBXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGNvbnNvbGVB
Z2VudFB0ci5nZXQoKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVB
Z2VudChjb25zb2xlQWdlbnRQdHIuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3Zl
KGNvbnNvbGVBZ2VudFB0cikpOwpAQCAtMTc5LDggKzE3NCw5IEBAIHZvaWQgSW5zcGVjdG9yQ29u
dHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAKICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZShkZWJ1Z2dlckFnZW50KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQsIG1fcGFnZUFnZW50KSk7Ci0gICAgbV9hZ2Vu
dHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0
LCBtX2RvbUFnZW50KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRleHQsIG1fZG9tQWdlbnQsIGRlYnVnZ2Vy
QWdlbnRQdHIpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFnZUNvbnRleHQsIG1fcGFnZUFnZW50LCBtX292
ZXJsYXkuZ2V0KCkpKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50PihwYWdlQ29udGV4dCwgZGVidWdnZXJBZ2VudFB0cikpOwog
ICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckFwcGxpY2F0aW9u
Q2FjaGVBZ2VudD4ocGFnZUNvbnRleHQsIG1fcGFnZUFnZW50KSk7CiAgICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ+KHBhZ2VDb250ZXh0
KSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yV29ya2Vy
QWdlbnQ+KHBhZ2VDb250ZXh0KSk7CkBAIC0zOTEsNyArMzg3LDggQEAgdm9pZCBJbnNwZWN0b3JD
b250cm9sbGVyOjppbnNwZWN0KE5vZGUqIG5vZGUpCiAgICAgaWYgKCFoYXNSZW1vdGVGcm9udGVu
ZCgpKQogICAgICAgICBzaG93KCk7CiAKLSAgICBtX2RvbUFnZW50LT5pbnNwZWN0KG5vZGUpOwor
ICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9y
RE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPmluc3BlY3Qobm9kZSk7CiB9CiAKIGJvb2wg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlZCgpIGNvbnN0CkBAIC00MTEsOCArNDA4LDEwIEBA
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlzcGF0Y2hNZXNzYWdlRnJvbUZyb250ZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpoaWRlSGln
aGxpZ2h0KCkKIHsKLSAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAgbV9kb21BZ2VudC0+aGlk
ZUhpZ2hsaWdodCh1bnVzZWQpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkgeworICAgICAgICBFcnJvclN0cmluZyB1
bnVzZWQ7CisgICAgICAgIGRvbUFnZW50LT5oaWRlSGlnaGxpZ2h0KHVudXNlZCk7CisgICAgfQog
fQogCiBOb2RlKiBJbnNwZWN0b3JDb250cm9sbGVyOjpoaWdobGlnaHRlZE5vZGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXgg
MWE1ZjI3MDVhNWUwMmFiM2JlZTg0NDk1Mjk1NzdhOWY1ZjBlM2U5OS4uYjc3YTRkMDc0ODUyYTBj
Mzg4NDdiNzFiM2FhMTNkY2ViZDIyZmZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC01Miw3ICs1Miw2IEBAIGNsYXNzIERPTVdyYXBw
ZXJXb3JsZDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW5z
cGVjdG9yQ2xpZW50OwotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZENsaWVudDsKIGNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjsKIGNsYXNzIElu
c3BlY3RvclBhZ2VBZ2VudDsKQEAgLTEzNyw3ICsxMzYsNiBAQCBwcml2YXRlOgogICAgIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50KiBtX2luc3BlY3RvckZyb250ZW5kQ2xpZW50IHsgbnVsbHB0ciB9
OwogCiAgICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudCogbV9pbnNwZWN0b3JBZ2VudCB7IG51
bGxwdHIgfTsKLSAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudCB7IG51bGxwdHIgfTsK
ICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50IHsgbnVsbHB0ciB9OwogCiAgICAg
Ym9vbCBtX2lzVW5kZXJUZXN0IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCBlOWMwYTE0OGU2Mzk4NzlhNWI2NjAz
OGIyYTIwZjE1NjNmOTYyNTRhLi5jYTMwZTFhMjdiZjQwNjE4NWE0ODMyMGEyNjMxODNlYTdlNmU0
N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2Vu
dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
UGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAppbmRleCA2ZDQ4NTA5MjNlOWU3YjQwNTQ4NTEyODc5ZjY1YmFiNDRjZWQzOGI0Li4y
NzkyMGRmZTA1NDM4ODM3ZGU0NTUyNzY4OGQwY2Y5Yzk3NzFiZDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAt
NDMsNiArNDMsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEhlYWRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGlzdG9yeS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKQEAg
LTI5NCwxOSArMjk1LDExIEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NT
U3R5bGVSdWxlKENTU1J1bGUmIHJ1bGUpCiAgICAgcmV0dXJuIGRvd25jYXN0PENTU1N0eWxlUnVs
ZT4oJnJ1bGUpOwogfQogCi1JbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoV2Vi
QWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCitJbnNw
ZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0
KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJDU1MiX3MsIGNvbnRleHQpCiAgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPENTU0Zyb250ZW5kRGlzcGF0Y2hlcj4o
Y29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKENTU0Jh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
Ci0gICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogewotICAgIG1fZG9tQWdlbnQtPnNldERPTUxp
c3RlbmVyKHRoaXMpOwotfQotCi1JbnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50
KCkKLXsKLSAgICBBU1NFUlQoIW1fZG9tQWdlbnQpOwotICAgIHJlc2V0KCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCkBAIC0zMTUs
MTggKzMwOCwxMCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosCiAKIHZvaWQgSW5zcGVjdG9yQ1NT
QWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVj
dFJlYXNvbikKIHsKLSAgICByZXNldE5vblBlcnNpc3RlbnREYXRhKCk7Ci0KICAgICBTdHJpbmcg
dW51c2VkOwogICAgIGRpc2FibGUodW51c2VkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlzY2FyZEFnZW50KCkKLXsKLSAgICBtX2RvbUFnZW50LT5zZXRET01MaXN0ZW5lcihudWxs
cHRyKTsKLSAgICBtX2RvbUFnZW50ID0gbnVsbHB0cjsKLX0KLQogdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6cmVzZXQoKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgcmVzZXR0aW5nIG9u
IG1haW4gZnJhbWUgbmF2aWdhdGlvbnM/CkBAIC0zMzUsMjUgKzMyMCwyNyBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpyZXNldCgpCiAgICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmNs
ZWFyKCk7CiAgICAgbV9kb2N1bWVudFRvSW5zcGVjdG9yU3R5bGVTaGVldC5jbGVhcigpOwogICAg
IG1fZG9jdW1lbnRUb0tub3duQ1NTU3R5bGVTaGVldHMuY2xlYXIoKTsKLSAgICByZXNldE5vblBl
cnNpc3RlbnREYXRhKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVy
c2lzdGVudERhdGEoKQotewogICAgIHJlc2V0UHNldWRvU3RhdGVzKCk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYpCiB7CisgICAgaWYgKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpID09IHRoaXMpCisgICAgICAgIHJldHVy
bjsKKwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JDU1NBZ2VudCh0aGlz
KTsKIAotICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBtX2RvbUFnZW50LT5kb2N1bWVudHMoKSkK
LSAgICAgICAgYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKCpkb2N1bWVudCk7CisgICAgaWYgKGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkp
IHsKKyAgICAgICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IGRvbUFnZW50LT5kb2N1bWVudHMoKSkK
KyAgICAgICAgICAgIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZCgqZG9jdW1lbnQpOworICAgIH0K
IH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYpCiB7CiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3RvckNTU0FnZW50KG51bGxwdHIpOwor
CisgICAgcmVzZXQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnREZXRh
Y2hlZChEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC00MTUsNyArNDAyLDExIEBAIGJvb2wgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgQ1NT
U2VsZWN0b3I6OlBzCiAgICAgaWYgKG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCBub2RlSWQgPSBtX2RvbUFnZW50
LT5ib3VuZE5vZGVJZCgmZWxlbWVudCk7CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBpZiAoIWRvbUFnZW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpbnQgbm9kZUlkID0gZG9tQWdlbnQtPmJvdW5kTm9k
ZUlkKCZlbGVtZW50KTsKICAgICBpZiAoIW5vZGVJZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CkBAIC01NzQsOCArNTY1LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEFsbFN0eWxl
U2hlZXRzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zCiB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50Ojpjb2xsZWN0QWxsU3R5bGVTaGVldHMoVmVjdG9yPEluc3BlY3RvclN0eWxl
U2hlZXQqPiYgcmVzdWx0KQogewogICAgIFZlY3RvcjxDU1NTdHlsZVNoZWV0Kj4gY3NzU3R5bGVT
aGVldHM7Ci0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IG1fZG9tQWdlbnQtPmRvY3VtZW50cygp
KQotICAgICAgICBjb2xsZWN0QWxsRG9jdW1lbnRTdHlsZVNoZWV0cygqZG9jdW1lbnQsIGNzc1N0
eWxlU2hlZXRzKTsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkgeworICAgICAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDog
ZG9tQWdlbnQtPmRvY3VtZW50cygpKQorICAgICAgICAgICAgY29sbGVjdEFsbERvY3VtZW50U3R5
bGVTaGVldHMoKmRvY3VtZW50LCBjc3NTdHlsZVNoZWV0cyk7CisgICAgfQogCiAgICAgZm9yIChh
dXRvKiBjc3NTdHlsZVNoZWV0IDogY3NzU3R5bGVTaGVldHMpCiAgICAgICAgIHJlc3VsdC5hcHBl
bmQoYmluZFN0eWxlU2hlZXQoY3NzU3R5bGVTaGVldCkpOwpAQCAtNjI3LDcgKzYyMCwxMyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byByZXN1bHQgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCkt
PnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVj
dG9yU3R5bGVTaGVldCwgdGV4dCkpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaWYgKCFkb21BZ2VudCkgeworICAg
ICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gcmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHls
ZVNoZWV0LCB0ZXh0KSk7CiAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhyZXN1bHQucmVs
ZWFzZUV4Y2VwdGlvbigpKTsKIH0KQEAgLTY0MSw3ICs2NDAsMTMgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNP
Tjo6T2JqZWMKICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVl
dCwgY29tcG91bmRJZCwgdGV4dCkpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaWYgKCFkb21BZ2VudCkgeworICAg
ICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCkt
PnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0
eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0
b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtNjU5LDcgKzY2NCwxMyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRS
dWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYgogICAg
IGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBw
ZXJmb3JtUmVzdWx0ID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91
bmlxdWU8U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3Vu
ZElkLCBzZWxlY3RvcikpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaWYgKCFkb21BZ2VudCkgeworICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZv
cm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxl
U2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6
dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTY3MCw3ICs2ODEsMTMgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0
UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2IKIAog
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y3JlYXRlU3R5bGVTaGVldChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgU3RyaW5nKiBzdHlsZVNoZWV0SWQpCiB7
Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9kb21BZ2VudC0+cGFnZUFnZW50KCktPmZyYW1lRm9ySWQo
ZnJhbWVJZCk7CisgICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclBhZ2VBZ2VudCgpOworICAgIGlmICghcGFnZUFnZW50KSB7CisgICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgUGFnZSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKICAg
ICBpZiAoIWZyYW1lKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk5vIGZyYW1lIGZvciBnaXZl
biBpZCBmb3VuZCJfczsKICAgICAgICAgcmV0dXJuOwpAQCAtNzQwLDkgKzc1NywxNSBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyaW5nJiBzdHlsZVNoZQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byog
ZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAg
ICBpZiAoIWRvbUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgRE9NIGFn
ZW50Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBhY3Rpb24gPSBzdGQ6
Om1ha2VfdW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9y
KTsKICAgICBhdXRvJiByYXdBY3Rpb24gPSAqYWN0aW9uOwotICAgIGF1dG8gcGVyZm9ybVJlc3Vs
dCA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOworICAg
IGF1dG8gcGVyZm9ybVJlc3VsdCA9IGRvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oV1RGTW92
ZShhY3Rpb24pKTsKICAgICBpZiAocGVyZm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAg
ICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZv
cm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtODE2LDcg
KzgzOSwxMyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250
RmFtaWx5TmFtZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SgogCiB2b2lkIEluc3BlY3RvckNTU0Fn
ZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJ
ZCwgY29uc3QgSlNPTjo6QXJyYXkmIGZvcmNlZFBzZXVkb0NsYXNzZXMpCiB7Ci0gICAgRWxlbWVu
dCogZWxlbWVudCA9IG1fZG9tQWdlbnQtPmFzc2VydEVsZW1lbnQoZXJyb3JTdHJpbmcsIG5vZGVJ
ZCk7CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
RE9NQWdlbnQoKTsKKyAgICBpZiAoIWRvbUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0g
Ik1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRWxl
bWVudCogZWxlbWVudCA9IGRvbUFnZW50LT5hc3NlcnRFbGVtZW50KGVycm9yU3RyaW5nLCBub2Rl
SWQpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC04NDIsNyArODcx
LDcgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlJiBJbnNwZWN0b3JDU1NBZ2Vu
dDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWwKIHsKICAgICByZXR1cm4gbV9ub2RlVG9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmVuc3VyZSgmZWxlbWVudCwgW3RoaXMsICZlbGVtZW50XSB7CiAgICAg
ICAgIFN0cmluZyBuZXdTdHlsZVNoZWV0SWQgPSBTdHJpbmc6Om51bWJlcihtX2xhc3RTdHlsZVNo
ZWV0SWQrKyk7Ci0gICAgICAgIGF1dG8gaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0
eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1fZG9tQWdlbnQtPnBhZ2VBZ2VudCgpLCBu
ZXdTdHlsZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVT
aGVldE9yaWdpbjo6UmVndWxhciwgdGhpcyk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yU3R5bGVT
aGVldCA9IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6Y3JlYXRlKG1faW5zdHJ1
bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVt
ZW50LCBJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIs
IHRoaXMpOwogICAgICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChuZXdTdHlsZVNo
ZWV0SWQsIGluc3BlY3RvclN0eWxlU2hlZXQuY29weVJlZigpKTsKICAgICAgICAgcmV0dXJuIGlu
c3BlY3RvclN0eWxlU2hlZXQ7CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwpAQCAtODUwLDcgKzg3
OSwxMyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUmIEluc3BlY3RvckNTU0Fn
ZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoU3R5bAogCiBFbGVtZW50KiBJbnNwZWN0b3JDU1NB
Z2VudDo6ZWxlbWVudEZvcklkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkK
IHsKLSAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+bm9kZUZvcklkKG5vZGVJZCk7CisgICAg
YXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQo
KTsKKyAgICBpZiAoIWRvbUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcg
RE9NIGFnZW50Il9zOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBOb2Rl
KiBub2RlID0gZG9tQWdlbnQtPm5vZGVGb3JJZChub2RlSWQpOwogICAgIGlmICghbm9kZSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9ICJObyBub2RlIHdpdGggZ2l2ZW4gaWQgZm91bmQiX3M7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtODc3LDcgKzkxMiw3IEBAIEluc3BlY3RvclN0eWxl
U2hlZXQqIEluc3BlY3RvckNTU0FnZW50OjpiaW5kU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBz
dHlsZVNoZWV0CiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KSB7CiAgICAgICAgIFN0cmlu
ZyBpZCA9IFN0cmluZzo6bnVtYmVyKG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gc3R5bGVTaGVldC0+b3duZXJEb2N1bWVudCgpOwotICAgICAgICBp
bnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1fZG9tQWdl
bnQtPnBhZ2VBZ2VudCgpLCBpZCwgc3R5bGVTaGVldCwgZGV0ZWN0T3JpZ2luKHN0eWxlU2hlZXQs
IGRvY3VtZW50KSwgSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50
KSwgdGhpcyk7CisgICAgICAgIGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNo
ZWV0OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpLCBp
ZCwgc3R5bGVTaGVldCwgZGV0ZWN0T3JpZ2luKHN0eWxlU2hlZXQsIGRvY3VtZW50KSwgSW5zcGVj
dG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSwgdGhpcyk7CiAgICAgICAg
IG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuc2V0KGlkLCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsK
ICAgICAgICAgbV9jc3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChzdHlsZVNo
ZWV0LCBpbnNwZWN0b3JTdHlsZVNoZWV0KTsKICAgICAgICAgaWYgKG1fY3JlYXRpbmdWaWFJbnNw
ZWN0b3JTdHlsZVNoZWV0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggMzU0OTRmZTVjOTFiZDBkMDNlNDNlNTI0NzVh
NWMyMDFhOTEyMzFlMy4uMWRmNzk1OGExMmMzNWJjZTUxMzE1ZmQ2Mjk5YTAxMmEwNDQ5YTk3OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNp
bmNsdWRlICJDb250ZW50U2VjdXJpdHlQb2xpY3kuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JET01B
Z2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJTZWN1cml0eUNvbnRleHQuaCIKQEAgLTU2
LDcgKzU1LDYgQEAgY2xhc3MgU3R5bGVSdWxlOwogCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudCBm
aW5hbAogICAgIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZQotICAgICwgcHVibGljIEluc3Bl
Y3RvckRPTUFnZW50OjpET01MaXN0ZW5lcgogICAgICwgcHVibGljIEluc3BlY3Rvcjo6Q1NTQmFj
a2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgLCBwdWJsaWMgSW5zcGVjdG9yU3R5bGVTaGVldDo6
TGlzdGVuZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNTU0FnZW50KTsK
QEAgLTc5LDE2ICs3NywxMyBAQCBwdWJsaWM6CiAgICAgICAgIENvbnRlbnRTZWN1cml0eVBvbGlj
eSogbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgfTsKIAotICAgIEluc3BlY3RvckNTU0Fn
ZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3RvckRPTUFnZW50Kik7Ci0gICAgdmlydHVhbCB+
SW5zcGVjdG9yQ1NTQWdlbnQoKTsKKyAgICBJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRl
eHQmKTsKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDU1NBZ2VudCgpID0gZGVmYXVsdDsKIAogICAg
IHN0YXRpYyBDU1NTdHlsZVJ1bGUqIGFzQ1NTU3R5bGVSdWxlKENTU1J1bGUmKTsKIAogICAgIHZv
aWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIq
LCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aWxs
RGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlzY2FyZEFnZW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBlbmFi
bGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24KQEAgLTk3LDYgKzkyLDkgQEAgcHVibGljOgogICAgIHZvaWQgYWN0aXZlU3R5bGVT
aGVldHNVcGRhdGVkKERvY3VtZW50Jik7CiAgICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKGNvbnN0
IEVsZW1lbnQmLCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKIAorICAgIC8vIENTU0Jh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CisgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTQ29tcHV0ZWRTdHls
ZVByb3BlcnR5Pj4mKSBvdmVycmlkZTsKICAgICB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0TWF0Y2hlZFN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBib29sKiBpbmNsdWRl
UHNldWRvLCBjb25zdCBib29sKiBpbmNsdWRlSW5oZXJpdGVkLCBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+JiBtYXRjaGVkQ1NTUnVsZXMs
IFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UHNldWRvSWRN
YXRjaGVzPj4mLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkluaGVyaXRlZFN0eWxlRW50cnk+PiYgaW5oZXJpdGVkRW50cmllcykgb3ZlcnJpZGU7CkBAIC0x
MTIsNiArMTEwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldFN1cHBvcnRlZFN5c3RlbUZvbnRG
YW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheU9mPFN0cmluZz4+JiBy
ZXN1bHQpIG92ZXJyaWRlOwogICAgIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyYs
IGludCBub2RlSWQsIGNvbnN0IEpTT046OkFycmF5JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKSBvdmVy
cmlkZTsKIAorICAgIC8vIEluc3BlY3RvckRPTUFnZW50IGhvb2tzCisgICAgdm9pZCBkaWRSZW1v
dmVET01Ob2RlKE5vZGUmLCBpbnQgbm9kZUlkKTsKKyAgICB2b2lkIGRpZE1vZGlmeURPTUF0dHIo
RWxlbWVudCYpOworCiBwcml2YXRlOgogICAgIGNsYXNzIFN0eWxlU2hlZXRBY3Rpb247CiAgICAg
Y2xhc3MgU2V0U3R5bGVTaGVldFRleHRBY3Rpb247CkBAIC0xMjQsNyArMTI2LDYgQEAgcHJpdmF0
ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPERvY3VtZW50PiwgVmVjdG9yPFJlZlB0cjxJ
bnNwZWN0b3JTdHlsZVNoZWV0Pj4+IERvY3VtZW50VG9WaWFJbnNwZWN0b3JTdHlsZVNoZWV0OyAv
LyAidmlhIGluc3BlY3RvciIgc3R5bGVzaGVldHMKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50LCB1
bnNpZ25lZD4gTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsKIAotICAgIHZvaWQgcmVzZXROb25Q
ZXJzaXN0ZW50RGF0YSgpOwogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYg
YXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWxlZEVsZW1lbnQmKTsKICAgICBFbGVtZW50KiBlbGVt
ZW50Rm9ySWQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkKTsKIApAQCAtMTQ0LDEwICsxNDUsNiBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkNTUzo6UnVsZU1hdGNoPj4gYnVpbGRBcnJheUZvck1hdGNoZWRSdWxlTGlzdChjb25zdCBWZWN0
b3I8UmVmUHRyPFN0eWxlUnVsZT4+JiwgU3R5bGVSZXNvbHZlciYsIEVsZW1lbnQmLCBQc2V1ZG9J
ZCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+IGJ1aWxk
T2JqZWN0Rm9yQXR0cmlidXRlc1N0eWxlKFN0eWxlZEVsZW1lbnQmKTsKIAotICAgIC8vIEluc3Bl
Y3RvckRPTUFnZW50OjpET01MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgZGlkUmVt
b3ZlRE9NTm9kZShOb2RlJiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRNb2Rp
ZnlET01BdHRyKEVsZW1lbnQmKSBvdmVycmlkZTsKLQogICAgIC8vIEluc3BlY3RvckNTU0FnZW50
OjpMaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgogICAgIHZvaWQgc3R5bGVTaGVldENoYW5nZWQoSW5z
cGVjdG9yU3R5bGVTaGVldCopIG92ZXJyaWRlOwogCkBAIC0xNTUsNyArMTUyLDYgQEAgcHJpdmF0
ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkNTU0Zyb250ZW5kRGlzcGF0Y2hl
cj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6Q1NTQmFja2Vu
ZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQq
IG1fZG9tQWdlbnQgeyBudWxscHRyIH07CiAKICAgICBJZFRvSW5zcGVjdG9yU3R5bGVTaGVldCBt
X2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0OwogICAgIENTU1N0eWxlU2hlZXRUb0luc3BlY3RvclN0
eWxlU2hlZXQgbV9jc3NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApp
bmRleCA1ZWJkNDE2MGY5ZDFmYThlNDc5ZTM2ODNkY2M5N2ZiNDNlN2I3NDA1Li4xZDkwNzFiYWZk
OTYxNTY5YTY1OTJmMWYzMjg2MGY4YmQ5NDJmZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtNjksNiArNjks
NyBAQAogI2luY2x1ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVmlk
ZW9FbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgorI2luY2x1ZGUgIkluc3Bl
Y3RvckNTU0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckhpc3RvcnkuaCIKQEAg
LTM1NCwxMSArMzU1LDYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVzZXQoKQogICAgIG1f
ZG9jdW1lbnQgPSBudWxscHRyOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRET01M
aXN0ZW5lcihET01MaXN0ZW5lciogbGlzdGVuZXIpCi17Ci0gICAgbV9kb21MaXN0ZW5lciA9IGxp
c3RlbmVyOwotfQotCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXREb2N1bWVudChEb2N1bWVu
dCogZG9jdW1lbnQpCiB7CiAgICAgaWYgKGRvY3VtZW50ID09IG1fZG9jdW1lbnQuZ2V0KCkpCkBA
IC00MTgsOCArNDE0LDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6dW5iaW5kKE5vZGUqIG5v
ZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCkKICAgICB9CiAKICAgICBub2Rlc01hcC0+cmVtb3Zl
KG5vZGUpOwotICAgIGlmIChtX2RvbUxpc3RlbmVyKQotICAgICAgICBtX2RvbUxpc3RlbmVyLT5k
aWRSZW1vdmVET01Ob2RlKCpub2RlLCBpZCk7CisKKyAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdl
bnQtPmRpZFJlbW92ZURPTU5vZGUoKm5vZGUsIGlkKTsKIAogICAgIGlmIChtX2NoaWxkcmVuUmVx
dWVzdGVkLnJlbW92ZShpZCkpIHsKICAgICAgICAgLy8gRklYTUU6IFdvdWxkIGJlIGJldHRlciB0
byBkbyB0aGlzIGl0ZXJhdGl2ZWx5IHJhdGhlciB0aGFuIHJlY3Vyc2l2ZWx5LgpAQCAtMjI0MSwx
MiArMjIzOCwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01BdHRyKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbgogICAgICAgICByZXR1cm47CiAK
ICAgICBpbnQgaWQgPSBib3VuZE5vZGVJZCgmZWxlbWVudCk7Ci0gICAgLy8gSWYgbm9kZSBpcyBu
b3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgogICAgIGlmICghaWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChtX2RvbUxpc3RlbmVyKQotICAgICAgICBtX2RvbUxpc3RlbmVy
LT5kaWRNb2RpZnlET01BdHRyKGVsZW1lbnQpOworICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2Vu
dC0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
LT5hdHRyaWJ1dGVNb2RpZmllZChpZCwgbmFtZSwgdmFsdWUpOwogfQpAQCAtMjI1NCwxMiArMjI1
MCwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbgogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCiB7CiAgICAgaW50IGlkID0gYm91bmROb2RlSWQoJmVsZW1lbnQpOwotICAgIC8vIElmIG5v
ZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVudC4KICAgICBpZiAoIWlkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kb21MaXN0ZW5lcikKLSAgICAgICAgbV9kb21M
aXN0ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKKyAgICBpZiAoYXV0byogY3NzQWdl
bnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAgICAg
Y3NzQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCk7CiAKICAgICBtX2Zyb250ZW5kRGlz
cGF0Y2hlci0+YXR0cmlidXRlUmVtb3ZlZChpZCwgbmFtZSk7CiB9CkBAIC0yMjY5LDEyICsyMjY0
LDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQo
Y29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVuCiAgICAgYXV0byBub2RlSWRzID0gSlNPTjo6
QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKICAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBlbGVtZW50
cykgewogICAgICAgICBpbnQgaWQgPSBib3VuZE5vZGVJZChlbGVtZW50KTsKLSAgICAgICAgLy8g
SWYgbm9kZSBpcyBub3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgogICAgICAgICBp
ZiAoIWlkKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1fZG9tTGlzdGVu
ZXIpCi0gICAgICAgICAgICBtX2RvbUxpc3RlbmVyLT5kaWRNb2RpZnlET01BdHRyKCplbGVtZW50
KTsKKyAgICAgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgICAgICBjc3NBZ2VudC0+ZGlkTW9kaWZ5RE9NQXR0
cigqZWxlbWVudCk7CisKICAgICAgICAgbm9kZUlkcy0+YWRkSXRlbShpZCk7CiAgICAgfQogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5pbmxpbmVTdHlsZUludmFsaWRhdGVkKFdURk1vdmUobm9k
ZUlkcykpOwpAQCAtMjI5NCw3ICsyMjg5LDYgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Y2hh
cmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEmIGNoYXJhY3RlckRhdGEpCiB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUmIG5vZGUpCiB7CiAg
ICAgaW50IGlkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgmbm9kZSk7Ci0gICAgLy8gSWYg
bm9kZSBpcyBub3QgbWFwcGVkIHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgogICAgIGlmICghaWQp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGNjN2UyMjZmODJjYzIxMzZhMDE5MzFhMDEy
YzVhMDg4MTY2YTI3NWYuLjIwZjE4MWU2OGZkNTBmYjc0ZDQyYWE4NzIwZGY5NDc2ZTM5ZWM3MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSlNWYWx1ZTsKIH0KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIAorCiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgQ2hh
cmFjdGVyRGF0YTsKIGNsYXNzIERPTUVkaXRvcjsKQEAgLTk0LDEyICs5NCw2IEBAIGNsYXNzIElu
c3BlY3RvckRPTUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3Rvcjo6RE9NCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRE9NQWdl
bnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0cnVjdCBE
T01MaXN0ZW5lciB7Ci0gICAgICAgIHZpcnR1YWwgfkRPTUxpc3RlbmVyKCkgPSBkZWZhdWx0Owot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiwgaW50IG5vZGVJZCkg
PSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JikgPSAw
OwotICAgIH07Ci0KICAgICBJbnNwZWN0b3JET01BZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNw
ZWN0b3JQYWdlQWdlbnQqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+SW5zcGVj
dG9yRE9NQWdlbnQoKTsKIApAQCAtMTkxLDcgKzE4NSw2IEBAIHB1YmxpYzoKICAgICBpbnQgcHVz
aE5vZGVUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwgaW50IGRvY3VtZW50Tm9kZUlkLCBOb2RlKik7
CiAgICAgTm9kZSogbm9kZUZvcklkKGludCBub2RlSWQpOwogICAgIGludCBib3VuZE5vZGVJZChj
b25zdCBOb2RlKik7Ci0gICAgdm9pZCBzZXRET01MaXN0ZW5lcihET01MaXN0ZW5lciopOwogCiAg
ICAgc3RhdGljIFN0cmluZyBkb2N1bWVudFVSTFN0cmluZyhEb2N1bWVudCopOwogCkBAIC0yMTgs
OSArMjExLDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBOb2RlKiBzY3JpcHRWYWx1ZUFzTm9kZShK
U0M6OkpTVmFsdWUpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgbm9kZUFzU2NyaXB0VmFsdWUo
SlNDOjpFeGVjU3RhdGUmLCBOb2RlKik7CiAKLSAgICAvLyBNZXRob2RzIGNhbGxlZCBmcm9tIG90
aGVyIGFnZW50cy4KLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgpIHsgcmV0dXJu
IG1fcGFnZUFnZW50OyB9Ci0KICAgICBib29sIGhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
KEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXImLCBib29sIGNhcHR1cmUpOwogICAgIGludCBpZEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJn
ZXQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wg
Y2FwdHVyZSk7CiAKQEAgLTI2Myw5ICsyNTMsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNo
ZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2Vu
ZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudCB7IG51bGxw
dHIgfTsKLQogICAgIEluc3BlY3Rvck92ZXJsYXkqIG1fb3ZlcmxheSB7IG51bGxwdHIgfTsKLSAg
ICBET01MaXN0ZW5lciogbV9kb21MaXN0ZW5lciB7IG51bGxwdHIgfTsKICAgICBOb2RlVG9JZE1h
cCBtX2RvY3VtZW50Tm9kZVRvSWRNYXA7CiAgICAgLy8gT3ducyBub2RlIG1hcHBpbmdzIGZvciBk
YW5nbGluZyBub2Rlcy4KICAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE5vZGVUb0lkTWFwPj4g
bV9kYW5nbGluZ05vZGVUb0lkTWFwczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGFj
OTE1ZGM2ZjA4NWQ4NWI5ZjNjYTE2ZmJmNjVlMWI4ODc3YzUwOGMuLmU0Njc2NzkwZmI5Y2E0NDRi
MzIzMDRkMDgzMjU4MDcxYjU5MTU0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAt
NjUsMTEgKzY1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAotSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckRPTUFnZW50KiBkb21B
Z2VudCwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCkKK0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0
JiBjb250ZXh0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBkZWJ1Z2dlckFnZW50KQogICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKCJET01EZWJ1Z2dlciJfcywgY29udGV4dCkKICAgICAsIG1fYmFj
a2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yOjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpj
cmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCiAgICAgLCBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICAsIG1fZG9t
QWdlbnQoZG9tQWdlbnQpCiAgICAgLCBtX2RlYnVnZ2VyQWdlbnQoZGVidWdnZXJBZ2VudCkKIHsK
ICAgICBtX2RlYnVnZ2VyQWdlbnQtPmFkZExpc3RlbmVyKCp0aGlzKTsKQEAgLTIzMyw3ICsyMzIs
MTMgQEAgc3RhdGljIFN0cmluZyBkb21UeXBlTmFtZShpbnQgdHlwZSkKIAogdm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewotICAgIE5vZGUq
IG5vZGUgPSBtX2RvbUFnZW50LT5hc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOworICAg
IGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50
KCk7CisgICAgaWYgKCFkb21BZ2VudCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5n
IERPTSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5vZGUqIG5vZGUg
PSBkb21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5v
ZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjUxLDkgKzI1NiwxNiBAQCB2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OnNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbgogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJp
bmcmIHR5cGVTdHJpbmcpCiB7Ci0gICAgTm9kZSogbm9kZSA9IG1fZG9tQWdlbnQtPmFzc2VydE5v
ZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBpZiAoIWRvbUFnZW50KSB7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgTm9kZSogbm9kZSA9IGRvbUFnZW50LT5hc3NlcnROb2RlKGVycm9y
U3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOworCiAgICAg
aW50IHR5cGUgPSBkb21UeXBlRm9yTmFtZShlcnJvclN0cmluZywgdHlwZVN0cmluZyk7CiAgICAg
aWYgKHR5cGUgPT0gLTEpCiAgICAgICAgIHJldHVybjsKQEAgLTMxNiwxMiArMzI4LDE2IEBAIHZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2Rl
JiB0YXJnZXQsIGludCBicmVha3BvCiB7CiAgICAgQVNTRVJUKGhhc0JyZWFrcG9pbnQoJnRhcmdl
dCwgYnJlYWtwb2ludFR5cGUpKTsKIAorICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisKICAgICBOb2RlKiBicmVha3BvaW50T3du
ZXIgPSAmdGFyZ2V0OwogICAgIGlmICgoMSA8PCBicmVha3BvaW50VHlwZSkgJiBpbmhlcml0YWJs
ZURPTUJyZWFrcG9pbnRUeXBlc01hc2spIHsKLSAgICAgICAgLy8gRm9yIGluaGVyaXRhYmxlIGJy
ZWFrcG9pbnQgdHlwZXMsIHRhcmdldCBub2RlIGlzbid0IGFsd2F5cyB0aGUgc2FtZSBhcyB0aGUg
bm9kZSB0aGF0IG93bnMgYSBicmVha3BvaW50LgotICAgICAgICAvLyBUYXJnZXQgbm9kZSBtYXkg
YmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0byBwdXNoIGl0IGZpcnN0LgotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0
YXJnZXROb2RlT2JqZWN0ID0gbV9kb21BZ2VudC0+cmVzb2x2ZU5vZGUoJnRhcmdldCwgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApOwotICAgICAgICBkZXNjcmlw
dGlvbi5zZXRWYWx1ZSgidGFyZ2V0Tm9kZSIsIHRhcmdldE5vZGVPYmplY3QpOworICAgICAgICBp
ZiAoZG9tQWdlbnQpIHsKKyAgICAgICAgICAgIC8vIEZvciBpbmhlcml0YWJsZSBicmVha3BvaW50
IHR5cGVzLCB0YXJnZXQgbm9kZSBpc24ndCBhbHdheXMgdGhlIHNhbWUgYXMgdGhlIG5vZGUgdGhh
dCBvd25zIGEgYnJlYWtwb2ludC4KKyAgICAgICAgICAgIC8vIFRhcmdldCBub2RlIG1heSBiZSB1
bmtub3duIHRvIGZyb250ZW5kLCBzbyB3ZSBuZWVkIHRvIHB1c2ggaXQgZmlyc3QuCisgICAgICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiB0
YXJnZXROb2RlT2JqZWN0ID0gZG9tQWdlbnQtPnJlc29sdmVOb2RlKCZ0YXJnZXQsIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwKTsKKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uLnNldFZhbHVlKCJ0YXJnZXROb2RlIiwgdGFyZ2V0Tm9kZU9iamVjdCk7CisgICAgICAg
IH0KIAogICAgICAgICAvLyBGaW5kIGJyZWFrcG9pbnQgb3duZXIgbm9kZS4KICAgICAgICAgaWYg
KCFpbnNlcnRpb24pCkBAIC0zMzgsOSArMzU0LDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBicmVha3Bv
CiAgICAgICAgICAgICBkZXNjcmlwdGlvbi5zZXRCb29sZWFuKCJpbnNlcnRpb24iLCBpbnNlcnRp
b24pOwogICAgIH0KIAotICAgIGludCBicmVha3BvaW50T3duZXJOb2RlSWQgPSBtX2RvbUFnZW50
LT5ib3VuZE5vZGVJZChicmVha3BvaW50T3duZXIpOwotICAgIEFTU0VSVChicmVha3BvaW50T3du
ZXJOb2RlSWQpOwotICAgIGRlc2NyaXB0aW9uLnNldEludGVnZXIoIm5vZGVJZCIsIGJyZWFrcG9p
bnRPd25lck5vZGVJZCk7CisgICAgaWYgKGRvbUFnZW50KSB7CisgICAgICAgIGludCBicmVha3Bv
aW50T3duZXJOb2RlSWQgPSBkb21BZ2VudC0+Ym91bmROb2RlSWQoYnJlYWtwb2ludE93bmVyKTsK
KyAgICAgICAgQVNTRVJUKGJyZWFrcG9pbnRPd25lck5vZGVJZCk7CisgICAgICAgIGRlc2NyaXB0
aW9uLnNldEludGVnZXIoIm5vZGVJZCIsIGJyZWFrcG9pbnRPd25lck5vZGVJZCk7CisgICAgfQor
CiAgICAgZGVzY3JpcHRpb24uc2V0U3RyaW5nKCJ0eXBlIiwgZG9tVHlwZU5hbWUoYnJlYWtwb2lu
dFR5cGUpKTsKIH0KIApAQCAtMzgzLDE4ICs0MDIsMjAgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVk
RXYKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuc2V0RXZlbnRWYWx1ZSh0b0pTKHN0YXRlLCBkZXBy
ZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgZXZlbnQpKTsKICAgICB9CiAK
KyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01B
Z2VudCgpOworCiAgICAgYm9vbCBzaG91bGRQYXVzZSA9IG1fZGVidWdnZXJBZ2VudC0+cGF1c2VP
bk5leHRTdGF0ZW1lbnRFbmFibGVkKCkgfHwgbV9ldmVudEJyZWFrcG9pbnRzLmNvbnRhaW5zKHN0
ZDo6bWFrZV9wYWlyKEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFr
cG9pbnRUeXBlOjpMaXN0ZW5lciwgZXZlbnQudHlwZSgpKSk7CiAKLSAgICBpZiAoIXNob3VsZFBh
dXNlICYmIG1fZG9tQWdlbnQpCi0gICAgICAgIHNob3VsZFBhdXNlID0gbV9kb21BZ2VudC0+aGFz
QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoKmV2ZW50LmN1cnJlbnRUYXJnZXQoKSwgZXZlbnQu
dHlwZSgpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jYWxsYmFjaygpLCByZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lci51c2VDYXB0dXJlKCkpOworICAgIGlmICghc2hvdWxkUGF1c2UgJiYgZG9tQWdl
bnQpCisgICAgICAgIHNob3VsZFBhdXNlID0gZG9tQWdlbnQtPmhhc0JyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2Fw
dHVyZSgpKTsKIAogICAgIGlmICghc2hvdWxkUGF1c2UpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlZjxKU09OOjpPYmplY3Q+IGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgZXZlbnREYXRhLT5zZXRTdHJpbmcoImV2ZW50TmFtZSJfcywgZXZlbnQudHlwZSgpKTsKLSAg
ICBpZiAobV9kb21BZ2VudCkgewotICAgICAgICBpbnQgZXZlbnRMaXN0ZW5lcklkID0gbV9kb21B
Z2VudC0+aWRGb3JFdmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5
cGUoKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXIudXNlQ2FwdHVyZSgpKTsKKyAgICBpZiAoZG9tQWdlbnQpIHsKKyAgICAgICAgaW50
IGV2ZW50TGlzdGVuZXJJZCA9IGRvbUFnZW50LT5pZEZvckV2ZW50TGlzdGVuZXIoKmV2ZW50LmN1
cnJlbnRUYXJnZXQoKSwgZXZlbnQudHlwZSgpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jYWxs
YmFjaygpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKCkpOwogICAgICAgICBp
ZiAoZXZlbnRMaXN0ZW5lcklkKQogICAgICAgICAgICAgZXZlbnREYXRhLT5zZXRJbnRlZ2VyKCJl
dmVudExpc3RlbmVySWQiX3MsIGV2ZW50TGlzdGVuZXJJZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaAppbmRleCBmMjY2NDc1NjVlMGYzMDI2ODU2YjVlY2RhYTViZTkyYWFkZGQ0NWI0Li5h
MzY1OTM5YzU2YWRiMDcyY2UwYTgyYWE1MDkzNjU4YjVjNTI2YzI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuaApAQCAtNDcsNyArNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBFbGVt
ZW50OwogY2xhc3MgRXZlbnQ7CiBjbGFzcyBGcmFtZTsKLWNsYXNzIEluc3BlY3RvckRPTUFnZW50
OwogY2xhc3MgTm9kZTsKIGNsYXNzIFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOwogCkBAIC01Nyw3
ICs1Niw3IEBAIGNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjCiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6Ci0gICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChXZWJBZ2VudENvbnRl
eHQmLCBJbnNwZWN0b3JET01BZ2VudCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCopOworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudCgpOwogCiAgICAgLy8gRE9NRGVidWdnZXIgQVBJCkBAIC0xMDQsNyAr
MTAzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTURlYnVnZ2VyQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIEluc3BlY3Rv
ckRPTUFnZW50KiBtX2RvbUFnZW50IHsgbnVsbHB0ciB9OworCiAgICAgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQgeyBudWxscHRyIH07CiAKICAgICBI
YXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9kb21CcmVha3BvaW50czsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNw
cAppbmRleCA2ZWIyNmUwZjU4MmZlZjAyN2I3ZGU4Yjk1MTIwYzE0YjcxN2I4MDQxLi5mNzE3ZWE3
NThiOWFjYTA5YmVhZWRjOWIxZTFmMjFkZDVlMzAxZWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuY3BwCkBA
IC0zNCwyMyArMzQsMjQgQEAKIAogI2luY2x1ZGUgIkNvbW1hbmRMaW5lQVBJSG9zdC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50
cy5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJXZWJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCIKIAotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKLVBhZ2VDb25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0
JiBjb250ZXh0LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQpCitQYWdlQ29uc29sZUFnZW50
OjpQYWdlQ29uc29sZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IFdlYkNv
bnNvbGVBZ2VudChjb250ZXh0KQotICAgICwgbV9pbnNwZWN0b3JET01BZ2VudChkb21BZ2VudCkK
KyAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhjb250ZXh0Lmluc3RydW1lbnRpbmdBZ2VudHMp
CiB7CiB9CiAKIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcpCiB7Ci0gICAgbV9pbnNwZWN0b3JET01BZ2VudC0+cmVsZWFzZURhbmds
aW5nTm9kZXMoKTsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdlbnQtPnJlbGVhc2VEYW5nbGlu
Z05vZGVzKCk7CiAKICAgICBXZWJDb25zb2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMoZXJyb3JTdHJp
bmcpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlQ29uc29sZUFnZW50LmgKaW5kZXggNzFjYjg5MDQ4Nzg3ZGQxYThkYzc3MDg5NjA0ODhm
ZTcwMWMzZWZhNy4uYWRhMjRmZThiY2QyMDA4YTdkNGExNGZmM2RkYzY2Y2VmZGRjZDhiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xl
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNv
bnNvbGVBZ2VudC5oCkBAIC0zNiwxOSArMzYsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1jbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKLQogY2xhc3MgUGFnZUNvbnNvbGVBZ2VudCBmaW5h
bCA6IHB1YmxpYyBXZWJDb25zb2xlQWdlbnQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBh
Z2VDb25zb2xlQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFBhZ2VDb25zb2xlQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQq
KTsKKyAgICBQYWdlQ29uc29sZUFnZW50KFdlYkFnZW50Q29udGV4dCYpOwogICAgIHZpcnR1YWwg
flBhZ2VDb25zb2xlQWdlbnQoKSA9IGRlZmF1bHQ7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBjbGVh
ck1lc3NhZ2VzKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAKLSAgICBJbnNwZWN0b3JET01BZ2Vu
dCogbV9pbnNwZWN0b3JET01BZ2VudDsKKyAgICBJbnN0cnVtZW50aW5nQWdlbnRzJiBtX2luc3Ry
dW1lbnRpbmdBZ2VudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365380</attachid>
            <date>2019-03-20 12:05:58 -0700</date>
            <delta_ts>2019-03-20 16:20:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195589-20190320120557.patch</filename>
            <type>text/plain</type>
            <size>37064</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMzY4NDY3ZjY0Njk5NGQ4M2VmODEwMmE2ZDk4YzhmMGE5M2E0ZmRmLi5m
NWRhMDhmOWQ0MGY2ZjdiYzY5ZjBiNDU3MjI4MGMwNDRlMWQzYjAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjYgQEAKKzIwMTktMDMtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTTogbGF6aWx5IGNyZWF0ZSB0aGUgYWdlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTU4OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg3OTE3NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwYWdlQWdlbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnVuYmluZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0RE9NTGlzdGVuZXIpOiBEZWxl
dGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6Y29sbGVjdEFsbFN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZVN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6ZWxlbWVudEZvcklkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpiaW5kU3R5bGVTaGVldCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6fkluc3BlY3RvckNTU0FnZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpkaXNjYXJkQWdlbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0Tm9uUGVyc2lzdGVudERhdGEpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKworICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNl
dERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudCk6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDb25zb2xlQWdlbnQ6OlBhZ2VDb25zb2xlQWdlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUNvbnNvbGVBZ2VudDo6Y2xlYXJNZXNzYWdlcyk6CisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6Y3JlYXRlTGF6eUFnZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjppbnNwZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmhpZGVIaWdobGlnaHQpOgorCiAyMDE5LTAzLTIwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBEYXRhYmFzZTogbGF6aWx5IGNyZWF0
ZSB0aGUgYWdlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcAppbmRleCAwNWYxOTYxNzYyMWM5YmYwMWUxNTkwOTVjZjhhZTlkZmM1YjZlMGUy
Li43MDYzOGZhZGE2N2FiNjkzMjgyNTQ2MTkyMjY0OGMwMjlkZGYzMTlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMTEsMjEg
KzExMSwxNyBAQCBJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2Um
IHBhZ2UsIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIG1fYWdlbnRzLmFwcGVuZChX
VEZNb3ZlKGluc3BlY3RvckFnZW50UHRyKSk7CiAKICAgICBhdXRvIHBhZ2VBZ2VudFB0ciA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgaW5zcGVjdG9y
Q2xpZW50LCBtX292ZXJsYXkuZ2V0KCkpOwotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFn
ZW50ID0gcGFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fcGFnZUFnZW50ID0gcGFnZUFnZW50UHRy
LmdldCgpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHBhZ2VBZ2VudFB0cikpOwogCi0g
ICAgYXV0byBydW50aW1lQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VSdW50aW1lQWdlbnQ+
KHBhZ2VDb250ZXh0LCBwYWdlQWdlbnQpOworICAgIGF1dG8gcnVudGltZUFnZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxQYWdlUnVudGltZUFnZW50PihwYWdlQ29udGV4dCwgbV9wYWdlQWdlbnQpOwog
ICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0UGFnZVJ1bnRpbWVBZ2VudChydW50aW1lQWdl
bnQuZ2V0KCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHJ1bnRpbWVBZ2VudCkpOwog
Ci0gICAgYXV0byBkb21BZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdl
bnQ+KHBhZ2VDb250ZXh0LCBwYWdlQWdlbnQsIG1fb3ZlcmxheS5nZXQoKSk7Ci0gICAgbV9kb21B
Z2VudCA9IGRvbUFnZW50UHRyLmdldCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRv
bUFnZW50UHRyKSk7Ci0KLSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8
UGFnZUNvbnNvbGVBZ2VudD4ocGFnZUNvbnRleHQsIG1fZG9tQWdlbnQpOwotICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy0+c2V0V2ViQ29uc29sZUFnZW50KGNvbnNvbGVBZ2VudC5nZXQoKSk7Ci0g
ICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoY29uc29sZUFnZW50KSk7CisgICAgYXV0byBjb25z
b2xlQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VDb25zb2xlQWdlbnQ+KHBhZ2VDb250
ZXh0KTsKKyAgICBXZWJDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGNvbnNvbGVBZ2VudFB0
ci5nZXQoKTsKKyAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFdlYkNvbnNvbGVBZ2VudChj
b25zb2xlQWdlbnRQdHIuZ2V0KCkpOworICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGNvbnNv
bGVBZ2VudFB0cikpOwogCiAgICAgQVNTRVJUKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21t
YW5kTGluZUFQSUhvc3QoKSk7CiAgICAgaWYgKGF1dG8qIGNvbW1hbmRMaW5lQVBJSG9zdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKQEAgLTE3NCw4ICsx
NzAsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQogCiAg
ICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwogICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VOZXR3b3JrQWdlbnQ+KHBhZ2VDb250ZXh0LCBt
X3BhZ2VBZ2VudCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3Bl
Y3RvckNTU0FnZW50PihwYWdlQ29udGV4dCwgbV9kb21BZ2VudCkpOwotICAgIG1fYWdlbnRzLmFw
cGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250
ZXh0LCBtX2RvbUFnZW50LCBkZWJ1Z2dlckFnZW50UHRyKSk7CisgICAgbV9hZ2VudHMuYXBwZW5k
KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0KSk7CisgICAg
bV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VD
b250ZXh0LCBtX3BhZ2VBZ2VudCwgbV9vdmVybGF5LmdldCgpKSk7CisgICAgbV9hZ2VudHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNvbnRl
eHQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3Vu
aXF1ZTxJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX3BhZ2VB
Z2VudCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckxh
eWVyVHJlZUFnZW50PihwYWdlQ29udGV4dCkpOwogICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvcldvcmtlckFnZW50PihwYWdlQ29udGV4dCkpOwpAQCAtMzg3LDcg
KzM4NCw4IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChOb2RlKiBub2RlKQog
ICAgIGlmICghaGFzUmVtb3RlRnJvbnRlbmQoKSkKICAgICAgICAgc2hvdygpOwogCi0gICAgbV9k
b21BZ2VudC0+aW5zcGVjdChub2RlKTsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAgIGRvbUFnZW50LT5p
bnNwZWN0KG5vZGUpOwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJsZWQoKSBj
b25zdApAQCAtNDA3LDggKzQwNSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc3Bh
dGNoTWVzc2FnZUZyb21Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCiB7Ci0gICAgRXJyb3JTdHJpbmcgdW51
c2VkOwotICAgIG1fZG9tQWdlbnQtPmhpZGVIaWdobGlnaHQodW51c2VkKTsKKyAgICBpZiAoYXV0
byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkp
IHsKKyAgICAgICAgRXJyb3JTdHJpbmcgdW51c2VkOworICAgICAgICBkb21BZ2VudC0+aGlkZUhp
Z2hsaWdodCh1bnVzZWQpOworICAgIH0KIH0KIAogTm9kZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6
aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5oCmluZGV4IDFhNWYyNzA1YTVlMDJhYjNiZWU4NDQ5NTI5NTc3YTlm
NWYwZTNlOTkuLmI3N2E0ZDA3NDg1MmEwYzM4ODQ3YjcxYjNhYTEzZGNlYmQyMmZmZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNTIs
NyArNTIsNiBAQCBjbGFzcyBET01XcmFwcGVyV29ybGQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKLWNsYXNzIEluc3BlY3RvckRP
TUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb247CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CkBAIC0xMzcsNyArMTM2
LDYgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudCogbV9pbnNwZWN0b3JG
cm9udGVuZENsaWVudCB7IG51bGxwdHIgfTsKIAogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdl
bnQqIG1faW5zcGVjdG9yQWdlbnQgeyBudWxscHRyIH07Ci0gICAgSW5zcGVjdG9yRE9NQWdlbnQq
IG1fZG9tQWdlbnQgeyBudWxscHRyIH07CiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VB
Z2VudCB7IG51bGxwdHIgfTsKIAogICAgIGJvb2wgbV9pc1VuZGVyVGVzdCB7IGZhbHNlIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5k
ZXggZTljMGExNDhlNjM5ODc5YTViNjYwMzhiMmEyMGYxNTYzZjk2MjU0YS4uY2EzMGUxYTI3YmY0
MDYxODVhNDgzMjBhMjYzMTgzZWE3ZTZlNDdlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIk1lZGlhTGlz
dC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggNmQ0ODUwOTIzZTllN2I0MDU0
ODUxMjg3OWY2NWJhYjQ0Y2VkMzhiNC4uMjc5MjBkZmUwNTQzODgzN2RlNDU1Mjc2ODhkMGNmOWM5
NzcxYmQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkhUTUxIZWFkRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1l
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckhpc3RvcnkuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnN0cnVtZW50aW5nQWdlbnRzLmgiCkBAIC0yOTQsMTkgKzI5NSwxMSBAQCBDU1NTdHlsZVJ1bGUq
IEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVsZShDU1NSdWxlJiBydWxlKQogICAgIHJl
dHVybiBkb3duY2FzdDxDU1NTdHlsZVJ1bGU+KCZydWxlKTsKIH0KIAotSW5zcGVjdG9yQ1NTQWdl
bnQ6Okluc3BlY3RvckNTU0FnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9y
RE9NQWdlbnQqIGRvbUFnZW50KQorSW5zcGVjdG9yQ1NTQWdlbnQ6Okluc3BlY3RvckNTU0FnZW50
KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiQ1NT
Il9zLCBjb250ZXh0KQogICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIoc3RkOjptYWtlX3VuaXF1
ZTxDU1NGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQogICAgICwg
bV9iYWNrZW5kRGlzcGF0Y2hlcihDU1NCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQu
YmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQotICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKIHsK
LSAgICBtX2RvbUFnZW50LT5zZXRET01MaXN0ZW5lcih0aGlzKTsKLX0KLQotSW5zcGVjdG9yQ1NT
QWdlbnQ6On5JbnNwZWN0b3JDU1NBZ2VudCgpCi17Ci0gICAgQVNTRVJUKCFtX2RvbUFnZW50KTsK
LSAgICByZXNldCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVGcm9u
dGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXIqKQpAQCAtMzE1LDE4ICszMDgsMTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0
ZXIqLAogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pCiB7Ci0gICAgcmVzZXROb25QZXJzaXN0
ZW50RGF0YSgpOwotCiAgICAgU3RyaW5nIHVudXNlZDsKICAgICBkaXNhYmxlKHVudXNlZCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpc2NhcmRBZ2VudCgpCi17Ci0gICAgbV9kb21B
Z2VudC0+c2V0RE9NTGlzdGVuZXIobnVsbHB0cik7Ci0gICAgbV9kb21BZ2VudCA9IG51bGxwdHI7
Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KCkKIHsKICAgICAvLyBGSVhNRTog
U2hvdWxkIHdlIGJlIHJlc2V0dGluZyBvbiBtYWluIGZyYW1lIG5hdmlnYXRpb25zPwpAQCAtMzM1
LDI1ICszMjAsMjcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQoKQogICAgIG1fbm9k
ZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5jbGVhcigpOwogICAgIG1fZG9jdW1lbnRUb0luc3BlY3Rv
clN0eWxlU2hlZXQuY2xlYXIoKTsKICAgICBtX2RvY3VtZW50VG9Lbm93bkNTU1N0eWxlU2hlZXRz
LmNsZWFyKCk7Ci0gICAgcmVzZXROb25QZXJzaXN0ZW50RGF0YSgpOwotfQotCi12b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpyZXNldE5vblBlcnNpc3RlbnREYXRhKCkKLXsKICAgICByZXNldFBzZXVk
b1N0YXRlcygpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjplbmFibGUoRXJyb3JTdHJp
bmcmKQogeworICAgIGlmIChtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQo
KSA9PSB0aGlzKQorICAgICAgICByZXR1cm47CisKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMu
c2V0SW5zcGVjdG9yQ1NTQWdlbnQodGhpcyk7CiAKLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDog
bV9kb21BZ2VudC0+ZG9jdW1lbnRzKCkpCi0gICAgICAgIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRl
ZCgqZG9jdW1lbnQpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKSB7CisgICAgICAgIGZvciAoYXV0byogZG9jdW1lbnQg
OiBkb21BZ2VudC0+ZG9jdW1lbnRzKCkpCisgICAgICAgICAgICBhY3RpdmVTdHlsZVNoZWV0c1Vw
ZGF0ZWQoKmRvY3VtZW50KTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
c2FibGUoRXJyb3JTdHJpbmcmKQogewogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNw
ZWN0b3JDU1NBZ2VudChudWxscHRyKTsKKworICAgIHJlc2V0KCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRvY3VtZW50RGV0YWNoZWQoRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtNDE1
LDcgKzQwMiwxMSBAQCBib29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQcwogICAgIGlmIChtX25vZGVJZFRv
Rm9yY2VkUHNldWRvU3RhdGUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBpbnQgbm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoJmVsZW1lbnQpOworICAgIGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7
CisgICAgaWYgKCFkb21BZ2VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaW50IG5v
ZGVJZCA9IGRvbUFnZW50LT5ib3VuZE5vZGVJZCgmZWxlbWVudCk7CiAgICAgaWYgKCFub2RlSWQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTc0LDggKzU2NSwxMCBAQCB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpnZXRBbGxTdHlsZVNoZWV0cyhFcnJvclN0cmluZyYsIFJlZlB0cjxKU09O
OjpBcnJheU9mPElucwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y29sbGVjdEFsbFN0eWxlU2hl
ZXRzKFZlY3RvcjxJbnNwZWN0b3JTdHlsZVNoZWV0Kj4mIHJlc3VsdCkKIHsKICAgICBWZWN0b3I8
Q1NTU3R5bGVTaGVldCo+IGNzc1N0eWxlU2hlZXRzOwotICAgIGZvciAoYXV0byogZG9jdW1lbnQg
OiBtX2RvbUFnZW50LT5kb2N1bWVudHMoKSkKLSAgICAgICAgY29sbGVjdEFsbERvY3VtZW50U3R5
bGVTaGVldHMoKmRvY3VtZW50LCBjc3NTdHlsZVNoZWV0cyk7CisgICAgaWYgKGF1dG8qIGRvbUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpIHsKKyAgICAg
ICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IGRvbUFnZW50LT5kb2N1bWVudHMoKSkKKyAgICAgICAg
ICAgIGNvbGxlY3RBbGxEb2N1bWVudFN0eWxlU2hlZXRzKCpkb2N1bWVudCwgY3NzU3R5bGVTaGVl
dHMpOworICAgIH0KIAogICAgIGZvciAoYXV0byogY3NzU3R5bGVTaGVldCA6IGNzc1N0eWxlU2hl
ZXRzKQogICAgICAgICByZXN1bHQuYXBwZW5kKGJpbmRTdHlsZVNoZWV0KGNzc1N0eWxlU2hlZXQp
KTsKQEAgLTYyNyw3ICs2MjAsMTMgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVT
aGVldFRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBpZiAo
IWluc3BlY3RvclN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmVzdWx0
ID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5
bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKKyAgICBhdXRv
KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOwor
ICAgIGlmICghZG9tQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00g
YWdlbnQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHJlc3VsdCA9IGRv
bUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNoZWV0
VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpOwogICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6
OnRvRXJyb3JTdHJpbmcocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiB9CkBAIC02NDEsNyAr
NjQwLDEzIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjCiAgICAgaWYgKCFpbnNwZWN0b3JTdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBtX2Rv
bUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVRleHRB
Y3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKTsKKyAgICBhdXRv
KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOwor
ICAgIGlmICghZG9tQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00g
YWdlbnQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHBlcmZvcm1SZXN1
bHQgPSBkb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5
bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CiAg
ICAgaWYgKHBlcmZvcm1SZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVh
c2VFeGNlcHRpb24oKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTY1OSw3ICs2NjQsMTMgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgSlNPTjo6T2IKICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gcGVyZm9ybVJlc3VsdCA9IG1fZG9tQWdlbnQtPmhpc3Rv
cnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5z
cGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKTsKKyAgICBhdXRvKiBkb21B
Z2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGlm
ICghZG9tQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00gYWdlbnQi
X3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBk
b21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0UnVsZVNlbGVj
dG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpOwog
ICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm47CkBAIC02NzAsNyArNjgxLDEzIEBAIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IEpTT046Ok9iCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNyZWF0ZVN0
eWxlU2hlZXQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IFN0cmluZyogc3R5bGVTaGVldElkKQogewotICAgIEZyYW1lKiBmcmFtZSA9IG1fZG9tQWdlbnQt
PnBhZ2VBZ2VudCgpLT5mcmFtZUZvcklkKGZyYW1lSWQpOworICAgIGF1dG8qIHBhZ2VBZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKTsKKyAgICBpZiAoIXBh
Z2VBZ2VudCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIFBhZ2UgYWdlbnQiX3M7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBGcmFtZSogZnJhbWUgPSBwYWdlQWdlbnQt
PmZyYW1lRm9ySWQoZnJhbWVJZCk7CiAgICAgaWYgKCFmcmFtZSkgewogICAgICAgICBlcnJvclN0
cmluZyA9ICJObyBmcmFtZSBmb3IgZ2l2ZW4gaWQgZm91bmQiX3M7CiAgICAgICAgIHJldHVybjsK
QEAgLTc0MCw5ICs3NTcsMTUgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGUKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAorICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaWYgKCFkb21BZ2VudCkgeworICAgICAgICBlcnJv
clN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNw
ZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CiAgICAgYXV0byYgcmF3QWN0aW9uID0gKmFjdGlv
bjsKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZv
cm0oV1RGTW92ZShhY3Rpb24pKTsKKyAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBkb21BZ2VudC0+
aGlzdG9yeSgpLT5wZXJmb3JtKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgaWYgKHBlcmZvcm1SZXN1
bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01B
Z2VudDo6dG9FcnJvclN0cmluZyhwZXJmb3JtUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTgxNiw3ICs4MzksMTMgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0U3VwcG9ydGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKEVycm9yU3RyaW5nJiwgUmVmUHRy
PEoKIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IEpTT046OkFycmF5JiBmb3JjZWRQc2V1
ZG9DbGFzc2VzKQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnRF
bGVtZW50KGVycm9yU3RyaW5nLCBub2RlSWQpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaWYgKCFkb21BZ2VudCkg
eworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb21BZ2VudC0+YXNzZXJ0
RWxlbWVudChlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKIApAQCAtODQyLDcgKzg3MSw3IEBAIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxp
bmVTdHlsZSYgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsCiB7
CiAgICAgcmV0dXJuIG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5lbnN1cmUoJmVsZW1lbnQs
IFt0aGlzLCAmZWxlbWVudF0gewogICAgICAgICBTdHJpbmcgbmV3U3R5bGVTaGVldElkID0gU3Ry
aW5nOjpudW1iZXIobV9sYXN0U3R5bGVTaGVldElkKyspOwotICAgICAgICBhdXRvIGluc3BlY3Rv
clN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmNyZWF0ZSht
X2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgbmV3U3R5bGVTaGVldElkLCBlbGVtZW50LCBJbnNwZWN0
b3I6OlByb3RvY29sOjpDU1M6OlN0eWxlU2hlZXRPcmlnaW46OlJlZ3VsYXIsIHRoaXMpOworICAg
ICAgICBhdXRvIGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50
KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKICAgICAgICAgbV9pZFRvSW5zcGVjdG9y
U3R5bGVTaGVldC5zZXQobmV3U3R5bGVTaGVldElkLCBpbnNwZWN0b3JTdHlsZVNoZWV0LmNvcHlS
ZWYoKSk7CiAgICAgICAgIHJldHVybiBpbnNwZWN0b3JTdHlsZVNoZWV0OwogICAgIH0pLml0ZXJh
dG9yLT52YWx1ZTsKQEAgLTg1MCw3ICs4NzksMTMgQEAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklu
bGluZVN0eWxlJiBJbnNwZWN0b3JDU1NBZ2VudDo6YXNJbnNwZWN0b3JTdHlsZVNoZWV0KFN0eWwK
IAogRWxlbWVudCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmVsZW1lbnRGb3JJZChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiB7Ci0gICAgTm9kZSogbm9kZSA9IG1fZG9tQWdlbnQt
Pm5vZGVGb3JJZChub2RlSWQpOworICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5n
QWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7CisgICAgaWYgKCFkb21BZ2VudCkgeworICAgICAg
ICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERPTSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgfQorCisgICAgTm9kZSogbm9kZSA9IGRvbUFnZW50LT5ub2RlRm9ySWQobm9k
ZUlkKTsKICAgICBpZiAoIW5vZGUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8gbm9kZSB3
aXRoIGdpdmVuIGlkIGZvdW5kIl9zOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTg3Nyw3
ICs5MTIsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NBZ2VudDo6YmluZFN0
eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldAogICAgIGlmICghaW5zcGVjdG9yU3R5
bGVTaGVldCkgewogICAgICAgICBTdHJpbmcgaWQgPSBTdHJpbmc6Om51bWJlcihtX2xhc3RTdHls
ZVNoZWV0SWQrKyk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0eWxlU2hlZXQtPm93
bmVyRG9jdW1lbnQoKTsKLSAgICAgICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IEluc3BlY3RvclN0
eWxlU2hlZXQ6OmNyZWF0ZShtX2RvbUFnZW50LT5wYWdlQWdlbnQoKSwgaWQsIHN0eWxlU2hlZXQs
IGRldGVjdE9yaWdpbihzdHlsZVNoZWV0LCBkb2N1bWVudCksIEluc3BlY3RvckRPTUFnZW50Ojpk
b2N1bWVudFVSTFN0cmluZyhkb2N1bWVudCksIHRoaXMpOworICAgICAgICBpbnNwZWN0b3JTdHls
ZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldDo6Y3JlYXRlKG1faW5zdHJ1bWVudGluZ0FnZW50
cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSwgaWQsIHN0eWxlU2hlZXQsIGRldGVjdE9yaWdpbihzdHls
ZVNoZWV0LCBkb2N1bWVudCksIEluc3BlY3RvckRPTUFnZW50Ojpkb2N1bWVudFVSTFN0cmluZyhk
b2N1bWVudCksIHRoaXMpOwogICAgICAgICBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0LnNldChp
ZCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAgICAgIG1fY3NzU3R5bGVTaGVldFRvSW5zcGVj
dG9yU3R5bGVTaGVldC5zZXQoc3R5bGVTaGVldCwgaW5zcGVjdG9yU3R5bGVTaGVldCk7CiAgICAg
ICAgIGlmIChtX2NyZWF0aW5nVmlhSW5zcGVjdG9yU3R5bGVTaGVldCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDM1
NDk0ZmU1YzkxYmQwZDAzZTQzZTUyNDc1YTVjMjAxYTkxMjMxZTMuLjFkZjc5NThhMTJjMzViY2U1
MTMxNWZkNjI5OWEwMTJhMDQ0OWE5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTI3LDcgKzI3LDYgQEAKIAogI2lu
Y2x1ZGUgIkNTU1NlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9saWN5Lmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTdHls
ZVNoZWV0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlDb250ZXh0LmgiCkBAIC01Niw3ICs1NSw2IEBAIGNsYXNzIFN0eWxlUnVsZTsKIAog
Y2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQgZmluYWwKICAgICA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UKLSAgICAsIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIKICAgICAs
IHB1YmxpYyBJbnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgICwgcHVi
bGljIEluc3BlY3RvclN0eWxlU2hlZXQ6Okxpc3RlbmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JDU1NBZ2VudCk7CkBAIC03OSwxNiArNzcsMTMgQEAgcHVibGljOgogICAg
ICAgICBDb250ZW50U2VjdXJpdHlQb2xpY3kqIG1fY29udGVudFNlY3VyaXR5UG9saWN5OwogICAg
IH07CiAKLSAgICBJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JE
T01BZ2VudCopOwotICAgIHZpcnR1YWwgfkluc3BlY3RvckNTU0FnZW50KCk7CisgICAgSW5zcGVj
dG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0Jik7CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQ1NT
QWdlbnQoKSA9IGRlZmF1bHQ7CiAKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxl
UnVsZShDU1NSdWxlJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJ
bnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciop
IG92ZXJyaWRlOwogICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpc2NhcmRBZ2VudCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldCgpOwog
CiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCkBAIC05Nyw2ICs5Miw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFjdGl2ZVN0eWxlU2hlZXRzVXBkYXRlZChEb2N1bWVudCYpOwogICAgIGJv
b2wgZm9yY2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50JiwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzVHlwZSk7CiAKKyAgICAvLyBDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICB2b2lk
IGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JT
dHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4+Jikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKSBvdmVycmlk
ZTsKICAgICB2b2lkIGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5v
ZGVJZCwgY29uc3QgYm9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVy
aXRlZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxl
TWF0Y2g+PiYgbWF0Y2hlZENTU1J1bGVzLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OlBzZXVkb0lkTWF0Y2hlcz4+JiwgUmVmUHRyPEpTT046OkFycmF5T2Y8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpJbmhlcml0ZWRTdHlsZUVudHJ5Pj4mIGluaGVyaXRl
ZEVudHJpZXMpIG92ZXJyaWRlOwpAQCAtMTEyLDYgKzExMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRTdXBwb3J0ZWRTeXN0ZW1Gb250RmFtaWx5TmFtZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiYgcmVzdWx0KSBvdmVycmlkZTsKICAgICB2b2lkIGZvcmNl
UHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBKU09OOjpBcnJheSYg
Zm9yY2VkUHNldWRvQ2xhc3Nlcykgb3ZlcnJpZGU7CiAKKyAgICAvLyBJbnNwZWN0b3JET01BZ2Vu
dCBob29rcworICAgIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlJiwgaW50IG5vZGVJZCk7Cisg
ICAgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQmKTsKKwogcHJpdmF0ZToKICAgICBjbGFz
cyBTdHlsZVNoZWV0QWN0aW9uOwogICAgIGNsYXNzIFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uOwpA
QCAtMTI0LDcgKzEyNiw2IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxE
b2N1bWVudD4sIFZlY3RvcjxSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVldD4+PiBEb2N1bWVudFRv
VmlhSW5zcGVjdG9yU3R5bGVTaGVldDsgLy8gInZpYSBpbnNwZWN0b3IiIHN0eWxlc2hlZXRzCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPGludCwgdW5zaWduZWQ+IE5vZGVJZFRvRm9yY2VkUHNldWRvU3Rh
dGU7CiAKLSAgICB2b2lkIHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKICAgICBJbnNwZWN0b3JT
dHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUmIGFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsZWRFbGVt
ZW50Jik7CiAgICAgRWxlbWVudCogZWxlbWVudEZvcklkKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJ
ZCk7CiAKQEAgLTE0NCwxMCArMTQ1LDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SlNPTjo6QXJy
YXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OlJ1bGVNYXRjaD4+IGJ1aWxkQXJyYXlGb3JN
YXRjaGVkUnVsZUxpc3QoY29uc3QgVmVjdG9yPFJlZlB0cjxTdHlsZVJ1bGU+PiYsIFN0eWxlUmVz
b2x2ZXImLCBFbGVtZW50JiwgUHNldWRvSWQpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiBidWlsZE9iamVjdEZvckF0dHJpYnV0ZXNTdHlsZShTdHlsZWRF
bGVtZW50Jik7CiAKLSAgICAvLyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgaW1wbGVt
ZW50YXRpb24KLSAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYsIGludCBub2RlSWQpIG92
ZXJyaWRlOwotICAgIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Jikgb3ZlcnJpZGU7Ci0K
ICAgICAvLyBJbnNwZWN0b3JDU1NBZ2VudDo6TGlzdGVuZXIgaW1wbGVtZW50YXRpb24KICAgICB2
b2lkIHN0eWxlU2hlZXRDaGFuZ2VkKEluc3BlY3RvclN0eWxlU2hlZXQqKSBvdmVycmlkZTsKIApA
QCAtMTU1LDcgKzE1Miw2IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVj
dG9yOjpDU1NGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OkNTU0JhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwotICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50IHsgbnVsbHB0ciB9OwogCiAgICAg
SWRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKICAgICBD
U1NTdHlsZVNoZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0IG1fY3NzU3R5bGVTaGVldFRvSW5zcGVj
dG9yU3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggNWViZDQxNjBmOWQxZmE4ZTQ3OWUzNjgzZGNj
OTdmYjQzZTdiNzQwNS4uMWQ5MDcxYmFmZDk2MTU2OWE2NTkyZjFmMzI4NjBmOGJkOTQyZmYyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKQEAgLTY5LDYgKzY5LDcgQEAKICNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RS
ZXN1bHQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDU1NBZ2VudC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JIaXN0b3J5LmgiCkBAIC0zNTQsMTEgKzM1NSw2IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnJlc2V0KCkKICAgICBtX2RvY3VtZW50ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6c2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqIGxpc3RlbmVyKQot
ewotICAgIG1fZG9tTGlzdGVuZXIgPSBsaXN0ZW5lcjsKLX0KLQogdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmIChkb2N1bWVu
dCA9PSBtX2RvY3VtZW50LmdldCgpKQpAQCAtNDE4LDggKzQxNCw5IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiAgICAg
fQogCiAgICAgbm9kZXNNYXAtPnJlbW92ZShub2RlKTsKLSAgICBpZiAobV9kb21MaXN0ZW5lcikK
LSAgICAgICAgbV9kb21MaXN0ZW5lci0+ZGlkUmVtb3ZlRE9NTm9kZSgqbm9kZSwgaWQpOworCisg
ICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNT
U0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRSZW1vdmVET01Ob2RlKCpub2RlLCBpZCk7
CiAKICAgICBpZiAobV9jaGlsZHJlblJlcXVlc3RlZC5yZW1vdmUoaWQpKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBXb3VsZCBiZSBiZXR0ZXIgdG8gZG8gdGhpcyBpdGVyYXRpdmVseSByYXRoZXIgdGhh
biByZWN1cnNpdmVseS4KQEAgLTIyNDEsMTIgKzIyMzgsMTEgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIG4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IGlkID0gYm91bmROb2RlSWQoJmVsZW1l
bnQpOwotICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBldmVu
dC4KICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kb21MaXN0ZW5l
cikKLSAgICAgICAgbV9kb21MaXN0ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsKKyAg
ICBpZiAoYXV0byogY3NzQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NT
QWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCk7CiAK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YXR0cmlidXRlTW9kaWZpZWQoaWQsIG5hbWUsIHZh
bHVlKTsKIH0KQEAgLTIyNTQsMTIgKzIyNTAsMTEgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG4K
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGludCBpZCA9IGJvdW5kTm9kZUlk
KCZlbGVtZW50KTsKLSAgICAvLyBJZiBub2RlIGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9yZSB0
aGUgZXZlbnQuCiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZG9t
TGlzdGVuZXIpCi0gICAgICAgIG1fZG9tTGlzdGVuZXItPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVu
dCk7CisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRNb2RpZnlET01BdHRyKGVsZW1l
bnQpOwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmF0dHJpYnV0ZVJlbW92ZWQoaWQsIG5h
bWUpOwogfQpAQCAtMjI2OSwxMiArMjI2NCwxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpz
dHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1lbgog
ICAgIGF1dG8gbm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAgZm9y
IChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKICAgICAgICAgaW50IGlkID0gYm91bmROb2Rl
SWQoZWxlbWVudCk7Ci0gICAgICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdu
b3JlIHRoZSBldmVudC4KICAgICAgICAgaWYgKCFpZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIGlmIChtX2RvbUxpc3RlbmVyKQotICAgICAgICAgICAgbV9kb21MaXN0ZW5lci0+
ZGlkTW9kaWZ5RE9NQXR0cigqZWxlbWVudCk7CisgICAgICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9
IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICAgICAg
Y3NzQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoKmVsZW1lbnQpOworCiAgICAgICAgIG5vZGVJZHMt
PmFkZEl0ZW0oaWQpOwogICAgIH0KICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+aW5saW5lU3R5
bGVJbnZhbGlkYXRlZChXVEZNb3ZlKG5vZGVJZHMpKTsKQEAgLTIyOTQsNyArMjI4OSw2IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZChDaGFyYWN0ZXJEYXRh
JiBjaGFyYWN0ZXJEYXRhKQogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0
eWxlQXR0cihOb2RlJiBub2RlKQogewogICAgIGludCBpZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1h
cC5nZXQoJm5vZGUpOwotICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3Jl
IHRoZSBldmVudC4KICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBj
YzdlMjI2ZjgyY2MyMTM2YTAxOTMxYTAxMmM1YTA4ODE2NmEyNzVmLi4yMGYxODFlNjhmZDUwZmI3
NGQ0MmFhODcyMGRmOTQ3NmUzOWVjNzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC01MSw3ICs1MSw3IEBAIGNsYXNz
IEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogY2xhc3MgQWNjZXNz
aWJpbGl0eU9iamVjdDsKIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7CkBA
IC05NCwxMiArOTQsNiBAQCBjbGFzcyBJbnNwZWN0b3JET01BZ2VudCBmaW5hbCA6IHB1YmxpYyBJ
bnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkRPTQogICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEluc3BlY3RvckRPTUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgRE9NTGlzdGVuZXIgewotICAgICAgICB2aXJ0dWFsIH5E
T01MaXN0ZW5lcigpID0gZGVmYXVsdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURP
TU5vZGUoTm9kZSYsIGludCBub2RlSWQpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZE1v
ZGlmeURPTUF0dHIoRWxlbWVudCYpID0gMDsKLSAgICB9OwotCiAgICAgSW5zcGVjdG9yRE9NQWdl
bnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yT3Zlcmxh
eSopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTUFnZW50KCk7CiAKQEAgLTE5MSw3ICsxODUs
NiBAQCBwdWJsaWM6CiAgICAgaW50IHB1c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyYsIGlu
dCBkb2N1bWVudE5vZGVJZCwgTm9kZSopOwogICAgIE5vZGUqIG5vZGVGb3JJZChpbnQgbm9kZUlk
KTsKICAgICBpbnQgYm91bmROb2RlSWQoY29uc3QgTm9kZSopOwotICAgIHZvaWQgc2V0RE9NTGlz
dGVuZXIoRE9NTGlzdGVuZXIqKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgZG9jdW1lbnRVUkxTdHJp
bmcoRG9jdW1lbnQqKTsKIApAQCAtMjE4LDkgKzIxMSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Tm9kZSogc2NyaXB0VmFsdWVBc05vZGUoSlNDOjpKU1ZhbHVlKTsKICAgICBzdGF0aWMgSlNDOjpK
U1ZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0YXRlJiwgTm9kZSopOwogCi0gICAg
Ly8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMuCi0gICAgSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2VudDsgfQotCiAgICAgYm9vbCBoYXNC
cmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKICAgICBpbnQgaWRG
b3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogCkBAIC0yNjMsOSArMjUzLDcgQEAg
cHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3Bh
dGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OkRPTUJh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3RvclBhZ2VB
Z2VudCogbV9wYWdlQWdlbnQgeyBudWxscHRyIH07Ci0KICAgICBJbnNwZWN0b3JPdmVybGF5KiBt
X292ZXJsYXkgeyBudWxscHRyIH07Ci0gICAgRE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVuZXIgeyBu
dWxscHRyIH07CiAgICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVudE5vZGVUb0lkTWFwOwogICAgIC8v
IE93bnMgbm9kZSBtYXBwaW5ncyBmb3IgZGFuZ2xpbmcgbm9kZXMuCiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxOb2RlVG9JZE1hcD4+IG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhYzkxNWRjNmYwODVkODViOWYzY2ExNmZiZjY1ZTFiODg3
N2M1MDhjLi5lNDY3Njc5MGZiOWNhNDQ0YjMyMzA0ZDA4MzI1ODA3MWI1OTE1NGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY1LDExICs2NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLUluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0
LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRl
YnVnZ2VyQWdlbnQpCitJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NRGVidWdnZXIi
X3MsIGNvbnRleHQpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NRGVi
dWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNj
cmlwdE1hbmFnZXIpCi0gICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogICAgICwgbV9kZWJ1Z2dl
ckFnZW50KGRlYnVnZ2VyQWdlbnQpCiB7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5hZGRMaXN0ZW5l
cigqdGhpcyk7CkBAIC0yMzMsNyArMjMyLDEzIEBAIHN0YXRpYyBTdHJpbmcgZG9tVHlwZU5hbWUo
aW50IHR5cGUpCiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtw
b2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
dHlwZVN0cmluZykKIHsKLSAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+YXNzZXJ0Tm9kZShl
cnJvclN0cmluZywgbm9kZUlkKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGlmICghZG9tQWdlbnQpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00gYWdlbnQiX3M7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBOb2RlKiBub2RlID0gZG9tQWdlbnQtPmFzc2VydE5vZGUoZXJyb3JTdHJp
bmcsIG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTI1MSw5
ICsyNTYsMTYgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3Bv
aW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG4KIAogdm9pZCBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewotICAgIE5vZGUqIG5v
ZGUgPSBtX2RvbUFnZW50LT5hc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOworICAgIGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7
CisgICAgaWYgKCFkb21BZ2VudCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERP
TSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5vZGUqIG5vZGUgPSBk
b21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUp
CiAgICAgICAgIHJldHVybjsKKwogICAgIGludCB0eXBlID0gZG9tVHlwZUZvck5hbWUoZXJyb3JT
dHJpbmcsIHR5cGVTdHJpbmcpOwogICAgIGlmICh0eXBlID09IC0xKQogICAgICAgICByZXR1cm47
CkBAIC0zMTYsMTIgKzMyOCwxNiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRl
c2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSYgdGFyZ2V0LCBpbnQgYnJlYWtwbwogewogICAgIEFT
U0VSVChoYXNCcmVha3BvaW50KCZ0YXJnZXQsIGJyZWFrcG9pbnRUeXBlKSk7CiAKKyAgICBhdXRv
KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOwor
CiAgICAgTm9kZSogYnJlYWtwb2ludE93bmVyID0gJnRhcmdldDsKICAgICBpZiAoKDEgPDwgYnJl
YWtwb2ludFR5cGUpICYgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrKSB7Ci0gICAg
ICAgIC8vIEZvciBpbmhlcml0YWJsZSBicmVha3BvaW50IHR5cGVzLCB0YXJnZXQgbm9kZSBpc24n
dCBhbHdheXMgdGhlIHNhbWUgYXMgdGhlIG5vZGUgdGhhdCBvd25zIGEgYnJlYWtwb2ludC4KLSAg
ICAgICAgLy8gVGFyZ2V0IG5vZGUgbWF5IGJlIHVua25vd24gdG8gZnJvbnRlbmQsIHNvIHdlIG5l
ZWQgdG8gcHVzaCBpdCBmaXJzdC4KLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IG1fZG9tQWdlbnQtPnJl
c29sdmVOb2RlKCZ0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVj
dEdyb3VwKTsKLSAgICAgICAgZGVzY3JpcHRpb24uc2V0VmFsdWUoInRhcmdldE5vZGUiLCB0YXJn
ZXROb2RlT2JqZWN0KTsKKyAgICAgICAgaWYgKGRvbUFnZW50KSB7CisgICAgICAgICAgICAvLyBG
b3IgaW5oZXJpdGFibGUgYnJlYWtwb2ludCB0eXBlcywgdGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlz
IHRoZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQgb3ducyBhIGJyZWFrcG9pbnQuCisgICAgICAgICAg
ICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0
byBwdXNoIGl0IGZpcnN0LgorICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IGRvbUFnZW50LT5yZXNv
bHZlTm9kZSgmdGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RH
cm91cCk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbi5zZXRWYWx1ZSgidGFyZ2V0Tm9kZSIsIHRh
cmdldE5vZGVPYmplY3QpOworICAgICAgICB9CiAKICAgICAgICAgLy8gRmluZCBicmVha3BvaW50
IG93bmVyIG5vZGUuCiAgICAgICAgIGlmICghaW5zZXJ0aW9uKQpAQCAtMzM4LDkgKzM1NCwxMiBA
QCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
Tm9kZSYgdGFyZ2V0LCBpbnQgYnJlYWtwbwogICAgICAgICAgICAgZGVzY3JpcHRpb24uc2V0Qm9v
bGVhbigiaW5zZXJ0aW9uIiwgaW5zZXJ0aW9uKTsKICAgICB9CiAKLSAgICBpbnQgYnJlYWtwb2lu
dE93bmVyTm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoYnJlYWtwb2ludE93bmVyKTsK
LSAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLSAgICBkZXNjcmlwdGlvbi5zZXRJ
bnRlZ2VyKCJub2RlSWQiLCBicmVha3BvaW50T3duZXJOb2RlSWQpOworICAgIGlmIChkb21BZ2Vu
dCkgeworICAgICAgICBpbnQgYnJlYWtwb2ludE93bmVyTm9kZUlkID0gZG9tQWdlbnQtPmJvdW5k
Tm9kZUlkKGJyZWFrcG9pbnRPd25lcik7CisgICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXJO
b2RlSWQpOworICAgICAgICBkZXNjcmlwdGlvbi5zZXRJbnRlZ2VyKCJub2RlSWQiLCBicmVha3Bv
aW50T3duZXJOb2RlSWQpOworICAgIH0KKwogICAgIGRlc2NyaXB0aW9uLnNldFN0cmluZygidHlw
ZSIsIGRvbVR5cGVOYW1lKGJyZWFrcG9pbnRUeXBlKSk7CiB9CiAKQEAgLTM4MywxOCArNDAyLDIw
IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KEV2ZW50
JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2CiAgICAgICAgIGluamVjdGVkU2NyaXB0LnNldEV2
ZW50VmFsdWUodG9KUyhzdGF0ZSwgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShz
dGF0ZSksIGV2ZW50KSk7CiAgICAgfQogCisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKwogICAgIGJvb2wgc2hvdWxkUGF1c2Ug
PSBtX2RlYnVnZ2VyQWdlbnQtPnBhdXNlT25OZXh0U3RhdGVtZW50RW5hYmxlZCgpIHx8IG1fZXZl
bnRCcmVha3BvaW50cy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihJbnNwZWN0b3I6OlByb3RvY29s
OjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6TGlzdGVuZXIsIGV2ZW50LnR5cGUo
KSkpOwogCi0gICAgaWYgKCFzaG91bGRQYXVzZSAmJiBtX2RvbUFnZW50KQotICAgICAgICBzaG91
bGRQYXVzZSA9IG1fZG9tQWdlbnQtPmhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKCpldmVu
dC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
Y2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSgpKTsKKyAgICBp
ZiAoIXNob3VsZFBhdXNlICYmIGRvbUFnZW50KQorICAgICAgICBzaG91bGRQYXVzZSA9IGRvbUFn
ZW50LT5oYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcigqZXZlbnQuY3VycmVudFRhcmdldCgp
LCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7CiAKICAgICBpZiAoIXNob3VsZFBhdXNl
KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBldmVudERhdGEgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJldmVudE5h
bWUiX3MsIGV2ZW50LnR5cGUoKSk7Ci0gICAgaWYgKG1fZG9tQWdlbnQpIHsKLSAgICAgICAgaW50
IGV2ZW50TGlzdGVuZXJJZCA9IG1fZG9tQWdlbnQtPmlkRm9yRXZlbnRMaXN0ZW5lcigqZXZlbnQu
Y3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNh
bGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7CisgICAgaWYg
KGRvbUFnZW50KSB7CisgICAgICAgIGludCBldmVudExpc3RlbmVySWQgPSBkb21BZ2VudC0+aWRG
b3JFdmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
dXNlQ2FwdHVyZSgpKTsKICAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJJZCkKICAgICAgICAgICAg
IGV2ZW50RGF0YS0+c2V0SW50ZWdlcigiZXZlbnRMaXN0ZW5lcklkIl9zLCBldmVudExpc3RlbmVy
SWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggZjI2NjQ3NTY1ZTBmMzAyNjg1
NmI1ZWNkYWE1YmU5MmFhZGRkNDViNC4uYTM2NTkzOWM1NmFkYjA3MmNlMGE4MmFhNTA5MzY1OGI1
YzUyNmMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRnJhbWU7
Ci1jbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lcjsKIApAQCAtNTcsNyArNTYsNyBAQCBjbGFzcyBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3Bl
YwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCop
OwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKTsKIAogICAgIC8vIERP
TURlYnVnZ2VyIEFQSQpAQCAtMTA0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsKLSAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudCB7IG51bGxwdHIg
fTsKKwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFn
ZW50IHsgbnVsbHB0ciB9OwogCiAgICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJl
YWtwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5kZXggNmViMjZlMGY1ODJmZWYwMjdiN2RlOGI5
NTEyMGMxNGI3MTdiODA0MS4uZjcxN2VhNzU4YjlhY2EwOWJlYWVkYzliMWUxZjIxZGQ1ZTMwMWVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VD
b25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtMzQsMjMgKzM0LDI0IEBACiAKICNpbmNsdWRlICJD
b21tYW5kTGluZUFQSUhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1QYWdlQ29uc29sZUFnZW50OjpQYWdlQ29u
c29sZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50KQorUGFnZUNvbnNvbGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBXZWJDb25zb2xlQWdlbnQoY29udGV4dCkKLSAgICAsIG1faW5z
cGVjdG9yRE9NQWdlbnQoZG9tQWdlbnQpCisgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29u
dGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogewogfQogCiB2b2lkIFBhZ2VDb25zb2xlQWdlbnQ6
OmNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIG1faW5zcGVj
dG9yRE9NQWdlbnQtPnJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CisgICAgaWYgKGF1dG8qIGRvbUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAg
IGRvbUFnZW50LT5yZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogCiAgICAgV2ViQ29uc29sZUFnZW50
OjpjbGVhck1lc3NhZ2VzKGVycm9yU3RyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oCmluZGV4IDcxY2I4
OTA0ODc4N2RkMWE4ZGM3NzA4OTYwNDg4ZmU3MDFjM2VmYTcuLmFkYTI0ZmU4YmNkMjAwOGE3ZDRh
MTRmZjNkZGM2NmNlZmRkY2Q4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuaApAQCAtMzYsMTkgKzM2LDE3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7Ci0KIGNs
YXNzIFBhZ2VDb25zb2xlQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29uc29sZUFnZW50IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ29uc29sZUFnZW50KTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlQ29uc29sZUFnZW50KFdlYkFnZW50Q29u
dGV4dCYsIEluc3BlY3RvckRPTUFnZW50Kik7CisgICAgUGFnZUNvbnNvbGVBZ2VudChXZWJBZ2Vu
dENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5QYWdlQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0Owog
CiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwogCi0gICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1faW5zcGVjdG9yRE9NQWdlbnQ7CisgICAgSW5z
dHJ1bWVudGluZ0FnZW50cyYgbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365428</attachid>
            <date>2019-03-20 16:20:15 -0700</date>
            <delta_ts>2019-03-20 20:10:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195589-20190320162014.patch</filename>
            <type>text/plain</type>
            <size>41795</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3YTNjYjU3MTNiMGU4ZmYxNjhhZDNmNTM4MjQ2ZWFhMTNhODc0N2E0Li41
N2Q0NGRjYTEwZWUzYjY2Mjc3NDgyOGIwZDE0YjZmYTUzODJkYzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNzEgQEAKKzIwMTktMDMtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IERPTTogbGF6aWx5IGNyZWF0ZSB0aGUgYWdlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTU4OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg3OTE3NDI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
VGltb3RoeSBIYXRjaGVyLgorCisgICAgICAgIE5vIGNoYW5nZSBpbiBmdW5jdGlvbmFsaXR5Lgor
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwYWdlQWdlbnQpOiBEZWxldGVkLgor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnVuYmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0U2VhcmNoaW5nRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpidWlsZE9iamVjdEZvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUxpc3RlbmVyKTogRGVsZXRlZC4KKworICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmZvcmNlUHNldWRvU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmNvbGxlY3RBbGxTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6c2V0U3R5bGVTaGVldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OnNldFN0eWxlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpjcmVhdGVTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjphZGRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojphc0luc3Bl
Y3RvclN0eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmVs
ZW1lbnRGb3JJZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YmluZFN0
eWxlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6On5JbnNwZWN0
b3JDU1NBZ2VudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlzY2FyZEFnZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpyZXNldE5vblBlcnNpc3RlbnREYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3BvaW50
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURP
TUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQpOgorCisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ29u
c29sZUFnZW50OjpQYWdlQ29uc29sZUFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25z
b2xlQWdlbnQ6OmNsZWFyTWVzc2FnZXMpOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250
cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxh
enlBZ2VudHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpoaWRlSGlnaGxpZ2h0
KToKKwogMjAxOS0wMy0yMCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGF2ZSBzbWFsbGVyIGRlZmF1bHQgcXVvdGFzIGZvciB0aGlyZCBwYXJ0eSBmcmFtZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApp
bmRleCA4MzFlNzczOWM0NTAyZTA2MzY2MzVhMDdiYmYwMGRiNmVkNGI0ZjdkLi5iOWFhNjZjODc2
YjNjN2NlOTY0MjFmNmMzMGI3MTQyNTUwNTY4OTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xMTEsMTUgKzExMSwxMCBAQCBJ
bnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UmIHBhZ2UsIEluc3Bl
Y3RvckNsaWVudCogaW5zcGVjdG9yQwogICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGluc3Bl
Y3RvckFnZW50UHRyKSk7CiAKICAgICBhdXRvIHBhZ2VBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yUGFnZUFnZW50PihwYWdlQ29udGV4dCwgaW5zcGVjdG9yQ2xpZW50LCBtX292
ZXJsYXkuZ2V0KCkpOwotICAgIEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gcGFnZUFn
ZW50UHRyLmdldCgpOwogICAgIG1fcGFnZUFnZW50ID0gcGFnZUFnZW50UHRyLmdldCgpOwogICAg
IG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKHBhZ2VBZ2VudFB0cikpOwogCi0gICAgYXV0byBkb21B
Z2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NQWdlbnQ+KHBhZ2VDb250ZXh0
LCBwYWdlQWdlbnQsIG1fb3ZlcmxheS5nZXQoKSk7Ci0gICAgbV9kb21BZ2VudCA9IGRvbUFnZW50
UHRyLmdldCgpOwotICAgIG1fYWdlbnRzLmFwcGVuZChXVEZNb3ZlKGRvbUFnZW50UHRyKSk7Ci0K
LSAgICBhdXRvIGNvbnNvbGVBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnNvbGVBZ2Vu
dD4ocGFnZUNvbnRleHQsIG1fZG9tQWdlbnQpOworICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3Rk
OjptYWtlX3VuaXF1ZTxQYWdlQ29uc29sZUFnZW50PihwYWdlQ29udGV4dCk7CiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLT5zZXRXZWJDb25zb2xlQWdlbnQoY29uc29sZUFnZW50LmdldCgpKTsK
ICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZShjb25zb2xlQWdlbnQpKTsKIApAQCAtMTcyLDgg
KzE2Nyw5IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6eUFnZW50cygpCiAg
ICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUoZGVidWdnZXJBZ2VudCkpOwogCiAgICAgbV9hZ2Vu
dHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8UGFnZU5ldHdvcmtBZ2VudD4ocGFnZUNvbnRleHQs
IG1fcGFnZUFnZW50KSk7Ci0gICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9yQ1NTQWdlbnQ+KHBhZ2VDb250ZXh0LCBtX2RvbUFnZW50KSk7Ci0gICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudD4ocGFnZUNv
bnRleHQsIG1fZG9tQWdlbnQsIGRlYnVnZ2VyQWdlbnRQdHIpKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JDU1NBZ2VudD4ocGFnZUNvbnRleHQpKTsKKyAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01BZ2VudD4ocGFn
ZUNvbnRleHQsIG1fb3ZlcmxheS5nZXQoKSkpOworICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ+KHBhZ2VDb250ZXh0LCBkZWJ1Z2dl
ckFnZW50UHRyKSk7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yQXBwbGljYXRpb25DYWNoZUFnZW50PihwYWdlQ29udGV4dCwgbV9wYWdlQWdlbnQpKTsKICAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JMYXllclRyZWVBZ2Vu
dD4ocGFnZUNvbnRleHQpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JXb3JrZXJBZ2VudD4ocGFnZUNvbnRleHQpKTsKQEAgLTM4NSw3ICszODEsOCBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3QoTm9kZSogbm9kZSkKICAgICBpZiAoIWhh
c1JlbW90ZUZyb250ZW5kKCkpCiAgICAgICAgIHNob3coKTsKIAotICAgIG1fZG9tQWdlbnQtPmlu
c3BlY3Qobm9kZSk7CisgICAgaWYgKGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICBkb21BZ2VudC0+aW5zcGVjdChub2Rl
KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVkKCkgY29uc3QKQEAgLTQw
NSw4ICs0MDIsMTAgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNwYXRjaE1lc3NhZ2VG
cm9tRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIEluc3BlY3RvckNvbnRy
b2xsZXI6OmhpZGVIaWdobGlnaHQoKQogewotICAgIEVycm9yU3RyaW5nIHVudXNlZDsKLSAgICBt
X2RvbUFnZW50LT5oaWRlSGlnaGxpZ2h0KHVudXNlZCk7CisgICAgaWYgKGF1dG8qIGRvbUFnZW50
ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgpKSB7CisgICAgICAg
IEVycm9yU3RyaW5nIHVudXNlZDsKKyAgICAgICAgZG9tQWdlbnQtPmhpZGVIaWdobGlnaHQodW51
c2VkKTsKKyAgICB9CiB9CiAKIE5vZGUqIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZ2hsaWdodGVk
Tm9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuaAppbmRleCAxYTVmMjcwNWE1ZTAyYWIzYmVlODQ0OTUyOTU3N2E5ZjVmMGUzZTk5Li5i
NzdhNGQwNzQ4NTJhMGMzODg0N2I3MWIzYWExM2RjZWJkMjJmZmU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTUyLDcgKzUyLDYgQEAg
Y2xhc3MgRE9NV3JhcHBlcldvcmxkOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CiBjbGFzcyBJbnNwZWN0b3JDbGllbnQ7Ci1jbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNs
YXNzIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwpAQCAtMTM3LDcgKzEzNiw2IEBAIHByaXZh
dGU6CiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQqIG1faW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQgeyBudWxscHRyIH07CiAKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50KiBtX2luc3Bl
Y3RvckFnZW50IHsgbnVsbHB0ciB9OwotICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50
IHsgbnVsbHB0ciB9OwogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQgeyBudWxs
cHRyIH07CiAKICAgICBib29sIG1faXNVbmRlclRlc3QgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGU5YzBhMTQ4
ZTYzOTg3OWE1YjY2MDM4YjJhMjBmMTU2M2Y5NjI1NGEuLmNhMzBlMWEyN2JmNDA2MTg1YTQ4MzIw
YTI2MzE4M2VhN2U2ZTQ3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckNTU0FnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNs
dWRlICJOb2RlLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDZkNDg1MDkyM2U5ZTdiNDA1NDg1MTI4NzlmNjVi
YWI0NGNlZDM4YjQuLjI3OTIwZGZlMDU0Mzg4MzdkZTQ1NTI3Njg4ZDBjZjljOTc3MWJkMTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJIVE1MSGVhZEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5j
bHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JIaXN0b3J5Lmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgpAQCAtMjk0LDE5ICsyOTUsMTEgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JD
U1NBZ2VudDo6YXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSYgcnVsZSkKICAgICByZXR1cm4gZG93bmNh
c3Q8Q1NTU3R5bGVSdWxlPigmcnVsZSk7CiB9CiAKLUluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0
b3JDU1NBZ2VudChXZWJBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3RvckRPTUFnZW50KiBk
b21BZ2VudCkKK0luc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NBZ2VudChXZWJBZ2VudENv
bnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkNTUyJfcywgY29udGV4
dCkKICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlxdWU8Q1NTRnJvbnRl
bmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKICAgICAsIG1fYmFja2VuZERp
c3BhdGNoZXIoQ1NTQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0LmJhY2tlbmREaXNw
YXRjaGVyLCB0aGlzKSkKLSAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCiB7Ci0gICAgbV9kb21B
Z2VudC0+c2V0RE9NTGlzdGVuZXIodGhpcyk7Ci19Ci0KLUluc3BlY3RvckNTU0FnZW50Ojp+SW5z
cGVjdG9yQ1NTQWdlbnQoKQotewotICAgIEFTU0VSVCghbV9kb21BZ2VudCk7Ci0gICAgcmVzZXQo
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRj
aGVyKikKQEAgLTMxNSwxOCArMzA4LDEwIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwKIAogdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpEaXNjb25uZWN0UmVhc29uKQogewotICAgIHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsK
LQogICAgIFN0cmluZyB1bnVzZWQ7CiAgICAgZGlzYWJsZSh1bnVzZWQpOwogfQogCi12b2lkIElu
c3BlY3RvckNTU0FnZW50OjpkaXNjYXJkQWdlbnQoKQotewotICAgIG1fZG9tQWdlbnQtPnNldERP
TUxpc3RlbmVyKG51bGxwdHIpOwotICAgIG1fZG9tQWdlbnQgPSBudWxscHRyOwotfQotCiB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBi
ZSByZXNldHRpbmcgb24gbWFpbiBmcmFtZSBuYXZpZ2F0aW9ucz8KQEAgLTMzNSwyNSArMzIwLDI3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KCkKICAgICBtX25vZGVUb0luc3BlY3Rv
clN0eWxlU2hlZXQuY2xlYXIoKTsKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNsZWFyKCk7CiAgICAgbV9kb2N1bWVudFRvS25vd25DU1NTdHlsZVNoZWV0cy5jbGVhcigpOwot
ICAgIHJlc2V0Tm9uUGVyc2lzdGVudERhdGEoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6cmVzZXROb25QZXJzaXN0ZW50RGF0YSgpCi17CiAgICAgcmVzZXRQc2V1ZG9TdGF0ZXMoKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5nJikKIHsKKyAg
ICBpZiAobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkgPT0gdGhpcykK
KyAgICAgICAgcmV0dXJuOworCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEluc3BlY3Rv
ckNTU0FnZW50KHRoaXMpOwogCi0gICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IG1fZG9tQWdlbnQt
PmRvY3VtZW50cygpKQotICAgICAgICBhY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQoKmRvY3VtZW50
KTsKKyAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yRE9NQWdlbnQoKSkgeworICAgICAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogZG9tQWdlbnQt
PmRvY3VtZW50cygpKQorICAgICAgICAgICAgYWN0aXZlU3R5bGVTaGVldHNVcGRhdGVkKCpkb2N1
bWVudCk7CisgICAgfQogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaXNhYmxlKEVycm9y
U3RyaW5nJikKIHsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5zcGVjdG9yQ1NTQWdl
bnQobnVsbHB0cik7CisKKyAgICByZXNldCgpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50
Ojpkb2N1bWVudERldGFjaGVkKERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTQxNSw3ICs0MDIsMTEg
QEAgYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShjb25zdCBFbGVtZW50
JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHMKICAgICBpZiAobV9ub2RlSWRUb0ZvcmNlZFBzZXVk
b1N0YXRlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaW50IG5vZGVJ
ZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKCZlbGVtZW50KTsKKyAgICBhdXRvKiBkb21BZ2Vu
dCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGlmICgh
ZG9tQWdlbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGludCBub2RlSWQgPSBkb21B
Z2VudC0+Ym91bmROb2RlSWQoJmVsZW1lbnQpOwogICAgIGlmICghbm9kZUlkKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTU3NCw4ICs1NjUsMTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0QWxsU3R5bGVTaGVldHMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJ
bnMKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RBbGxTdHlsZVNoZWV0cyhWZWN0b3I8
SW5zcGVjdG9yU3R5bGVTaGVldCo+JiByZXN1bHQpCiB7CiAgICAgVmVjdG9yPENTU1N0eWxlU2hl
ZXQqPiBjc3NTdHlsZVNoZWV0czsKLSAgICBmb3IgKGF1dG8qIGRvY3VtZW50IDogbV9kb21BZ2Vu
dC0+ZG9jdW1lbnRzKCkpCi0gICAgICAgIGNvbGxlY3RBbGxEb2N1bWVudFN0eWxlU2hlZXRzKCpk
b2N1bWVudCwgY3NzU3R5bGVTaGVldHMpOworICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKSB7CisgICAgICAgIGZvciAoYXV0
byogZG9jdW1lbnQgOiBkb21BZ2VudC0+ZG9jdW1lbnRzKCkpCisgICAgICAgICAgICBjb2xsZWN0
QWxsRG9jdW1lbnRTdHlsZVNoZWV0cygqZG9jdW1lbnQsIGNzc1N0eWxlU2hlZXRzKTsKKyAgICB9
CiAKICAgICBmb3IgKGF1dG8qIGNzc1N0eWxlU2hlZXQgOiBjc3NTdHlsZVNoZWV0cykKICAgICAg
ICAgcmVzdWx0LmFwcGVuZChiaW5kU3R5bGVTaGVldChjc3NTdHlsZVNoZWV0KSk7CkBAIC02Mjcs
NyArNjIwLDEzIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgaWYgKCFpbnNwZWN0b3JT
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHJlc3VsdCA9IG1fZG9tQWdl
bnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0
QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSk7CisgICAgYXV0byogZG9tQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBpZiAoIWRv
bUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byByZXN1bHQgPSBkb21BZ2VudC0+aGlz
dG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVTaGVldFRleHRBY3Rpb24+
KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3Ry
aW5nKHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogfQpAQCAtNjQxLDcgKzY0MCwxMyBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBKU09OOjpPYmplYwogICAgIGlmICghaW5zcGVjdG9yU3R5bGVTaGVldCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gbV9kb21BZ2VudC0+aGlz
dG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNw
ZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSk7CisgICAgYXV0byogZG9tQWdlbnQg
PSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBpZiAoIWRv
bUFnZW50KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdl
bnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlv
bj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpOwogICAgIGlmIChwZXJm
b3JtUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVj
dG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9u
KCkpOwogICAgICAgICByZXR1cm47CkBAIC02NTksNyArNjY0LDEzIEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEpTT046Ok9iCiAgICAgaWYgKCFpbnNwZWN0b3JTdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIHBlcmZvcm1SZXN1bHQgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZv
cm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxl
U2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSk7CisgICAgYXV0byogZG9tQWdlbnQgPSBtX2lu
c3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKyAgICBpZiAoIWRvbUFnZW50
KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgRE9NIGFnZW50Il9zOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhp
c3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4o
aW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKTsKICAgICBpZiAocGVy
Zm9ybVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEluc3Bl
Y3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKHBlcmZvcm1SZXN1bHQucmVsZWFzZUV4Y2VwdGlv
bigpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjcwLDcgKzY4MSwxMyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYgogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpjcmVhdGVTdHlsZVNoZWV0KEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBTdHJpbmcqIHN0
eWxlU2hlZXRJZCkKIHsKLSAgICBGcmFtZSogZnJhbWUgPSBtX2RvbUFnZW50LT5wYWdlQWdlbnQo
KS0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKKyAgICBhdXRvKiBwYWdlQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAgaWYgKCFwYWdlQWdlbnQpIHsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBQYWdlIGFnZW50Il9zOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgRnJhbWUqIGZyYW1lID0gcGFnZUFnZW50LT5mcmFtZUZvcklk
KGZyYW1lSWQpOwogICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm8g
ZnJhbWUgZm9yIGdpdmVuIGlkIGZvdW5kIl9zOwogICAgICAgICByZXR1cm47CkBAIC03NDAsOSAr
NzU3LDE1IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JE
T01BZ2VudCgpOworICAgIGlmICghZG9tQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAi
TWlzc2luZyBET00gYWdlbnQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBhdXRv
IGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVT
aGVldCwgc2VsZWN0b3IpOwogICAgIGF1dG8mIHJhd0FjdGlvbiA9ICphY3Rpb247Ci0gICAgYXV0
byBwZXJmb3JtUmVzdWx0ID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKFdURk1vdmUo
YWN0aW9uKSk7CisgICAgYXV0byBwZXJmb3JtUmVzdWx0ID0gZG9tQWdlbnQtPmhpc3RvcnkoKS0+
cGVyZm9ybShXVEZNb3ZlKGFjdGlvbikpOwogICAgIGlmIChwZXJmb3JtUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJy
b3JTdHJpbmcocGVyZm9ybVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1
cm47CkBAIC04MTYsNyArODM5LDEzIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBv
cnRlZFN5c3RlbUZvbnRGYW1pbHlOYW1lcyhFcnJvclN0cmluZyYsIFJlZlB0cjxKCiAKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkLCBjb25zdCBKU09OOjpBcnJheSYgZm9yY2VkUHNldWRvQ2xhc3NlcykK
IHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RWxlbWVudChlcnJv
clN0cmluZywgbm9kZUlkKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGlmICghZG9tQWdlbnQpIHsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00gYWdlbnQiX3M7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gZG9tQWdlbnQtPmFzc2VydEVsZW1lbnQoZXJy
b3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50KQogICAgICAgICByZXR1cm47CiAK
QEAgLTg0Miw3ICs4NzEsNyBAQCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUmIElu
c3BlY3RvckNTU0FnZW50Ojphc0luc3BlY3RvclN0eWxlU2hlZXQoU3R5bAogewogICAgIHJldHVy
biBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5zdXJlKCZlbGVtZW50LCBbdGhpcywgJmVs
ZW1lbnRdIHsKICAgICAgICAgU3RyaW5nIG5ld1N0eWxlU2hlZXRJZCA9IFN0cmluZzo6bnVtYmVy
KG1fbGFzdFN0eWxlU2hlZXRJZCsrKTsKLSAgICAgICAgYXV0byBpbnNwZWN0b3JTdHlsZVNoZWV0
ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpjcmVhdGUobV9kb21BZ2VudC0+
cGFnZUFnZW50KCksIG5ld1N0eWxlU2hlZXRJZCwgZWxlbWVudCwgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpSZWd1bGFyLCB0aGlzKTsKKyAgICAgICAgYXV0byBp
bnNwZWN0b3JTdHlsZVNoZWV0ID0gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpLCBuZXdTdHls
ZVNoZWV0SWQsIGVsZW1lbnQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6U3R5bGVTaGVldE9y
aWdpbjo6UmVndWxhciwgdGhpcyk7CiAgICAgICAgIG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQu
c2V0KG5ld1N0eWxlU2hlZXRJZCwgaW5zcGVjdG9yU3R5bGVTaGVldC5jb3B5UmVmKCkpOwogICAg
ICAgICByZXR1cm4gaW5zcGVjdG9yU3R5bGVTaGVldDsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CkBAIC04NTAsNyArODc5LDEzIEBAIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSYg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmFzSW5zcGVjdG9yU3R5bGVTaGVldChTdHlsCiAKIEVsZW1lbnQq
IEluc3BlY3RvckNTU0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkKQogewotICAgIE5vZGUqIG5vZGUgPSBtX2RvbUFnZW50LT5ub2RlRm9ySWQo
bm9kZUlkKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JET01BZ2VudCgpOworICAgIGlmICghZG9tQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJp
bmcgPSAiTWlzc2luZyBET00gYWdlbnQiX3M7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAg
IH0KKworICAgIE5vZGUqIG5vZGUgPSBkb21BZ2VudC0+bm9kZUZvcklkKG5vZGVJZCk7CiAgICAg
aWYgKCFub2RlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk5vIG5vZGUgd2l0aCBnaXZlbiBp
ZCBmb3VuZCJfczsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC04NzcsNyArOTEyLDcgQEAg
SW5zcGVjdG9yU3R5bGVTaGVldCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmJpbmRTdHlsZVNoZWV0KENT
U1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQKICAgICBpZiAoIWluc3BlY3RvclN0eWxlU2hlZXQpIHsK
ICAgICAgICAgU3RyaW5nIGlkID0gU3RyaW5nOjpudW1iZXIobV9sYXN0U3R5bGVTaGVldElkKysp
OwogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdHlsZVNoZWV0LT5vd25lckRvY3VtZW50
KCk7Ci0gICAgICAgIGluc3BlY3RvclN0eWxlU2hlZXQgPSBJbnNwZWN0b3JTdHlsZVNoZWV0Ojpj
cmVhdGUobV9kb21BZ2VudC0+cGFnZUFnZW50KCksIGlkLCBzdHlsZVNoZWV0LCBkZXRlY3RPcmln
aW4oc3R5bGVTaGVldCwgZG9jdW1lbnQpLCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxT
dHJpbmcoZG9jdW1lbnQpLCB0aGlzKTsKKyAgICAgICAgaW5zcGVjdG9yU3R5bGVTaGVldCA9IElu
c3BlY3RvclN0eWxlU2hlZXQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
UGFnZUFnZW50KCksIGlkLCBzdHlsZVNoZWV0LCBkZXRlY3RPcmlnaW4oc3R5bGVTaGVldCwgZG9j
dW1lbnQpLCBJbnNwZWN0b3JET01BZ2VudDo6ZG9jdW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpLCB0
aGlzKTsKICAgICAgICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5zZXQoaWQsIGluc3BlY3Rv
clN0eWxlU2hlZXQpOwogICAgICAgICBtX2Nzc1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hl
ZXQuc2V0KHN0eWxlU2hlZXQsIGluc3BlY3RvclN0eWxlU2hlZXQpOwogICAgICAgICBpZiAobV9j
cmVhdGluZ1ZpYUluc3BlY3RvclN0eWxlU2hlZXQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCAzNTQ5NGZlNWM5MWJk
MGQwM2U0M2U1MjQ3NWE1YzIwMWE5MTIzMWUzLi4xZGY3OTU4YTEyYzM1YmNlNTEzMTVmZDYyOTlh
MDEyYTA0NDlhOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0yNyw3ICsyNyw2IEBACiAKICNpbmNsdWRlICJDU1NT
ZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgotI2luY2x1ZGUg
Ikluc3BlY3RvckRPTUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVldC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5Q29u
dGV4dC5oIgpAQCAtNTYsNyArNTUsNiBAQCBjbGFzcyBTdHlsZVJ1bGU7CiAKIGNsYXNzIEluc3Bl
Y3RvckNTU0FnZW50IGZpbmFsCiAgICAgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlCi0gICAg
LCBwdWJsaWMgSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyCiAgICAgLCBwdWJsaWMgSW5z
cGVjdG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICAsIHB1YmxpYyBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpMaXN0ZW5lciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVj
dG9yQ1NTQWdlbnQpOwpAQCAtNzksMTYgKzc3LDEzIEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVu
dFNlY3VyaXR5UG9saWN5KiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKICAgICB9OwogCi0gICAg
SW5zcGVjdG9yQ1NTQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsK
LSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDU1NBZ2VudCgpOworICAgIEluc3BlY3RvckNTU0FnZW50
KFdlYkFnZW50Q29udGV4dCYpOworICAgIHZpcnR1YWwgfkluc3BlY3RvckNTU0FnZW50KCkgPSBk
ZWZhdWx0OwogCiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVs
ZSYpOwogCiAgICAgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpG
cm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsK
ICAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29u
bmVjdFJlYXNvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZvaWQgZGlzYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVzZXQoKTsKIAogICAgIC8vIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbgpAQCAtOTcsNiArOTIsOSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBhY3RpdmVTdHlsZVNoZWV0c1VwZGF0ZWQoRG9jdW1lbnQmKTsKICAgICBib29sIGZvcmNlUHNl
dWRvU3RhdGUoY29uc3QgRWxlbWVudCYsIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOwog
CisgICAgLy8gQ1NTQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NDb21wdXRlZFN0eWxlUHJvcGVydHk+PiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ2V0SW5saW5l
U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcykgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBnZXRNYXRjaGVkU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0
IGJvb2wqIGluY2x1ZGVQc2V1ZG8sIGNvbnN0IGJvb2wqIGluY2x1ZGVJbmhlcml0ZWQsIFJlZlB0
cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6UnVsZU1hdGNoPj4mIG1h
dGNoZWRDU1NSdWxlcywgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6
Q1NTOjpQc2V1ZG9JZE1hdGNoZXM+PiYsIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRyaWVzKSBv
dmVycmlkZTsKQEAgLTExMiw2ICsxMTAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U3VwcG9y
dGVkU3lzdGVtRm9udEZhbWlseU5hbWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5
T2Y8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmb3JjZVBzZXVkb1N0YXRl
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgSlNPTjo6QXJyYXkmIGZvcmNlZFBzZXVk
b0NsYXNzZXMpIG92ZXJyaWRlOwogCisgICAgLy8gSW5zcGVjdG9yRE9NQWdlbnQgaG9va3MKKyAg
ICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYsIGludCBub2RlSWQpOworICAgIHZvaWQgZGlk
TW9kaWZ5RE9NQXR0cihFbGVtZW50Jik7CisKIHByaXZhdGU6CiAgICAgY2xhc3MgU3R5bGVTaGVl
dEFjdGlvbjsKICAgICBjbGFzcyBTZXRTdHlsZVNoZWV0VGV4dEFjdGlvbjsKQEAgLTEyNCw3ICsx
MjYsNiBAQCBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8RG9jdW1lbnQ+LCBW
ZWN0b3I8UmVmUHRyPEluc3BlY3RvclN0eWxlU2hlZXQ+Pj4gRG9jdW1lbnRUb1ZpYUluc3BlY3Rv
clN0eWxlU2hlZXQ7IC8vICJ2aWEgaW5zcGVjdG9yIiBzdHlsZXNoZWV0cwogICAgIHR5cGVkZWYg
SGFzaE1hcDxpbnQsIHVuc2lnbmVkPiBOb2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlOwogCi0gICAg
dm9pZCByZXNldE5vblBlcnNpc3RlbnREYXRhKCk7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZv
cklubGluZVN0eWxlJiBhc0luc3BlY3RvclN0eWxlU2hlZXQoU3R5bGVkRWxlbWVudCYpOwogICAg
IEVsZW1lbnQqIGVsZW1lbnRGb3JJZChFcnJvclN0cmluZyYsIGludCBub2RlSWQpOwogCkBAIC0x
NDQsMTAgKzE0NSw2IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6Q1NTOjpSdWxlTWF0Y2g+PiBidWlsZEFycmF5Rm9yTWF0Y2hlZFJ1bGVM
aXN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxlPj4mLCBTdHlsZVJlc29sdmVyJiwgRWxl
bWVudCYsIFBzZXVkb0lkKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpD
U1NTdHlsZT4gYnVpbGRPYmplY3RGb3JBdHRyaWJ1dGVzU3R5bGUoU3R5bGVkRWxlbWVudCYpOwog
Ci0gICAgLy8gSW5zcGVjdG9yRE9NQWdlbnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9uCi0g
ICAgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUmLCBpbnQgbm9kZUlkKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCYpIG92ZXJyaWRlOwotCiAgICAgLy8gSW5z
cGVjdG9yQ1NTQWdlbnQ6Okxpc3RlbmVyIGltcGxlbWVudGF0aW9uCiAgICAgdm9pZCBzdHlsZVNo
ZWV0Q2hhbmdlZChJbnNwZWN0b3JTdHlsZVNoZWV0Kikgb3ZlcnJpZGU7CiAKQEAgLTE1NSw3ICsx
NTIsNiBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6Q1NTRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpDU1NCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBJbnNw
ZWN0b3JET01BZ2VudCogbV9kb21BZ2VudCB7IG51bGxwdHIgfTsKIAogICAgIElkVG9JbnNwZWN0
b3JTdHlsZVNoZWV0IG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CiAgICAgQ1NTU3R5bGVTaGVl
dFRvSW5zcGVjdG9yU3R5bGVTaGVldCBtX2Nzc1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hl
ZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IGRkOWFmZWU5YzkzNjFiMWExOTg1ZThlZGQ2MWZjNzlmNTUwNmUw
MjQuLjY4NjM0NDM2YWZjOTQwNzhjMGU3YWZmNmVmNTA4ZGI5NmZhMmJlMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC02OSw2ICs2OSw3IEBACiAjaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9yQ1NTQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SGlzdG9yeS5oIgpAQCAtMjc3LDEyICsyNzgsMTIgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50
Ojp0b0Vycm9yU3RyaW5nKEV4Y2VwdGlvbiYmIGV4Y2VwdGlvbikKICAgICByZXR1cm4gRE9NRXhj
ZXB0aW9uOjpuYW1lKGV4Y2VwdGlvbi5jb2RlKCkpOwogfQogCi1JbnNwZWN0b3JET01BZ2VudDo6
SW5zcGVjdG9yRE9NQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JQYWdl
QWdlbnQqIHBhZ2VBZ2VudCwgSW5zcGVjdG9yT3ZlcmxheSogb3ZlcmxheSkKK0luc3BlY3RvckRP
TUFnZW50OjpJbnNwZWN0b3JET01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNw
ZWN0b3JPdmVybGF5KiBvdmVybGF5KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJET00iX3Ms
IGNvbnRleHQpCiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVk
U2NyaXB0TWFuYWdlcikKICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9yOjpET01Gcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkRPTUJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCi0gICAgLCBt
X3BhZ2VBZ2VudChwYWdlQWdlbnQpCisgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNw
ZWN0ZWRQYWdlKQogICAgICwgbV9vdmVybGF5KG92ZXJsYXkpCiAjaWYgRU5BQkxFKFZJREVPKQog
ICAgICwgbV9tZWRpYU1ldHJpY3NUaW1lcigqdGhpcywgJkluc3BlY3RvckRPTUFnZW50OjptZWRp
YU1ldHJpY3NUaW1lckZpcmVkKQpAQCAtMzAyLDcgKzMwMyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91
dGVyKiwKICAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPigqbV9o
aXN0b3J5KTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JET01BZ2Vu
dCh0aGlzKTsKLSAgICBtX2RvY3VtZW50ID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLmRvY3Vt
ZW50KCk7CisgICAgbV9kb2N1bWVudCA9IG1faW5zcGVjdGVkUGFnZS5tYWluRnJhbWUoKS5kb2N1
bWVudCgpOwogCiAjaWYgRU5BQkxFKFZJREVPKQogICAgIGlmIChtX2RvY3VtZW50KQpAQCAtMzU0
LDExICszNTUsNiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZXNldCgpCiAgICAgbV9kb2N1
bWVudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERPTUxpc3Rl
bmVyKERPTUxpc3RlbmVyKiBsaXN0ZW5lcikKLXsKLSAgICBtX2RvbUxpc3RlbmVyID0gbGlzdGVu
ZXI7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldERvY3VtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKIHsKICAgICBpZiAoZG9jdW1lbnQgPT0gbV9kb2N1bWVudC5nZXQoKSkKQEAgLTQx
OCw4ICs0MTQsOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp1bmJpbmQoTm9kZSogbm9kZSwg
Tm9kZVRvSWRNYXAqIG5vZGVzTWFwKQogICAgIH0KIAogICAgIG5vZGVzTWFwLT5yZW1vdmUobm9k
ZSk7Ci0gICAgaWYgKG1fZG9tTGlzdGVuZXIpCi0gICAgICAgIG1fZG9tTGlzdGVuZXItPmRpZFJl
bW92ZURPTU5vZGUoKm5vZGUsIGlkKTsKKworICAgIGlmIChhdXRvKiBjc3NBZ2VudCA9IG1faW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+
ZGlkUmVtb3ZlRE9NTm9kZSgqbm9kZSwgaWQpOwogCiAgICAgaWYgKG1fY2hpbGRyZW5SZXF1ZXN0
ZWQucmVtb3ZlKGlkKSkgewogICAgICAgICAvLyBGSVhNRTogV291bGQgYmUgYmV0dGVyIHRvIGRv
IHRoaXMgaXRlcmF0aXZlbHkgcmF0aGVyIHRoYW4gcmVjdXJzaXZlbHkuCkBAIC0xMTYwLDcgKzEx
NTcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBlbmFibAogCiAgICAgbV9vdmVybGF5LT5kaWRTZXRT
ZWFyY2hpbmdGb3JOb2RlKG1fc2VhcmNoaW5nRm9yTm9kZSk7CiAKLSAgICBpZiAoSW5zcGVjdG9y
Q2xpZW50KiBjbGllbnQgPSBtX3BhZ2VBZ2VudC0+cGFnZSgpLmluc3BlY3RvckNvbnRyb2xsZXIo
KS5pbnNwZWN0b3JDbGllbnQoKSkKKyAgICBpZiAoSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQgPSBt
X2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLmluc3BlY3RvckNsaWVudCgpKQog
ICAgICAgICBjbGllbnQtPmVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKG1fc2VhcmNoaW5nRm9yTm9k
ZSk7CiB9CiAKQEAgLTEyMTgsNyArMTIxNSwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpo
aWdobGlnaHRTZWxlY3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ogog
ICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQ7CiAKICAgICBpZiAoZnJhbWVJZCkgewotICAg
ICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJZCgqZnJhbWVJZCk7Cisg
ICAgICAgIGF1dG8qIHBhZ2VBZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQ
YWdlQWdlbnQoKTsKKyAgICAgICAgaWYgKCFwYWdlQWdlbnQpIHsKKyAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgUGFnZSBhZ2VudCJfczsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHBhZ2VBZ2VudC0+ZnJhbWVGb3JJZCgq
ZnJhbWVJZCk7CiAgICAgICAgIGlmICghZnJhbWUpIHsKICAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIk5vIGZyYW1lIGZvciBnaXZlbiBpZCBmb3VuZCJfczsKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTEzMDUsNyArMTMwOCwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRO
b2RlTGlzdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046OgogCiB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBjb2xvciwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvdXRsaW5lQ29sb3IpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gbV9wYWdl
QWdlbnQtPmFzc2VydEZyYW1lKGVycm9yU3RyaW5nLCBmcmFtZUlkKTsKKyAgICBhdXRvKiBwYWdl
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUGFnZUFnZW50KCk7CisgICAg
aWYgKCFwYWdlQWdlbnQpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBQYWdlIGFn
ZW50Il9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgRnJhbWUqIGZyYW1lID0gcGFn
ZUFnZW50LT5hc3NlcnRGcmFtZShlcnJvclN0cmluZywgZnJhbWVJZCk7CiAgICAgaWYgKCFmcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTQxLDE0ICsxNTUwLDE4IEBAIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006Ok5vZGU+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZv
ck5vZGUoTm9kZSoKICAgICAgICAgICAgIHZhbHVlLT5zZXRDaGlsZHJlbihXVEZNb3ZlKGNoaWxk
cmVuKSk7CiAgICAgfQogCisgICAgYXV0byogcGFnZUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpOworCiAgICAgaWYgKGlzPEVsZW1lbnQ+KCpub2RlKSkg
ewogICAgICAgICBFbGVtZW50JiBlbGVtZW50ID0gZG93bmNhc3Q8RWxlbWVudD4oKm5vZGUpOwog
ICAgICAgICB2YWx1ZS0+c2V0QXR0cmlidXRlcyhidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0
ZXMoJmVsZW1lbnQpKTsKICAgICAgICAgaWYgKGlzPEhUTUxGcmFtZU93bmVyRWxlbWVudD4oZWxl
bWVudCkpIHsKICAgICAgICAgICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCYgZnJhbWVPd25lciA9
IGRvd25jYXN0PEhUTUxGcmFtZU93bmVyRWxlbWVudD4oZWxlbWVudCk7Ci0gICAgICAgICAgICBG
cmFtZSogZnJhbWUgPSBmcmFtZU93bmVyLmNvbnRlbnRGcmFtZSgpOwotICAgICAgICAgICAgaWYg
KGZyYW1lKQotICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRGcmFtZUlkKG1fcGFnZUFnZW50LT5m
cmFtZUlkKGZyYW1lKSk7CisgICAgICAgICAgICBpZiAocGFnZUFnZW50KSB7CisgICAgICAgICAg
ICAgICAgRnJhbWUqIGZyYW1lID0gZnJhbWVPd25lci5jb250ZW50RnJhbWUoKTsKKyAgICAgICAg
ICAgICAgICBpZiAoZnJhbWUpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRGcmFtZUlk
KHBhZ2VBZ2VudC0+ZnJhbWVJZChmcmFtZSkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWVPd25lci5jb250ZW50RG9jdW1lbnQoKTsKICAgICAg
ICAgICAgIGlmIChkb2N1bWVudCkKICAgICAgICAgICAgICAgICB2YWx1ZS0+c2V0Q29udGVudERv
Y3VtZW50KGJ1aWxkT2JqZWN0Rm9yTm9kZShkb2N1bWVudCwgMCwgbm9kZXNNYXApKTsKQEAgLTE1
NzgsMTAgKzE1OTEsMTAgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKgogICAgICAgICAgICAgaWYg
KGF1dG8gcHNldWRvRWxlbWVudHMgPSBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoZWxlbWVu
dCwgbm9kZXNNYXApKQogICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRQc2V1ZG9FbGVtZW50cyhX
VEZNb3ZlKHBzZXVkb0VsZW1lbnRzKSk7CiAgICAgICAgIH0KLQogICAgIH0gZWxzZSBpZiAoaXM8
RG9jdW1lbnQ+KCpub2RlKSkgewogICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBkb3duY2Fz
dDxEb2N1bWVudD4oKm5vZGUpOwotICAgICAgICB2YWx1ZS0+c2V0RnJhbWVJZChtX3BhZ2VBZ2Vu
dC0+ZnJhbWVJZChkb2N1bWVudC5mcmFtZSgpKSk7CisgICAgICAgIGlmIChwYWdlQWdlbnQpCisg
ICAgICAgICAgICB2YWx1ZS0+c2V0RnJhbWVJZChwYWdlQWdlbnQtPmZyYW1lSWQoZG9jdW1lbnQu
ZnJhbWUoKSkpOwogICAgICAgICB2YWx1ZS0+c2V0RG9jdW1lbnRVUkwoZG9jdW1lbnRVUkxTdHJp
bmcoJmRvY3VtZW50KSk7CiAgICAgICAgIHZhbHVlLT5zZXRCYXNlVVJMKGRvY3VtZW50QmFzZVVS
TFN0cmluZygmZG9jdW1lbnQpKTsKICAgICAgICAgdmFsdWUtPnNldFhtbFZlcnNpb24oZG9jdW1l
bnQueG1sVmVyc2lvbigpKTsKQEAgLTIyNDMsMTIgKzIyNTYsMTEgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG4KICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50IGlkID0gYm91bmROb2RlSWQoJmVs
ZW1lbnQpOwotICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBl
dmVudC4KICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kb21MaXN0
ZW5lcikKLSAgICAgICAgbV9kb21MaXN0ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsK
KyAgICBpZiAoYXV0byogY3NzQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
Q1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCk7
CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YXR0cmlidXRlTW9kaWZpZWQoaWQsIG5hbWUs
IHZhbHVlKTsKIH0KQEAgLTIyNTYsMTIgKzIyNjgsMTEgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IG4KIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGludCBpZCA9IGJvdW5kTm9k
ZUlkKCZlbGVtZW50KTsKLSAgICAvLyBJZiBub2RlIGlzIG5vdCBtYXBwZWQgeWV0IC0+IGlnbm9y
ZSB0aGUgZXZlbnQuCiAgICAgaWYgKCFpZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
ZG9tTGlzdGVuZXIpCi0gICAgICAgIG1fZG9tTGlzdGVuZXItPmRpZE1vZGlmeURPTUF0dHIoZWxl
bWVudCk7CisgICAgaWYgKGF1dG8qIGNzc0FnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRNb2RpZnlET01BdHRyKGVs
ZW1lbnQpOwogCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmF0dHJpYnV0ZVJlbW92ZWQoaWQs
IG5hbWUpOwogfQpAQCAtMjI3MSwxMiArMjI4MiwxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzdHlsZUF0dHJpYnV0ZUludmFsaWRhdGVkKGNvbnN0IFZlY3RvcjxFbGVtZW50Kj4mIGVsZW1l
bgogICAgIGF1dG8gbm9kZUlkcyA9IEpTT046OkFycmF5T2Y8aW50Pjo6Y3JlYXRlKCk7CiAgICAg
Zm9yIChhdXRvJiBlbGVtZW50IDogZWxlbWVudHMpIHsKICAgICAgICAgaW50IGlkID0gYm91bmRO
b2RlSWQoZWxlbWVudCk7Ci0gICAgICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4g
aWdub3JlIHRoZSBldmVudC4KICAgICAgICAgaWYgKCFpZCkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGlmIChtX2RvbUxpc3RlbmVyKQotICAgICAgICAgICAgbV9kb21MaXN0ZW5l
ci0+ZGlkTW9kaWZ5RE9NQXR0cigqZWxlbWVudCk7CisgICAgICAgIGlmIChhdXRvKiBjc3NBZ2Vu
dCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICAg
ICAgY3NzQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoKmVsZW1lbnQpOworCiAgICAgICAgIG5vZGVJ
ZHMtPmFkZEl0ZW0oaWQpOwogICAgIH0KICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+aW5saW5l
U3R5bGVJbnZhbGlkYXRlZChXVEZNb3ZlKG5vZGVJZHMpKTsKQEAgLTIyOTYsNyArMjMwNyw2IEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJhY3RlckRhdGFNb2RpZmllZChDaGFyYWN0ZXJE
YXRhJiBjaGFyYWN0ZXJEYXRhKQogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0
ZVN0eWxlQXR0cihOb2RlJiBub2RlKQogewogICAgIGludCBpZCA9IG1fZG9jdW1lbnROb2RlVG9J
ZE1hcC5nZXQoJm5vZGUpOwotICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdu
b3JlIHRoZSBldmVudC4KICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRl
eCBmZjU5YjU2ZGQwYmRiNTMyZDg4OGY3MzI0NzcwOWQzZmE2MGJkNmYxLi40YTU4YjBmZjY4NWU0
MjA5Nzc2ZThiY2FhNTg4NWJmMWMzNDQ0OGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC01MSw3ICs1MSw3IEBAIGNs
YXNzIEpTVmFsdWU7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwogY2xhc3MgQWNj
ZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIENoYXJhY3RlckRhdGE7CiBjbGFzcyBET01FZGl0b3I7
CkBAIC02MywxMiArNjMsMTIgQEAgY2xhc3MgRmxvYXRRdWFkOwogY2xhc3MgRnJhbWU7CiBjbGFz
cyBJbnNwZWN0b3JIaXN0b3J5OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKLWNsYXNzIEluc3Bl
Y3RvclBhZ2VBZ2VudDsKICNpZiBFTkFCTEUoVklERU8pCiBjbGFzcyBIVE1MTWVkaWFFbGVtZW50
OwogI2VuZGlmCiBjbGFzcyBIaXRUZXN0UmVzdWx0OwogY2xhc3MgTm9kZTsKK2NsYXNzIFBhZ2U7
CiBjbGFzcyBQc2V1ZG9FbGVtZW50OwogY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFz
azsKIGNsYXNzIFNoYWRvd1Jvb3Q7CkBAIC04MSwxMyArODEsNyBAQCBjbGFzcyBJbnNwZWN0b3JE
T01BZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0
b3I6OkRPTQogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTUFnZW50KTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdHJ1Y3QgRE9NTGlzdGVu
ZXIgewotICAgICAgICB2aXJ0dWFsIH5ET01MaXN0ZW5lcigpID0gZGVmYXVsdDsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYsIGludCBub2RlSWQpID0gMDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCYpID0gMDsKLSAgICB9
OwotCi0gICAgSW5zcGVjdG9yRE9NQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yUGFn
ZUFnZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOworICAgIEluc3BlY3RvckRPTUFnZW50KFBhZ2VB
Z2VudENvbnRleHQmLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
RE9NQWdlbnQoKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgdG9FcnJvclN0cmluZyhFeGNlcHRpb25D
b2RlKTsKQEAgLTE3NSw3ICsxNjksNiBAQCBwdWJsaWM6CiAgICAgaW50IHB1c2hOb2RlVG9Gcm9u
dGVuZChFcnJvclN0cmluZyYsIGludCBkb2N1bWVudE5vZGVJZCwgTm9kZSopOwogICAgIE5vZGUq
IG5vZGVGb3JJZChpbnQgbm9kZUlkKTsKICAgICBpbnQgYm91bmROb2RlSWQoY29uc3QgTm9kZSop
OwotICAgIHZvaWQgc2V0RE9NTGlzdGVuZXIoRE9NTGlzdGVuZXIqKTsKIAogICAgIHN0YXRpYyBT
dHJpbmcgZG9jdW1lbnRVUkxTdHJpbmcoRG9jdW1lbnQqKTsKIApAQCAtMjAyLDkgKzE5NSw2IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgTm9kZSogc2NyaXB0VmFsdWVBc05vZGUoSlNDOjpKU1ZhbHVl
KTsKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIG5vZGVBc1NjcmlwdFZhbHVlKEpTQzo6RXhlY1N0
YXRlJiwgTm9kZSopOwogCi0gICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSBvdGhlciBhZ2VudHMu
Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQoKSB7IHJldHVybiBtX3BhZ2VBZ2Vu
dDsgfQotCiAgICAgYm9vbCBoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdl
dCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBj
YXB0dXJlKTsKICAgICBpbnQgaWRGb3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwog
CkBAIC0yNDYsMTAgKzIzNiw4IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbnNwZWN0b3I6OkRPTUZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERp
c3BhdGNoZXI7Ci0gICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudCB7IG51bGxwdHIg
fTsKLQorICAgIFBhZ2UmIG1faW5zcGVjdGVkUGFnZTsKICAgICBJbnNwZWN0b3JPdmVybGF5KiBt
X292ZXJsYXkgeyBudWxscHRyIH07Ci0gICAgRE9NTGlzdGVuZXIqIG1fZG9tTGlzdGVuZXIgeyBu
dWxscHRyIH07CiAgICAgTm9kZVRvSWRNYXAgbV9kb2N1bWVudE5vZGVUb0lkTWFwOwogICAgIC8v
IE93bnMgbm9kZSBtYXBwaW5ncyBmb3IgZGFuZ2xpbmcgbm9kZXMuCiAgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxOb2RlVG9JZE1hcD4+IG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHM7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhYzkxNWRjNmYwODVkODViOWYzY2ExNmZiZjY1ZTFiODg3
N2M1MDhjLi5lNDY3Njc5MGZiOWNhNDQ0YjMyMzA0ZDA4MzI1ODA3MWI1OTE1NGNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTY1LDExICs2NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKLUluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiBjb250ZXh0
LCBJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRl
YnVnZ2VyQWdlbnQpCitJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCogZGVidWdnZXJBZ2VudCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRE9NRGVidWdnZXIi
X3MsIGNvbnRleHQpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6RE9NRGVi
dWdnZXJCYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpKQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoY29udGV4dC5pbmplY3RlZFNj
cmlwdE1hbmFnZXIpCi0gICAgLCBtX2RvbUFnZW50KGRvbUFnZW50KQogICAgICwgbV9kZWJ1Z2dl
ckFnZW50KGRlYnVnZ2VyQWdlbnQpCiB7CiAgICAgbV9kZWJ1Z2dlckFnZW50LT5hZGRMaXN0ZW5l
cigqdGhpcyk7CkBAIC0yMzMsNyArMjMyLDEzIEBAIHN0YXRpYyBTdHJpbmcgZG9tVHlwZU5hbWUo
aW50IHR5cGUpCiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RE9NQnJlYWtw
b2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
dHlwZVN0cmluZykKIHsKLSAgICBOb2RlKiBub2RlID0gbV9kb21BZ2VudC0+YXNzZXJ0Tm9kZShl
cnJvclN0cmluZywgbm9kZUlkKTsKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOworICAgIGlmICghZG9tQWdlbnQpIHsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBET00gYWdlbnQiX3M7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBOb2RlKiBub2RlID0gZG9tQWdlbnQtPmFzc2VydE5vZGUoZXJyb3JTdHJp
bmcsIG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTI1MSw5
ICsyNTYsMTYgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRET01CcmVha3Bv
aW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG4KIAogdm9pZCBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQogewotICAgIE5vZGUqIG5v
ZGUgPSBtX2RvbUFnZW50LT5hc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2RlSWQpOworICAgIGF1
dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCk7
CisgICAgaWYgKCFkb21BZ2VudCkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIERP
TSBhZ2VudCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5vZGUqIG5vZGUgPSBk
b21BZ2VudC0+YXNzZXJ0Tm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIW5vZGUp
CiAgICAgICAgIHJldHVybjsKKwogICAgIGludCB0eXBlID0gZG9tVHlwZUZvck5hbWUoZXJyb3JT
dHJpbmcsIHR5cGVTdHJpbmcpOwogICAgIGlmICh0eXBlID09IC0xKQogICAgICAgICByZXR1cm47
CkBAIC0zMTYsMTIgKzMyOCwxNiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRl
c2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSYgdGFyZ2V0LCBpbnQgYnJlYWtwbwogewogICAgIEFT
U0VSVChoYXNCcmVha3BvaW50KCZ0YXJnZXQsIGJyZWFrcG9pbnRUeXBlKSk7CiAKKyAgICBhdXRv
KiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01BZ2VudCgpOwor
CiAgICAgTm9kZSogYnJlYWtwb2ludE93bmVyID0gJnRhcmdldDsKICAgICBpZiAoKDEgPDwgYnJl
YWtwb2ludFR5cGUpICYgaW5oZXJpdGFibGVET01CcmVha3BvaW50VHlwZXNNYXNrKSB7Ci0gICAg
ICAgIC8vIEZvciBpbmhlcml0YWJsZSBicmVha3BvaW50IHR5cGVzLCB0YXJnZXQgbm9kZSBpc24n
dCBhbHdheXMgdGhlIHNhbWUgYXMgdGhlIG5vZGUgdGhhdCBvd25zIGEgYnJlYWtwb2ludC4KLSAg
ICAgICAgLy8gVGFyZ2V0IG5vZGUgbWF5IGJlIHVua25vd24gdG8gZnJvbnRlbmQsIHNvIHdlIG5l
ZWQgdG8gcHVzaCBpdCBmaXJzdC4KLSAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IG1fZG9tQWdlbnQtPnJl
c29sdmVOb2RlKCZ0YXJnZXQsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVj
dEdyb3VwKTsKLSAgICAgICAgZGVzY3JpcHRpb24uc2V0VmFsdWUoInRhcmdldE5vZGUiLCB0YXJn
ZXROb2RlT2JqZWN0KTsKKyAgICAgICAgaWYgKGRvbUFnZW50KSB7CisgICAgICAgICAgICAvLyBG
b3IgaW5oZXJpdGFibGUgYnJlYWtwb2ludCB0eXBlcywgdGFyZ2V0IG5vZGUgaXNuJ3QgYWx3YXlz
IHRoZSBzYW1lIGFzIHRoZSBub2RlIHRoYXQgb3ducyBhIGJyZWFrcG9pbnQuCisgICAgICAgICAg
ICAvLyBUYXJnZXQgbm9kZSBtYXkgYmUgdW5rbm93biB0byBmcm9udGVuZCwgc28gd2UgbmVlZCB0
byBwdXNoIGl0IGZpcnN0LgorICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gdGFyZ2V0Tm9kZU9iamVjdCA9IGRvbUFnZW50LT5yZXNv
bHZlTm9kZSgmdGFyZ2V0LCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RH
cm91cCk7CisgICAgICAgICAgICBkZXNjcmlwdGlvbi5zZXRWYWx1ZSgidGFyZ2V0Tm9kZSIsIHRh
cmdldE5vZGVPYmplY3QpOworICAgICAgICB9CiAKICAgICAgICAgLy8gRmluZCBicmVha3BvaW50
IG93bmVyIG5vZGUuCiAgICAgICAgIGlmICghaW5zZXJ0aW9uKQpAQCAtMzM4LDkgKzM1NCwxMiBA
QCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
Tm9kZSYgdGFyZ2V0LCBpbnQgYnJlYWtwbwogICAgICAgICAgICAgZGVzY3JpcHRpb24uc2V0Qm9v
bGVhbigiaW5zZXJ0aW9uIiwgaW5zZXJ0aW9uKTsKICAgICB9CiAKLSAgICBpbnQgYnJlYWtwb2lu
dE93bmVyTm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoYnJlYWtwb2ludE93bmVyKTsK
LSAgICBBU1NFUlQoYnJlYWtwb2ludE93bmVyTm9kZUlkKTsKLSAgICBkZXNjcmlwdGlvbi5zZXRJ
bnRlZ2VyKCJub2RlSWQiLCBicmVha3BvaW50T3duZXJOb2RlSWQpOworICAgIGlmIChkb21BZ2Vu
dCkgeworICAgICAgICBpbnQgYnJlYWtwb2ludE93bmVyTm9kZUlkID0gZG9tQWdlbnQtPmJvdW5k
Tm9kZUlkKGJyZWFrcG9pbnRPd25lcik7CisgICAgICAgIEFTU0VSVChicmVha3BvaW50T3duZXJO
b2RlSWQpOworICAgICAgICBkZXNjcmlwdGlvbi5zZXRJbnRlZ2VyKCJub2RlSWQiLCBicmVha3Bv
aW50T3duZXJOb2RlSWQpOworICAgIH0KKwogICAgIGRlc2NyaXB0aW9uLnNldFN0cmluZygidHlw
ZSIsIGRvbVR5cGVOYW1lKGJyZWFrcG9pbnRUeXBlKSk7CiB9CiAKQEAgLTM4MywxOCArNDAyLDIw
IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KEV2ZW50
JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2CiAgICAgICAgIGluamVjdGVkU2NyaXB0LnNldEV2
ZW50VmFsdWUodG9KUyhzdGF0ZSwgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShz
dGF0ZSksIGV2ZW50KSk7CiAgICAgfQogCisgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKTsKKwogICAgIGJvb2wgc2hvdWxkUGF1c2Ug
PSBtX2RlYnVnZ2VyQWdlbnQtPnBhdXNlT25OZXh0U3RhdGVtZW50RW5hYmxlZCgpIHx8IG1fZXZl
bnRCcmVha3BvaW50cy5jb250YWlucyhzdGQ6Om1ha2VfcGFpcihJbnNwZWN0b3I6OlByb3RvY29s
OjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6TGlzdGVuZXIsIGV2ZW50LnR5cGUo
KSkpOwogCi0gICAgaWYgKCFzaG91bGRQYXVzZSAmJiBtX2RvbUFnZW50KQotICAgICAgICBzaG91
bGRQYXVzZSA9IG1fZG9tQWdlbnQtPmhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKCpldmVu
dC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
Y2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSgpKTsKKyAgICBp
ZiAoIXNob3VsZFBhdXNlICYmIGRvbUFnZW50KQorICAgICAgICBzaG91bGRQYXVzZSA9IGRvbUFn
ZW50LT5oYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcigqZXZlbnQuY3VycmVudFRhcmdldCgp
LCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7CiAKICAgICBpZiAoIXNob3VsZFBhdXNl
KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBldmVudERhdGEgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGV2ZW50RGF0YS0+c2V0U3RyaW5nKCJldmVudE5h
bWUiX3MsIGV2ZW50LnR5cGUoKSk7Ci0gICAgaWYgKG1fZG9tQWdlbnQpIHsKLSAgICAgICAgaW50
IGV2ZW50TGlzdGVuZXJJZCA9IG1fZG9tQWdlbnQtPmlkRm9yRXZlbnRMaXN0ZW5lcigqZXZlbnQu
Y3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNh
bGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7CisgICAgaWYg
KGRvbUFnZW50KSB7CisgICAgICAgIGludCBldmVudExpc3RlbmVySWQgPSBkb21BZ2VudC0+aWRG
b3JFdmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIu
dXNlQ2FwdHVyZSgpKTsKICAgICAgICAgaWYgKGV2ZW50TGlzdGVuZXJJZCkKICAgICAgICAgICAg
IGV2ZW50RGF0YS0+c2V0SW50ZWdlcigiZXZlbnRMaXN0ZW5lcklkIl9zLCBldmVudExpc3RlbmVy
SWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggZjI2NjQ3NTY1ZTBmMzAyNjg1
NmI1ZWNkYWE1YmU5MmFhZGRkNDViNC4uYTM2NTkzOWM1NmFkYjA3MmNlMGE4MmFhNTA5MzY1OGI1
YzUyNmMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTQ3LDcgKzQ3LDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50OwogY2xhc3MgRnJhbWU7
Ci1jbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lcjsKIApAQCAtNTcsNyArNTYsNyBAQCBjbGFzcyBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIEluc3Bl
YwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yRE9NQWdlbnQqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsKKyAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCop
OwogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKTsKIAogICAgIC8vIERP
TURlYnVnZ2VyIEFQSQpAQCAtMTA0LDcgKzEwMyw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRj
aGVyOwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsKLSAgICBJbnNwZWN0b3JET01BZ2VudCogbV9kb21BZ2VudCB7IG51bGxwdHIg
fTsKKwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFn
ZW50IHsgbnVsbHB0ciB9OwogCiAgICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJl
YWtwb2ludHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5jcHAKaW5kZXggNmViMjZlMGY1ODJmZWYwMjdiN2RlOGI5
NTEyMGMxNGI3MTdiODA0MS4uZjcxN2VhNzU4YjlhY2EwOWJlYWVkYzliMWUxZjIxZGQ1ZTMwMWVi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VD
b25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtMzQsMjMgKzM0LDI0IEBACiAKICNpbmNsdWRlICJD
b21tYW5kTGluZUFQSUhvc3QuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2lu
Y2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiV2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAKLQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1QYWdlQ29uc29sZUFnZW50OjpQYWdlQ29u
c29sZUFnZW50KFdlYkFnZW50Q29udGV4dCYgY29udGV4dCwgSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50KQorUGFnZUNvbnNvbGVBZ2VudDo6UGFnZUNvbnNvbGVBZ2VudChXZWJBZ2VudENvbnRl
eHQmIGNvbnRleHQpCiAgICAgOiBXZWJDb25zb2xlQWdlbnQoY29udGV4dCkKLSAgICAsIG1faW5z
cGVjdG9yRE9NQWdlbnQoZG9tQWdlbnQpCisgICAgLCBtX2luc3RydW1lbnRpbmdBZ2VudHMoY29u
dGV4dC5pbnN0cnVtZW50aW5nQWdlbnRzKQogewogfQogCiB2b2lkIFBhZ2VDb25zb2xlQWdlbnQ6
OmNsZWFyTWVzc2FnZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogewotICAgIG1faW5zcGVj
dG9yRE9NQWdlbnQtPnJlbGVhc2VEYW5nbGluZ05vZGVzKCk7CisgICAgaWYgKGF1dG8qIGRvbUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCisgICAgICAg
IGRvbUFnZW50LT5yZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwogCiAgICAgV2ViQ29uc29sZUFnZW50
OjpjbGVhck1lc3NhZ2VzKGVycm9yU3RyaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUNvbnNvbGVBZ2VudC5oCmluZGV4IDcxY2I4
OTA0ODc4N2RkMWE4ZGM3NzA4OTYwNDg4ZmU3MDFjM2VmYTcuLmFkYTI0ZmU4YmNkMjAwOGE3ZDRh
MTRmZjNkZGM2NmNlZmRkY2Q4YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VDb25zb2xlQWdlbnQuaApAQCAtMzYsMTkgKzM2LDE3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7Ci0KIGNs
YXNzIFBhZ2VDb25zb2xlQWdlbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29uc29sZUFnZW50IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ29uc29sZUFnZW50KTsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYWdlQ29uc29sZUFnZW50KFdlYkFnZW50Q29u
dGV4dCYsIEluc3BlY3RvckRPTUFnZW50Kik7CisgICAgUGFnZUNvbnNvbGVBZ2VudChXZWJBZ2Vu
dENvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5QYWdlQ29uc29sZUFnZW50KCkgPSBkZWZhdWx0Owog
CiBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyYpIG92ZXJyaWRl
OwogCi0gICAgSW5zcGVjdG9yRE9NQWdlbnQqIG1faW5zcGVjdG9yRE9NQWdlbnQ7CisgICAgSW5z
dHJ1bWVudGluZ0FnZW50cyYgbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>