<?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>95596</bug_id>
          
          <creation_ts>2012-08-31 11:47:16 -0700</creation_ts>
          <short_desc>[chromium] Add main versus impl thread asserts</short_desc>
          <delta_ts>2012-08-31 14:11:04 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Christopher Cameron">ccameron</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>709847</commentid>
    <comment_count>0</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-08-31 11:47:16 -0700</bug_when>
    <thetext>[chromium] Add main versus impl thread asserts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709851</commentid>
    <comment_count>1</comment_count>
      <attachid>161745</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-08-31 11:50:55 -0700</bug_when>
    <thetext>Created attachment 161745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709872</commentid>
    <comment_count>2</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-08-31 12:07:21 -0700</bug_when>
    <thetext>PTAL, this is a subset of bug 95057 (since that was getting unwieldy).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709880</commentid>
    <comment_count>3</comment_count>
      <attachid>161745</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-31 12:21:04 -0700</bug_when>
    <thetext>Comment on attachment 161745
Patch

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709882</commentid>
    <comment_count>4</comment_count>
      <attachid>161745</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 12:22:37 -0700</bug_when>
    <thetext>Comment on attachment 161745
Patch

Rejecting attachment 161745 from commit-queue.

ccameron@chromium.org does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709885</commentid>
    <comment_count>5</comment_count>
      <attachid>161745</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-31 12:26:37 -0700</bug_when>
    <thetext>Comment on attachment 161745
Patch

You can set CQ? but not CQ+ until you&apos;re a committer, as the bot has said :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709910</commentid>
    <comment_count>6</comment_count>
      <attachid>161745</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 12:55:06 -0700</bug_when>
    <thetext>Comment on attachment 161745
Patch

Rejecting attachment 161745 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/13720300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709911</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-08-31 12:56:51 -0700</bug_when>
    <thetext>Second time I&apos;ve seen that happen for now even though it has R+. Must be a bug in the bot. :\</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709928</commentid>
    <comment_count>8</comment_count>
      <attachid>161745</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-31 13:27:53 -0700</bug_when>
    <thetext>Comment on attachment 161745
Patch

it&apos;s not a bug in the bot, WebCore/ChangeLog doesn&apos;t have a &quot;Reviewed by NOBODY (OOPS!).&quot; line in it. Add it back and the queue will accept it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709933</commentid>
    <comment_count>9</comment_count>
      <attachid>161759</attachid>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-08-31 13:35:05 -0700</bug_when>
    <thetext>Created attachment 161759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709934</commentid>
    <comment_count>10</comment_count>
    <who name="Christopher Cameron">ccameron</who>
    <bug_when>2012-08-31 13:35:35 -0700</bug_when>
    <thetext>Ah, thanks.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709971</commentid>
    <comment_count>11</comment_count>
      <attachid>161759</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 14:11:00 -0700</bug_when>
    <thetext>Comment on attachment 161759
Patch

Clearing flags on attachment: 161759

Committed r127317: &lt;http://trac.webkit.org/changeset/127317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709972</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 14:11:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161745</attachid>
            <date>2012-08-31 11:50:55 -0700</date>
            <delta_ts>2012-08-31 13:35:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95596-20120831115042.patch</filename>
            <type>text/plain</type>
            <size>53062</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM3YTQzNmQ1Y2NjZGE0
ZDExYWMyMjUwNDFlYmYzYTA1NjdlN2RjMS4uZTE0Zjk2YTU4NzZiOWMwNDJmMGRlMzQ0ZmM4MDc5
MTJlMjlmMGE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA4LTMxICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gQWRkIG1haW4gdmVyc3VzIGltcGwgdGhyZWFkIGFzc2VydHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTk2CisKKyAgICAgICAgQWRkIGFz
c2VydHMgdG8gcHJpb3JpdGl6ZWQgdGV4dHVyZSBtYW5hZ2VyIHRoYXQgc3BlY2lmeSB0aGF0IGEK
KyAgICAgICAgZnVuY3Rpb24gYmUgY2FsbGVkIG9uIHRoZSBtYWluIG9yIGltcGwgdGhyZWFkLgor
CisgICAgICAgIEFkZCBkZWJ1ZyBzaWducyB0aGF0IHRoZSBtYWluIHRocmVhZCBpcyBibG9ja2Vk
IHRvIHRoZSB0aHJlYWRlZAorICAgICAgICBwcm94eS4KKworICAgICAgICBBZGQgYSBtZWNoYW5p
c20gdG8gc2ltdWx0YW5lb3VzbHkgc2V0IHRoZSB0aHJlYWQgdG8gdGhlIGltcGwgdGhyZWFkCisg
ICAgICAgIGFuZCBpbmRpY2F0ZSB0aGF0IHRoZSBtYWluIHRocmVhZCBpcyBibG9ja2VkLgorCisg
ICAgICAgIFVwZGF0ZSB0ZXN0cyB0aGF0IGhpdCBhc3NlcnRzIGluIHRoZSBwcmlvcml0aXplZCB0
ZXh0dXJlIG1hbmFnZXIgdG8KKyAgICAgICAgc2V0IHRoZWlyIGltcGwgdGhyZWFkIGFuZCBtYWlu
IHRocmVhZCBibG9ja2VkIHN0YXRlIGNvcnJlY3RseS4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0
dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNs
ZWFyUHJpb3JpdGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJlcXVlc3RMYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6YWNxdWlyZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWdpc3RlclRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjp1bnJlZ2lz
dGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFzc2VydEludmFyaWFudHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRo
cmVhZEJsb2NrZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tcG9z
aXRlQW5kUmVhZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZmluaXNo
QWxsUmVuZGVyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldFZpc2li
bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZVJlbmRlcmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OmZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVycyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjphY3F1aXJlTGF5ZXJUZXh0dXJlcyk6CisKIDIwMTIt
MDgtMzAgIFByYXRpayBTb2xhbmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIG9i
amNfbXNnU2VuZCBhbmQgSU1QIHNob3VsZCBiZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVz
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGY1OTc1OGJlNDE1YTY0ODIxZGM5M2Y3
OGI4MjdhN2FjMjUzYmQ2ZWYuLjRhNDFlMTc5Y2IyZTJiOGE0YzNmNTVlMDZhY2M4MjI5NDQ2MmVl
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDgt
MzEgIENocmlzdG9waGVyIENhbWVyb24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW2Nocm9taXVtXSBBZGQgbWFpbiB2ZXJzdXMgaW1wbCB0aHJlYWQgYXNzZXJ0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0byBw
cmlvcml0aXplZCB0ZXh0dXJlIG1hbmFnZXIgdGhhdCBzcGVjaWZ5IHRoYXQgYQorICAgICAgICBm
dW5jdGlvbiBiZSBjYWxsZWQgb24gdGhlIG1haW4gb3IgaW1wbCB0aHJlYWQuCisKKyAgICAgICAg
QWRkIGRlYnVnIHNpZ25zIHRoYXQgdGhlIG1haW4gdGhyZWFkIGlzIGJsb2NrZWQgdG8gdGhlIHRo
cmVhZGVkCisgICAgICAgIHByb3h5LgorCisgICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBzaW11
bHRhbmVvdXNseSBzZXQgdGhlIHRocmVhZCB0byB0aGUgaW1wbCB0aHJlYWQKKyAgICAgICAgYW5k
IGluZGljYXRlIHRoYXQgdGhlIG1haW4gdGhyZWFkIGlzIGJsb2NrZWQuCisKKyAgICAgICAgVXBk
YXRlIHRlc3RzIHRoYXQgaGl0IGFzc2VydHMgaW4gdGhlIHByaW9yaXRpemVkIHRleHR1cmUgbWFu
YWdlciB0bworICAgICAgICBzZXQgdGhlaXIgaW1wbCB0aHJlYWQgYW5kIG1haW4gdGhyZWFkIGJs
b2NrZWQgc3RhdGUgY29ycmVjdGx5LgorCisgICAgICAgICogdGVzdHMvQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0OjpD
Q1ByaW9yaXRpemVkVGV4dHVyZVRlc3QpOgorICAgICAgICAoV1RGOjpDQ1ByaW9yaXRpemVkVGV4
dHVyZVRlc3Q6On5DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QpOgorICAgICAgICAoV1RGOjpDQ1By
aW9yaXRpemVkVGV4dHVyZVRlc3Q6OnZhbGlkYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OlRF
U1RfRik6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisKIDIw
MTItMDgtMzAgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIE1ha2Ugd2Via2l0X2NvbXBvc2l0b3Igc3BlY2lmaWMgdW5pdCB0ZXN0IGNv
bXBpbGF0aW9uIGNvbmRpdGlvbmFsIG9uIGd5cCB2YXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIuY3BwCmluZGV4IDk2ZmIwNWQ5NDUyYjExNzZlMjli
NDc3ZWE3ZjU4MzVlMmMzMTA4NWYuLjgzZDY4YWQwNzFlZGI2NTgyODI4ODlhYmJiMDA3ZjU3OGVi
YTI0NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ0NQcmlvcml0aXplZFRleHR1
cmUuaCIKICNpbmNsdWRlICJDQ1ByaW9yaXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkNDUHJv
eHkuaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCkBA
IC01OCw2ICs1OSw3IEBAIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcigpCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJp
b3JpdGl6ZVRleHR1cmVzKCkKIHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVzIik7CisgICAgQVNTRVJUKENDUHJv
eHk6OmlzTWFpblRocmVhZCgpKTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBhc3NlcnRJ
bnZhcmlhbnRzKCk7CkBAIC0xMzcsNiArMTM5LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcygpCiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1
cmVNYW5hZ2VyOjpjbGVhclByaW9yaXRpZXMoKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc01h
aW5UaHJlYWQoKSk7CiAgICAgZm9yIChUZXh0dXJlU2V0OjppdGVyYXRvciBpdCA9IG1fdGV4dHVy
ZXMuYmVnaW4oKTsgaXQgIT0gbV90ZXh0dXJlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHJlbW92ZSB0aGlzIGFuZCBqdXN0IHNldCBhbGwgcHJpb3JpdGllcyB0
bwogICAgICAgICAvLyAgICAgICAgQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5
KCkgb25jZSB3ZSBoYXZlIHByaW9yaXRpZXMKQEAgLTE0OCw2ICsxNTEsOCBAQCB2b2lkIENDUHJp
b3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y2xlYXJQcmlvcml0aWVzKCkKIAogYm9vbCBDQ1ByaW9y
aXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0
ZXh0dXJlKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKICAgICAv
LyBUaGlzIGlzIGFscmVhZHkgYWJvdmUgY3V0b2ZmLCBzbyBkb24ndCBkb3VibGUgY291bnQgaXQn
cyBtZW1vcnkgYmVsb3cuCiAgICAgaWYgKHRleHR1cmUtPmlzQWJvdmVQcmlvcml0eUN1dG9mZigp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE3MCw2ICsxNzUsNyBAQCBib29sIENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRl
eHR1cmUpCiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2lu
Z1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgQ0NSZXNvdXJj
ZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0lt
cGxUaHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpOwogICAgIEFTU0VS
VCghdGV4dHVyZS0+aXNTZWxmTWFuYWdlZCgpKTsKICAgICBBU1NFUlQodGV4dHVyZS0+aXNBYm92
ZVByaW9yaXR5Q3V0b2ZmKCkpOwogICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkgfHwgIXRleHR1
cmUtPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQpAQCAtMjA0LDYgKzIxMCw3IEBAIHZvaWQgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChD
Q1ByaW9yaXRpemVkVGV4CiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1
Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQ
cm92aWRlcikKIHsKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkgJiYgQ0NQcm94
eTo6aXNNYWluVGhyZWFkQmxvY2tlZCgpKTsKICAgICBpZiAobWVtb3J5VXNlQnl0ZXMoKSA8PSBs
aW1pdEJ5dGVzKQogICAgICAgICByZXR1cm47CiAgICAgLy8gRGVzdHJveSBiYWNraW5ncyB1bnRp
bCB3ZSBhcmUgYmVsb3cgdGhlIGxpbWl0LApAQCAtMjE4LDYgKzIyNSw3IEBAIHZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIEND
UmVzb3VyY2VQcm92CiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VN
ZW1vcnkoQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogeworICAgIEFTU0VS
VChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2Vk
KCkpOwogICAgIHJlZHVjZU1lbW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzLCByZXNvdXJjZVBy
b3ZpZGVyKTsKICAgICBBU1NFUlQobWVtb3J5VXNlQnl0ZXMoKSA8PSBtYXhNZW1vcnlMaW1pdEJ5
dGVzKCkpOwogCkBAIC0yNTksNiArMjY3LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmFsbEJhY2tpbmdUZXh0dXJlc1dlcmVEZWxldGVkKCkKIAogdm9pZCBDQ1ByaW9yaXRp
emVkVGV4dHVyZU1hbmFnZXI6OnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSog
dGV4dHVyZSkKIHsKKyAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIEFT
U0VSVCh0ZXh0dXJlKTsKICAgICBBU1NFUlQoIXRleHR1cmUtPnRleHR1cmVNYW5hZ2VyKCkpOwog
ICAgIEFTU0VSVCghdGV4dHVyZS0+YmFja2luZygpKTsKQEAgLTI3MSw2ICsyODAsNyBAQCB2b2lk
IENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmVnaXN0ZXJUZXh0dXJlKENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiB0ZXh0dXJlKQogCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
dW5yZWdpc3RlclRleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiB7CisgICAg
QVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpIHx8IChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQo
KSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpKTsKICAgICBBU1NFUlQodGV4dHVy
ZSk7CiAgICAgQVNTRVJUKG1fdGV4dHVyZXMuZmluZCh0ZXh0dXJlKSAhPSBtX3RleHR1cmVzLmVu
ZCgpKTsKIApAQCAtMjgwLDkgKzI5MCw5IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjp1bnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyCiAgICAg
dGV4dHVyZS0+c2V0QWJvdmVQcmlvcml0eUN1dG9mZihmYWxzZSk7CiB9CiAKLQogdm9pZCBDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKENDUHJpb3JpdGl6
ZWRUZXh0dXJlKiB0ZXh0dXJlKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQo
KSB8fCAoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxv
Y2tlZCgpKSk7CiAgICAgaWYgKHRleHR1cmUtPmJhY2tpbmcoKSkgewogICAgICAgICAvLyBNb3Zl
IHRoZSBiYWNraW5nIHRleHR1cmUgdG8gdGhlIGZyb250IGZvciBldmljdGlvbi9yZWN5Y2xpbmcg
YW5kIHVubGluayBpdC4KICAgICAgICAgbV9iYWNraW5ncy5yZW1vdmUodGV4dHVyZS0+YmFja2lu
ZygpKTsKQEAgLTI5Myw4ICszMDMsOCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6cmV0dXJuQmFja2luZ1RleHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleAogCiBDQ1By
aW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyogQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpj
cmVhdGVCYWNraW5nKEludFNpemUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCiB7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRo
cmVhZCgpICYmIENDUHJveHk6OmlzTWFpblRocmVhZEJsb2NrZWQoKSk7CiAgICAgQVNTRVJUKHJl
c291cmNlUHJvdmlkZXIpOwotCiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJl
c291cmNlSWQgPSByZXNvdXJjZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShtX3Bvb2wsIHNpemUs
IGZvcm1hdCwgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwogICAgIENDUHJp
b3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKiBiYWNraW5nID0gbmV3IENDUHJpb3JpdGl6ZWRUZXh0
dXJlOjpCYWNraW5nKHJlc291cmNlSWQsIHNpemUsIGZvcm1hdCk7CiAgICAgbV9tZW1vcnlVc2VC
eXRlcyArPSBiYWNraW5nLT5ieXRlcygpOwpAQCAtMzI0LDYgKzMzNCw4IEBAIHZvaWQgQ0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpkZXN0cm95QmFja2luZyhDQ1ByaW9yaXRpemVkVGV4dHVy
ZTo6QmFja2luZyoKICNpZiAhQVNTRVJUX0RJU0FCTEVECiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6YXNzZXJ0SW52YXJpYW50cygpCiB7CisgICAgQVNTRVJUKENDUHJveHk6Omlz
TWFpblRocmVhZCgpKTsKKwogICAgIC8vIElmIHdlIGhpdCBhbnkgb2YgdGhlc2UgYXNzZXJ0cywg
dGhlcmUgaXMgYSBidWcgaW4gdGhpcyBjbGFzcy4gVG8gc2VlCiAgICAgLy8gd2hlcmUgdGhlIGJ1
ZyBpcywgY2FsbCB0aGlzIGZ1bmN0aW9uIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZgogICAg
IC8vIGV2ZXJ5IHB1YmxpYyBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuaAppbmRleCBhNzNhNmFhMTcwM2MzZDRlM2RjZjczODM2ZWRiNGViYTE4N2E4MDllLi43MWY0
ZjRmNTdlY2U0YWRmMWU0NjVhMjQ4NTk5N2I1ZmM5MGEyZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oCkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIH07CiAKIC8v
IEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0
IHByZXRlbmRzIHRoYXQgdGhlCi0vLyBjb2RlIGlzIHJ1bm5pbmcgb24gdGhlIHRocmVhZCB0byBz
YXRpc2Z5IGFzc2VydGlvbiBjaGVja3MuCisvLyBjb2RlIGlzIHJ1bm5pbmcgb24gdGhlIGltcGwg
dGhyZWFkIHRvIHNhdGlzZnkgYXNzZXJ0aW9uIGNoZWNrcy4KIGNsYXNzIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCB7CiBwdWJsaWM6CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkKCkKQEAg
LTEzNyw2ICsxMzcsMTUgQEAgcHVibGljOgogICAgIH0KIH07CiAKKy8vIEZvciB1c2UgaW4gdGhl
IHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQg
dGhlCisvLyBjb2RlIGlzIHJ1bm5pbmcgb24gdGhlIGltcGwgdGhyZWFkIGFuZCB0aGF0IHRoZSBt
YWluIHRocmVhZCBpcyBibG9ja2VkIHRvCisvLyBzYXRpc2Z5IGFzc2VydGlvbiBjaGVja3MKK2Ns
YXNzIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkIHsKK3ByaXZh
dGU6CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIG1faW1wbFRocmVhZDsKKyAgICBEZWJ1
Z1Njb3BlZFNldE1haW5UaHJlYWRCbG9ja2VkIG1fbWFpblRocmVhZEJsb2NrZWQ7Cit9OworCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cAppbmRleCBmM2U5ZTBkOGEwNjkxM2E4YWEyYzJhN2FkNzA2YjhjOTQ1OWZmZTRkLi42ZDc0MzVk
NTY1NDRhMmEyMjdkNzhiNDMyNjQ3YWVlYTQ1NzRkMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcApAQCAtMTA5LDkgKzEwOSwxMiBAQCBib29sIENDVGhyZWFkUHJveHk6OmNvbXBvc2l0
ZUFuZFJlYWRiYWNrKHZvaWQgKnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKIAogCiAgICAg
Ly8gUGVyZm9ybSBhIHN5bmNocm9ub3VzIGNvbW1pdC4KLSAgICBDQ0NvbXBsZXRpb25FdmVudCBi
ZWdpbkZyYW1lQ29tcGxldGlvbjsKLSAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNr
KGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6Zm9yY2VCZWdpbkZyYW1l
T25JbXBsVGhyZWFkLCAmYmVnaW5GcmFtZUNvbXBsZXRpb24pKTsKLSAgICBiZWdpbkZyYW1lQ29t
cGxldGlvbi53YWl0KCk7CisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWRC
bG9ja2VkIG1haW5UaHJlYWRCbG9ja2VkOworICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBiZWdp
bkZyYW1lQ29tcGxldGlvbjsKKyAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmZvcmNlQmVnaW5GcmFt
ZU9uSW1wbFRocmVhZCwgJmJlZ2luRnJhbWVDb21wbGV0aW9uKSk7CisgICAgICAgIGJlZ2luRnJh
bWVDb21wbGV0aW9uLndhaXQoKTsKKyAgICB9CiAgICAgbV9pbkNvbXBvc2l0ZUFuZFJlYWRiYWNr
ID0gdHJ1ZTsKICAgICBiZWdpbkZyYW1lKCk7CiAgICAgbV9pbkNvbXBvc2l0ZUFuZFJlYWRiYWNr
ID0gZmFsc2U7CkBAIC0xMjAsOCArMTIzLDExIEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y29tcG9z
aXRlQW5kUmVhZGJhY2sodm9pZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIFJl
YWRiYWNrUmVxdWVzdCByZXF1ZXN0OwogICAgIHJlcXVlc3QucmVjdCA9IHJlY3Q7CiAgICAgcmVx
dWVzdC5waXhlbHMgPSBwaXhlbHM7Ci0gICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFz
ayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFj
a09uSW1wbFRocmVhZCwgJnJlcXVlc3QpKTsKLSAgICByZXF1ZXN0LmNvbXBsZXRpb24ud2FpdCgp
OworICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhy
ZWFkQmxvY2tlZDsKKyAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVh
dGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFja09uSW1w
bFRocmVhZCwgJnJlcXVlc3QpKTsKKyAgICAgICAgcmVxdWVzdC5jb21wbGV0aW9uLndhaXQoKTsK
KyAgICB9CiAgICAgcmV0dXJuIHJlcXVlc3Quc3VjY2VzczsKIH0KIApAQCAtMTU4LDYgKzE2NCw3
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKICAgICBBU1NFUlQo
Q0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIGFsbCBHTCBkcmF3
aW5nIGlzIGZpbmlzaGVkIG9uIHRoZSBpbXBsIHRocmVhZC4KKyAgICBEZWJ1Z1Njb3BlZFNldE1h
aW5UaHJlYWRCbG9ja2VkIG1haW5UaHJlYWRCbG9ja2VkOwogICAgIENDQ29tcGxldGlvbkV2ZW50
IGNvbXBsZXRpb247CiAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1w
bFRocmVhZCwgJmNvbXBsZXRpb24pKTsKICAgICBjb21wbGV0aW9uLndhaXQoKTsKQEAgLTE5Niw2
ICsyMDMsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OnNldFN1cmZhY2VSZWFkeU9uSW1wbFRocmVh
ZCgpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAg
IFRSQUNFX0VWRU5UMCgiY2MiLCAiQ0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZSIpOworICAgIERl
YnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbWFpblRocmVhZEJsb2NrZWQ7CiAgICAgQ0ND
b21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBv
c3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0VmlzaWJs
ZU9uSW1wbFRocmVhZCwgJmNvbXBsZXRpb24sIHZpc2libGUpKTsKICAgICBjb21wbGV0aW9uLndh
aXQoKTsKQEAgLTIxNyw2ICsyMjUsNyBAQCBib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVS
ZW5kZXJlcigpCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICBib29sIGlu
aXRpYWxpemVTdWNjZWVkZWQgPSBmYWxzZTsKICAgICBSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBh
YmlsaXRpZXM7CisgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFk
QmxvY2tlZDsKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZVJlbmRlcmVyT25JbXBsVGhy
ZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZjb21wbGV0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZpbml0aWFsaXplU3VjY2VlZGVkLApAQCAtMjQ5LDYgKzI1OCw3IEBA
IGJvb2wgQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBDQ0NvbXBsZXRpb25F
dmVudCBjb21wbGV0aW9uOwogICAgIGJvb2wgcmVjcmVhdGVTdWNjZWVkZWQgPSBmYWxzZTsKICAg
ICBSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXM7CisgICAgRGVidWdTY29wZWRTZXRN
YWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKICAgICBDQ1Byb3h5OjppbXBsVGhy
ZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
cmVjcmVhdGVDb250ZXh0T25JbXBsVGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wbGV0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGVha1B0cigp
LApAQCAtMjcxLDYgKzI4MSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJp
bmdTdGF0cyhDQ1JlbmRlcmluZ1N0YXRzJiBzdGF0cykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogCisgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFk
QmxvY2tlZDsKICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwogICAgIENDUHJveHk6
OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wbGV0aW9uLApA
QCAtMzg5LDYgKzQwMCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnQoKQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKENDUHJveHk6OmltcGxUaHJlYWQoKSk7CiAg
ICAgLy8gQ3JlYXRlIExheWVyVHJlZUhvc3RJbXBsLgorICAgIERlYnVnU2NvcGVkU2V0TWFpblRo
cmVhZEJsb2NrZWQgbWFpblRocmVhZEJsb2NrZWQ7CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29t
cGxldGlvbjsKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQs
ICZjb21wbGV0aW9uKSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7CkBAIC00MjAsNiArNDMyLDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpmb3Jj
ZVNlcmlhbGl6ZU9uU3dhcEJ1ZmZlcnMoKQogeworICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVh
ZEJsb2NrZWQgbWFpblRocmVhZEJsb2NrZWQ7CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxl
dGlvbjsKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFk
VGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6Zm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25J
bXBsVGhyZWFkLCAmY29tcGxldGlvbikpOwogICAgIGNvbXBsZXRpb24ud2FpdCgpOwpAQCAtNzQx
LDYgKzc1NCw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YWNxdWlyZUxheWVyVGV4dHVyZXMoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6
OmFjcXVpcmVMYXllclRleHR1cmVzIik7CisgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxv
Y2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9u
OwogICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5OjphY3F1aXJlTGF5ZXJUZXh0dXJlc0Zvck1haW5UaHJlYWRP
bkltcGxUaHJlYWQsICZjb21wbGV0aW9uKSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7IC8vIEJs
b2NrIHVudGlsIGl0IGlzIHNhZmUgdG8gd3JpdGUgdG8gbGF5ZXIgdGV4dHVyZXMgZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdC5jcHAKaW5kZXggNGJjYWNjZGMzYTlhMDc4ZmZiOGRk
ZjBlMTZlOGVkNDdkNGIzNzRmNy4uMzgzZmE1OTg3OWRkNGViZjc0M2U3Y2MzNDM1ZmE4NTBkNDkx
ZGZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRp
emVkVGV4dHVyZVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQ
cmlvcml0aXplZFRleHR1cmVUZXN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkND
VGlsZWRMYXllclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJGYWtlQ0NHcmFwaGljc0NvbnRleHQu
aCIKICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3Np
dG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dFRlc3RzOwpAQCAtNDYsMTQgKzQ3LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3RleHR1cmVG
b3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpCiAgICAgICAgICwgbV9jb250ZXh0KFdlYktp
dDo6Y3JlYXRlRmFrZUNDR3JhcGhpY3NDb250ZXh0KCkpCiAgICAgeworICAgICAgICBXZWJLaXQ6
OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXIgPSBDQ1Jlc291
cmNlUHJvdmlkZXI6OmNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgfkNDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCgpCiAgICAgewotICAgICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLmNs
ZWFyKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOworICAgICAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLmNsZWFyKCk7CisgICAg
ICAgIH0KKyAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0K
IAogICAgIHNpemVfdCB0ZXh0dXJlc01lbW9yeVNpemUoc2l6ZV90IHRleHR1cmVDb3VudCkKQEAg
LTY4LDEyICs3MywxMiBAQCBwdWJsaWM6CiAKICAgICBib29sIHZhbGlkYXRlVGV4dHVyZShPd25Q
dHI8Q0NQcmlvcml0aXplZFRleHR1cmU+JiB0ZXh0dXJlLCBib29sIHJlcXVlc3RMYXRlKQogICAg
IHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAjaWYgIUFT
U0VSVF9ESVNBQkxFRAogICAgICAgICB0ZXh0dXJlLT50ZXh0dXJlTWFuYWdlcigpLT5hc3NlcnRJ
bnZhcmlhbnRzKCk7CiAjZW5kaWYKICAgICAgICAgaWYgKHJlcXVlc3RMYXRlKQogICAgICAgICAg
ICAgdGV4dHVyZS0+cmVxdWVzdExhdGUoKTsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkQW5kTWFpblRocmVhZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwog
ICAgICAgICBib29sIHN1Y2Nlc3MgPSB0ZXh0dXJlLT5jYW5BY3F1aXJlQmFja2luZ1RleHR1cmUo
KTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICB0ZXh0dXJlLT5hY3F1aXJlQmFj
a2luZ1RleHR1cmUocmVzb3VyY2VQcm92aWRlcigpKTsKQEAgLTEyOCw3ICsxMzMsNyBAQCBURVNU
X0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVyZUV4Y2VlZGluZ01heExp
bWl0KQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0
dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4
dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92
ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQgaW1w
bFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFs
bE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCkBAIC0xNDksNyArMTU0LDcgQEAgVEVT
VF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgdmFsaWRhdGVU
ZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSk7CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFk
QW5kTWFpblRocmVhZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAg
ICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiAg
ICAgfQogCkBAIC0xNjIsNyArMTY3LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVz
dCwgY2hhbmdlTWVtb3J5TGltaXRzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4
dHVyZXM7ICsraSkKICAgICAgICAgRVhQRUNUX0VRKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tp
XSwgZmFsc2UpLCBpIDwgNSk7CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRo
cmVhZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAgICAgICB0ZXh0
dXJlTWFuYWdlci0+cmVkdWNlTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgfQogCkBA
IC0xNzUsMTQgKzE4MCwxNCBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFu
Z2VNZW1vcnlMaW1pdHMpCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsg
KytpKQogICAgICAgICBFWFBFQ1RfRVEodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxz
ZSksIGkgPCA0KTsKICAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxv
Y2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgICAgIHRleHR1cmVNYW5h
Z2VyLT5yZWR1Y2VNZW1vcnkocmVzb3VyY2VQcm92aWRlcigpKTsKICAgICB9CiAKICAgICBFWFBF
Q1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVD
dXRvZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5
dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAg
RGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9j
a2VkOwogICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVy
KCkpOwogfQogCkBAIC0yNDIsNyArMjQ3LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdCwgdGV4dHVyZU1hbmFnZXJQYXJ0aWFsVXBkYXRlVGV4dHVyZXMpCiAgICAgRVhQRUNUX0ZB
TFNFKHRleHR1cmVzWzJdLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KHRleHR1cmVzWzNdLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKLSAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRN
YWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgdGV4
dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKQEAg
LTI4Miw3ICsyODcsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJl
TWFuYWdlclByaW9yaXRpZXNBcmVFcXVhbCkKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlT
aXplKDgpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKICAgICBF
WFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2Vy
LT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVh
ZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAgIHRleHR1cmVNYW5h
Z2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCkBAIC0zMDIsNyAr
MzA3LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJE
ZXN0cm95ZWRGaXJzdCkKICAgICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1
cmUoKSk7CiAKICAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhy
ZWFkOworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tl
ZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgICAgIHRleHR1cmVNYW5hZ2Vy
LT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgIH0KICAgICB0ZXh0dXJl
TWFuYWdlci5jbGVhcigpOwpAQCAtMzMwLDcgKzMzNSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVk
VGV4dHVyZVRlc3QsIHRleHR1cmVNb3ZlZFRvTmV3TWFuYWdlcikKICAgICB0ZXh0dXJlLT5zZXRU
ZXh0dXJlTWFuYWdlcigwKTsKIAogICAgIHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhy
ZWFkIGltcGxUaHJlYWQ7CisgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZEFuZE1haW5U
aHJlYWRCbG9ja2VkIGltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZDsKICAgICAgICAgdGV4
dHVyZU1hbmFnZXJPbmUtPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAg
fQogICAgIHRleHR1cmVNYW5hZ2VyT25lLmNsZWFyKCk7CkBAIC0zNDYsNyArMzUxLDcgQEAgVEVT
VF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1vdmVkVG9OZXdNYW5hZ2VyKQog
ICAgIEVYUEVDVF9UUlVFKHRleHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKICAg
ICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKLSAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7
CiAgICAgdGV4dHVyZU1hbmFnZXJUd28tPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIo
KSk7CiB9CiAKQEAgLTM5Miw3ICszOTcsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290UwogICAg
IEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlG
b3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+
bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMo
KSk7CiAKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFp
blRocmVhZEJsb2NrZWQ7CiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291
cmNlUHJvdmlkZXIoKSk7CiB9CiAKQEAgLTQyOSw3ICs0MzQsNyBAQCBURVNUX0YoQ0NQcmlvcml0
aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZUZvclJl
cXVlc3RMYQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5h
Z2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0
dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3Zl
Q3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVh
ZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBs
VGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxs
TWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKQEAgLTQ2OSw3ICs0NzQsNyBAQCBURVNU
X0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJs
ZVRleHR1cmVzQWxzb05vdEF2YQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoMiks
IHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVY
UEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXIt
Pm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFk
QmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgdGV4dHVyZU1hbmFn
ZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CmluZGV4IDAwZWUyOGE2ODhlYTZkMjg1NTY3YTM3YTAwNzBkMzVhYTExYmY3MDUuLjY5ZTljNzVm
Y2VkOGUxMmIwY2M5ZTQ3Y2FjYWFkOTVmZTA1ZTRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtODAs
MjUgKzgwLDcxIEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3RleHR1cmVNYW5hZ2VyKENDUHJpb3Jp
dGl6ZWRUZXh0dXJlTWFuYWdlcjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJl
cjo6Q29udGVudFBvb2wpKQogICAgICAgICAsIG1fb2NjbHVzaW9uKDApCiAgICAgewotICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7
CiAgICAgICAgIG1fcmVzb3VyY2VQcm92aWRlciA9IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRl
KG1fY29udGV4dC5nZXQoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9t
aXVtVGVzdCgpCiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKLSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLmNsZWFyKCk7CisgICAgICAgIHRleHR1
cmVNYW5hZ2VyQ2xlYXJBbGxNZW1vcnkobV90ZXh0dXJlTWFuYWdlci5nZXQoKSwgbV9yZXNvdXJj
ZVByb3ZpZGVyLmdldCgpKTsKKyAgICAgICAgeworICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9j
a2VkOworICAgICAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLmNsZWFyKCk7CisgICAgICAgIH0K
KyAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAorICAg
IC8vIEhlbHBlciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgdGhhdCBzZXQgdGhlIGN1cnJlbnQgdGhy
ZWFkIHRvIGJlIHRoZSBpbXBsIHRocmVhZAorICAgIC8vIGJlZm9yZSBkb2luZyB0aGUgYWN0aW9u
IHRoYXQgdGhleSB3cmFwLgorICAgIGNsYXNzIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkK
KyAgICAgICAgeworICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CisgICAgICAgICAgICBtX2xheWVySW1wbCA9IG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbChp
ZCk7CisgICAgICAgIH0KKyAgICAgICAgflNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CisgICAgICAgICAgICBkZWxldGUgbV9sYXllckltcGw7CisgICAgICAgIH0KKyAgICAgICAgRmFr
ZUNDVGlsZWRMYXllckltcGwqIGdldCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBt
X2xheWVySW1wbDsKKyAgICAgICAgfQorICAgICAgICBGYWtlQ0NUaWxlZExheWVySW1wbCogb3Bl
cmF0b3ItPigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2xheWVySW1wbDsKKyAg
ICAgICAgfQorICAgIHByaXZhdGU6CisgICAgICAgIEZha2VDQ1RpbGVkTGF5ZXJJbXBsKiBtX2xh
eWVySW1wbDsKKyAgICB9OworICAgIHZvaWQgdGV4dHVyZU1hbmFnZXJDbGVhckFsbE1lbW9yeShD
Q1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyLCBDQ1Jlc291cmNlUHJv
dmlkZXIqIHJlc291cmNlUHJvdmlkZXIpCisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2Nr
ZWQ7CisgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3Zp
ZGVyKTsKKyAgICB9CiAgICAgdm9pZCB1cGRhdGVUZXh0dXJlcyhpbnQgY291bnQgPSA1MDApCiAg
ICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tl
ZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgICAgIENDVGV4dHVyZVVwZGF0
ZUNvbnRyb2xsZXI6OnVwZGF0ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1f
Y29waWVyLCAmbV91cGxvYWRlciwgJm1fcXVldWUsIGNvdW50KTsKICAgICB9CisgICAgdm9pZCBs
YXllclB1c2hQcm9wZXJ0aWVzVG8oRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKiBsYXllckltcGwpCisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJs
b2NrZWQ7CisgICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbCk7CisgICAg
fQorICAgIHZvaWQgbGF5ZXJVcGRhdGUoRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXIqIG9jY2x1ZGVkKQorICAgIHsKKyAgICAgICAgRGVidWdTY29w
ZWRTZXRNYWluVGhyZWFkIG1haW5UaHJlYWQ7CisgICAgICAgIGxheWVyLT51cGRhdGUobV9xdWV1
ZSwgb2NjbHVkZWQsIG1fc3RhdHMpOworICAgIH0KIAogICAgIGJvb2wgdXBkYXRlQW5kUHVzaChG
YWtlVGlsZWRMYXllckNocm9taXVtKiBsYXllcjEsCi0gICAgICAgICAgICAgICAgICAgICAgIEND
TGF5ZXJJbXBsKiBsYXllckltcGwxLAorICAgICAgICAgICAgICAgICAgICAgICBGYWtlQ0NUaWxl
ZExheWVySW1wbCogbGF5ZXJJbXBsMSwKICAgICAgICAgICAgICAgICAgICAgICAgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bSogbGF5ZXIyID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ0NMYXll
ckltcGwqIGxheWVySW1wbDIgPSAwKQorICAgICAgICAgICAgICAgICAgICAgICBGYWtlQ0NUaWxl
ZExheWVySW1wbCogbGF5ZXJJbXBsMiA9IDApCiAgICAgewogICAgICAgICAvLyBHZXQgdGV4dHVy
ZXMKICAgICAgICAgbV90ZXh0dXJlTWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7CkBAIC0xMjMs
OSArMTY5LDkgQEAgcHVibGljOgogICAgICAgICAvLyBVcGRhdGUgdGV4dHVyZXMgYW5kIHB1c2gu
CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAgICAgICAgIGlmIChsYXllcjEpCi0gICAgICAg
ICAgICBsYXllcjEtPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsMSk7CisgICAgICAgICAgICBs
YXllclB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIxLCBsYXllckltcGwxKTsKICAgICAgICAgaWYgKGxh
eWVyMikKLSAgICAgICAgICAgIGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwyKTsK
KyAgICAgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhsYXllcjIsIGxheWVySW1wbDIpOwog
CiAgICAgICAgIHJldHVybiBuZWVkc1VwZGF0ZTsKICAgICB9CkBAIC0xNDUsOCArMTkxLDcgQEAg
cHVibGljOgogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQog
ewogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBPd25QdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwo
MSkpKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXllckltcGwoMSk7CiAKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRo
ZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAy
MDApKTsKQEAgLTE3Miw4ICsyMTcsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaERpcnR5VGlsZXMpCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1
ZGVkRGlydHlUaWxlcykKIHsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5hZ2Vy
LmdldCgpKSk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAg
T3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKDEpKSk7CisgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5
ZXJJbXBsKDEpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAgICAgbV9v
Y2NsdXNpb24gPSAmb2NjbHVkZWQ7CiAKQEAgLTIwOSw4ICsyNTMsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogewogICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKLSAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1w
bChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKKyAgICBTY29wZWRGYWtl
Q0NUaWxlZExheWVySW1wbCBsYXllckltcGwoMSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlz
IDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4K
ICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKQEAgLTIyMywxMSArMjY2
LDExIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQog
ICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKIAogICAgIG1fdGV4
dHVyZU1hbmFnZXItPmNsZWFyUHJpb3JpdGllcygpOwotICAgIG1fdGV4dHVyZU1hbmFnZXItPmNs
ZWFyQWxsTWVtb3J5KG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgdGV4dHVyZU1hbmFn
ZXJDbGVhckFsbE1lbW9yeShtX3RleHR1cmVNYW5hZ2VyLmdldCgpLCBtX3Jlc291cmNlUHJvdmlk
ZXIuZ2V0KCkpOwogICAgIG1fdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMo
NCoxMDI0KjEwMjQpOwogCiAgICAgLy8gVGhpcyBzaG91bGQgZHJvcCB0aGUgdGlsZXMgb24gdGhl
IGltcGwgdGhyZWFkLgotICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQo
KSk7CisgICAgbGF5ZXJQdXNoUHJvcGVydGllc1RvKGxheWVyLmdldCgpLCBsYXllckltcGwuZ2V0
KCkpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5vdyBoYXZlIG5vIHRleHR1cmVzIG9uIHRoZSBpbXBs
IHRocmVhZC4KICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpA
QCAtMjQ1LDggKzI4OCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVs
ZXRlZFRpbGVzKQogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRU
aWxlcykKIHsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9w
dFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5hZ2VyLmdldCgpKSk7
Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5
ZXJJbXBsKDEpKSk7CisgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5ZXJJbXBsKDEp
OwogCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLiBTZXR1cCA1eDUgdGlsZXMgd2l0
aCBvbmUgdmlzaWJsZSB0aWxlIGluIHRoZSBjZW50ZXIuCiAgICAgLy8gVGhpcyBwYWludHMgMSB2
aXNpYmxlIG9mIHRoZSAyNSBpbnZhbGlkIHRpbGVzLgpAQCAtMjgzLDExICszMjUsMTAgQEAgVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVk
KQogewogICAgIC8vIFN0YXJ0IHdpdGggMm1iIG9mIG1lbW9yeSwgYnV0IHRoZSB0ZXN0IGlzIGdv
aW5nIHRvIHRyeSB0byB1c2UganVzdCBtb3JlIHRoYW4gMW1iLCBzbyB3ZSByZWR1Y2UgdG8gMW1i
IGxhdGVyLgogICAgIG1fdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoMiAq
IDEwMjQgKiAxMDI0KTsgICAgCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyMSA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAg
ICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbDEoYWRvcHRQdHIobmV3IEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CisgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwg
bGF5ZXJJbXBsMSgxKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsMihhZG9w
dFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMikpKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxl
ZExheWVySW1wbCBsYXllckltcGwyKDIpOwogCiAgICAgLy8gRm9yIHRoaXMgdGVzdCB3ZSBoYXZl
IHR3byBsYXllcnMuIGxheWVyMSBleGhhdXN0cyBtb3N0IHRleHR1cmUgbWVtb3J5LCBsZWF2aW5n
IHJvb20gZm9yIDIgbW9yZSB0aWxlcyBmcm9tCiAgICAgLy8gbGF5ZXIyLCBidXQgbm90IGFsbCB0
aHJlZSB0aWxlcy4gRmlyc3Qgd2UgcGFpbnQgbGF5ZXIxLCBhbmQgb25lIHRpbGUgZnJvbSBsYXll
cjIuIFRoZW4gd2hlbiB3ZSBpZGxlIHBhaW50CkBAIC0zMzcsOCArMzc4LDcgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogVEVT
VF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMp
CiB7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYo
bmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NU
aWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1w
bCgxKSkpOworICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwogICAgIG1fb2NjbHVzaW9uID0gJm9j
Y2x1ZGVkOwogICAgIApAQCAtMzU3LDggKzM5Nyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBwdXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHB1c2hUaWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiB7CiAgICAgUmVm
UHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxl
ZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVnU2NvcGVk
U2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOworICAg
IFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKIAogICAgIC8vIFRoZSB0
aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMg
dHdvIHRpbGVzLgogICAgIC8vIEhvd2V2ZXIsIGR1cmluZyB0aGUgcGFpbnQsIHdlIGludmFsaWRh
dGUgb25lIG9mIHRoZSB0aWxlcy4gVGhpcyBzaG91bGQKQEAgLTM3Nyw5ICs0MTYsOCBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmlu
Z1BhaW50T25OZXh0TGF5ZXIpCiB7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+
IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1h
bmFnZXIuZ2V0KCkpKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIy
ID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5n
ZXQoKSkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXIxSW1wbChhZG9wdFB0cihuZXcgRmFrZUND
VGlsZWRMYXllckltcGwoMSkpKTsKLSAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxh
eWVyMkltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDIpKSk7CisgICAgU2Nv
cGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5ZXIxSW1wbCgxKTsKKyAgICBTY29wZWRGYWtlQ0NU
aWxlZExheWVySW1wbCBsYXllcjJJbXBsKDIpOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUg
b24gbGF5ZXIxLCBkdXJpbmcgdXBkYXRlIG9mIGxheWVyIDIuCiAgICAgbGF5ZXIyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEw
MCwgNTApLCBsYXllcjEuZ2V0KCkpOwpAQCAtNDAxLDkgKzQzOSw4IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBwdXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblBy
ZXZpb3VzTGF5CiB7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyMSA9
IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRS
ZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwot
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtl
Q0NUaWxlZExheWVySW1wbD4gbGF5ZXIxSW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXll
ckltcGwoMSkpKTsKLSAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVyMkltcGwo
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDIpKSk7CisgICAgU2NvcGVkRmFrZUND
VGlsZWRMYXllckltcGwgbGF5ZXIxSW1wbCgxKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVy
SW1wbCBsYXllcjJJbXBsKDIpOwogCiAgICAgbGF5ZXIxLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRl
cigpLT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllcjIu
Z2V0KCkpOwogICAgIGxheWVyMS0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKQEAgLTQy
NCw3ICs0NjEsNiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFpbnRTbWFsbEFu
aW1hdGVkTGF5ZXJzSW1tZWRpYXRlbHkpCiB7CiAgICAgLy8gQ3JlYXRlIGEgQ0NMYXllclRyZWVI
b3N0IHRoYXQgaGFzIHRoZSByaWdodCB2aWV3cG9ydHNpemUsCiAgICAgLy8gc28gdGhlIGxheWVy
IGlzIGNvbnNpZGVyZWQgc21hbGwgZW5vdWdoLgotICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6
aW5pdGlhbGl6ZSgwKTsKICAgICBGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IGZha2VDQ0xheWVy
VHJlZUhvc3RDbGllbnQ7CiAgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVI
b3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQs
IENDTGF5ZXJUcmVlU2V0dGluZ3MoKSk7CiAKQEAgLTQ0MiwxMCArNDc4LDkgQEAgVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhaW50U21hbGxBbmltYXRlZExheWVyc0ltbWVkaWF0ZWx5
KQogICAgICAgICAgICAgbGF5ZXJXaWR0aCAqPSAyOwogCiAgICAgICAgIG1fdGV4dHVyZU1hbmFn
ZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWVtb3J5Rm9yTGF5ZXIpOwotICAgICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKIAogICAgICAgICBSZWZQdHI8RmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJv
bWl1bShtX3RleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgx
KSkpOworICAgICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXllckltcGwoMSk7CiAK
ICAgICAgICAgLy8gRnVsbCBzaXplIGxheWVyIHdpdGggaGFsZiBiZWluZyB2aXNpYmxlLgogICAg
ICAgICBJbnRTaXplIGNvbnRlbnRCb3VuZHMobGF5ZXJXaWR0aCwgbGF5ZXJIZWlnaHQpOwpAQCAt
NDY1LDcgKzUwMCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYWludFNtYWxs
QW5pbWF0ZWRMYXllcnNJbW1lZGlhdGVseSkKICAgICAgICAgbV90ZXh0dXJlTWFuYWdlci0+cHJp
b3JpdGl6ZVRleHR1cmVzKCk7CiAgICAgICAgIGxheWVyLT51cGRhdGUobV9xdWV1ZSwgMCwgbV9z
dGF0cyk7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKCk7Ci0gICAgICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNU
byhsYXllci5nZXQoKSwgbGF5ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAvLyBXZSBzaG91bGQg
aGF2ZSBhbGwgdGhlIHRpbGVzIGZvciB0aGUgc21hbGwgYW5pbWF0ZWQgbGF5ZXIuCiAgICAgICAg
IC8vIFdlIHNob3VsZCBzdGlsbCBoYXZlIHRoZSB2aXNpYmxlIHRpbGVzIHdoZW4gd2UgZGlkbid0
CkBAIC00ODMsMTQgKzUxOCwxMiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFp
bnRTbWFsbEFuaW1hdGVkTGF5ZXJzSW1tZWRpYXRlbHkpCiAgICAgICAgIH0KICAgICB9CiAgICAg
Y2NMYXllclRyZWVIb3N0LmNsZWFyKCk7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0
ZG93bigpOwogfQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0
T2ZNZW1vcnkpCiB7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0g
YWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQo
KSkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxl
ZExheWVySW1wbCgxKSkpOworICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1w
bCgxKTsKIAogICAgIC8vIFdlIGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJs
ZSByZWN0LCBzbyB3ZSB3aWxsIHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQu
CiAgICAgaW50IG1lbW9yeUxpbWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMSB0aWxlcywgNCBieXRl
cyBwZXIgcGl4ZWwuCkBAIC01MTMsOCArNTQ2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIGlkbGVQYWludE91dE9mTWVtb3J5KQogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIGlkbGVQYWludFplcm9TaXplZExheWVyKQogewogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1f
dGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKLSAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9w
dFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxl
ZExheWVySW1wbCBsYXllckltcGwoMSk7CiAKICAgICBib29sIGFuaW1hdGluZ1syXSA9IHtmYWxz
ZSwgdHJ1ZX07CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKQEAgLTU0MSw4ICs1
NzMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVk
TGF5ZXIpCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJs
ZUxheWVycykKIHsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBh
ZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5hZ2VyLmdldCgp
KSk7Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgT3duUHRy
PEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVk
TGF5ZXJJbXBsKDEpKSk7CisgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5ZXJJbXBs
KDEpOwogCiAgICAgLy8gQWx0ZXJuYXRlIGJldHdlZW4gbm90IHZpc2libGUgYW5kIHZpc2libGUu
CiAgICAgSW50UmVjdCB2KDAsIDAsIDEwMCwgMTAwKTsKQEAgLTU3Miw4ICs2MDMsNyBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUxheWVycykKIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiB7CiAg
ICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkp
OworICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKIAogICAgIC8v
IFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBw
YWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkp
OwpAQCAtNjA4LDcgKzYzOCw2IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJp
ZnlVcGRhdGVSZWN0V2hlbkNvbnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gVGhlIHVwZGF0
ZVJlY3QgKHRoYXQgaW5kaWNhdGVzIHdoYXQgd2FzIGFjdHVhbGx5IHBhaW50ZWQpIHNob3VsZCBi
ZSBpbgogICAgIC8vIGxheWVyIHNwYWNlLCBub3QgdGhlIGNvbnRlbnQgc3BhY2UuCiAgICAgUmVm
UHRyPEZha2VUaWxlZExheWVyV2l0aFNjYWxlZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJXaXRoU2NhbGVkQm91bmRzKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsK
LSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKIAogICAgIEludFJlY3Qg
bGF5ZXJCb3VuZHMoMCwgMCwgMzAwLCAyMDApOwogICAgIEludFJlY3QgY29udGVudEJvdW5kcygw
LCAwLCAyMDAsIDI1MCk7CkBAIC02NDcsOCArNjc2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHZlcmlmeVVwZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVu
dHNTY2FsZUNoYW5nZXMpCiB7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxh
eWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdl
ci5nZXQoKSkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAg
IE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtl
Q0NUaWxlZExheWVySW1wbCgxKSkpOworICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxh
eWVySW1wbCgxKTsKIAogICAgIC8vIENyZWF0ZSBhIGxheWVyIHdpdGggb25lIHRpbGUuCiAgICAg
bGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7CkBAIC02NjMsNyArNjkxLDcgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250
ZW50c1NjYWxlQ2hhbmdlcykKICAgICBtX3RleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKICAgICBsYXllci0+dXBkYXRlKG1fcXVldWUsIDAsIG1fc3RhdHMpOwogICAgIHVwZGF0
ZVRleHR1cmVzKCk7Ci0gICAgbGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgp
KTsKKyAgICBsYXllclB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIuZ2V0KCksIGxheWVySW1wbC5nZXQo
KSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogICAgIEVY
UEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7CiAgICAgRVhQRUNUX0ZBTFNF
KGxheWVySW1wbC0+aGFzVGlsZUF0KDEsIDApKTsKQEAgLTY4MCw3ICs3MDgsNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2Nh
bGVDaGFuZ2VzKQogICAgIG1fdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwog
ICAgIGxheWVyLT51cGRhdGUobV9xdWV1ZSwgMCwgbV9zdGF0cyk7CiAgICAgdXBkYXRlVGV4dHVy
ZXMoKTsKLSAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworICAg
IGxheWVyUHVzaFByb3BlcnRpZXNUbyhsYXllci5nZXQoKSwgbGF5ZXJJbXBsLmdldCgpKTsKICAg
ICBFWFBFQ1RfVFJVRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAgICAgRVhQRUNUX1RS
VUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMSkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1w
bC0+aGFzVGlsZUF0KDEsIDApKTsKQEAgLTY5Miw3ICs3MjAsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2Vz
KQogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7
CiAgICAgbV90ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXll
ci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworICAgIGxheWVyUHVzaFByb3Bl
cnRpZXNUbyhsYXllci5nZXQoKSwgbGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfRkFMU0Uo
bGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwt
Pmhhc1RpbGVBdCgwLCAxKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0
KDEsIDApKTsKQEAgLTcwMSw4ICs3MjksNiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogCiBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogewotICAgIC8vIElu
aXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KLSAgICBXZWJLaXQ6OldlYkNvbXBv
c2l0b3I6OmluaXRpYWxpemUoMCk7CiAgICAgRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCBmYWtl
Q0NMYXllclRyZWVIb3N0Q2xpZW50OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNjTGF5
ZXJUcmVlSG9zdCA9IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCZmYWtlQ0NMYXllclRyZWVIb3N0
Q2xpZW50LCBDQ0xheWVyVHJlZVNldHRpbmdzKCkpOwogICAgIEFTU0VSVF9UUlVFKGNjTGF5ZXJU
cmVlSG9zdC0+aW5pdGlhbGl6ZVJlbmRlcmVySWZOZWVkZWQoKSk7CkBAIC03NDQsMTAgKzc3MCw5
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAg
ICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV9xdWV1ZSwgbWVtb3J5TGltaXQpOwog
ICAgIEVYUEVDVF9GQUxTRShyb290TGF5ZXItPnNraXBzRHJhdygpKTsKIAotICAgIGNjTGF5ZXJU
cmVlSG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeShtX3Jlc291
cmNlUHJvdmlkZXIuZ2V0KCkpOworICAgIHRleHR1cmVNYW5hZ2VyQ2xlYXJBbGxNZW1vcnkoY2NM
YXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCksIG1fcmVzb3VyY2VQcm92aWRl
ci5nZXQoKSk7CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CiAgICAgY2NM
YXllclRyZWVIb3N0LmNsZWFyKCk7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93
bigpOwogfQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVy
KQpAQCAtNzgzLDkgKzgwOCw2IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBodWdl
TGF5ZXJVcGRhdGVDcmFzaCkKIAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRp
YWxVcGRhdGVzKQogewotICAgIC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9y
dC4KLSAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0KICAgICBDQ0xh
eWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwogICAgIHNldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJl
VXBkYXRlcyA9IDQ7CiAKQEAgLTgwOSw4ICs4MzEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgLy8gRnVsbCB1cGRhdGUgb2YgYWxsIDYgdGls
ZXMuCiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV9xdWV1ZSwgc3RkOjpudW1l
cmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7Cisg
ICAgICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKICAgICAgICAg
dXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1f
cXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CkBAIC04MTksNyArODQwLDcgQEAgVEVTVF9GKFRpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogICAgICAgICBFWFBFQ1RfRVEoMiwg
bGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAg
ICBFWFBFQ1RfRkFMU0UobV9xdWV1ZS5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXIt
PmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKLSAgICAgICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKKyAgICAgICAgbGF5ZXJQ
dXNoUHJvcGVydGllc1RvKGxheWVyLmdldCgpLCBsYXllckltcGwuZ2V0KCkpOwogICAgIH0KICAg
ICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTgyNyw4ICs4NDgsNyBA
QCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDMwMCwgMTUwKSk7CiAgICAg
Y2NMYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMobV9xdWV1ZSwgc3RkOjpudW1lcmljX2xpbWl0
czxzaXplX3Q+OjptYXgoKSk7CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKLSAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXll
ckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CisgICAgICAgIFNj
b3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKICAgICAgICAgdXBkYXRlVGV4
dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1fcXVldWUuaGFz
TW9yZVVwZGF0ZXMoKSk7CkBAIC04MzcsMTUgKzg1NywxNCBAQCBURVNUX0YoVGlsZWRMYXllckNo
cm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgICAgIEVYUEVDVF9FUSgzLCBsYXllci0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVD
VF9GQUxTRShtX3F1ZXVlLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxh
eWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwotICAgICAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworICAgICAgICBsYXllclB1c2hQcm9w
ZXJ0aWVzVG8obGF5ZXIuZ2V0KCksIGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQogICAgIGNjTGF5
ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9m
IDYgdGlsZXMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDUwLCA1
MCwgMjAwLCAxMDApKTsKICAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBp
bXBsVGhyZWFkOwotICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1w
bChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKKyAgICAgICAgU2NvcGVk
RmFrZUNDVGlsZWRMYXllckltcGwgbGF5ZXJJbXBsKDEpOwogICAgICAgICBjY0xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycyhtX3F1ZXVlLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1h
eCgpKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSgyLCBs
YXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CkBAIC04NTUs
MjQgKzg3NCwyMiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0
ZXMpCiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShtX3F1ZXVlLmhhc01vcmVV
cGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xl
YXJVcGRhdGVDb3VudCgpOwotICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllcklt
cGwuZ2V0KCkpOworICAgICAgICBsYXllclB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIuZ2V0KCksIGxh
eWVySW1wbC5nZXQoKSk7CiAgICAgfQogICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxl
dGUoKTsKIAogICAgIC8vIENoZWNrZXJib2FyZCBhbGwgdGlsZXMuCiAgICAgbGF5ZXItPmludmFs
aWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDMwMCwgMjAwKSk7CiAgICAgewotICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgT3duUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5
ZXJJbXBsKDEpKSk7Ci0gICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5n
ZXQoKSk7CisgICAgICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsK
KyAgICAgICAgbGF5ZXJQdXNoUHJvcGVydGllc1RvKGxheWVyLmdldCgpLCBsYXllckltcGwuZ2V0
KCkpOwogICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAg
ICAvLyBQYXJ0aWFsIHVwZGF0ZSBvZiA2IGNoZWNrZXJib2FyZCB0aWxlcy4KICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDEwMCkpOwogICAgIHsK
LSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIE93
blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NU
aWxlZExheWVySW1wbCgxKSkpOworICAgICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBs
YXllckltcGwoMSk7CiAgICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fcXVl
dWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRhdGVU
ZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJl
VXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKQEAgLTg4MiwzMSArODk5LDI2IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICAgICAgRVhQRUNUX0VR
KDIsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAg
ICAgICAgRVhQRUNUX0ZBTFNFKG1fcXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxh
eWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7Ci0gICAg
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAgICAgIGxh
eWVyUHVzaFByb3BlcnRpZXNUbyhsYXllci5nZXQoKSwgbGF5ZXJJbXBsLmdldCgpKTsKICAgICB9
CiAgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgLy8gUGFydGlh
bCB1cGRhdGUgb2YgNCB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KElu
dFJlY3QoNTAsIDUwLCAxMDAsIDEwMCkpOwogICAgIHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJ
bXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOworICAg
ICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXllckltcGwoMSk7CiAgICAgICAgIGNj
TGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fcXVldWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8
c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQ
RUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgp
KTsKICAgICAgICAgRVhQRUNUX0ZBTFNFKG1fcXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAg
ICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7
Ci0gICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAg
ICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhsYXllci5nZXQoKSwgbGF5ZXJJbXBsLmdldCgpKTsK
ICAgICB9CiAgICAgY2NMYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCi0gICAgewot
ICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgY2NM
YXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KG1f
cmVzb3VyY2VQcm92aWRlci5nZXQoKSk7Ci0gICAgfQorICAgIHRleHR1cmVNYW5hZ2VyQ2xlYXJB
bGxNZW1vcnkoY2NMYXllclRyZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCksIG1fcmVz
b3VyY2VQcm92aWRlci5nZXQoKSk7CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIo
MCk7CiAgICAgY2NMYXllclRyZWVIb3N0LmNsZWFyKCk7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3Np
dG9yOjpzaHV0ZG93bigpOwogfQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGls
ZXNQYWludGVkV2l0aG91dE9jY2x1c2lvbikKQEAgLTEwNTEsNyArMTA2Myw2IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9u
KQogICAgIGxheWVyLT51cGRhdGUobV9xdWV1ZSwgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKICAgICBF
WFBFQ1RfRVEoMzYtMywgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVS
ZWN0Q291bnQoKSk7CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoKTsKICAgICB9CiAKQEAgLTExNzgsNyAr
MTE4OSw2IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9w
YXF1ZVJlZ2lvbikKIHsKICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5hZ2VyLmdl
dCgpKSk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKLSAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMg
MTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGlu
IHZhcmlvdXMgd2F5cy4KIApAQCAtMTI3MSw3ICsxMjgxLDYgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHBpeGVsc1BhaW50ZWRNZXRyaWNzKQogewogICAgIFJlZlB0cjxGYWtlVGls
ZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9t
aXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
IG9jY2x1ZGVkOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogCiAg
ICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0
aGVuIHBhaW50cyB0d28gdGlsZXMgaW4gdmFyaW91cyB3YXlzLgogCkBAIC0xMzIyLDkgKzEzMzEs
NiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3Mp
CiAKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBkb250QWxsb2NhdGVDb250ZW50c1do
ZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhdGVkKQogewotICAgIC8vIEluaXRpYWxpemUgd2l0
aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KLSAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRp
YWxpemUoMCk7Ci0KICAgICAvLyBUaWxlIHNpemUgaXMgMTAweDEwMC4KICAgICBJbnRSZWN0IHJv
b3RSZWN0KDAsIDAsIDMwMCwgMjAwKTsKICAgICBJbnRSZWN0IGNoaWxkUmVjdCgwLCAwLCAzMDAs
IDEwMCk7CkBAIC0xMzczLDcgKzEzNzksNiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVz
dCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9jYQogICAg
IGNoaWxkMi0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwogICAgIGNjTGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fcXVldWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkpOwogICAgIHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxU
aHJlYWQ7CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwogICAgICAgICBFWFBFQ1RfRVEo
Niwgcm9vdC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAg
ICAgIEVYUEVDVF9FUSgzLCBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRl
Q291bnQoKSk7CkBAIC0xMzg0LDEyICsxMzg5LDEyIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21p
dW1UZXN0LCBkb250QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2Nh
CiAgICAgICAgIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNv
dW50KCk7CiAgICAgICAgIGNoaWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJV
cGRhdGVDb3VudCgpOwogCi0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gcm9v
dEltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKHJvb3QtPmlkKCkpKSk7Ci0g
ICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gY2hpbGRJbXBsKGFkb3B0UHRyKG5l
dyBGYWtlQ0NUaWxlZExheWVySW1wbChjaGlsZC0+aWQoKSkpKTsKLSAgICAgICAgT3duUHRyPEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZDJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExh
eWVySW1wbChjaGlsZDItPmlkKCkpKSk7Ci0gICAgICAgIHJvb3QtPnB1c2hQcm9wZXJ0aWVzVG8o
cm9vdEltcGwuZ2V0KCkpOwotICAgICAgICBjaGlsZC0+cHVzaFByb3BlcnRpZXNUbyhjaGlsZElt
cGwuZ2V0KCkpOwotICAgICAgICBjaGlsZDItPnB1c2hQcm9wZXJ0aWVzVG8oY2hpbGQySW1wbC5n
ZXQoKSk7CisgICAgICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIHJvb3RJbXBsKHJvb3Qt
PmlkKCkpOworICAgICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBjaGlsZEltcGwoY2hp
bGQtPmlkKCkpOworICAgICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBjaGlsZDJJbXBs
KGNoaWxkMi0+aWQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhyb290LmdldCgp
LCByb290SW1wbC5nZXQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhjaGlsZC5n
ZXQoKSwgY2hpbGRJbXBsLmdldCgpKTsKKyAgICAgICAgbGF5ZXJQdXNoUHJvcGVydGllc1RvKGNo
aWxkMi5nZXQoKSwgY2hpbGQySW1wbC5nZXQoKSk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IDM7ICsraSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8
IDI7ICsraikKQEAgLTE0MDgsNyArMTQxMyw2IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBkb250QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAg
ICAgY2hpbGQyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY2hpbGQyUmVjdCk7CiAgICAgY2NMYXll
clRyZWVIb3N0LT51cGRhdGVMYXllcnMobV9xdWV1ZSwgKDMgKiAyICsgMyAqIDEpICogKDEwMCAq
IDEwMCkgKiA0KTsKICAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOwogICAgICAgICB1cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICAgICAgRVhQRUNUX0VR
KDYsIHJvb3QtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAg
ICAgICBFWFBFQ1RfRVEoMCwgY2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0
ZUNvdW50KCkpOwpAQCAtMTQxOSwxMiArMTQyMywxMiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9j
YQogICAgICAgICBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVD
b3VudCgpOwogICAgICAgICBjaGlsZDItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFy
VXBkYXRlQ291bnQoKTsKIAotICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IHJv
b3RJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbChyb290LT5pZCgpKSkpOwot
ICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGNoaWxkSW1wbChhZG9wdFB0cihu
ZXcgRmFrZUNDVGlsZWRMYXllckltcGwoY2hpbGQtPmlkKCkpKSk7Ci0gICAgICAgIE93blB0cjxG
YWtlQ0NUaWxlZExheWVySW1wbD4gY2hpbGQySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRM
YXllckltcGwoY2hpbGQyLT5pZCgpKSkpOwotICAgICAgICByb290LT5wdXNoUHJvcGVydGllc1Rv
KHJvb3RJbXBsLmdldCgpKTsKLSAgICAgICAgY2hpbGQtPnB1c2hQcm9wZXJ0aWVzVG8oY2hpbGRJ
bXBsLmdldCgpKTsKLSAgICAgICAgY2hpbGQyLT5wdXNoUHJvcGVydGllc1RvKGNoaWxkMkltcGwu
Z2V0KCkpOworICAgICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCByb290SW1wbChyb290
LT5pZCgpKTsKKyAgICAgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgY2hpbGRJbXBsKGNo
aWxkLT5pZCgpKTsKKyAgICAgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgY2hpbGQySW1w
bChjaGlsZDItPmlkKCkpOworICAgICAgICBsYXllclB1c2hQcm9wZXJ0aWVzVG8ocm9vdC5nZXQo
KSwgcm9vdEltcGwuZ2V0KCkpOworICAgICAgICBsYXllclB1c2hQcm9wZXJ0aWVzVG8oY2hpbGQu
Z2V0KCksIGNoaWxkSW1wbC5nZXQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhj
aGlsZDIuZ2V0KCksIGNoaWxkMkltcGwuZ2V0KCkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCAzOyArK2kpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGog
PCAyOyArK2opCkBAIC0xNDQ0LDcgKzE0NDgsNiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9jYQog
ICAgIGNoaWxkMi0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwogICAgIGNjTGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fcXVldWUsICgzICogMSkgKiAoMTAwICogMTAwKSAq
IDQpOwogICAgIHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7
CiAgICAgICAgIHVwZGF0ZVRleHR1cmVzKDEwMDApOwogICAgICAgICBFWFBFQ1RfRVEoMCwgcm9v
dC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVY
UEVDVF9FUSgwLCBjaGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQo
KSk7CkBAIC0xNDU1LDEyICsxNDU4LDEyIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0
LCBkb250QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAg
ICAgIGNoaWxkLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7
CiAgICAgICAgIGNoaWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVD
b3VudCgpOwogCi0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gcm9vdEltcGwo
YWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKHJvb3QtPmlkKCkpKSk7Ci0gICAgICAg
IE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gY2hpbGRJbXBsKGFkb3B0UHRyKG5ldyBGYWtl
Q0NUaWxlZExheWVySW1wbChjaGlsZC0+aWQoKSkpKTsKLSAgICAgICAgT3duUHRyPEZha2VDQ1Rp
bGVkTGF5ZXJJbXBsPiBjaGlsZDJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1w
bChjaGlsZDItPmlkKCkpKSk7Ci0gICAgICAgIHJvb3QtPnB1c2hQcm9wZXJ0aWVzVG8ocm9vdElt
cGwuZ2V0KCkpOwotICAgICAgICBjaGlsZC0+cHVzaFByb3BlcnRpZXNUbyhjaGlsZEltcGwuZ2V0
KCkpOwotICAgICAgICBjaGlsZDItPnB1c2hQcm9wZXJ0aWVzVG8oY2hpbGQySW1wbC5nZXQoKSk7
CisgICAgICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIHJvb3RJbXBsKHJvb3QtPmlkKCkp
OworICAgICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBjaGlsZEltcGwoY2hpbGQtPmlk
KCkpOworICAgICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBjaGlsZDJJbXBsKGNoaWxk
Mi0+aWQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhyb290LmdldCgpLCByb290
SW1wbC5nZXQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhjaGlsZC5nZXQoKSwg
Y2hpbGRJbXBsLmdldCgpKTsKKyAgICAgICAgbGF5ZXJQdXNoUHJvcGVydGllc1RvKGNoaWxkMi5n
ZXQoKSwgY2hpbGQySW1wbC5nZXQoKSk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IDM7ICsraSkgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IDI7ICsr
aikKQEAgLTE0NzEsMTMgKzE0NzQsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
ZG9udEFsbG9jYXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9jYQogICAgIH0K
ICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKLSAgICB7Ci0gICAgICAg
IERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAgICBjY0xheWVyVHJl
ZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxNZW1vcnkobV9yZXNvdXJj
ZVByb3ZpZGVyLmdldCgpKTsKLSAgICB9CisgICAgdGV4dHVyZU1hbmFnZXJDbGVhckFsbE1lbW9y
eShjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSwgbV9yZXNvdXJjZVBy
b3ZpZGVyLmdldCgpKTsKICAgICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcigwKTsKICAg
ICBjY0xheWVyVHJlZUhvc3QuY2xlYXIoKTsKLSAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNo
dXRkb3duKCk7CiB9CiAKIGNsYXNzIFRyYWNraW5nTGF5ZXJQYWludGVyIDogcHVibGljIExheWVy
UGFpbnRlckNocm9taXVtIHsKQEAgLTE1NDEsMTEgKzE1NDAsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgbm9uSW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmlu
Z1BhaW50KQogICAgIGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5yZXNldFBhaW50ZWRS
ZWN0KCk7CiAKICAgICBFWFBFQ1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgpLCBsYXllci0+dHJhY2tp
bmdMYXllclBhaW50ZXIoKS0+cGFpbnRlZFJlY3QoKSk7Ci0KLSAgICB7Ci0gICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAgICB1cGRhdGVUZXh0dXJlcygp
OwotICAgIH0KKyAgICB1cGRhdGVUZXh0dXJlcygpOwogCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUg
ZW50aXJlIGxheWVyIGluIGNvbnRlbnQgc3BhY2UuIFdoZW4gcGFpbnRpbmcsIHRoZSByZWN0IGdp
dmVuIHRvIHdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIGxheWVyJ3MgYm91bmRzLgogICAgIGxheWVy
LT5pbnZhbGlkYXRlQ29udGVudFJlY3QoY29udGVudFJlY3QpOwpAQCAtMTU3NSwxMSArMTU3MCw3
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2Fs
ZUlzTm90RGlzdG9ydGVkRHVyaW5nSW52YWxpCiAgICAgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWlu
dGVyKCktPnJlc2V0UGFpbnRlZFJlY3QoKTsKIAogICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRS
ZWN0KCksIGxheWVyLT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5wYWludGVkUmVjdCgpKTsKLQot
ICAgIHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAg
ICAgIHVwZGF0ZVRleHR1cmVzKCk7Ci0gICAgfQorICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAKICAg
ICAvLyBJbnZhbGlkYXRlIHRoZSBlbnRpcmUgbGF5ZXIgaW4gbGF5ZXIgc3BhY2UuIFdoZW4gcGFp
bnRpbmcsIHRoZSByZWN0IGdpdmVuIHRvIHdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIGxheWVyJ3Mg
Ym91bmRzLgogICAgIGxheWVyLT5zZXROZWVkc0Rpc3BsYXlSZWN0KGxheWVyUmVjdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161759</attachid>
            <date>2012-08-31 13:35:05 -0700</date>
            <delta_ts>2012-08-31 14:11:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95596-20120831133452.patch</filename>
            <type>text/plain</type>
            <size>53101</size>
            <attacher name="Christopher Cameron">ccameron</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWM3YTQzNmQ1Y2NjZGE0
ZDExYWMyMjUwNDFlYmYzYTA1NjdlN2RjMS4uZjViZWMzZDg0NzdlMDFhZTA5ZTdiZGE2ODQ1NjM5
YTkwYzBlZmU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA4LTMxICBDaHJp
c3RvcGhlciBDYW1lcm9uICA8Y2NhbWVyb25AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJv
bWl1bV0gQWRkIG1haW4gdmVyc3VzIGltcGwgdGhyZWFkIGFzc2VydHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NTk2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFzc2VydHMgdG8gcHJpb3JpdGl6
ZWQgdGV4dHVyZSBtYW5hZ2VyIHRoYXQgc3BlY2lmeSB0aGF0IGEKKyAgICAgICAgZnVuY3Rpb24g
YmUgY2FsbGVkIG9uIHRoZSBtYWluIG9yIGltcGwgdGhyZWFkLgorCisgICAgICAgIEFkZCBkZWJ1
ZyBzaWducyB0aGF0IHRoZSBtYWluIHRocmVhZCBpcyBibG9ja2VkIHRvIHRoZSB0aHJlYWRlZAor
ICAgICAgICBwcm94eS4KKworICAgICAgICBBZGQgYSBtZWNoYW5pc20gdG8gc2ltdWx0YW5lb3Vz
bHkgc2V0IHRoZSB0aHJlYWQgdG8gdGhlIGltcGwgdGhyZWFkCisgICAgICAgIGFuZCBpbmRpY2F0
ZSB0aGF0IHRoZSBtYWluIHRocmVhZCBpcyBibG9ja2VkLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0
cyB0aGF0IGhpdCBhc3NlcnRzIGluIHRoZSBwcmlvcml0aXplZCB0ZXh0dXJlIG1hbmFnZXIgdG8K
KyAgICAgICAgc2V0IHRoZWlyIGltcGwgdGhyZWFkIGFuZCBtYWluIHRocmVhZCBibG9ja2VkIHN0
YXRlIGNvcnJlY3RseS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1By
aW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRpemVUZXh0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmNsZWFyUHJpb3JpdGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJlcXVlc3RMYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YWNxdWly
ZUJhY2tpbmdUZXh0dXJlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlvcml0aXpl
ZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q0NQcmlv
cml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWdpc3RlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjp1bnJlZ2lzdGVyVGV4dHVyZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnJldHVybkJhY2tpbmdU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
Y3JlYXRlQmFja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OmFzc2VydEludmFyaWFudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNldFZpc2libGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDVGhyZWFkUHJveHk6OnJlY3JlYXRlQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpD
Q1RocmVhZFByb3h5OjppbXBsU2lkZVJlbmRlcmluZ1N0YXRzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVGhyZWFkUHJveHk6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6
OmZvcmNlU2VyaWFsaXplT25Td2FwQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVh
ZFByb3h5OjphY3F1aXJlTGF5ZXJUZXh0dXJlcyk6CisKIDIwMTItMDgtMzAgIFByYXRpayBTb2xh
bmtpICA8cHNvbGFua2lAYXBwbGUuY29tPgogCiAgICAgICAgIG9iamNfbXNnU2VuZCBhbmQgSU1Q
IHNob3VsZCBiZSBjYXN0IGFwcHJvcHJpYXRlbHkgYmVmb3JlIHVzaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGY1OTc1OGJlNDE1YTY0ODIxZGM5M2Y3OGI4MjdhN2FjMjUzYmQ2ZWYu
LjRhNDFlMTc5Y2IyZTJiOGE0YzNmNTVlMDZhY2M4MjI5NDQ2MmVlNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDgtMzEgIENocmlzdG9waGVyIENh
bWVyb24gIDxjY2FtZXJvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQg
bWFpbiB2ZXJzdXMgaW1wbCB0aHJlYWQgYXNzZXJ0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYXNzZXJ0cyB0byBwcmlvcml0aXplZCB0ZXh0dXJl
IG1hbmFnZXIgdGhhdCBzcGVjaWZ5IHRoYXQgYQorICAgICAgICBmdW5jdGlvbiBiZSBjYWxsZWQg
b24gdGhlIG1haW4gb3IgaW1wbCB0aHJlYWQuCisKKyAgICAgICAgQWRkIGRlYnVnIHNpZ25zIHRo
YXQgdGhlIG1haW4gdGhyZWFkIGlzIGJsb2NrZWQgdG8gdGhlIHRocmVhZGVkCisgICAgICAgIHBy
b3h5LgorCisgICAgICAgIEFkZCBhIG1lY2hhbmlzbSB0byBzaW11bHRhbmVvdXNseSBzZXQgdGhl
IHRocmVhZCB0byB0aGUgaW1wbCB0aHJlYWQKKyAgICAgICAgYW5kIGluZGljYXRlIHRoYXQgdGhl
IG1haW4gdGhyZWFkIGlzIGJsb2NrZWQuCisKKyAgICAgICAgVXBkYXRlIHRlc3RzIHRoYXQgaGl0
IGFzc2VydHMgaW4gdGhlIHByaW9yaXRpemVkIHRleHR1cmUgbWFuYWdlciB0bworICAgICAgICBz
ZXQgdGhlaXIgaW1wbCB0aHJlYWQgYW5kIG1haW4gdGhyZWFkIGJsb2NrZWQgc3RhdGUgY29ycmVj
dGx5LgorCisgICAgICAgICogdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LmNwcDoKKyAg
ICAgICAgKFdURjo6Q0NQcmlvcml0aXplZFRleHR1cmVUZXN0OjpDQ1ByaW9yaXRpemVkVGV4dHVy
ZVRlc3QpOgorICAgICAgICAoV1RGOjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3Q6On5DQ1ByaW9y
aXRpemVkVGV4dHVyZVRlc3QpOgorICAgICAgICAoV1RGOjpDQ1ByaW9yaXRpemVkVGV4dHVyZVRl
c3Q6OnZhbGlkYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6CisKIDIwMTItMDgtMzAgIEphbWVzIFJv
Ymluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1ha2Ug
d2Via2l0X2NvbXBvc2l0b3Igc3BlY2lmaWMgdW5pdCB0ZXN0IGNvbXBpbGF0aW9uIGNvbmRpdGlv
bmFsIG9uIGd5cCB2YXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXIuY3BwCmluZGV4IDk2ZmIwNWQ5NDUyYjExNzZlMjliNDc3ZWE3ZjU4MzVlMmMzMTA4
NWYuLjgzZDY4YWQwNzFlZGI2NTgyODI4ODlhYmJiMDA3ZjU3OGViYTI0NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJpb3JpdGl6
ZWRUZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyLmNwcApAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiQ0NQcmlvcml0aXplZFRleHR1cmUuaCIKICNpbmNsdWRlICJD
Q1ByaW9yaXR5Q2FsY3VsYXRvci5oIgorI2luY2x1ZGUgIkNDUHJveHkuaCIKICNpbmNsdWRlICJU
cmFjZUV2ZW50LmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCkBAIC01OCw2ICs1OSw3IEBAIEND
UHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6fkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcigp
CiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cHJpb3JpdGl6ZVRleHR1cmVzKCkK
IHsKICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6
cHJpb3JpdGl6ZVRleHR1cmVzIik7CisgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgp
KTsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBhc3NlcnRJbnZhcmlhbnRzKCk7CkBAIC0x
MzcsNiArMTM5LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OnByaW9yaXRp
emVUZXh0dXJlcygpCiAKIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjbGVhclBy
aW9yaXRpZXMoKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAgICAg
Zm9yIChUZXh0dXJlU2V0OjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuYmVnaW4oKTsgaXQgIT0g
bV90ZXh0dXJlcy5lbmQoKTsgKytpdCkgewogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJl
bW92ZSB0aGlzIGFuZCBqdXN0IHNldCBhbGwgcHJpb3JpdGllcyB0bwogICAgICAgICAvLyAgICAg
ICAgQ0NQcmlvcml0eUNhbGN1bGF0b3I6Omxvd2VzdFByaW9yaXR5KCkgb25jZSB3ZSBoYXZlIHBy
aW9yaXRpZXMKQEAgLTE0OCw2ICsxNTEsOCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFu
YWdlcjo6Y2xlYXJQcmlvcml0aWVzKCkKIAogYm9vbCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFn
ZXI6OnJlcXVlc3RMYXRlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJlKQogeworICAgIEFT
U0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKICAgICAvLyBUaGlzIGlzIGFscmVhZHkg
YWJvdmUgY3V0b2ZmLCBzbyBkb24ndCBkb3VibGUgY291bnQgaXQncyBtZW1vcnkgYmVsb3cuCiAg
ICAgaWYgKHRleHR1cmUtPmlzQWJvdmVQcmlvcml0eUN1dG9mZigpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE3MCw2ICsxNzUsNyBAQCBib29sIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6cmVxdWVzdExhdGUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiAKIHZvaWQgQ0NQ
cmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChD
Q1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSwgQ0NSZXNvdXJjZVByb3ZpZGVyKiByZXNvdXJj
ZVByb3ZpZGVyKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSAmJiBDQ1By
b3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpOwogICAgIEFTU0VSVCghdGV4dHVyZS0+aXNTZWxm
TWFuYWdlZCgpKTsKICAgICBBU1NFUlQodGV4dHVyZS0+aXNBYm92ZVByaW9yaXR5Q3V0b2ZmKCkp
OwogICAgIGlmICh0ZXh0dXJlLT5iYWNraW5nKCkgfHwgIXRleHR1cmUtPmlzQWJvdmVQcmlvcml0
eUN1dG9mZigpKQpAQCAtMjA0LDYgKzIxMCw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVN
YW5hZ2VyOjphY3F1aXJlQmFja2luZ1RleHR1cmVJZk5lZWRlZChDQ1ByaW9yaXRpemVkVGV4CiAK
IHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxp
bWl0Qnl0ZXMsIENDUmVzb3VyY2VQcm92aWRlciogcmVzb3VyY2VQcm92aWRlcikKIHsKKyAgICBB
U1NFUlQoQ0NQcm94eTo6aXNJbXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxv
Y2tlZCgpKTsKICAgICBpZiAobWVtb3J5VXNlQnl0ZXMoKSA8PSBsaW1pdEJ5dGVzKQogICAgICAg
ICByZXR1cm47CiAgICAgLy8gRGVzdHJveSBiYWNraW5ncyB1bnRpbCB3ZSBhcmUgYmVsb3cgdGhl
IGxpbWl0LApAQCAtMjE4LDYgKzIyNSw3IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpyZWR1Y2VNZW1vcnkoc2l6ZV90IGxpbWl0Qnl0ZXMsIENDUmVzb3VyY2VQcm92CiAKIHZv
aWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpyZWR1Y2VNZW1vcnkoQ0NSZXNvdXJjZVBy
b3ZpZGVyKiByZXNvdXJjZVByb3ZpZGVyKQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc0ltcGxU
aHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01haW5UaHJlYWRCbG9ja2VkKCkpOwogICAgIHJlZHVjZU1l
bW9yeShtX21lbW9yeUF2YWlsYWJsZUJ5dGVzLCByZXNvdXJjZVByb3ZpZGVyKTsKICAgICBBU1NF
UlQobWVtb3J5VXNlQnl0ZXMoKSA8PSBtYXhNZW1vcnlMaW1pdEJ5dGVzKCkpOwogCkBAIC0yNTks
NiArMjY3LDcgQEAgdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6OmFsbEJhY2tpbmdU
ZXh0dXJlc1dlcmVEZWxldGVkKCkKIAogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1hbmFnZXI6
OnJlZ2lzdGVyVGV4dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyZSkKIHsKKyAgICBB
U1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVCh0ZXh0dXJlKTsKICAg
ICBBU1NFUlQoIXRleHR1cmUtPnRleHR1cmVNYW5hZ2VyKCkpOwogICAgIEFTU0VSVCghdGV4dHVy
ZS0+YmFja2luZygpKTsKQEAgLTI3MSw2ICsyODAsNyBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0
dXJlTWFuYWdlcjo6cmVnaXN0ZXJUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJl
KQogCiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6dW5yZWdpc3RlclRleHR1cmUo
Q0NQcmlvcml0aXplZFRleHR1cmUqIHRleHR1cmUpCiB7CisgICAgQVNTRVJUKENDUHJveHk6Omlz
TWFpblRocmVhZCgpIHx8IChDQ1Byb3h5Ojppc0ltcGxUaHJlYWQoKSAmJiBDQ1Byb3h5Ojppc01h
aW5UaHJlYWRCbG9ja2VkKCkpKTsKICAgICBBU1NFUlQodGV4dHVyZSk7CiAgICAgQVNTRVJUKG1f
dGV4dHVyZXMuZmluZCh0ZXh0dXJlKSAhPSBtX3RleHR1cmVzLmVuZCgpKTsKIApAQCAtMjgwLDkg
KzI5MCw5IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjp1bnJlZ2lzdGVyVGV4
dHVyZShDQ1ByaW9yaXRpemVkVGV4dHVyZSogdGV4dHVyCiAgICAgdGV4dHVyZS0+c2V0QWJvdmVQ
cmlvcml0eUN1dG9mZihmYWxzZSk7CiB9CiAKLQogdm9pZCBDQ1ByaW9yaXRpemVkVGV4dHVyZU1h
bmFnZXI6OnJldHVybkJhY2tpbmdUZXh0dXJlKENDUHJpb3JpdGl6ZWRUZXh0dXJlKiB0ZXh0dXJl
KQogeworICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSB8fCAoQ0NQcm94eTo6aXNJ
bXBsVGhyZWFkKCkgJiYgQ0NQcm94eTo6aXNNYWluVGhyZWFkQmxvY2tlZCgpKSk7CiAgICAgaWYg
KHRleHR1cmUtPmJhY2tpbmcoKSkgewogICAgICAgICAvLyBNb3ZlIHRoZSBiYWNraW5nIHRleHR1
cmUgdG8gdGhlIGZyb250IGZvciBldmljdGlvbi9yZWN5Y2xpbmcgYW5kIHVubGluayBpdC4KICAg
ICAgICAgbV9iYWNraW5ncy5yZW1vdmUodGV4dHVyZS0+YmFja2luZygpKTsKQEAgLTI5Myw4ICsz
MDMsOCBAQCB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6cmV0dXJuQmFja2luZ1Rl
eHR1cmUoQ0NQcmlvcml0aXplZFRleHR1cmUqIHRleAogCiBDQ1ByaW9yaXRpemVkVGV4dHVyZTo6
QmFja2luZyogQ0NQcmlvcml0aXplZFRleHR1cmVNYW5hZ2VyOjpjcmVhdGVCYWNraW5nKEludFNp
emUgc2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCiB7CisgICAgQVNTRVJUKENDUHJveHk6OmlzSW1wbFRocmVhZCgpICYmIENDUHJveHk6
OmlzTWFpblRocmVhZEJsb2NrZWQoKSk7CiAgICAgQVNTRVJUKHJlc291cmNlUHJvdmlkZXIpOwot
CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIHJlc291cmNlSWQgPSByZXNvdXJj
ZVByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShtX3Bvb2wsIHNpemUsIGZvcm1hdCwgQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VBbnkpOwogICAgIENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpC
YWNraW5nKiBiYWNraW5nID0gbmV3IENDUHJpb3JpdGl6ZWRUZXh0dXJlOjpCYWNraW5nKHJlc291
cmNlSWQsIHNpemUsIGZvcm1hdCk7CiAgICAgbV9tZW1vcnlVc2VCeXRlcyArPSBiYWNraW5nLT5i
eXRlcygpOwpAQCAtMzI0LDYgKzMzNCw4IEBAIHZvaWQgQ0NQcmlvcml0aXplZFRleHR1cmVNYW5h
Z2VyOjpkZXN0cm95QmFja2luZyhDQ1ByaW9yaXRpemVkVGV4dHVyZTo6QmFja2luZyoKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiB2b2lkIENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdlcjo6YXNzZXJ0
SW52YXJpYW50cygpCiB7CisgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKwog
ICAgIC8vIElmIHdlIGhpdCBhbnkgb2YgdGhlc2UgYXNzZXJ0cywgdGhlcmUgaXMgYSBidWcgaW4g
dGhpcyBjbGFzcy4gVG8gc2VlCiAgICAgLy8gd2hlcmUgdGhlIGJ1ZyBpcywgY2FsbCB0aGlzIGZ1
bmN0aW9uIGF0IHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZgogICAgIC8vIGV2ZXJ5IHB1YmxpYyBm
dW5jdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBhNzNhNmFh
MTcwM2MzZDRlM2RjZjczODM2ZWRiNGViYTE4N2E4MDllLi43MWY0ZjRmNTdlY2U0YWRmMWU0NjVh
MjQ4NTk5N2I1ZmM5MGEyZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
CkBAIC0xMDIsNyArMTAyLDcgQEAgcHJpdmF0ZToKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNp
bmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhl
Ci0vLyBjb2RlIGlzIHJ1bm5pbmcgb24gdGhlIHRocmVhZCB0byBzYXRpc2Z5IGFzc2VydGlvbiBj
aGVja3MuCisvLyBjb2RlIGlzIHJ1bm5pbmcgb24gdGhlIGltcGwgdGhyZWFkIHRvIHNhdGlzZnkg
YXNzZXJ0aW9uIGNoZWNrcy4KIGNsYXNzIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCB7CiBwdWJs
aWM6CiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkKCkKQEAgLTEzNyw2ICsxMzcsMTUgQEAg
cHVibGljOgogICAgIH0KIH07CiAKKy8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBj
YXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCisvLyBjb2RlIGlzIHJ1
bm5pbmcgb24gdGhlIGltcGwgdGhyZWFkIGFuZCB0aGF0IHRoZSBtYWluIHRocmVhZCBpcyBibG9j
a2VkIHRvCisvLyBzYXRpc2Z5IGFzc2VydGlvbiBjaGVja3MKK2NsYXNzIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkIHsKK3ByaXZhdGU6CisgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIG1faW1wbFRocmVhZDsKKyAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJl
YWRCbG9ja2VkIG1fbWFpblRocmVhZEJsb2NrZWQ7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCBmM2U5ZTBkOGEw
NjkxM2E4YWEyYzJhN2FkNzA2YjhjOTQ1OWZmZTRkLi42ZDc0MzVkNTY1NDRhMmEyMjdkNzhiNDMy
NjQ3YWVlYTQ1NzRkMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMTA5LDkg
KzEwOSwxMiBAQCBib29sIENDVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUFuZFJlYWRiYWNrKHZvaWQg
KnBpeGVscywgY29uc3QgSW50UmVjdCYgcmVjdCkKIAogCiAgICAgLy8gUGVyZm9ybSBhIHN5bmNo
cm9ub3VzIGNvbW1pdC4KLSAgICBDQ0NvbXBsZXRpb25FdmVudCBiZWdpbkZyYW1lQ29tcGxldGlv
bjsKLSAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
ayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6Zm9yY2VCZWdpbkZyYW1lT25JbXBsVGhyZWFkLCAmYmVn
aW5GcmFtZUNvbXBsZXRpb24pKTsKLSAgICBiZWdpbkZyYW1lQ29tcGxldGlvbi53YWl0KCk7Cisg
ICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWRCbG9ja2VkIG1haW5UaHJlYWRC
bG9ja2VkOworICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBiZWdpbkZyYW1lQ29tcGxldGlvbjsK
KyAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmZvcmNlQmVnaW5GcmFtZU9uSW1wbFRocmVhZCwgJmJl
Z2luRnJhbWVDb21wbGV0aW9uKSk7CisgICAgICAgIGJlZ2luRnJhbWVDb21wbGV0aW9uLndhaXQo
KTsKKyAgICB9CiAgICAgbV9pbkNvbXBvc2l0ZUFuZFJlYWRiYWNrID0gdHJ1ZTsKICAgICBiZWdp
bkZyYW1lKCk7CiAgICAgbV9pbkNvbXBvc2l0ZUFuZFJlYWRiYWNrID0gZmFsc2U7CkBAIC0xMjAs
OCArMTIzLDExIEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6Y29tcG9zaXRlQW5kUmVhZGJhY2sodm9p
ZCAqcGl4ZWxzLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIFJlYWRiYWNrUmVxdWVzdCByZXF1
ZXN0OwogICAgIHJlcXVlc3QucmVjdCA9IHJlY3Q7CiAgICAgcmVxdWVzdC5waXhlbHMgPSBwaXhl
bHM7Ci0gICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZCwgJnJl
cXVlc3QpKTsKLSAgICByZXF1ZXN0LmNvbXBsZXRpb24ud2FpdCgpOworICAgIHsKKyAgICAgICAg
RGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKKyAgICAg
ICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhp
cywgJkNDVGhyZWFkUHJveHk6OnJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZCwgJnJlcXVlc3Qp
KTsKKyAgICAgICAgcmVxdWVzdC5jb21wbGV0aW9uLndhaXQoKTsKKyAgICB9CiAgICAgcmV0dXJu
IHJlcXVlc3Quc3VjY2VzczsKIH0KIApAQCAtMTU4LDYgKzE2NCw3IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nKCkKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhy
ZWFkKCkpOwogCiAgICAgLy8gTWFrZSBzdXJlIGFsbCBHTCBkcmF3aW5nIGlzIGZpbmlzaGVkIG9u
IHRoZSBpbXBsIHRocmVhZC4KKyAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWRCbG9ja2VkIG1h
aW5UaHJlYWRCbG9ja2VkOwogICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CiAgICAg
Q0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywg
JkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCwgJmNvbXBsZXRp
b24pKTsKICAgICBjb21wbGV0aW9uLndhaXQoKTsKQEAgLTE5Niw2ICsyMDMsNyBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnNldFN1cmZhY2VSZWFkeU9uSW1wbFRocmVhZCgpCiB2b2lkIENDVGhyZWFk
UHJveHk6OnNldFZpc2libGUoYm9vbCB2aXNpYmxlKQogewogICAgIFRSQUNFX0VWRU5UMCgiY2Mi
LCAiQ0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZSIpOworICAgIERlYnVnU2NvcGVkU2V0TWFpblRo
cmVhZEJsb2NrZWQgbWFpblRocmVhZEJsb2NrZWQ7CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29t
cGxldGlvbjsKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhy
ZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZU9uSW1wbFRocmVhZCwgJmNv
bXBsZXRpb24sIHZpc2libGUpKTsKICAgICBjb21wbGV0aW9uLndhaXQoKTsKQEAgLTIxNyw2ICsy
MjUsNyBAQCBib29sIENDVGhyZWFkUHJveHk6OmluaXRpYWxpemVSZW5kZXJlcigpCiAgICAgQ0ND
b21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICBib29sIGluaXRpYWxpemVTdWNjZWVkZWQg
PSBmYWxzZTsKICAgICBSZW5kZXJlckNhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXM7CisgICAgRGVi
dWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKICAgICBDQ1By
b3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6aW5pdGlhbGl6ZVJlbmRlcmVyT25JbXBsVGhyZWFkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wbGV0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZp
bml0aWFsaXplU3VjY2VlZGVkLApAQCAtMjQ5LDYgKzI1OCw3IEBAIGJvb2wgQ0NUaHJlYWRQcm94
eTo6cmVjcmVhdGVDb250ZXh0KCkKICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwog
ICAgIGJvb2wgcmVjcmVhdGVTdWNjZWVkZWQgPSBmYWxzZTsKICAgICBSZW5kZXJlckNhcGFiaWxp
dGllcyBjYXBhYmlsaXRpZXM7CisgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBt
YWluVGhyZWFkQmxvY2tlZDsKICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cmVjcmVhdGVDb250ZXh0T25J
bXBsVGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZjb21wbGV0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubGVha1B0cigpLApAQCAtMjcxLDYgKzI4MSw3
IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6aW1wbFNpZGVSZW5kZXJpbmdTdGF0cyhDQ1JlbmRlcmlu
Z1N0YXRzJiBzdGF0cykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCisgICAgRGVi
dWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxvY2tlZDsKICAgICBDQ0Nv
bXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwogICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9z
dFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjppbXBsU2lkZVJl
bmRlcmluZ1N0YXRzT25JbXBsVGhyZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wbGV0aW9uLApAQCAtMzg5LDYgKzQwMCw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RhcnQoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKENDUHJveHk6OmltcGxUaHJlYWQoKSk7CiAgICAgLy8gQ3JlYXRlIExheWVy
VHJlZUhvc3RJbXBsLgorICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbWFpblRo
cmVhZEJsb2NrZWQ7CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICBDQ1By
b3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NU
aHJlYWRQcm94eTo6aW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQsICZjb21wbGV0aW9uKSk7CiAg
ICAgY29tcGxldGlvbi53YWl0KCk7CkBAIC00MjAsNiArNDMyLDcgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpzdG9wKCkKIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpmb3JjZVNlcmlhbGl6ZU9uU3dhcEJ1
ZmZlcnMoKQogeworICAgIERlYnVnU2NvcGVkU2V0TWFpblRocmVhZEJsb2NrZWQgbWFpblRocmVh
ZEJsb2NrZWQ7CiAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICBDQ1Byb3h5
OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6Zm9yY2VTZXJpYWxpemVPblN3YXBCdWZmZXJzT25JbXBsVGhyZWFkLCAmY29tcGxl
dGlvbikpOwogICAgIGNvbXBsZXRpb24ud2FpdCgpOwpAQCAtNzQxLDYgKzc1NCw3IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6YWNxdWlyZUxheWVyVGV4dHVyZXMoKQogICAgICAgICByZXR1cm47CiAK
ICAgICBUUkFDRV9FVkVOVDAoImNjIiwgIkNDVGhyZWFkUHJveHk6OmFjcXVpcmVMYXllclRleHR1
cmVzIik7CisgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkQmxvY2tlZCBtYWluVGhyZWFkQmxv
Y2tlZDsKICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwogICAgIENDUHJveHk6Omlt
cGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5OjphY3F1aXJlTGF5ZXJUZXh0dXJlc0Zvck1haW5UaHJlYWRPbkltcGxUaHJlYWQsICZjb21w
bGV0aW9uKSk7CiAgICAgY29tcGxldGlvbi53YWl0KCk7IC8vIEJsb2NrIHVudGlsIGl0IGlzIHNh
ZmUgdG8gd3JpdGUgdG8gbGF5ZXIgdGV4dHVyZXMgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0dXJl
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUHJpb3JpdGl6ZWRUZXh0
dXJlVGVzdC5jcHAKaW5kZXggNGJjYWNjZGMzYTlhMDc4ZmZiOGRkZjBlMTZlOGVkNDdkNGIzNzRm
Ny4uMzgzZmE1OTg3OWRkNGViZjc0M2U3Y2MzNDM1ZmE4NTBkNDkxZGZlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NQcmlvcml0aXplZFRleHR1cmVU
ZXN0LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21t
b24uaCIKICNpbmNsdWRlICJGYWtlQ0NHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlIDxndGVz
dC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwpAQCAtNDYsMTQg
KzQ3LDE4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3RleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpCiAgICAgICAgICwgbV9jb250ZXh0KFdlYktpdDo6Y3JlYXRlRmFrZUNDR3Jh
cGhpY3NDb250ZXh0KCkpCiAgICAgeworICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6Omlu
aXRpYWxpemUoMCk7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFk
OwogICAgICAgICBtX3Jlc291cmNlUHJvdmlkZXIgPSBDQ1Jlc291cmNlUHJvdmlkZXI6OmNyZWF0
ZShtX2NvbnRleHQuZ2V0KCkpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfkNDUHJpb3JpdGl6ZWRU
ZXh0dXJlVGVzdCgpCiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1w
bFRocmVhZDsKLSAgICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLmNsZWFyKCk7CisgICAgICAgIHsK
KyAgICAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAg
ICAgICAgbV9yZXNvdXJjZVByb3ZpZGVyLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogICAgIHNpemVfdCB0ZXh0
dXJlc01lbW9yeVNpemUoc2l6ZV90IHRleHR1cmVDb3VudCkKQEAgLTY4LDEyICs3MywxMiBAQCBw
dWJsaWM6CiAKICAgICBib29sIHZhbGlkYXRlVGV4dHVyZShPd25QdHI8Q0NQcmlvcml0aXplZFRl
eHR1cmU+JiB0ZXh0dXJlLCBib29sIHJlcXVlc3RMYXRlKQogICAgIHsKLSAgICAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAg
ICAgICB0ZXh0dXJlLT50ZXh0dXJlTWFuYWdlcigpLT5hc3NlcnRJbnZhcmlhbnRzKCk7CiAjZW5k
aWYKICAgICAgICAgaWYgKHJlcXVlc3RMYXRlKQogICAgICAgICAgICAgdGV4dHVyZS0+cmVxdWVz
dExhdGUoKTsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVhZEJs
b2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAgICAgICBib29sIHN1Y2Nl
c3MgPSB0ZXh0dXJlLT5jYW5BY3F1aXJlQmFja2luZ1RleHR1cmUoKTsKICAgICAgICAgaWYgKHN1
Y2Nlc3MpCiAgICAgICAgICAgICB0ZXh0dXJlLT5hY3F1aXJlQmFja2luZ1RleHR1cmUocmVzb3Vy
Y2VQcm92aWRlcigpKTsKQEAgLTEyOCw3ICsxMzMsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LCByZXF1ZXN0VGV4dHVyZUV4Y2VlZGluZ01heExpbWl0KQogICAgIEVYUEVDVF9F
USh0ZXh0dXJlc01lbW9yeVNpemUobWF4VGV4dHVyZXMpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5
QWJvdmVDdXRvZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9y
eVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwog
Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJl
YWRCbG9ja2VkOwogICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVBy
b3ZpZGVyKCkpOwogfQogCkBAIC0xNDksNyArMTU0LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGltaXRzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAgICAgdmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ld
LCBmYWxzZSk7CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKKyAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2Nr
ZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAgICAgICB0ZXh0dXJlTWFuYWdl
ci0+cmVkdWNlTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgfQogCkBAIC0xNjIsNyAr
MTY3LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgY2hhbmdlTWVtb3J5TGlt
aXRzKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4VGV4dHVyZXM7ICsraSkKICAgICAg
ICAgRVhQRUNUX0VRKHZhbGlkYXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSwgZmFsc2UpLCBpIDwgNSk7
CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAg
ICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQgaW1wbFRo
cmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAgICAgICB0ZXh0dXJlTWFuYWdlci0+cmVkdWNl
TWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgfQogCkBAIC0xNzUsMTQgKzE4MCwxNCBA
QCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBjaGFuZ2VNZW1vcnlMaW1pdHMpCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhUZXh0dXJlczsgKytpKQogICAgICAgICBFWFBF
Q1RfRVEodmFsaWRhdGVUZXh0dXJlKHRleHR1cmVzW2ldLCBmYWxzZSksIGkgPCA0KTsKICAgICB7
Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5k
TWFpblRocmVhZEJsb2NrZWQ7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5yZWR1Y2VNZW1vcnko
cmVzb3VyY2VQcm92aWRlcigpKTsKICAgICB9CiAKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1v
cnlTaXplKDQpLCB0ZXh0dXJlTWFuYWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKICAg
ICBFWFBFQ1RfTEUodGV4dHVyZU1hbmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5h
Z2VyLT5tZW1vcnlBYm92ZUN1dG9mZkJ5dGVzKCkpOwogCi0gICAgRGVidWdTY29wZWRTZXRJbXBs
VGhyZWFkIGltcGxUaHJlYWQ7CisgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRo
cmVhZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAgIHRleHR1cmVN
YW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCkBAIC0yNDIs
NyArMjQ3LDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFn
ZXJQYXJ0aWFsVXBkYXRlVGV4dHVyZXMpCiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVzWzJdLT5o
YXZlQmFja2luZ1RleHR1cmUoKSk7CiAgICAgRVhQRUNUX0ZBTFNFKHRleHR1cmVzWzNdLT5oYXZl
QmFja2luZ1RleHR1cmUoKSk7CiAKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBp
bXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFy
QWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKQEAgLTI4Miw3ICsyODcsNyBAQCBU
RVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCB0ZXh0dXJlTWFuYWdlclByaW9yaXRpZXNB
cmVFcXVhbCkKICAgICBFWFBFQ1RfRVEodGV4dHVyZXNNZW1vcnlTaXplKDgpLCB0ZXh0dXJlTWFu
YWdlci0+bWVtb3J5QWJvdmVDdXRvZmZCeXRlcygpKTsKICAgICBFWFBFQ1RfTEUodGV4dHVyZU1h
bmFnZXItPm1lbW9yeVVzZUJ5dGVzKCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlBYm92ZUN1dG9m
ZkJ5dGVzKCkpOwogCi0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Cisg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQgaW1wbFRocmVh
ZEFuZE1haW5UaHJlYWRCbG9ja2VkOwogICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9y
eShyZXNvdXJjZVByb3ZpZGVyKCkpOwogfQogCkBAIC0zMDIsNyArMzA3LDcgQEAgVEVTVF9GKEND
UHJpb3JpdGl6ZWRUZXh0dXJlVGVzdCwgdGV4dHVyZU1hbmFnZXJEZXN0cm95ZWRGaXJzdCkKICAg
ICBFWFBFQ1RfVFJVRSh0ZXh0dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKICAgICB7Ci0g
ICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOworICAgICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFp
blRocmVhZEJsb2NrZWQ7CiAgICAgICAgIHRleHR1cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShy
ZXNvdXJjZVByb3ZpZGVyKCkpOwogICAgIH0KICAgICB0ZXh0dXJlTWFuYWdlci5jbGVhcigpOwpA
QCAtMzMwLDcgKzMzNSw3IEBAIFRFU1RfRihDQ1ByaW9yaXRpemVkVGV4dHVyZVRlc3QsIHRleHR1
cmVNb3ZlZFRvTmV3TWFuYWdlcikKICAgICB0ZXh0dXJlLT5zZXRUZXh0dXJlTWFuYWdlcigwKTsK
IAogICAgIHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Cisg
ICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkIGltcGxU
aHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZDsKICAgICAgICAgdGV4dHVyZU1hbmFnZXJPbmUtPmNs
ZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiAgICAgfQogICAgIHRleHR1cmVNYW5h
Z2VyT25lLmNsZWFyKCk7CkBAIC0zNDYsNyArMzUxLDcgQEAgVEVTVF9GKENDUHJpb3JpdGl6ZWRU
ZXh0dXJlVGVzdCwgdGV4dHVyZU1vdmVkVG9OZXdNYW5hZ2VyKQogICAgIEVYUEVDVF9UUlVFKHRl
eHR1cmUtPmNhbkFjcXVpcmVCYWNraW5nVGV4dHVyZSgpKTsKICAgICBFWFBFQ1RfVFJVRSh0ZXh0
dXJlLT5oYXZlQmFja2luZ1RleHR1cmUoKSk7CiAKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFk
QmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgdGV4dHVyZU1hbmFn
ZXJUd28tPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKQEAgLTM5Miw3
ICszOTcsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCByZW5kZXJTdXJmYWNl
c1JlZHVjZU1lbW9yeUF2YWlsYWJsZU91dHNpZGVSb290UwogICAgIEVYUEVDVF9FUSh0ZXh0dXJl
c01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1
cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwg
dGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAKLSAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAg
ICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9
CiAKQEAgLTQyOSw3ICs0MzQsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRleHR1cmVUZXN0LCBy
ZW5kZXJTdXJmYWNlc1JlZHVjZU1lbW9yeUF2YWlsYWJsZUZvclJlcXVlc3RMYQogICAgIEVYUEVD
VF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoNCksIHRleHR1cmVNYW5hZ2VyLT5tZW1vcnlGb3JTZWxm
TWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFuYWdlci0+bWVtb3J5
VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2ZmQnl0ZXMoKSk7CiAK
LSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVh
ZEJsb2NrZWQ7CiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KHJlc291cmNlUHJv
dmlkZXIoKSk7CiB9CiAKQEAgLTQ2OSw3ICs0NzQsNyBAQCBURVNUX0YoQ0NQcmlvcml0aXplZFRl
eHR1cmVUZXN0LCB3aGVuUmVuZGVyU3VyZmFjZU5vdEF2YWlsYWJsZVRleHR1cmVzQWxzb05vdEF2
YQogICAgIEVYUEVDVF9FUSh0ZXh0dXJlc01lbW9yeVNpemUoMiksIHRleHR1cmVNYW5hZ2VyLT5t
ZW1vcnlGb3JTZWxmTWFuYWdlZFRleHR1cmVzKCkpOwogICAgIEVYUEVDVF9MRSh0ZXh0dXJlTWFu
YWdlci0+bWVtb3J5VXNlQnl0ZXMoKSwgdGV4dHVyZU1hbmFnZXItPm1lbW9yeUFib3ZlQ3V0b2Zm
Qnl0ZXMoKSk7CiAKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKKyAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFk
QW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5
KHJlc291cmNlUHJvdmlkZXIoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IDAwZWUyOGE2ODhl
YTZkMjg1NTY3YTM3YTAwNzBkMzVhYTExYmY3MDUuLjY5ZTljNzVmY2VkOGUxMmIwY2M5ZTQ3Y2Fj
YWFkOTVmZTA1ZTRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtODAsMjUgKzgwLDcxIEBAIHB1Ymxp
YzoKICAgICAgICAgLCBtX3RleHR1cmVNYW5hZ2VyKENDUHJpb3JpdGl6ZWRUZXh0dXJlTWFuYWdl
cjo6Y3JlYXRlKDYwKjEwMjQqMTAyNCwgMTAyNCwgQ0NSZW5kZXJlcjo6Q29udGVudFBvb2wpKQog
ICAgICAgICAsIG1fb2NjbHVzaW9uKDApCiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKKyAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0
aWFsaXplKDApOworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFk
QmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CiAgICAgICAgIG1fcmVzb3Vy
Y2VQcm92aWRlciA9IENDUmVzb3VyY2VQcm92aWRlcjo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtVGVzdCgpCiAgICAgewot
ICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgbV9y
ZXNvdXJjZVByb3ZpZGVyLmNsZWFyKCk7CisgICAgICAgIHRleHR1cmVNYW5hZ2VyQ2xlYXJBbGxN
ZW1vcnkobV90ZXh0dXJlTWFuYWdlci5nZXQoKSwgbV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsK
KyAgICAgICAgeworICAgICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkQW5kTWFpblRo
cmVhZEJsb2NrZWQgaW1wbFRocmVhZEFuZE1haW5UaHJlYWRCbG9ja2VkOworICAgICAgICAgICAg
bV9yZXNvdXJjZVByb3ZpZGVyLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAorICAgIC8vIEhlbHBlciBjbGFzc2Vz
IGFuZCBmdW5jdGlvbnMgdGhhdCBzZXQgdGhlIGN1cnJlbnQgdGhyZWFkIHRvIGJlIHRoZSBpbXBs
IHRocmVhZAorICAgIC8vIGJlZm9yZSBkb2luZyB0aGUgYWN0aW9uIHRoYXQgdGhleSB3cmFwLgor
ICAgIGNsYXNzIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsKGludCBpZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgICAgICBt
X2xheWVySW1wbCA9IG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbChpZCk7CisgICAgICAgIH0KKyAg
ICAgICAgflNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CisgICAgICAgICAgICBkZWxl
dGUgbV9sYXllckltcGw7CisgICAgICAgIH0KKyAgICAgICAgRmFrZUNDVGlsZWRMYXllckltcGwq
IGdldCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2xheWVySW1wbDsKKyAgICAg
ICAgfQorICAgICAgICBGYWtlQ0NUaWxlZExheWVySW1wbCogb3BlcmF0b3ItPigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBtX2xheWVySW1wbDsKKyAgICAgICAgfQorICAgIHByaXZh
dGU6CisgICAgICAgIEZha2VDQ1RpbGVkTGF5ZXJJbXBsKiBtX2xheWVySW1wbDsKKyAgICB9Owor
ICAgIHZvaWQgdGV4dHVyZU1hbmFnZXJDbGVhckFsbE1lbW9yeShDQ1ByaW9yaXRpemVkVGV4dHVy
ZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyLCBDQ1Jlc291cmNlUHJvdmlkZXIqIHJlc291cmNlUHJv
dmlkZXIpCisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhy
ZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CisgICAgICAgIHRleHR1
cmVNYW5hZ2VyLT5jbGVhckFsbE1lbW9yeShyZXNvdXJjZVByb3ZpZGVyKTsKKyAgICB9CiAgICAg
dm9pZCB1cGRhdGVUZXh0dXJlcyhpbnQgY291bnQgPSA1MDApCiAgICAgeworICAgICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWluVGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFp
blRocmVhZEJsb2NrZWQ7CiAgICAgICAgIENDVGV4dHVyZVVwZGF0ZUNvbnRyb2xsZXI6OnVwZGF0
ZVRleHR1cmVzKG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSwgJm1fY29waWVyLCAmbV91cGxvYWRl
ciwgJm1fcXVldWUsIGNvdW50KTsKICAgICB9CisgICAgdm9pZCBsYXllclB1c2hQcm9wZXJ0aWVz
VG8oRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEZha2VDQ1RpbGVkTGF5ZXJJbXBsKiBs
YXllckltcGwpCisgICAgeworICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWRBbmRNYWlu
VGhyZWFkQmxvY2tlZCBpbXBsVGhyZWFkQW5kTWFpblRocmVhZEJsb2NrZWQ7CisgICAgICAgIGxh
eWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbCk7CisgICAgfQorICAgIHZvaWQgbGF5ZXJV
cGRhdGUoRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXIqIG9jY2x1ZGVkKQorICAgIHsKKyAgICAgICAgRGVidWdTY29wZWRTZXRNYWluVGhyZWFkIG1h
aW5UaHJlYWQ7CisgICAgICAgIGxheWVyLT51cGRhdGUobV9xdWV1ZSwgb2NjbHVkZWQsIG1fc3Rh
dHMpOworICAgIH0KIAogICAgIGJvb2wgdXBkYXRlQW5kUHVzaChGYWtlVGlsZWRMYXllckNocm9t
aXVtKiBsYXllcjEsCi0gICAgICAgICAgICAgICAgICAgICAgIENDTGF5ZXJJbXBsKiBsYXllcklt
cGwxLAorICAgICAgICAgICAgICAgICAgICAgICBGYWtlQ0NUaWxlZExheWVySW1wbCogbGF5ZXJJ
bXBsMSwKICAgICAgICAgICAgICAgICAgICAgICAgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bSogbGF5
ZXIyID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgQ0NMYXllckltcGwqIGxheWVySW1wbDIg
PSAwKQorICAgICAgICAgICAgICAgICAgICAgICBGYWtlQ0NUaWxlZExheWVySW1wbCogbGF5ZXJJ
bXBsMiA9IDApCiAgICAgewogICAgICAgICAvLyBHZXQgdGV4dHVyZXMKICAgICAgICAgbV90ZXh0
dXJlTWFuYWdlci0+Y2xlYXJQcmlvcml0aWVzKCk7CkBAIC0xMjMsOSArMTY5LDkgQEAgcHVibGlj
OgogICAgICAgICAvLyBVcGRhdGUgdGV4dHVyZXMgYW5kIHB1c2guCiAgICAgICAgIHVwZGF0ZVRl
eHR1cmVzKCk7CiAgICAgICAgIGlmIChsYXllcjEpCi0gICAgICAgICAgICBsYXllcjEtPnB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXJJbXBsMSk7CisgICAgICAgICAgICBsYXllclB1c2hQcm9wZXJ0aWVz
VG8obGF5ZXIxLCBsYXllckltcGwxKTsKICAgICAgICAgaWYgKGxheWVyMikKLSAgICAgICAgICAg
IGxheWVyMi0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwyKTsKKyAgICAgICAgICAgIGxheWVy
UHVzaFByb3BlcnRpZXNUbyhsYXllcjIsIGxheWVySW1wbDIpOwogCiAgICAgICAgIHJldHVybiBu
ZWVkc1VwZGF0ZTsKICAgICB9CkBAIC0xNDUsOCArMTkxLDcgQEAgcHVibGljOgogVEVTVF9GKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hEaXJ0eVRpbGVzKQogewogICAgIFJlZlB0cjxGYWtl
VGlsZWRMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNo
cm9taXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxU
aHJlYWQgaW1wbFRocmVhZDsKLSAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVy
SW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKKyAgICBTY29wZWRG
YWtlQ0NUaWxlZExheWVySW1wbCBsYXllckltcGwoMSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXpl
IGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxl
cy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKQEAgLTE3Miw4ICsy
MTcsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaERpcnR5VGlsZXMpCiBU
RVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKIHsK
ICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcg
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPEZha2VDQ1RpbGVk
TGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEp
KSk7CisgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5ZXJJbXBsKDEpOwogICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXIgb2NjbHVkZWQ7CiAgICAgbV9vY2NsdXNpb24gPSAmb2NjbHVk
ZWQ7CiAKQEAgLTIwOSw4ICsyNTMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoRGVsZXRlZFRpbGVzKQogewogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAg
ICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMSkpKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBs
YXllckltcGwoMSk7CiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMg
aW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91
bmRzKEludFNpemUoMTAwLCAyMDApKTsKQEAgLTIyMywxMSArMjY2LDExIEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogICAgIEVYUEVDVF9UUlVFKGxh
eWVySW1wbC0+aGFzVGlsZUF0KDAsIDEpKTsKIAogICAgIG1fdGV4dHVyZU1hbmFnZXItPmNsZWFy
UHJpb3JpdGllcygpOwotICAgIG1fdGV4dHVyZU1hbmFnZXItPmNsZWFyQWxsTWVtb3J5KG1fcmVz
b3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAgdGV4dHVyZU1hbmFnZXJDbGVhckFsbE1lbW9yeSht
X3RleHR1cmVNYW5hZ2VyLmdldCgpLCBtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogICAgIG1f
dGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoNCoxMDI0KjEwMjQpOwogCiAg
ICAgLy8gVGhpcyBzaG91bGQgZHJvcCB0aGUgdGlsZXMgb24gdGhlIGltcGwgdGhyZWFkLgotICAg
IGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAgbGF5ZXJQdXNo
UHJvcGVydGllc1RvKGxheWVyLmdldCgpLCBsYXllckltcGwuZ2V0KCkpOwogCiAgICAgLy8gV2Ug
c2hvdWxkIG5vdyBoYXZlIG5vIHRleHR1cmVzIG9uIHRoZSBpbXBsIHRocmVhZC4KICAgICBFWFBF
Q1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwpAQCAtMjQ1LDggKzI4OCw3IEBA
IFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoRGVsZXRlZFRpbGVzKQogVEVTVF9G
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRUaWxlcykKIHsKICAgICBSZWZQ
dHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVk
TGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgRGVidWdTY29wZWRT
ZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CisgICAg
U2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5ZXJJbXBsKDEpOwogCiAgICAgLy8gVGhlIHRp
bGUgc2l6ZSBpcyAxMDB4MTAwLiBTZXR1cCA1eDUgdGlsZXMgd2l0aCBvbmUgdmlzaWJsZSB0aWxl
IGluIHRoZSBjZW50ZXIuCiAgICAgLy8gVGhpcyBwYWludHMgMSB2aXNpYmxlIG9mIHRoZSAyNSBp
bnZhbGlkIHRpbGVzLgpAQCAtMjgzLDExICszMjUsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogewogICAgIC8vIFN0YXJ0
IHdpdGggMm1iIG9mIG1lbW9yeSwgYnV0IHRoZSB0ZXN0IGlzIGdvaW5nIHRvIHRyeSB0byB1c2Ug
anVzdCBtb3JlIHRoYW4gMW1iLCBzbyB3ZSByZWR1Y2UgdG8gMW1iIGxhdGVyLgogICAgIG1fdGV4
dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMoMiAqIDEwMjQgKiAxMDI0KTsgICAg
Ci0gICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXll
ckNocm9taXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBPd25QdHI8RmFrZUNDVGls
ZWRMYXllckltcGw+IGxheWVySW1wbDEoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBs
KDEpKSk7CisgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5ZXJJbXBsMSgxKTsKICAg
ICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIE93blB0
cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsMihhZG9wdFB0cihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMikpKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXllcklt
cGwyKDIpOwogCiAgICAgLy8gRm9yIHRoaXMgdGVzdCB3ZSBoYXZlIHR3byBsYXllcnMuIGxheWVy
MSBleGhhdXN0cyBtb3N0IHRleHR1cmUgbWVtb3J5LCBsZWF2aW5nIHJvb20gZm9yIDIgbW9yZSB0
aWxlcyBmcm9tCiAgICAgLy8gbGF5ZXIyLCBidXQgbm90IGFsbCB0aHJlZSB0aWxlcy4gRmlyc3Qg
d2UgcGFpbnQgbGF5ZXIxLCBhbmQgb25lIHRpbGUgZnJvbSBsYXllcjIuIFRoZW4gd2hlbiB3ZSBp
ZGxlIHBhaW50CkBAIC0zMzcsOCArMzc4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHB1c2hUaWxlc0FmdGVySWRsZVBhaW50RmFpbGVkKQogVEVTVF9GKFRpbGVkTGF5ZXJDaHJv
bWl1bVRlc3QsIHB1c2hJZGxlUGFpbnRlZE9jY2x1ZGVkVGlsZXMpCiB7CiAgICAgUmVmUHRyPEZh
a2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVy
Q2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5
ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOworICAgIFNjb3Bl
ZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyIG9jY2x1ZGVkOwogICAgIG1fb2NjbHVzaW9uID0gJm9jY2x1ZGVkOwogICAgIApAQCAt
MzU3LDggKzM5Nyw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBh
aW50ZWRPY2NsdWRlZFRpbGVzKQogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hU
aWxlc01hcmtlZERpcnR5RHVyaW5nUGFpbnQpCiB7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVy
Q2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21pdW0obV90
ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBs
VGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOworICAgIFNjb3BlZEZha2VDQ1RpbGVk
TGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEw
MCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgogICAgIC8v
IEhvd2V2ZXIsIGR1cmluZyB0aGUgcGFpbnQsIHdlIGludmFsaWRhdGUgb25lIG9mIHRoZSB0aWxl
cy4gVGhpcyBzaG91bGQKQEAgLTM3Nyw5ICs0MTYsOCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgcHVzaFRpbGVzTGF5ZXJNYXJrZWREaXJ0eUR1cmluZ1BhaW50T25OZXh0TGF5ZXIp
CiB7CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyMSA9IGFkb3B0UmVm
KG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAg
ICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IEZh
a2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXIxSW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkp
KTsKLSAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVyMkltcGwoYWRvcHRQdHIo
bmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDIpKSk7CisgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXll
ckltcGwgbGF5ZXIxSW1wbCgxKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXll
cjJJbXBsKDIpOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhIHRpbGUgb24gbGF5ZXIxLCBkdXJpbmcg
dXBkYXRlIG9mIGxheWVyIDIuCiAgICAgbGF5ZXIyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigp
LT5zZXRSZWN0VG9JbnZhbGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllcjEuZ2V0
KCkpOwpAQCAtNDAxLDkgKzQzOSw4IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoVGlsZXNMYXllck1hcmtlZERpcnR5RHVyaW5nUGFpbnRPblByZXZpb3VzTGF5CiB7CiAgICAg
UmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyMSA9IGFkb3B0UmVmKG5ldyBGYWtl
VGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKICAgICBSZWZQdHI8
RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExh
eWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVnU2NvcGVkU2V0
SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4g
bGF5ZXIxSW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoMSkpKTsKLSAgICBP
d25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVyMkltcGwoYWRvcHRQdHIobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKDIpKSk7CisgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5
ZXIxSW1wbCgxKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXllcjJJbXBsKDIp
OwogCiAgICAgbGF5ZXIxLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5zZXRSZWN0VG9JbnZh
bGlkYXRlKEludFJlY3QoMCwgNTAsIDEwMCwgNTApLCBsYXllcjIuZ2V0KCkpOwogICAgIGxheWVy
MS0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKQEAgLTQyNCw3ICs0NjEsNiBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFpbnRTbWFsbEFuaW1hdGVkTGF5ZXJzSW1tZWRp
YXRlbHkpCiB7CiAgICAgLy8gQ3JlYXRlIGEgQ0NMYXllclRyZWVIb3N0IHRoYXQgaGFzIHRoZSBy
aWdodCB2aWV3cG9ydHNpemUsCiAgICAgLy8gc28gdGhlIGxheWVyIGlzIGNvbnNpZGVyZWQgc21h
bGwgZW5vdWdoLgotICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKICAg
ICBGYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50IGZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQ7CiAg
ICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdD4gY2NMYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVI
b3N0OjpjcmVhdGUoJmZha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQsIENDTGF5ZXJUcmVlU2V0dGlu
Z3MoKSk7CiAKQEAgLTQ0MiwxMCArNDc4LDkgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHBhaW50U21hbGxBbmltYXRlZExheWVyc0ltbWVkaWF0ZWx5KQogICAgICAgICAgICAgbGF5
ZXJXaWR0aCAqPSAyOwogCiAgICAgICAgIG1fdGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxp
bWl0Qnl0ZXMobWVtb3J5Rm9yTGF5ZXIpOwotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJl
YWQgaW1wbFRocmVhZDsKIAogICAgICAgICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4g
bGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5h
Z2VyLmdldCgpKSk7Ci0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJ
bXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOworICAgICAgICBTY29w
ZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXllckltcGwoMSk7CiAKICAgICAgICAgLy8gRnVsbCBz
aXplIGxheWVyIHdpdGggaGFsZiBiZWluZyB2aXNpYmxlLgogICAgICAgICBJbnRTaXplIGNvbnRl
bnRCb3VuZHMobGF5ZXJXaWR0aCwgbGF5ZXJIZWlnaHQpOwpAQCAtNDY1LDcgKzUwMCw3IEBAIFRF
U1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwYWludFNtYWxsQW5pbWF0ZWRMYXllcnNJbW1l
ZGlhdGVseSkKICAgICAgICAgbV90ZXh0dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7
CiAgICAgICAgIGxheWVyLT51cGRhdGUobV9xdWV1ZSwgMCwgbV9zdGF0cyk7CiAgICAgICAgIHVw
ZGF0ZVRleHR1cmVzKCk7Ci0gICAgICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1w
bC5nZXQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhsYXllci5nZXQoKSwgbGF5
ZXJJbXBsLmdldCgpKTsKIAogICAgICAgICAvLyBXZSBzaG91bGQgaGF2ZSBhbGwgdGhlIHRpbGVz
IGZvciB0aGUgc21hbGwgYW5pbWF0ZWQgbGF5ZXIuCiAgICAgICAgIC8vIFdlIHNob3VsZCBzdGls
bCBoYXZlIHRoZSB2aXNpYmxlIHRpbGVzIHdoZW4gd2UgZGlkbid0CkBAIC00ODMsMTQgKzUxOCwx
MiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFpbnRTbWFsbEFuaW1hdGVkTGF5
ZXJzSW1tZWRpYXRlbHkpCiAgICAgICAgIH0KICAgICB9CiAgICAgY2NMYXllclRyZWVIb3N0LmNs
ZWFyKCk7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogfQogCiBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50T3V0T2ZNZW1vcnkpCiB7CiAgICAg
UmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VU
aWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVnU2Nv
cGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVy
SW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOwor
ICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKIAogICAgIC8vIFdl
IGhhdmUgZW5vdWdoIG1lbW9yeSBmb3Igb25seSB0aGUgdmlzaWJsZSByZWN0LCBzbyB3ZSB3aWxs
IHJ1biBvdXQgb2YgbWVtb3J5IGluIGZpcnN0IGlkbGUgcGFpbnQuCiAgICAgaW50IG1lbW9yeUxp
bWl0ID0gNCAqIDEwMCAqIDEwMDsgLy8gMSB0aWxlcywgNCBieXRlcyBwZXIgcGl4ZWwuCkBAIC01
MTMsOCArNTQ2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludE91
dE9mTWVtb3J5KQogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIGlkbGVQYWludFplcm9T
aXplZExheWVyKQogewogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBsYXllciA9
IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1hbmFnZXIuZ2V0
KCkpKTsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICBPd25Q
dHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGls
ZWRMYXllckltcGwoMSkpKTsKKyAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXllcklt
cGwoMSk7CiAKICAgICBib29sIGFuaW1hdGluZ1syXSA9IHtmYWxzZSwgdHJ1ZX07CiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKQEAgLTU0MSw4ICs1NzMsNyBAQCBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50WmVyb1NpemVkTGF5ZXIpCiBURVNUX0YoVGls
ZWRMYXllckNocm9taXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUxheWVycykKIHsKICAgICBS
ZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRp
bGVkTGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5hZ2VyLmdldCgpKSk7Ci0gICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJ
bXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7Cisg
ICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgbGF5ZXJJbXBsKDEpOwogCiAgICAgLy8gQWx0
ZXJuYXRlIGJldHdlZW4gbm90IHZpc2libGUgYW5kIHZpc2libGUuCiAgICAgSW50UmVjdCB2KDAs
IDAsIDEwMCwgMTAwKTsKQEAgLTU3Miw4ICs2MDMsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9t
aXVtVGVzdCwgaWRsZVBhaW50Tm9uVmlzaWJsZUxheWVycykKIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCBpbnZhbGlkYXRlRnJvbVByZXBhcmUpCiB7CiAgICAgUmVmUHRyPEZha2VUaWxl
ZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IEZha2VUaWxlZExheWVyQ2hyb21p
dW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBs
KGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOworICAgIFNjb3BlZEZha2VD
Q1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMg
MTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzLgog
ICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkpOwpAQCAtNjA4LDcgKzYzOCw2
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB2ZXJpZnlVcGRhdGVSZWN0V2hlbkNv
bnRlbnRCb3VuZHNBcmVTY2FsZWQpCiAgICAgLy8gVGhlIHVwZGF0ZVJlY3QgKHRoYXQgaW5kaWNh
dGVzIHdoYXQgd2FzIGFjdHVhbGx5IHBhaW50ZWQpIHNob3VsZCBiZSBpbgogICAgIC8vIGxheWVy
IHNwYWNlLCBub3QgdGhlIGNvbnRlbnQgc3BhY2UuCiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVy
V2l0aFNjYWxlZEJvdW5kcz4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFrZVRpbGVkTGF5ZXJXaXRo
U2NhbGVkQm91bmRzKG1fdGV4dHVyZU1hbmFnZXIuZ2V0KCkpKTsKLSAgICBEZWJ1Z1Njb3BlZFNl
dEltcGxUaHJlYWQgaW1wbFRocmVhZDsKIAogICAgIEludFJlY3QgbGF5ZXJCb3VuZHMoMCwgMCwg
MzAwLCAyMDApOwogICAgIEludFJlY3QgY29udGVudEJvdW5kcygwLCAwLCAyMDAsIDI1MCk7CkBA
IC02NDcsOCArNjc2LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZlcmlmeVVw
ZGF0ZVJlY3RXaGVuQ29udGVudEJvdW5kc0FyZVNjYWxlZCkKIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB2ZXJpZnlJbnZhbGlkYXRpb25XaGVuQ29udGVudHNTY2FsZUNoYW5nZXMpCiB7
CiAgICAgUmVmUHRyPEZha2VUaWxlZExheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3
IEZha2VUaWxlZExheWVyQ2hyb21pdW0obV90ZXh0dXJlTWFuYWdlci5nZXQoKSkpOwotICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgx
KSkpOworICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKIAogICAg
IC8vIENyZWF0ZSBhIGxheWVyIHdpdGggb25lIHRpbGUuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJ
bnRTaXplKDEwMCwgMTAwKSk7CkBAIC02NjMsNyArNjkxLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJD
aHJvbWl1bVRlc3QsIHZlcmlmeUludmFsaWRhdGlvbldoZW5Db250ZW50c1NjYWxlQ2hhbmdlcykK
ICAgICBtX3RleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVyZXMoKTsKICAgICBsYXllci0+
dXBkYXRlKG1fcXVldWUsIDAsIG1fc3RhdHMpOwogICAgIHVwZGF0ZVRleHR1cmVzKCk7Ci0gICAg
bGF5ZXItPnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKKyAgICBsYXllclB1c2hQ
cm9wZXJ0aWVzVG8obGF5ZXIuZ2V0KCksIGxheWVySW1wbC5nZXQoKSk7CiAgICAgRVhQRUNUX1RS
VUUobGF5ZXJJbXBsLT5oYXNUaWxlQXQoMCwgMCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllcklt
cGwtPmhhc1RpbGVBdCgwLCAxKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGls
ZUF0KDEsIDApKTsKQEAgLTY4MCw3ICs3MDgsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdmVyaWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIG1f
dGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwogICAgIGxheWVyLT51cGRhdGUo
bV9xdWV1ZSwgMCwgbV9zdGF0cyk7CiAgICAgdXBkYXRlVGV4dHVyZXMoKTsKLSAgICBsYXllci0+
cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworICAgIGxheWVyUHVzaFByb3BlcnRp
ZXNUbyhsYXllci5nZXQoKSwgbGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShsYXll
ckltcGwtPmhhc1RpbGVBdCgwLCAwKSk7CiAgICAgRVhQRUNUX1RSVUUobGF5ZXJJbXBsLT5oYXNU
aWxlQXQoMCwgMSkpOwogICAgIEVYUEVDVF9UUlVFKGxheWVySW1wbC0+aGFzVGlsZUF0KDEsIDAp
KTsKQEAgLTY5Miw3ICs3MjAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVy
aWZ5SW52YWxpZGF0aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogICAgIGxheWVyLT5zZXRU
ZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CiAgICAgbV90ZXh0dXJlTWFu
YWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CiAKLSAgICBsYXllci0+cHVzaFByb3BlcnRpZXNU
byhsYXllckltcGwuZ2V0KCkpOworICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhsYXllci5nZXQo
KSwgbGF5ZXJJbXBsLmdldCgpKTsKICAgICBFWFBFQ1RfRkFMU0UobGF5ZXJJbXBsLT5oYXNUaWxl
QXQoMCwgMCkpOwogICAgIEVYUEVDVF9GQUxTRShsYXllckltcGwtPmhhc1RpbGVBdCgwLCAxKSk7
CiAgICAgRVhQRUNUX0ZBTFNFKGxheWVySW1wbC0+aGFzVGlsZUF0KDEsIDApKTsKQEAgLTcwMSw4
ICs3MjksNiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdmVyaWZ5SW52YWxpZGF0
aW9uV2hlbkNvbnRlbnRzU2NhbGVDaGFuZ2VzKQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgc2tpcHNEcmF3R2V0c1Jlc2V0KQogewotICAgIC8vIEluaXRpYWxpemUgd2l0aG91dCB0
aHJlYWRpbmcgc3VwcG9ydC4KLSAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUo
MCk7CiAgICAgRmFrZUNDTGF5ZXJUcmVlSG9zdENsaWVudCBmYWtlQ0NMYXllclRyZWVIb3N0Q2xp
ZW50OwogICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IGNjTGF5ZXJUcmVlSG9zdCA9IENDTGF5
ZXJUcmVlSG9zdDo6Y3JlYXRlKCZmYWtlQ0NMYXllclRyZWVIb3N0Q2xpZW50LCBDQ0xheWVyVHJl
ZVNldHRpbmdzKCkpOwogICAgIEFTU0VSVF9UUlVFKGNjTGF5ZXJUcmVlSG9zdC0+aW5pdGlhbGl6
ZVJlbmRlcmVySWZOZWVkZWQoKSk7CkBAIC03NDQsMTAgKzc3MCw5IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBza2lwc0RyYXdHZXRzUmVzZXQpCiAgICAgY2NMYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnMobV9xdWV1ZSwgbWVtb3J5TGltaXQpOwogICAgIEVYUEVDVF9GQUxTRShy
b290TGF5ZXItPnNraXBzRHJhdygpKTsKIAotICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29udGVudHNU
ZXh0dXJlTWFuYWdlcigpLT5jbGVhckFsbE1lbW9yeShtX3Jlc291cmNlUHJvdmlkZXIuZ2V0KCkp
OworICAgIHRleHR1cmVNYW5hZ2VyQ2xlYXJBbGxNZW1vcnkoY2NMYXllclRyZWVIb3N0LT5jb250
ZW50c1RleHR1cmVNYW5hZ2VyKCksIG1fcmVzb3VyY2VQcm92aWRlci5nZXQoKSk7CiAgICAgY2NM
YXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CiAgICAgY2NMYXllclRyZWVIb3N0LmNsZWFy
KCk7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogfQogCiBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcmVzaXplVG9TbWFsbGVyKQpAQCAtNzgzLDkgKzgwOCw2
IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBodWdlTGF5ZXJVcGRhdGVDcmFzaCkK
IAogVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBhcnRpYWxVcGRhdGVzKQogewotICAg
IC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KLSAgICBXZWJLaXQ6Oldl
YkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0KICAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNl
dHRpbmdzOwogICAgIHNldHRpbmdzLm1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyA9IDQ7CiAKQEAg
LTgwOSw4ICs4MzEsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVw
ZGF0ZXMpCiAgICAgLy8gRnVsbCB1cGRhdGUgb2YgYWxsIDYgdGlsZXMuCiAgICAgY2NMYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMobV9xdWV1ZSwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+
OjptYXgoKSk7CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRo
cmVhZDsKLSAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRv
cHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CisgICAgICAgIFNjb3BlZEZha2VD
Q1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7
CiAgICAgICAgIEVYUEVDVF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1fcXVldWUuaGFzTW9yZVVwZGF0
ZXMoKSk7CkBAIC04MTksNyArODQwLDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3Qs
IHBhcnRpYWxVcGRhdGVzKQogICAgICAgICBFWFBFQ1RfRVEoMiwgbGF5ZXItPmZha2VMYXllclRl
eHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfRkFMU0UobV9x
dWV1ZS5oYXNNb3JlVXBkYXRlcygpKTsKICAgICAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVV
cGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKLSAgICAgICAgbGF5ZXItPnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXJJbXBsLmdldCgpKTsKKyAgICAgICAgbGF5ZXJQdXNoUHJvcGVydGllc1RvKGxh
eWVyLmdldCgpLCBsYXllckltcGwuZ2V0KCkpOwogICAgIH0KICAgICBjY0xheWVyVHJlZUhvc3Qt
PmNvbW1pdENvbXBsZXRlKCk7CiAKQEAgLTgyNyw4ICs4NDgsNyBAQCBURVNUX0YoVGlsZWRMYXll
ckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250
ZW50UmVjdChJbnRSZWN0KDAsIDAsIDMwMCwgMTUwKSk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51
cGRhdGVMYXllcnMobV9xdWV1ZSwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7
CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAg
ICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllckltcGwoYWRvcHRQdHIobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7CisgICAgICAgIFNjb3BlZEZha2VDQ1RpbGVkTGF5
ZXJJbXBsIGxheWVySW1wbCgxKTsKICAgICAgICAgdXBkYXRlVGV4dHVyZXMoNCk7CiAgICAgICAg
IEVYUEVDVF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291
bnQoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG1fcXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CkBA
IC04MzcsMTUgKzg1NywxNCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlh
bFVwZGF0ZXMpCiAgICAgICAgIEVYUEVDVF9FUSgzLCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVw
ZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9GQUxTRShtX3F1ZXVlLmhh
c01vcmVVcGRhdGVzKCkpOwogICAgICAgICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIo
KS0+Y2xlYXJVcGRhdGVDb3VudCgpOwotICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhs
YXllckltcGwuZ2V0KCkpOworICAgICAgICBsYXllclB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIuZ2V0
KCksIGxheWVySW1wbC5nZXQoKSk7CiAgICAgfQogICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0
Q29tcGxldGUoKTsKIAogICAgIC8vIFBhcnRpYWwgdXBkYXRlIG9mIDYgdGlsZXMuCiAgICAgbGF5
ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDUwLCA1MCwgMjAwLCAxMDApKTsKICAg
ICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAg
ICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IGxheWVySW1wbChhZG9wdFB0cihuZXcgRmFr
ZUNDVGlsZWRMYXllckltcGwoMSkpKTsKKyAgICAgICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllcklt
cGwgbGF5ZXJJbXBsKDEpOwogICAgICAgICBjY0xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycyht
X3F1ZXVlLCBzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKTsKICAgICAgICAgdXBk
YXRlVGV4dHVyZXMoNCk7CiAgICAgICAgIEVYUEVDVF9FUSgyLCBsYXllci0+ZmFrZUxheWVyVGV4
dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CkBAIC04NTUsMjQgKzg3NCwyMiBAQCBURVNU
X0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGFydGlhbFVwZGF0ZXMpCiAgICAgICAgIEVYUEVD
VF9FUSg0LCBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7
CiAgICAgICAgIEVYUEVDVF9GQUxTRShtX3F1ZXVlLmhhc01vcmVVcGRhdGVzKCkpOwogICAgICAg
ICBsYXllci0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwot
ICAgICAgICBsYXllci0+cHVzaFByb3BlcnRpZXNUbyhsYXllckltcGwuZ2V0KCkpOworICAgICAg
ICBsYXllclB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIuZ2V0KCksIGxheWVySW1wbC5nZXQoKSk7CiAg
ICAgfQogICAgIGNjTGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUoKTsKIAogICAgIC8vIENo
ZWNrZXJib2FyZCBhbGwgdGlsZXMuCiAgICAgbGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJ
bnRSZWN0KDAsIDAsIDMwMCwgMjAwKSk7CiAgICAgewotICAgICAgICBEZWJ1Z1Njb3BlZFNldElt
cGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBsYXllckltcGwoYWRvcHRQdHIobmV3IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKDEpKSk7Ci0gICAg
ICAgIGxheWVyLT5wdXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAgICAgIFNj
b3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIGxheWVySW1wbCgxKTsKKyAgICAgICAgbGF5ZXJQdXNo
UHJvcGVydGllc1RvKGxheWVyLmdldCgpLCBsYXllckltcGwuZ2V0KCkpOwogICAgIH0KICAgICBj
Y0xheWVyVHJlZUhvc3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKICAgICAvLyBQYXJ0aWFsIHVwZGF0
ZSBvZiA2IGNoZWNrZXJib2FyZCB0aWxlcy4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoNTAsIDUwLCAyMDAsIDEwMCkpOwogICAgIHsKLSAgICAgICAgRGVidWdTY29w
ZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExh
eWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkp
OworICAgICAgICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBsYXllckltcGwoMSk7CiAgICAg
ICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKG1fcXVldWUsIHN0ZDo6bnVtZXJpY19s
aW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAg
ICAgRVhQRUNUX0VRKDQsIGxheWVyLT5mYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVD
b3VudCgpKTsKQEAgLTg4MiwzMSArODk5LDI2IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCBwYXJ0aWFsVXBkYXRlcykKICAgICAgICAgRVhQRUNUX0VRKDIsIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNUX0ZBTFNF
KG1fcXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5ZXJUZXh0
dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7Ci0gICAgICAgIGxheWVyLT5wdXNoUHJv
cGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNU
byhsYXllci5nZXQoKSwgbGF5ZXJJbXBsLmdldCgpKTsKICAgICB9CiAgICAgY2NMYXllclRyZWVI
b3N0LT5jb21taXRDb21wbGV0ZSgpOwogCiAgICAgLy8gUGFydGlhbCB1cGRhdGUgb2YgNCB0aWxl
cy4KICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoNTAsIDUwLCAxMDAs
IDEwMCkpOwogICAgIHsKLSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJl
YWQ7Ci0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gbGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbCgxKSkpOworICAgICAgICBTY29wZWRGYWtlQ0NU
aWxlZExheWVySW1wbCBsYXllckltcGwoMSk7CiAgICAgICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBk
YXRlTGF5ZXJzKG1fcXVldWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwog
ICAgICAgICB1cGRhdGVUZXh0dXJlcyg0KTsKICAgICAgICAgRVhQRUNUX0VRKDQsIGxheWVyLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT51cGRhdGVDb3VudCgpKTsKICAgICAgICAgRVhQRUNU
X0ZBTFNFKG1fcXVldWUuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgICAgIGxheWVyLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7Ci0gICAgICAgIGxheWVyLT5w
dXNoUHJvcGVydGllc1RvKGxheWVySW1wbC5nZXQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3Bl
cnRpZXNUbyhsYXllci5nZXQoKSwgbGF5ZXJJbXBsLmdldCgpKTsKICAgICB9CiAgICAgY2NMYXll
clRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogCi0gICAgewotICAgICAgICBEZWJ1Z1Njb3Bl
ZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgY2NMYXllclRyZWVIb3N0LT5jb250
ZW50c1RleHR1cmVNYW5hZ2VyKCktPmNsZWFyQWxsTWVtb3J5KG1fcmVzb3VyY2VQcm92aWRlci5n
ZXQoKSk7Ci0gICAgfQorICAgIHRleHR1cmVNYW5hZ2VyQ2xlYXJBbGxNZW1vcnkoY2NMYXllclRy
ZWVIb3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCksIG1fcmVzb3VyY2VQcm92aWRlci5nZXQo
KSk7CiAgICAgY2NMYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIoMCk7CiAgICAgY2NMYXllclRy
ZWVIb3N0LmNsZWFyKCk7Ci0gICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwog
fQogCiBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aG91dE9j
Y2x1c2lvbikKQEAgLTEwNTEsNyArMTA2Myw2IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1U
ZXN0LCB0aWxlc05vdFBhaW50ZWRXaXRob3V0SW52YWxpZGF0aW9uKQogICAgIGxheWVyLT51cGRh
dGUobV9xdWV1ZSwgJm9jY2x1ZGVkLCBtX3N0YXRzKTsKICAgICBFWFBFQ1RfRVEoMzYtMywgbGF5
ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVSZWN0Q291bnQoKSk7CiAgICAg
ewotICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKICAgICAgICAg
dXBkYXRlVGV4dHVyZXMoKTsKICAgICB9CiAKQEAgLTExNzgsNyArMTE4OSw2IEBAIFRFU1RfRihU
aWxlZExheWVyQ2hyb21pdW1UZXN0LCB2aXNpYmxlQ29udGVudE9wYXF1ZVJlZ2lvbikKIHsKICAg
ICBSZWZQdHI8RmFrZVRpbGVkTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBhZG9wdFJlZihuZXcgRmFr
ZVRpbGVkTGF5ZXJDaHJvbWl1bShtX3RleHR1cmVNYW5hZ2VyLmdldCgpKSk7CiAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlciBvY2NsdWRlZDsKLSAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQg
aW1wbFRocmVhZDsKIAogICAgIC8vIFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBp
bnZhbGlkYXRlcyBhbmQgdGhlbiBwYWludHMgdHdvIHRpbGVzIGluIHZhcmlvdXMgd2F5cy4KIApA
QCAtMTI3MSw3ICsxMjgxLDYgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHBpeGVs
c1BhaW50ZWRNZXRyaWNzKQogewogICAgIFJlZlB0cjxGYWtlVGlsZWRMYXllckNocm9taXVtPiBs
YXllciA9IGFkb3B0UmVmKG5ldyBGYWtlVGlsZWRMYXllckNocm9taXVtKG1fdGV4dHVyZU1hbmFn
ZXIuZ2V0KCkpKTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyIG9jY2x1ZGVkOwotICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogCiAgICAgLy8gVGhlIHRpbGUgc2l6
ZSBpcyAxMDB4MTAwLCBzbyB0aGlzIGludmFsaWRhdGVzIGFuZCB0aGVuIHBhaW50cyB0d28gdGls
ZXMgaW4gdmFyaW91cyB3YXlzLgogCkBAIC0xMzIyLDkgKzEzMzEsNiBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiAKIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBkb250QWxsb2NhdGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2Fu
dEJlQWxsb2NhdGVkKQogewotICAgIC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3Vw
cG9ydC4KLSAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0KICAgICAv
LyBUaWxlIHNpemUgaXMgMTAweDEwMC4KICAgICBJbnRSZWN0IHJvb3RSZWN0KDAsIDAsIDMwMCwg
MjAwKTsKICAgICBJbnRSZWN0IGNoaWxkUmVjdCgwLCAwLCAzMDAsIDEwMCk7CkBAIC0xMzczLDcg
KzEzNzksNiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29u
dGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9jYQogICAgIGNoaWxkMi0+aW52YWxpZGF0
ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKG1fcXVldWUsIHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpOwogICAgIHsK
LSAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIHVw
ZGF0ZVRleHR1cmVzKDEwMDApOwogICAgICAgICBFWFBFQ1RfRVEoNiwgcm9vdC0+ZmFrZUxheWVy
VGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgzLCBj
aGlsZC0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CkBAIC0xMzg0
LDEyICsxMzg5LDEyIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBkb250QWxsb2Nh
dGVDb250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAgICAgIGNoaWxkLT5m
YWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGNo
aWxkMi0+ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogCi0g
ICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gcm9vdEltcGwoYWRvcHRQdHIobmV3
IEZha2VDQ1RpbGVkTGF5ZXJJbXBsKHJvb3QtPmlkKCkpKSk7Ci0gICAgICAgIE93blB0cjxGYWtl
Q0NUaWxlZExheWVySW1wbD4gY2hpbGRJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVy
SW1wbChjaGlsZC0+aWQoKSkpKTsKLSAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBs
PiBjaGlsZDJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbChjaGlsZDItPmlk
KCkpKSk7Ci0gICAgICAgIHJvb3QtPnB1c2hQcm9wZXJ0aWVzVG8ocm9vdEltcGwuZ2V0KCkpOwot
ICAgICAgICBjaGlsZC0+cHVzaFByb3BlcnRpZXNUbyhjaGlsZEltcGwuZ2V0KCkpOwotICAgICAg
ICBjaGlsZDItPnB1c2hQcm9wZXJ0aWVzVG8oY2hpbGQySW1wbC5nZXQoKSk7CisgICAgICAgIFNj
b3BlZEZha2VDQ1RpbGVkTGF5ZXJJbXBsIHJvb3RJbXBsKHJvb3QtPmlkKCkpOworICAgICAgICBT
Y29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBjaGlsZEltcGwoY2hpbGQtPmlkKCkpOworICAgICAg
ICBTY29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCBjaGlsZDJJbXBsKGNoaWxkMi0+aWQoKSk7Cisg
ICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhyb290LmdldCgpLCByb290SW1wbC5nZXQoKSk7
CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhjaGlsZC5nZXQoKSwgY2hpbGRJbXBsLmdl
dCgpKTsKKyAgICAgICAgbGF5ZXJQdXNoUHJvcGVydGllc1RvKGNoaWxkMi5nZXQoKSwgY2hpbGQy
SW1wbC5nZXQoKSk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkg
ewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IDI7ICsraikKQEAgLTE0MDgs
NyArMTQxMyw2IEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBkb250QWxsb2NhdGVD
b250ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAgY2hpbGQyLT5pbnZhbGlk
YXRlQ29udGVudFJlY3QoY2hpbGQyUmVjdCk7CiAgICAgY2NMYXllclRyZWVIb3N0LT51cGRhdGVM
YXllcnMobV9xdWV1ZSwgKDMgKiAyICsgMyAqIDEpICogKDEwMCAqIDEwMCkgKiA0KTsKICAgICB7
Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsVGhyZWFkOwogICAgICAgICB1
cGRhdGVUZXh0dXJlcygxMDAwKTsKICAgICAgICAgRVhQRUNUX0VRKDYsIHJvb3QtPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwogICAgICAgICBFWFBFQ1RfRVEoMCwg
Y2hpbGQtPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZUNvdW50KCkpOwpAQCAtMTQx
OSwxMiArMTQyMywxMiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgZG9udEFsbG9j
YXRlQ29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9jYQogICAgICAgICBjaGlsZC0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogICAgICAgICBj
aGlsZDItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyVXBkYXRlQ291bnQoKTsKIAot
ICAgICAgICBPd25QdHI8RmFrZUNDVGlsZWRMYXllckltcGw+IHJvb3RJbXBsKGFkb3B0UHRyKG5l
dyBGYWtlQ0NUaWxlZExheWVySW1wbChyb290LT5pZCgpKSkpOwotICAgICAgICBPd25QdHI8RmFr
ZUNDVGlsZWRMYXllckltcGw+IGNoaWxkSW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXll
ckltcGwoY2hpbGQtPmlkKCkpKSk7Ci0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1w
bD4gY2hpbGQySW1wbChhZG9wdFB0cihuZXcgRmFrZUNDVGlsZWRMYXllckltcGwoY2hpbGQyLT5p
ZCgpKSkpOwotICAgICAgICByb290LT5wdXNoUHJvcGVydGllc1RvKHJvb3RJbXBsLmdldCgpKTsK
LSAgICAgICAgY2hpbGQtPnB1c2hQcm9wZXJ0aWVzVG8oY2hpbGRJbXBsLmdldCgpKTsKLSAgICAg
ICAgY2hpbGQyLT5wdXNoUHJvcGVydGllc1RvKGNoaWxkMkltcGwuZ2V0KCkpOworICAgICAgICBT
Y29wZWRGYWtlQ0NUaWxlZExheWVySW1wbCByb290SW1wbChyb290LT5pZCgpKTsKKyAgICAgICAg
U2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgY2hpbGRJbXBsKGNoaWxkLT5pZCgpKTsKKyAgICAg
ICAgU2NvcGVkRmFrZUNDVGlsZWRMYXllckltcGwgY2hpbGQySW1wbChjaGlsZDItPmlkKCkpOwor
ICAgICAgICBsYXllclB1c2hQcm9wZXJ0aWVzVG8ocm9vdC5nZXQoKSwgcm9vdEltcGwuZ2V0KCkp
OworICAgICAgICBsYXllclB1c2hQcm9wZXJ0aWVzVG8oY2hpbGQuZ2V0KCksIGNoaWxkSW1wbC5n
ZXQoKSk7CisgICAgICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhjaGlsZDIuZ2V0KCksIGNoaWxk
MkltcGwuZ2V0KCkpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCAzOyArK2kp
IHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCAyOyArK2opCkBAIC0xNDQ0
LDcgKzE0NDgsNiBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgZG9udEFsbG9jYXRl
Q29udGVudHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9jYQogICAgIGNoaWxkMi0+aW52YWxp
ZGF0ZUNvbnRlbnRSZWN0KGNoaWxkMlJlY3QpOwogICAgIGNjTGF5ZXJUcmVlSG9zdC0+dXBkYXRl
TGF5ZXJzKG1fcXVldWUsICgzICogMSkgKiAoMTAwICogMTAwKSAqIDQpOwogICAgIHsKLSAgICAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7CiAgICAgICAgIHVwZGF0ZVRl
eHR1cmVzKDEwMDApOwogICAgICAgICBFWFBFQ1RfRVEoMCwgcm9vdC0+ZmFrZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CiAgICAgICAgIEVYUEVDVF9FUSgwLCBjaGlsZC0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlQ291bnQoKSk7CkBAIC0xNDU1LDEyICsx
NDU4LDEyIEBAIFRFU1RfRihUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBkb250QWxsb2NhdGVDb250
ZW50c1doZW5UYXJnZXRTdXJmYWNlQ2FudEJlQWxsb2NhCiAgICAgICAgIGNoaWxkLT5mYWtlTGF5
ZXJUZXh0dXJlVXBkYXRlcigpLT5jbGVhclVwZGF0ZUNvdW50KCk7CiAgICAgICAgIGNoaWxkMi0+
ZmFrZUxheWVyVGV4dHVyZVVwZGF0ZXIoKS0+Y2xlYXJVcGRhdGVDb3VudCgpOwogCi0gICAgICAg
IE93blB0cjxGYWtlQ0NUaWxlZExheWVySW1wbD4gcm9vdEltcGwoYWRvcHRQdHIobmV3IEZha2VD
Q1RpbGVkTGF5ZXJJbXBsKHJvb3QtPmlkKCkpKSk7Ci0gICAgICAgIE93blB0cjxGYWtlQ0NUaWxl
ZExheWVySW1wbD4gY2hpbGRJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbChj
aGlsZC0+aWQoKSkpKTsKLSAgICAgICAgT3duUHRyPEZha2VDQ1RpbGVkTGF5ZXJJbXBsPiBjaGls
ZDJJbXBsKGFkb3B0UHRyKG5ldyBGYWtlQ0NUaWxlZExheWVySW1wbChjaGlsZDItPmlkKCkpKSk7
Ci0gICAgICAgIHJvb3QtPnB1c2hQcm9wZXJ0aWVzVG8ocm9vdEltcGwuZ2V0KCkpOwotICAgICAg
ICBjaGlsZC0+cHVzaFByb3BlcnRpZXNUbyhjaGlsZEltcGwuZ2V0KCkpOwotICAgICAgICBjaGls
ZDItPnB1c2hQcm9wZXJ0aWVzVG8oY2hpbGQySW1wbC5nZXQoKSk7CisgICAgICAgIFNjb3BlZEZh
a2VDQ1RpbGVkTGF5ZXJJbXBsIHJvb3RJbXBsKHJvb3QtPmlkKCkpOworICAgICAgICBTY29wZWRG
YWtlQ0NUaWxlZExheWVySW1wbCBjaGlsZEltcGwoY2hpbGQtPmlkKCkpOworICAgICAgICBTY29w
ZWRGYWtlQ0NUaWxlZExheWVySW1wbCBjaGlsZDJJbXBsKGNoaWxkMi0+aWQoKSk7CisgICAgICAg
IGxheWVyUHVzaFByb3BlcnRpZXNUbyhyb290LmdldCgpLCByb290SW1wbC5nZXQoKSk7CisgICAg
ICAgIGxheWVyUHVzaFByb3BlcnRpZXNUbyhjaGlsZC5nZXQoKSwgY2hpbGRJbXBsLmdldCgpKTsK
KyAgICAgICAgbGF5ZXJQdXNoUHJvcGVydGllc1RvKGNoaWxkMi5nZXQoKSwgY2hpbGQySW1wbC5n
ZXQoKSk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDM7ICsraSkgewogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IDI7ICsraikKQEAgLTE0NzEsMTMgKzE0
NzQsOSBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgZG9udEFsbG9jYXRlQ29udGVu
dHNXaGVuVGFyZ2V0U3VyZmFjZUNhbnRCZUFsbG9jYQogICAgIH0KICAgICBjY0xheWVyVHJlZUhv
c3QtPmNvbW1pdENvbXBsZXRlKCk7CiAKLSAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1w
bFRocmVhZCBpbXBsVGhyZWFkOwotICAgICAgICBjY0xheWVyVHJlZUhvc3QtPmNvbnRlbnRzVGV4
dHVyZU1hbmFnZXIoKS0+Y2xlYXJBbGxNZW1vcnkobV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsK
LSAgICB9CisgICAgdGV4dHVyZU1hbmFnZXJDbGVhckFsbE1lbW9yeShjY0xheWVyVHJlZUhvc3Qt
PmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSwgbV9yZXNvdXJjZVByb3ZpZGVyLmdldCgpKTsKICAg
ICBjY0xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcigwKTsKICAgICBjY0xheWVyVHJlZUhvc3Qu
Y2xlYXIoKTsKLSAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7CiB9CiAKIGNs
YXNzIFRyYWNraW5nTGF5ZXJQYWludGVyIDogcHVibGljIExheWVyUGFpbnRlckNocm9taXVtIHsK
QEAgLTE1NDEsMTEgKzE1NDAsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgbm9u
SW50ZWdlckNvbnRlbnRzU2NhbGVJc05vdERpc3RvcnRlZER1cmluZ1BhaW50KQogICAgIGxheWVy
LT50cmFja2luZ0xheWVyUGFpbnRlcigpLT5yZXNldFBhaW50ZWRSZWN0KCk7CiAKICAgICBFWFBF
Q1RfSU5UX1JFQ1RfRVEoSW50UmVjdCgpLCBsYXllci0+dHJhY2tpbmdMYXllclBhaW50ZXIoKS0+
cGFpbnRlZFJlY3QoKSk7Ci0KLSAgICB7Ci0gICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVh
ZCBpbXBsVGhyZWFkOwotICAgICAgICB1cGRhdGVUZXh0dXJlcygpOwotICAgIH0KKyAgICB1cGRh
dGVUZXh0dXJlcygpOwogCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgZW50aXJlIGxheWVyIGluIGNv
bnRlbnQgc3BhY2UuIFdoZW4gcGFpbnRpbmcsIHRoZSByZWN0IGdpdmVuIHRvIHdlYmtpdCBzaG91
bGQgbWF0Y2ggdGhlIGxheWVyJ3MgYm91bmRzLgogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVu
dFJlY3QoY29udGVudFJlY3QpOwpAQCAtMTU3NSwxMSArMTU3MCw3IEBAIFRFU1RfRihUaWxlZExh
eWVyQ2hyb21pdW1UZXN0LCBub25JbnRlZ2VyQ29udGVudHNTY2FsZUlzTm90RGlzdG9ydGVkRHVy
aW5nSW52YWxpCiAgICAgbGF5ZXItPnRyYWNraW5nTGF5ZXJQYWludGVyKCktPnJlc2V0UGFpbnRl
ZFJlY3QoKTsKIAogICAgIEVYUEVDVF9JTlRfUkVDVF9FUShJbnRSZWN0KCksIGxheWVyLT50cmFj
a2luZ0xheWVyUGFpbnRlcigpLT5wYWludGVkUmVjdCgpKTsKLQotICAgIHsKLSAgICAgICAgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGxUaHJlYWQ7Ci0gICAgICAgIHVwZGF0ZVRleHR1cmVz
KCk7Ci0gICAgfQorICAgIHVwZGF0ZVRleHR1cmVzKCk7CiAKICAgICAvLyBJbnZhbGlkYXRlIHRo
ZSBlbnRpcmUgbGF5ZXIgaW4gbGF5ZXIgc3BhY2UuIFdoZW4gcGFpbnRpbmcsIHRoZSByZWN0IGdp
dmVuIHRvIHdlYmtpdCBzaG91bGQgbWF0Y2ggdGhlIGxheWVyJ3MgYm91bmRzLgogICAgIGxheWVy
LT5zZXROZWVkc0Rpc3BsYXlSZWN0KGxheWVyUmVjdCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>