<?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>134939</bug_id>
          
          <creation_ts>2014-07-15 13:57:24 -0700</creation_ts>
          <short_desc>IDB transaction requests may get discarded if a request is currently being processed</short_desc>
          <delta_ts>2014-08-06 12:50:50 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>ASSIGNED</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>beidson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1022550</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2014-07-15 13:57:24 -0700</bug_when>
    <thetext>With the WebKit2 UniqueIDBDatabase backing, transaction requests may be discarded if another request for the same transaction is currently in progress. This can cause serious problems, depending on the request that gets discarded.

&lt;rdar://problem/17356958&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1022551</commentid>
    <comment_count>1</comment_count>
      <attachid>234948</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2014-07-15 13:59:45 -0700</bug_when>
    <thetext>Created attachment 234948
WIP patch

Attached a WIP patch that can cause several layout tests to regress, with what appear to be race condition-based failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024117</commentid>
    <comment_count>2</comment_count>
      <attachid>235329</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2014-07-22 17:19:19 -0700</bug_when>
    <thetext>Created attachment 235329
WIP patch v2

As it turns out, almost all of the operations are already queued within the web process. This version of the patch queues up the few remaining tasks, but there are some issues caused by this that aren&apos;t yet fixed, so this patch isn&apos;t ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027260</commentid>
    <comment_count>3</comment_count>
      <attachid>236126</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2014-08-06 12:50:50 -0700</bug_when>
    <thetext>Created attachment 236126
Patch v3

Here&apos;s a newer version of the patch. It still causes 4 layout tests to fail, and is getting increasingly more detailed in how it works, but I think I&apos;m getting closer to a proper fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234948</attachid>
            <date>2014-07-15 13:59:45 -0700</date>
            <delta_ts>2014-07-22 17:19:19 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>request-queue.patch</filename>
            <type>text/plain</type>
            <size>27727</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0
YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvSW5kZXhlZERCL0RhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24uY3BwCmluZGV4IDRm
Nzc4YzIuLmRmNGVkYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vz
cy9JbmRleGVkREIvRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25u
ZWN0aW9uLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYklEQlNlcnZlckNvbm5lY3Rpb25NZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSURCRGF0YWJhc2VNZXRhZGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
SURCS2V5UmFuZ2VEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXJDb25uZWN0aW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbmRleGVkREIuaD4KIApAQCAtNDcsNiArNDgsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OkRhdGFiYXNl
UHJvY2Vzc0lEQkNvbm5lY3Rpb24oRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBzZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKICAgICA6IG1fY29u
bmVjdGlvbihjb25uZWN0aW9uKQogICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcihz
ZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICAsIG1fcmVxdWVzdEluUHJvZ3Jlc3MoZmFs
c2UpCiB7CiB9CiAKQEAgLTYzLDYgKzY1LDE1IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29u
bmVjdGlvbjo6ZGlzY29ubmVjdGVkRnJvbVdlYlByb2Nlc3MoKQogICAgIGlmICghbV91bmlxdWVJ
REJEYXRhYmFzZSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fcmVxdWVzdEluUHJvZ3Jl
c3MgfHwgbV9wZW5kaW5nUmVxdWVzdHMuc2l6ZSgpKSB7CisgICAgICAgIFJlZlB0cjxEYXRhYmFz
ZVByb2Nlc3NJREJDb25uZWN0aW9uPiBjb25uZWN0aW9uKHRoaXMpOworICAgICAgICBtX3BlbmRp
bmdSZXF1ZXN0cy5hcHBlbmQoW2Nvbm5lY3Rpb25dKCkgeworICAgICAgICAgICAgY29ubmVjdGlv
bi0+ZmluaXNoZWRSZXF1ZXN0KCk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5kaXNjb25uZWN0
ZWRGcm9tV2ViUHJvY2VzcygpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPnVucmVnaXN0ZXJDb25uZWN0aW9uKCp0aGlzKTsK
ICAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlID0gbnVsbHB0cjsKIH0KQEAgLTgwLDkgKzkxLDE0IEBA
IHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6Z2V0T3JFc3RhYmxpc2hJREJEYXRh
YmFzZU1ldGFkYXRhKHVpbnQ2NF90IHJlCiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBn
ZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEgcmVxdWVzdCBJRCAlbGx1IChjb25uZWN0
aW9uICVwKSIsIHJlcXVlc3RJRCwgdGhpcyk7CiAKICAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNz
SURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsKLSAgICBtX3VuaXF1ZUlEQkRhdGFiYXNl
LT5nZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJ
RF0oYm9vbCBzdWNjZXNzLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkgewot
ICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9u
OjpEaWRHZXRPckVzdGFibGlzaElEQkRhdGFiYXNlTWV0YWRhdGEocmVxdWVzdElELCBzdWNjZXNz
LCBtZXRhZGF0YSkpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChbY29ubmVjdGlvbiwg
cmVxdWVzdElEXSgpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+bV91bmlxdWVJREJEYXRhYmFzZS0+
Z2V0T3JFc3RhYmxpc2hJREJEYXRhYmFzZU1ldGFkYXRhKFtjb25uZWN0aW9uLCByZXF1ZXN0SURd
KGJvb2wgc3VjY2VzcywgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpIHsKKyAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rp
b246OkRpZEdldE9yRXN0YWJsaXNoSURCRGF0YWJhc2VNZXRhZGF0YShyZXF1ZXN0SUQsIHN1Y2Nl
c3MsIG1ldGFkYXRhKSk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5maW5pc2hlZFJlcXVlc3Qo
KTsKKyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBzZXJ2aWNlUGVuZGluZ1JlcXVlc3RzKCk7
CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6ZGVsZXRlRGF0YWJhc2Uo
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSkKQEAgLTk3LDEy
ICsxMTMsMTcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpkZWxldGVEYXRh
YmFzZSh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFN0cmkKICAgICB9CiAKICAgICBSZWZQdHI8
RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsKLSAgICBtX3Vu
aXF1ZUlEQkRhdGFiYXNlLT5kZWxldGVEYXRhYmFzZShbY29ubmVjdGlvbiwgdGhpcywgcmVxdWVz
dElEXShib29sIHN1Y2Nlc3MpIHsKLSAgICAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgICAgICBk
aXNjb25uZWN0ZWRGcm9tV2ViUHJvY2VzcygpOwotCi0gICAgICAgIGNvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZERlbGV0ZURhdGFiYXNlKHJlcXVl
c3RJRCwgc3VjY2VzcykpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChbY29ubmVjdGlv
biwgcmVxdWVzdElEXSgpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+bV91bmlxdWVJREJEYXRhYmFz
ZS0+ZGVsZXRlRGF0YWJhc2UoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7
CisgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpEaWREZWxldGVEYXRhYmFzZShyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICAgICAg
ICAgIGlmIChzdWNjZXNzKQorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmRpc2Nvbm5lY3Rl
ZEZyb21XZWJQcm9jZXNzKCk7CisKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmZpbmlzaGVkUmVx
dWVzdCgpOworICAgICAgICB9KTsKICAgICB9KTsKKworICAgIHNlcnZpY2VQZW5kaW5nUmVxdWVz
dHMoKTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpvcGVuVHJhbnNh
Y3Rpb24odWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGNvbnN0IFZl
Y3RvcjxpbnQ2NF90PiYgb2JqZWN0U3RvcmVJRHMsIHVpbnQ2NF90IGludE1vZGUpCkBAIC0xMzMs
OSArMTU0LDE0IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6b3BlblRyYW5z
YWN0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0CiAKICAgICBJbmRleGVkREI6OlRy
YW5zYWN0aW9uTW9kZSBtb2RlID0gc3RhdGljX2Nhc3Q8SW5kZXhlZERCOjpUcmFuc2FjdGlvbk1v
ZGU+KGludE1vZGUpOwogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBj
b25uZWN0aW9uKHRoaXMpOwotICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPm9wZW5UcmFuc2FjdGlv
bihJREJJZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRHMsIG1v
ZGUsIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgewotICAgICAgICBjb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRPcGVuVHJh
bnNhY3Rpb24ocmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBw
ZW5kKFtjb25uZWN0aW9uLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSUQsIG9iamVjdFN0b3JlSURz
LCBtb2RlXSgpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+bV91bmlxdWVJREJEYXRhYmFzZS0+b3Bl
blRyYW5zYWN0aW9uKElEQklkZW50aWZpZXIoKmNvbm5lY3Rpb24sIHRyYW5zYWN0aW9uSUQpLCBv
YmplY3RTdG9yZUlEcywgbW9kZSwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNz
KSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJD
b25uZWN0aW9uOjpEaWRPcGVuVHJhbnNhY3Rpb24ocmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAg
ICAgICAgICBjb25uZWN0aW9uLT5maW5pc2hlZFJlcXVlc3QoKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CisKKyAgICBzZXJ2aWNlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbjo6YmVnaW5UcmFuc2FjdGlvbih1aW50NjRfdCByZXF1ZXN0SUQs
IGludDY0X3QgdHJhbnNhY3Rpb25JRCkKQEAgLTE0NSw5ICsxNzEsMTQgQEAgdm9pZCBEYXRhYmFz
ZVByb2Nlc3NJREJDb25uZWN0aW9uOjpiZWdpblRyYW5zYWN0aW9uKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgaW50NjRfdAogICAgIExPRyhJREIsICJEYXRhYmFzZVByb2Nlc3MgYmVnaW5UcmFuc2FjdGlv
biByZXF1ZXN0IElEICVsbHUiLCByZXF1ZXN0SUQpOwogCiAgICAgUmVmUHRyPERhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJEYXRh
YmFzZS0+YmVnaW5UcmFuc2FjdGlvbihJREJJZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklE
KSwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7Ci0gICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZEJlZ2luVHJh
bnNhY3Rpb24ocmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBw
ZW5kKFtjb25uZWN0aW9uLCByZXF1ZXN0SUQsIHRyYW5zYWN0aW9uSURdKCkgeworICAgICAgICBj
b25uZWN0aW9uLT5tX3VuaXF1ZUlEQkRhdGFiYXNlLT5iZWdpblRyYW5zYWN0aW9uKElEQklkZW50
aWZpZXIoKmNvbm5lY3Rpb24sIHRyYW5zYWN0aW9uSUQpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElE
XShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZEJlZ2luVHJhbnNhY3Rpb24ocmVxdWVzdElELCBz
dWNjZXNzKSk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5maW5pc2hlZFJlcXVlc3QoKTsKKyAg
ICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBzZXJ2aWNlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAK
IHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6Y29tbWl0VHJhbnNhY3Rpb24odWlu
dDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQpCkBAIC0xNTcsOSArMTg4LDE0
IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6Y29tbWl0VHJhbnNhY3Rpb24o
dWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90CiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2Vz
cyBjb21taXRUcmFuc2FjdGlvbiByZXF1ZXN0IElEICVsbHUiLCByZXF1ZXN0SUQpOwogCiAgICAg
UmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0g
ICAgbV91bmlxdWVJREJEYXRhYmFzZS0+Y29tbWl0VHJhbnNhY3Rpb24oSURCSWRlbnRpZmllcigq
dGhpcywgdHJhbnNhY3Rpb25JRCksIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGJvb2wgc3VjY2Vz
cykgewotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25u
ZWN0aW9uOjpEaWRDb21taXRUcmFuc2FjdGlvbihyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICBt
X3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRCwgdHJhbnNhY3Rp
b25JRF0oKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPm1fdW5pcXVlSURCRGF0YWJhc2UtPmNvbW1p
dFRyYW5zYWN0aW9uKElEQklkZW50aWZpZXIoKmNvbm5lY3Rpb24sIHRyYW5zYWN0aW9uSUQpLCBb
Y29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZENvbW1pdFRy
YW5zYWN0aW9uKHJlcXVlc3RJRCwgc3VjY2VzcykpOworICAgICAgICAgICAgY29ubmVjdGlvbi0+
ZmluaXNoZWRSZXF1ZXN0KCk7CisgICAgICAgIH0pOwogICAgIH0pOworCisgICAgc2VydmljZVBl
bmRpbmdSZXF1ZXN0cygpOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246
OnJlc2V0VHJhbnNhY3Rpb24odWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9u
SUQpCkBAIC0xNjksOSArMjA1LDE0IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bjo6cmVzZXRUcmFuc2FjdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QKICAgICBMT0co
SURCLCAiRGF0YWJhc2VQcm9jZXNzIHJlc2V0VHJhbnNhY3Rpb24gcmVxdWVzdCBJRCAlbGx1Iiwg
cmVxdWVzdElEKTsKIAogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBj
b25uZWN0aW9uKHRoaXMpOwotICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPnJlc2V0VHJhbnNhY3Rp
b24oSURCSWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCksIFtjb25uZWN0aW9uLCByZXF1
ZXN0SURdKGJvb2wgc3VjY2VzcykgewotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRSZXNldFRyYW5zYWN0aW9uKHJlcXVlc3RJRCwg
c3VjY2VzcykpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChbY29ubmVjdGlvbiwgcmVx
dWVzdElELCB0cmFuc2FjdGlvbklEXSgpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+bV91bmlxdWVJ
REJEYXRhYmFzZS0+cmVzZXRUcmFuc2FjdGlvbihJREJJZGVudGlmaWVyKCpjb25uZWN0aW9uLCB0
cmFuc2FjdGlvbklEKSwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7Cisg
ICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0
aW9uOjpEaWRSZXNldFRyYW5zYWN0aW9uKHJlcXVlc3RJRCwgc3VjY2VzcykpOworICAgICAgICAg
ICAgY29ubmVjdGlvbi0+ZmluaXNoZWRSZXF1ZXN0KCk7CisgICAgICAgIH0pOwogICAgIH0pOwor
CisgICAgc2VydmljZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vz
c0lEQkNvbm5lY3Rpb246OnJvbGxiYWNrVHJhbnNhY3Rpb24odWludDY0X3QgcmVxdWVzdElELCBp
bnQ2NF90IHRyYW5zYWN0aW9uSUQpCkBAIC0xODEsOSArMjIyLDE0IEBAIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbjo6cm9sbGJhY2tUcmFuc2FjdGlvbih1aW50NjRfdCByZXF1ZXN0
SUQsIGludDY0CiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyByb2xsYmFja1RyYW5zYWN0
aW9uIHJlcXVlc3QgSUQgJWxsdSIsIHJlcXVlc3RJRCk7CiAKICAgICBSZWZQdHI8RGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsKLSAgICBtX3VuaXF1ZUlEQkRh
dGFiYXNlLT5yb2xsYmFja1RyYW5zYWN0aW9uKElEQklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0
aW9uSUQpLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsKLSAgICAgICAg
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkUm9s
bGJhY2tUcmFuc2FjdGlvbihyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICBtX3BlbmRpbmdSZXF1
ZXN0cy5hcHBlbmQoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JRF0oKSB7Cisg
ICAgICAgIGNvbm5lY3Rpb24tPm1fdW5pcXVlSURCRGF0YWJhc2UtPnJvbGxiYWNrVHJhbnNhY3Rp
b24oSURCSWRlbnRpZmllcigqY29ubmVjdGlvbiwgdHJhbnNhY3Rpb25JRCksIFtjb25uZWN0aW9u
LCByZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkUm9sbGJhY2tUcmFuc2FjdGlv
bihyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmZpbmlzaGVk
UmVxdWVzdCgpOworICAgICAgICB9KTsKICAgICB9KTsKKworICAgIHNlcnZpY2VQZW5kaW5nUmVx
dWVzdHMoKTsKIH0KIAogdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uOjpjaGFuZ2VE
YXRhYmFzZVZlcnNpb24odWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQs
IHVpbnQ2NF90IG5ld1ZlcnNpb24pCkBAIC0xOTMsOSArMjM5LDE0IEBAIHZvaWQgRGF0YWJhc2VQ
cm9jZXNzSURCQ29ubmVjdGlvbjo6Y2hhbmdlRGF0YWJhc2VWZXJzaW9uKHVpbnQ2NF90IHJlcXVl
c3RJRCwgaW50CiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBjaGFuZ2VEYXRhYmFzZVZl
cnNpb24gcmVxdWVzdCBJRCAlbGx1LCBuZXcgdmVyc2lvbiAlbGx1IiwgcmVxdWVzdElELCBuZXdW
ZXJzaW9uKTsKIAogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBjb25u
ZWN0aW9uKHRoaXMpOwotICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPmNoYW5nZURhdGFiYXNlVmVy
c2lvbihJREJJZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgbmV3VmVyc2lvbiwgW2Nv
bm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7Ci0gICAgICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZENoYW5nZURhdGFiYXNl
VmVyc2lvbihyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBl
bmQoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JRCwgbmV3VmVyc2lvbl0oKSB7
CisgICAgICAgIGNvbm5lY3Rpb24tPm1fdW5pcXVlSURCRGF0YWJhc2UtPmNoYW5nZURhdGFiYXNl
VmVyc2lvbihJREJJZGVudGlmaWVyKCpjb25uZWN0aW9uLCB0cmFuc2FjdGlvbklEKSwgbmV3VmVy
c2lvbiwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgICAg
ICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRD
aGFuZ2VEYXRhYmFzZVZlcnNpb24ocmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgICAgICAgICBj
b25uZWN0aW9uLT5maW5pc2hlZFJlcXVlc3QoKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAg
ICBzZXJ2aWNlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURC
Q29ubmVjdGlvbjo6Y3JlYXRlT2JqZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90
IHRyYW5zYWN0aW9uSUQsIElEQk9iamVjdFN0b3JlTWV0YWRhdGEgbWV0YWRhdGEpCkBAIC0yMDQs
OSArMjU1LDE0IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6Y3JlYXRlT2Jq
ZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90CiAKICAgICBMT0coSURCLCAiRGF0
YWJhc2VQcm9jZXNzIGNyZWF0ZU9iamVjdFN0b3JlIHJlcXVlc3QgSUQgJWxsdSwgb2JqZWN0IHN0
b3JlIG5hbWUgJyVzJyIsIHJlcXVlc3RJRCwgbWV0YWRhdGEubmFtZS51dGY4KCkuZGF0YSgpKTsK
ICAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlz
KTsKLSAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShJREJJZGVudGlm
aWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgbWV0YWRhdGEsIFtjb25uZWN0aW9uLCByZXF1ZXN0
SURdKGJvb2wgc3VjY2VzcykgewotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRDcmVhdGVPYmplY3RTdG9yZShyZXF1ZXN0SUQsIHN1
Y2Nlc3MpKTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoW2Nvbm5lY3Rpb24sIHJlcXVl
c3RJRCwgdHJhbnNhY3Rpb25JRCwgbWV0YWRhdGFdKCkgeworICAgICAgICBjb25uZWN0aW9uLT5t
X3VuaXF1ZUlEQkRhdGFiYXNlLT5jcmVhdGVPYmplY3RTdG9yZShJREJJZGVudGlmaWVyKCpjb25u
ZWN0aW9uLCB0cmFuc2FjdGlvbklEKSwgbWV0YWRhdGEsIFtjb25uZWN0aW9uLCByZXF1ZXN0SURd
KGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkQ3JlYXRlT2JqZWN0U3RvcmUocmVxdWVzdElELCBz
dWNjZXNzKSk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5maW5pc2hlZFJlcXVlc3QoKTsKKyAg
ICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBzZXJ2aWNlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAK
IHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUodWlu
dDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJRCkKQEAgLTIxNSw5ICsyNzEsMTQgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0
aW9uOjpkZWxldGVPYmplY3RTdG9yZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QKIAogICAg
IExPRyhJREIsICJEYXRhYmFzZVByb2Nlc3MgZGVsZXRlT2JqZWN0U3RvcmUgcmVxdWVzdCBJRCAl
bGx1LCBvYmplY3Qgc3RvcmUgaWQgJWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7CiAg
ICAgUmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7
Ci0gICAgbV91bmlxdWVJREJEYXRhYmFzZS0+ZGVsZXRlT2JqZWN0U3RvcmUoSURCSWRlbnRpZmll
cigqdGhpcywgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIFtjb25uZWN0aW9uLCByZXF1
ZXN0SURdKGJvb2wgc3VjY2VzcykgewotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWREZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0SUQs
IHN1Y2Nlc3MpKTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoW2Nvbm5lY3Rpb24sIHJl
cXVlc3RJRCwgdHJhbnNhY3Rpb25JRCwgb2JqZWN0U3RvcmVJRF0oKSB7CisgICAgICAgIGNvbm5l
Y3Rpb24tPm1fdW5pcXVlSURCRGF0YWJhc2UtPmRlbGV0ZU9iamVjdFN0b3JlKElEQklkZW50aWZp
ZXIoKmNvbm5lY3Rpb24sIHRyYW5zYWN0aW9uSUQpLCBvYmplY3RTdG9yZUlELCBbY29ubmVjdGlv
biwgcmVxdWVzdElEXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZERlbGV0ZU9iamVjdFN0b3Jl
KHJlcXVlc3RJRCwgc3VjY2VzcykpOworICAgICAgICAgICAgY29ubmVjdGlvbi0+ZmluaXNoZWRS
ZXF1ZXN0KCk7CisgICAgICAgIH0pOwogICAgIH0pOworCisgICAgc2VydmljZVBlbmRpbmdSZXF1
ZXN0cygpOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmNsZWFyT2Jq
ZWN0U3RvcmUodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJRCkKQEAgLTIyNiw5ICsyODcsMTQgQEAgdm9pZCBEYXRhYmFzZVByb2Nl
c3NJREJDb25uZWN0aW9uOjpjbGVhck9iamVjdFN0b3JlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50
NjRfdAogCiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBjbGVhck9iamVjdFN0b3JlIHJl
cXVlc3QgSUQgJWxsdSwgb2JqZWN0IHN0b3JlIGlkICVsbGkiLCByZXF1ZXN0SUQsIG9iamVjdFN0
b3JlSUQpOwogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBjb25uZWN0
aW9uKHRoaXMpOwotICAgIG1fdW5pcXVlSURCRGF0YWJhc2UtPmNsZWFyT2JqZWN0U3RvcmUoSURC
SWRlbnRpZmllcigqdGhpcywgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIFtjb25uZWN0
aW9uLCByZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgewotICAgICAgICBjb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRDbGVhck9iamVjdFN0b3JlKHJl
cXVlc3RJRCwgc3VjY2VzcykpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChbY29ubmVj
dGlvbiwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklELCBvYmplY3RTdG9yZUlEXSgpIHsKKyAgICAg
ICAgY29ubmVjdGlvbi0+bV91bmlxdWVJREJEYXRhYmFzZS0+Y2xlYXJPYmplY3RTdG9yZShJREJJ
ZGVudGlmaWVyKCpjb25uZWN0aW9uLCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRCwgW2Nv
bm5lY3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7CisgICAgICAgICAgICBjb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRDbGVhck9iamVj
dFN0b3JlKHJlcXVlc3RJRCwgc3VjY2VzcykpOworICAgICAgICAgICAgY29ubmVjdGlvbi0+Zmlu
aXNoZWRSZXF1ZXN0KCk7CisgICAgICAgIH0pOwogICAgIH0pOworCisgICAgc2VydmljZVBlbmRp
bmdSZXF1ZXN0cygpOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmNy
ZWF0ZUluZGV4KHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2
NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQkluZGV4TWV0YWRhdGEmIG1ldGFkYXRhKQpAQCAt
MjM3LDkgKzMwMywxNCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmNyZWF0
ZUluZGV4KHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFucwogCiAgICAgTE9HKElEQiwg
IkRhdGFiYXNlUHJvY2VzcyBjcmVhdGVJbmRleCByZXF1ZXN0IElEICVsbHUsIG9iamVjdCBzdG9y
ZSBpZCAlbGxpIiwgcmVxdWVzdElELCBvYmplY3RTdG9yZUlEKTsKICAgICBSZWZQdHI8RGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsKLSAgICBtX3VuaXF1ZUlE
QkRhdGFiYXNlLT5jcmVhdGVJbmRleChJREJJZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklE
KSwgb2JqZWN0U3RvcmVJRCwgbWV0YWRhdGEsIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGJvb2wg
c3VjY2VzcykgewotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJTZXJ2
ZXJDb25uZWN0aW9uOjpEaWRDcmVhdGVJbmRleChyZXF1ZXN0SUQsIHN1Y2Nlc3MpKTsKKyAgICBt
X3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRCwgdHJhbnNhY3Rp
b25JRCwgb2JqZWN0U3RvcmVJRCwgbWV0YWRhdGFdKCkgeworICAgICAgICBjb25uZWN0aW9uLT5t
X3VuaXF1ZUlEQkRhdGFiYXNlLT5jcmVhdGVJbmRleChJREJJZGVudGlmaWVyKCpjb25uZWN0aW9u
LCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRCwgbWV0YWRhdGEsIFtjb25uZWN0aW9uLCBy
ZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgeworICAgICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkQ3JlYXRlSW5kZXgocmVxdWVzdElE
LCBzdWNjZXNzKSk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5maW5pc2hlZFJlcXVlc3QoKTsK
KyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBzZXJ2aWNlUGVuZGluZ1JlcXVlc3RzKCk7CiB9
CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6ZGVsZXRlSW5kZXgodWludDY0
X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJ
RCwgaW50NjRfdCBpbmRleElEKQpAQCAtMjQ4LDkgKzMxOSwxNCBAQCB2b2lkIERhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb246OmRlbGV0ZUluZGV4KHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRf
dCB0cmFucwogCiAgICAgTE9HKElEQiwgIkRhdGFiYXNlUHJvY2VzcyBkZWxldGVJbmRleCByZXF1
ZXN0IElEICVsbHUsIG9iamVjdCBzdG9yZSBpZCAlbGxpIiwgcmVxdWVzdElELCBvYmplY3RTdG9y
ZUlEKTsKICAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbj4gY29ubmVjdGlv
bih0aGlzKTsKLSAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5kZWxldGVJbmRleChJREJJZGVudGlm
aWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgW2Nvbm5l
Y3Rpb24sIHJlcXVlc3RJRF0oYm9vbCBzdWNjZXNzKSB7Ci0gICAgICAgIGNvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZERlbGV0ZUluZGV4KHJlcXVl
c3RJRCwgc3VjY2VzcykpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChbY29ubmVjdGlv
biwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklELCBvYmplY3RTdG9yZUlELCBpbmRleElEXSgpIHsK
KyAgICAgICAgY29ubmVjdGlvbi0+bV91bmlxdWVJREJEYXRhYmFzZS0+ZGVsZXRlSW5kZXgoSURC
SWRlbnRpZmllcigqY29ubmVjdGlvbiwgdHJhbnNhY3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIGlu
ZGV4SUQsIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGJvb2wgc3VjY2VzcykgeworICAgICAgICAg
ICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlk
RGVsZXRlSW5kZXgocmVxdWVzdElELCBzdWNjZXNzKSk7CisgICAgICAgICAgICBjb25uZWN0aW9u
LT5maW5pc2hlZFJlcXVlc3QoKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBzZXJ2aWNl
UGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bjo6cHV0UmVjb3JkKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiB2YWx1ZSwgaW50NjRfdCBwdXRNb2RlLCBjb25zdCBWZWN0b3I8aW50NjRf
dD4mIGluZGV4SURzLCBjb25zdCBWZWN0b3I8VmVjdG9yPElEQktleURhdGE+PiYgaW5kZXhLZXlz
KQpAQCAtMjU5LDkgKzMzNSwxNCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246
OnB1dFJlY29yZCh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhYwogCiAgICAgTE9H
KElEQiwgIkRhdGFiYXNlUHJvY2VzcyBwdXRSZWNvcmQgcmVxdWVzdCBJRCAlbGx1LCBvYmplY3Qg
c3RvcmUgaWQgJWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7CiAgICAgUmVmUHRyPERh
dGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlx
dWVJREJEYXRhYmFzZS0+cHV0UmVjb3JkKElEQklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9u
SUQpLCBvYmplY3RTdG9yZUlELCBrZXksIHZhbHVlLCBwdXRNb2RlLCBpbmRleElEcywgaW5kZXhL
ZXlzLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCB1
aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7Ci0gICAgICAg
IGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZFB1
dFJlY29yZChyZXF1ZXN0SUQsIGtleURhdGEsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7Cisg
ICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5kKFtjb25uZWN0aW9uLCByZXF1ZXN0SUQsIHRyYW5z
YWN0aW9uSUQsIG9iamVjdFN0b3JlSUQsIGtleSwgdmFsdWUsIHB1dE1vZGUsIGluZGV4SURzLCBp
bmRleEtleXNdKCkgeworICAgICAgICBjb25uZWN0aW9uLT5tX3VuaXF1ZUlEQkRhdGFiYXNlLT5w
dXRSZWNvcmQoSURCSWRlbnRpZmllcigqY29ubmVjdGlvbiwgdHJhbnNhY3Rpb25JRCksIG9iamVj
dFN0b3JlSUQsIGtleSwgdmFsdWUsIHB1dE1vZGUsIGluZGV4SURzLCBpbmRleEtleXMsIFtjb25u
ZWN0aW9uLCByZXF1ZXN0SURdKGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIHVpbnQzMl90IGVy
cm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGNvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZFB1dFJlY29y
ZChyZXF1ZXN0SUQsIGtleURhdGEsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgICAg
ICAgICBjb25uZWN0aW9uLT5maW5pc2hlZFJlcXVlc3QoKTsKKyAgICAgICAgfSk7CiAgICAgfSk7
CisKKyAgICBzZXJ2aWNlUGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzSURCQ29ubmVjdGlvbjo6Z2V0UmVjb3JkKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0
cmFuc2FjdGlvbklELCBpbnQ2NF90IG9iamVjdFN0b3JlSUQsIGludDY0X3QgaW5kZXhJRCwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZSwgaW50NjRfdCBjdXJzb3JUeXBlKQpAQCAtMjcw
LDkgKzM1MSwxNCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmdldFJlY29y
ZCh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhYwogCiAgICAgTE9HKElEQiwgIkRh
dGFiYXNlUHJvY2VzcyBnZXRSZWNvcmQgcmVxdWVzdCBJRCAlbGx1LCBvYmplY3Qgc3RvcmUgaWQg
JWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7CiAgICAgUmVmUHRyPERhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJEYXRh
YmFzZS0+Z2V0UmVjb3JkKElEQklkZW50aWZpZXIoKnRoaXMsIHRyYW5zYWN0aW9uSUQpLCBvYmpl
Y3RTdG9yZUlELCBpbmRleElELCBrZXlSYW5nZSwgc3RhdGljX2Nhc3Q8SW5kZXhlZERCOjpDdXJz
b3JUeXBlPihjdXJzb3JUeXBlKSwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oY29uc3QgSURCR2V0
UmVzdWx0JiBnZXRSZXN1bHQsIHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpIHsKLSAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2Vy
dmVyQ29ubmVjdGlvbjo6RGlkR2V0UmVjb3JkKHJlcXVlc3RJRCwgZ2V0UmVzdWx0LCBlcnJvckNv
ZGUsIGVycm9yTWVzc2FnZSkpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChbY29ubmVj
dGlvbiwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklELCBvYmplY3RTdG9yZUlELCBpbmRleElELCBr
ZXlSYW5nZSwgY3Vyc29yVHlwZV0oKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPm1fdW5pcXVlSURC
RGF0YWJhc2UtPmdldFJlY29yZChJREJJZGVudGlmaWVyKCpjb25uZWN0aW9uLCB0cmFuc2FjdGlv
bklEKSwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwga2V5UmFuZ2UsIHN0YXRpY19jYXN0PEluZGV4
ZWREQjo6Q3Vyc29yVHlwZT4oY3Vyc29yVHlwZSksIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGNv
bnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRHZXRSZWNvcmQocmVxdWVzdElELCBnZXRS
ZXN1bHQsIGVycm9yQ29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICBjb25uZWN0aW9u
LT5maW5pc2hlZFJlcXVlc3QoKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBzZXJ2aWNl
UGVuZGluZ1JlcXVlc3RzKCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlv
bjo6Y291bnQodWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0
X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSkKQEAgLTI4Miw5ICszNjgsMTQgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NJ
REJDb25uZWN0aW9uOjpjb3VudCh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhY3Rp
b24KICAgICBMT0coSURCLCAiRGF0YWJhc2VQcm9jZXNzIGNvdW50IHJlcXVlc3QgSUQgJWxsdSwg
b2JqZWN0IHN0b3JlIGlkICVsbGkiLCByZXF1ZXN0SUQsIG9iamVjdFN0b3JlSUQpOwogCiAgICAg
UmVmUHRyPERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0g
ICAgbV91bmlxdWVJREJEYXRhYmFzZS0+Y291bnQoSURCSWRlbnRpZmllcigqdGhpcywgdHJhbnNh
Y3Rpb25JRCksIG9iamVjdFN0b3JlSUQsIGluZGV4SUQsIGtleVJhbmdlRGF0YSwgW2Nvbm5lY3Rp
b24sIHJlcXVlc3RJRF0oaW50NjRfdCBjb3VudCwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBT
dHJpbmcmIGVycm9yTWVzc2FnZSkgewotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJREJTZXJ2ZXJDb25uZWN0aW9uOjpEaWRDb3VudChyZXF1ZXN0SUQsIGNvdW50LCBlcnJv
ckNvZGUsIGVycm9yTWVzc2FnZSkpOworICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFwcGVuZChbY29u
bmVjdGlvbiwgcmVxdWVzdElELCB0cmFuc2FjdGlvbklELCBvYmplY3RTdG9yZUlELCBpbmRleElE
LCBrZXlSYW5nZURhdGFdKCkgeworICAgICAgICBjb25uZWN0aW9uLT5tX3VuaXF1ZUlEQkRhdGFi
YXNlLT5jb3VudChJREJJZGVudGlmaWVyKCpjb25uZWN0aW9uLCB0cmFuc2FjdGlvbklEKSwgb2Jq
ZWN0U3RvcmVJRCwgaW5kZXhJRCwga2V5UmFuZ2VEYXRhLCBbY29ubmVjdGlvbiwgcmVxdWVzdElE
XShpbnQ2NF90IGNvdW50LCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXNzYWdlKSB7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpEaWRDb3VudChyZXF1ZXN0SUQsIGNvdW50LCBlcnJvckNvZGUsIGVy
cm9yTWVzc2FnZSkpOworICAgICAgICAgICAgY29ubmVjdGlvbi0+ZmluaXNoZWRSZXF1ZXN0KCk7
CisgICAgICAgIH0pOwogICAgIH0pOworCisgICAgc2VydmljZVBlbmRpbmdSZXF1ZXN0cygpOwog
fQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmRlbGV0ZVJhbmdlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBpbnQ2NF90IG9iamVjdFN0b3Jl
SUQsIGNvbnN0IElEQktleVJhbmdlRGF0YSYga2V5UmFuZ2VEYXRhKQpAQCAtMjk0LDkgKzM4NSwx
NCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmRlbGV0ZVJhbmdlKHVpbnQ2
NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFucwogICAgIExPRyhJREIsICJEYXRhYmFzZVByb2Nl
c3MgZGVsZXRlUmFuZ2UgcmVxdWVzdCBJRCAlbGx1LCBvYmplY3Qgc3RvcmUgaWQgJWxsaSIsIHJl
cXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7CiAKICAgICBSZWZQdHI8RGF0YWJhc2VQcm9jZXNzSURC
Q29ubmVjdGlvbj4gY29ubmVjdGlvbih0aGlzKTsKLSAgICBtX3VuaXF1ZUlEQkRhdGFiYXNlLT5k
ZWxldGVSYW5nZShJREJJZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2JqZWN0U3Rv
cmVJRCwga2V5UmFuZ2VEYXRhLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXSh1aW50MzJfdCBlcnJv
ckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7Ci0gICAgICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZERlbGV0ZVJhbmdlKHJl
cXVlc3RJRCwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0
cy5hcHBlbmQoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRCwgdHJhbnNhY3Rpb25JRCwgb2JqZWN0U3Rv
cmVJRCwga2V5UmFuZ2VEYXRhXSgpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+bV91bmlxdWVJREJE
YXRhYmFzZS0+ZGVsZXRlUmFuZ2UoSURCSWRlbnRpZmllcigqY29ubmVjdGlvbiwgdHJhbnNhY3Rp
b25JRCksIG9iamVjdFN0b3JlSUQsIGtleVJhbmdlRGF0YSwgW2Nvbm5lY3Rpb24sIHJlcXVlc3RJ
RF0odWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAg
ICAgICAgICAgY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlv
bjo6RGlkRGVsZXRlUmFuZ2UocmVxdWVzdElELCBlcnJvckNvZGUsIGVycm9yTWVzc2FnZSkpOwor
ICAgICAgICAgICAgY29ubmVjdGlvbi0+ZmluaXNoZWRSZXF1ZXN0KCk7CisgICAgICAgIH0pOwog
ICAgIH0pOworCisgICAgc2VydmljZVBlbmRpbmdSZXF1ZXN0cygpOwogfQogCiB2b2lkIERhdGFi
YXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246Om9wZW5DdXJzb3IodWludDY0X3QgcmVxdWVzdElELCBp
bnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRl
eElELCBpbnQ2NF90IGN1cnNvckRpcmVjdGlvbiwgaW50NjRfdCBjdXJzb3JUeXBlLCBpbnQ2NF90
IHRhc2tUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKQEAgLTMwNSwx
MCArNDAxLDE1IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6b3BlbkN1cnNv
cih1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgdHJhbnNhCiAKICAgICBMT0coSURCLCAiRGF0
YWJhc2VQcm9jZXNzIG9wZW5DdXJzb3IgcmVxdWVzdCBJRCAlbGx1LCBvYmplY3Qgc3RvcmUgaWQg
JWxsaSIsIHJlcXVlc3RJRCwgb2JqZWN0U3RvcmVJRCk7CiAgICAgUmVmUHRyPERhdGFiYXNlUHJv
Y2Vzc0lEQkNvbm5lY3Rpb24+IGNvbm5lY3Rpb24odGhpcyk7Ci0gICAgbV91bmlxdWVJREJEYXRh
YmFzZS0+b3BlbkN1cnNvcihJREJJZGVudGlmaWVyKCp0aGlzLCB0cmFuc2FjdGlvbklEKSwgb2Jq
ZWN0U3RvcmVJRCwgaW5kZXhJRCwgc3RhdGljX2Nhc3Q8SW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24+KGN1cnNvckRpcmVjdGlvbiksIHN0YXRpY19jYXN0PEluZGV4ZWREQjo6Q3Vyc29yVHlwZT4o
Y3Vyc29yVHlwZSksIHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2VuZDo6VGFza1R5cGU+KHRh
c2tUeXBlKSwga2V5UmFuZ2VEYXRhLCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShpbnQ2NF90IGN1
cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXksIGNvbnN0IElEQktleURhdGEmIHBy
aW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JD
b2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgewotICAgICAgICBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSA9IHZhbHVlID8gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgdWludDhfdCo+KHZhbHVlLT5kYXRhKCkpLCB2YWx1ZS0+c2l6ZSgpKSA6IElQQzo6RGF0
YVJlZmVyZW5jZSgpOwotICAgICAgICBjb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpXZWJJREJT
ZXJ2ZXJDb25uZWN0aW9uOjpEaWRPcGVuQ3Vyc29yKHJlcXVlc3RJRCwgY3Vyc29ySUQsIHJlc3Vs
dEtleSwgcHJpbWFyeUtleSwgZGF0YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2UpKTsKKyAgICBt
X3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoW3RoaXMsIGNvbm5lY3Rpb24sIHJlcXVlc3RJRCwgdHJh
bnNhY3Rpb25JRCwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgY3Vyc29yRGlyZWN0aW9uLCBjdXJz
b3JUeXBlLCB0YXNrVHlwZSwga2V5UmFuZ2VEYXRhXSgpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+
bV91bmlxdWVJREJEYXRhYmFzZS0+b3BlbkN1cnNvcihJREJJZGVudGlmaWVyKCp0aGlzLCB0cmFu
c2FjdGlvbklEKSwgb2JqZWN0U3RvcmVJRCwgaW5kZXhJRCwgc3RhdGljX2Nhc3Q8SW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24+KGN1cnNvckRpcmVjdGlvbiksIHN0YXRpY19jYXN0PEluZGV4ZWRE
Qjo6Q3Vyc29yVHlwZT4oY3Vyc29yVHlwZSksIHN0YXRpY19jYXN0PElEQkRhdGFiYXNlQmFja2Vu
ZDo6VGFza1R5cGU+KHRhc2tUeXBlKSwga2V5UmFuZ2VEYXRhLCBbY29ubmVjdGlvbiwgcmVxdWVz
dElEXShpbnQ2NF90IGN1cnNvcklELCBjb25zdCBJREJLZXlEYXRhJiByZXN1bHRLZXksIGNvbnN0
IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiB2YWx1ZSwg
dWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgICAg
ICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEgPSB2YWx1ZSA/IElQQzo6RGF0YVJlZmVyZW5j
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgpKSwgdmFsdWUt
PnNpemUoKSkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKTsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZE9wZW5DdXJzb3IocmVx
dWVzdElELCBjdXJzb3JJRCwgcmVzdWx0S2V5LCBwcmltYXJ5S2V5LCBkYXRhLCBlcnJvckNvZGUs
IGVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgY29ubmVjdGlvbi0+ZmluaXNoZWRSZXF1ZXN0
KCk7CisgICAgICAgIH0pOwogICAgIH0pOworCisgICAgc2VydmljZVBlbmRpbmdSZXF1ZXN0cygp
OwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmN1cnNvckFkdmFuY2Uo
dWludDY0X3QgcmVxdWVzdElELCBpbnQ2NF90IGN1cnNvcklELCB1aW50NjRfdCBjb3VudCkKQEAg
LTMxNywxMCArNDE4LDE1IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6Y3Vy
c29yQWR2YW5jZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY3VyCiAKICAgICBMT0coSURC
LCAiRGF0YWJhc2VQcm9jZXNzIGN1cnNvckFkdmFuY2UgcmVxdWVzdCBJRCAlbGx1LCBjdXJzb3Ig
aWQgJWxsaSIsIHJlcXVlc3RJRCwgY3Vyc29ySUQpOwogICAgIFJlZlB0cjxEYXRhYmFzZVByb2Nl
c3NJREJDb25uZWN0aW9uPiBjb25uZWN0aW9uKHRoaXMpOwotICAgIG1fdW5pcXVlSURCRGF0YWJh
c2UtPmN1cnNvckFkdmFuY2UoSURCSWRlbnRpZmllcigqdGhpcywgY3Vyc29ySUQpLCBjb3VudCwg
W2Nvbm5lY3Rpb24sIHJlcXVlc3RJRF0oY29uc3QgSURCS2V5RGF0YSYgcmVzdWx0S2V5LCBjb25z
dCBJREJLZXlEYXRhJiBwcmltYXJ5S2V5LCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gdmFsdWUs
IHVpbnQzMl90IGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKLSAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEgPSB2YWx1ZSA/IElQQzo6RGF0YVJlZmVyZW5jZShy
ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgpKSwgdmFsdWUtPnNp
emUoKSkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKTsKLSAgICAgICAgY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6V2ViSURCU2VydmVyQ29ubmVjdGlvbjo6RGlkQWR2YW5jZUN1cnNvcihyZXF1ZXN0
SUQsIHJlc3VsdEtleSwgcHJpbWFyeUtleSwgZGF0YSwgZXJyb3JDb2RlLCBlcnJvck1lc3NhZ2Up
KTsKKyAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hcHBlbmQoW2Nvbm5lY3Rpb24sIHJlcXVlc3RJRCwg
Y3Vyc29ySUQsIGNvdW50XSgpIHsKKyAgICAgICAgY29ubmVjdGlvbi0+bV91bmlxdWVJREJEYXRh
YmFzZS0+Y3Vyc29yQWR2YW5jZShJREJJZGVudGlmaWVyKCpjb25uZWN0aW9uLCBjdXJzb3JJRCks
IGNvdW50LCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShjb25zdCBJREJLZXlEYXRhJiByZXN1bHRL
ZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkg
eworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEgPSB2YWx1ZSA/IElQQzo6RGF0
YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0YSgp
KSwgdmFsdWUtPnNpemUoKSkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKTsKKyAgICAgICAgICAgIGNv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZEFkdmFu
Y2VDdXJzb3IocmVxdWVzdElELCByZXN1bHRLZXksIHByaW1hcnlLZXksIGRhdGEsIGVycm9yQ29k
ZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5maW5pc2hlZFJlcXVl
c3QoKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBzZXJ2aWNlUGVuZGluZ1JlcXVlc3Rz
KCk7CiB9CiAKIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6Y3Vyc29ySXRlcmF0
ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY3Vyc29ySUQsIGNvbnN0IElEQktleURhdGEm
IGtleSkKQEAgLTMyOSwxMCArNDM1LDM0IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVj
dGlvbjo6Y3Vyc29ySXRlcmF0ZSh1aW50NjRfdCByZXF1ZXN0SUQsIGludDY0X3QgY3VyCiAKICAg
ICBMT0coSURCLCAiRGF0YWJhc2VQcm9jZXNzIGN1cnNvckl0ZXJhdGUgcmVxdWVzdCBJRCAlbGx1
LCBjdXJzb3IgaWQgJWxsaSIsIHJlcXVlc3RJRCwgY3Vyc29ySUQpOwogICAgIFJlZlB0cjxEYXRh
YmFzZVByb2Nlc3NJREJDb25uZWN0aW9uPiBjb25uZWN0aW9uKHRoaXMpOwotICAgIG1fdW5pcXVl
SURCRGF0YWJhc2UtPmN1cnNvckl0ZXJhdGUoSURCSWRlbnRpZmllcigqdGhpcywgY3Vyc29ySUQp
LCBrZXksIFtjb25uZWN0aW9uLCByZXF1ZXN0SURdKGNvbnN0IElEQktleURhdGEmIHJlc3VsdEtl
eSwgY29uc3QgSURCS2V5RGF0YSYgcHJpbWFyeUtleSwgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+
IHZhbHVlLCB1aW50MzJfdCBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7
Ci0gICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhID0gdmFsdWUgPyBJUEM6OkRhdGFSZWZl
cmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4odmFsdWUtPmRhdGEoKSksIHZh
bHVlLT5zaXplKCkpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCk7Ci0gICAgICAgIGNvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZEl0ZXJhdGVDdXJzb3Io
cmVxdWVzdElELCByZXN1bHRLZXksIHByaW1hcnlLZXksIGRhdGEsIGVycm9yQ29kZSwgZXJyb3JN
ZXNzYWdlKSk7CisgICAgbV9wZW5kaW5nUmVxdWVzdHMuYXBwZW5kKFtjb25uZWN0aW9uLCByZXF1
ZXN0SUQsIGN1cnNvcklELCBrZXldKCkgeworICAgICAgICBjb25uZWN0aW9uLT5tX3VuaXF1ZUlE
QkRhdGFiYXNlLT5jdXJzb3JJdGVyYXRlKElEQklkZW50aWZpZXIoKmNvbm5lY3Rpb24sIGN1cnNv
cklEKSwga2V5LCBbY29ubmVjdGlvbiwgcmVxdWVzdElEXShjb25zdCBJREJLZXlEYXRhJiByZXN1
bHRLZXksIGNvbnN0IElEQktleURhdGEmIHByaW1hcnlLZXksIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiB2YWx1ZSwgdWludDMyX3QgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgeworICAgICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEgPSB2YWx1ZSA/IElQQzo6
RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPih2YWx1ZS0+ZGF0
YSgpKSwgdmFsdWUtPnNpemUoKSkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKTsKKyAgICAgICAgICAg
IGNvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OldlYklEQlNlcnZlckNvbm5lY3Rpb246OkRpZEl0
ZXJhdGVDdXJzb3IocmVxdWVzdElELCByZXN1bHRLZXksIHByaW1hcnlLZXksIGRhdGEsIGVycm9y
Q29kZSwgZXJyb3JNZXNzYWdlKSk7CisgICAgICAgICAgICBjb25uZWN0aW9uLT5maW5pc2hlZFJl
cXVlc3QoKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICBzZXJ2aWNlUGVuZGluZ1JlcXVl
c3RzKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzSURCQ29ubmVjdGlvbjo6c2VydmljZVBl
bmRpbmdSZXF1ZXN0cygpCit7CisgICAgaWYgKCFtX3BlbmRpbmdSZXF1ZXN0cy5zaXplKCkgfHwg
bV9yZXF1ZXN0SW5Qcm9ncmVzcykKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fdW5p
cXVlSURCRGF0YWJhc2UpOworCisgICAgbV9yZXF1ZXN0SW5Qcm9ncmVzcyA9IHRydWU7CisgICAg
bV9wZW5kaW5nUmVxdWVzdHMudGFrZUZpcnN0KCkoKTsKK30KKwordm9pZCBEYXRhYmFzZVByb2Nl
c3NJREJDb25uZWN0aW9uOjpmaW5pc2hlZFJlcXVlc3QoKQoreworICAgIEFTU0VSVChtX3JlcXVl
c3RJblByb2dyZXNzKTsKKyAgICBtX3JlcXVlc3RJblByb2dyZXNzID0gZmFsc2U7CisgICAgaWYg
KG1fcGVuZGluZ1JlcXVlc3RzLnNpemUoKSkKKyAgICAgICAgc2VydmljZVBlbmRpbmdSZXF1ZXN0
cygpOwogfQogCiB2b2lkIERhdGFiYXNlUHJvY2Vzc0lEQkNvbm5lY3Rpb246OmNsb3NlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9JbmRleGVkREIvRGF0YWJh
c2VQcm9jZXNzSURCQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgKaW5kZXggOTIzYjUyZC4u
YjM0ZjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0luZGV4
ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0luZGV4ZWREQi9EYXRhYmFzZVByb2Nlc3NJREJDb25uZWN0aW9uLmgK
QEAgLTkwLDEyICs5MCwxOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY291bnQodWludDY0X3QgcmVx
dWVzdElELCBpbnQ2NF90IHRyYW5zYWN0aW9uSUQsIGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50
NjRfdCBpbmRleElELCBjb25zdCBXZWJDb3JlOjpJREJLZXlSYW5nZURhdGEmKTsKICAgICB2b2lk
IGRlbGV0ZVJhbmdlKHVpbnQ2NF90IHJlcXVlc3RJRCwgaW50NjRfdCB0cmFuc2FjdGlvbklELCBp
bnQ2NF90IG9iamVjdFN0b3JlSUQsIGNvbnN0IFdlYkNvcmU6OklEQktleVJhbmdlRGF0YSYga2V5
UmFuZ2UpOwogCisgICAgdm9pZCBzZXJ2aWNlUGVuZGluZ1JlcXVlc3RzKCk7CisgICAgdm9pZCBm
aW5pc2hlZFJlcXVlc3QoKTsKKwogICAgIHZvaWQgY2xvc2UoKTsKIAogICAgIFJlZjxEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKICAgICB1aW50NjRfdCBtX3Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyOwogCiAgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
PiBtX3VuaXF1ZUlEQkRhdGFiYXNlOworCisgICAgRGVxdWU8c3RkOjpmdW5jdGlvbjx2b2lkICgp
Pj4gbV9wZW5kaW5nUmVxdWVzdHM7CisgICAgYm9vbCBtX3JlcXVlc3RJblByb2dyZXNzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235329</attachid>
            <date>2014-07-22 17:19:19 -0700</date>
            <delta_ts>2014-08-06 12:50:50 -0700</delta_ts>
            <desc>WIP patch v2</desc>
            <filename>request-queue.patch</filename>
            <type>text/plain</type>
            <size>14485</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmQuY3BwCmluZGV4IDc3YWYyNjcuLjJkYjAyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcApAQCAt
MzM1LDYgKzMzNSw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjp0cmFuc2FjdGlvbkZpbmlz
aGVkKElEQlRyYW5zYWN0aW9uQmFja2VuZCogcmF3VHJhbnNhY3RpCiAgICAgICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0
KCkpOwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsK
ICAgICB9CisKKyAgICBpZiAobV9jbG9zaW5nQ29ubmVjdGlvbiAmJiBtX3RyYW5zYWN0aW9ucy5p
c0VtcHR5KCkpCisgICAgICAgIGZpbmlzaENsb3NlKCk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHJhd1RyYW5zYWN0aW9uKQpAQCAtNTk2LDcgKzU5OSw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBDYWxs
YmFja3MpCiAgICAgLy8gVG8gYXZvaWQgdGhhdCBzaXR1YXRpb24sIGRvbid0IHByb2NlZWQgaW4g
Y2FzZSBvZiByZWVudHJhbmN5LgogICAgIGlmIChtX2Nsb3NpbmdDb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47Ci0gICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNsb3NpbmdDb25uZWN0aW9uKG1f
Y2xvc2luZ0Nvbm5lY3Rpb24sIHRydWUpOworICAgIG1fY2xvc2luZ0Nvbm5lY3Rpb24gPSB0cnVl
OwogICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgYSB0ZXN0
IGZvciB0aGUgbV9wZW5kaW5nT3BlbkNhbGxzIGNhc2VzIGJlbG93LgpAQCAtNjA2LDE1ICs2MDks
MjMgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3M+IHBycENhbGxiYWNrcykKICAgICAgICAgZm9yIChUcmFuc2FjdGlvbk1hcDo6
Y29uc3RfaXRlcmF0b3I6OlZhbHVlcyBpdCA9IHRyYW5zYWN0aW9ucy52YWx1ZXMoKS5iZWdpbigp
LCBlbmQgPSB0cmFuc2FjdGlvbnMudmFsdWVzKCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAg
ICAgICAgICAgICgqaXQpLT5hYm9ydChlcnJvcik7CiAKLSAgICAgICAgQVNTRVJUKG1fdHJhbnNh
Y3Rpb25zLmlzRW1wdHkoKSk7CisgICAgICAgIGlmIChtX3RyYW5zYWN0aW9ucy5pc0VtcHR5KCkp
CisgICAgICAgICAgICBmaW5pc2hDbG9zZSgpOworICAgIH0KK30KKwordm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmQ6OmZpbmlzaENsb3NlKCkKK3sKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuaXNF
bXB0eSgpKTsKKyAgICBBU1NFUlQobV9jbG9zaW5nQ29ubmVjdGlvbik7CiAKLSAgICAgICAgbV9z
ZXJ2ZXJDb25uZWN0aW9uLT5jbG9zZSgpOworICAgIG1fc2VydmVyQ29ubmVjdGlvbi0+Y2xvc2Uo
KTsKIAotICAgICAgICAvLyBUaGlzIGNoZWNrIHNob3VsZCBvbmx5IGJlIGZhbHNlIGluIHVuaXQg
dGVzdHMuCi0gICAgICAgIEFTU0VSVChtX2ZhY3RvcnkpOwotICAgICAgICBpZiAobV9mYWN0b3J5
KQotICAgICAgICAgICAgbV9mYWN0b3J5LT5yZW1vdmVJREJEYXRhYmFzZUJhY2tlbmQobV9pZGVu
dGlmaWVyKTsKLSAgICB9CisgICAgLy8gVGhpcyBjaGVjayBzaG91bGQgb25seSBiZSBmYWxzZSBp
biB1bml0IHRlc3RzLgorICAgIEFTU0VSVChtX2ZhY3RvcnkpOworICAgIGlmIChtX2ZhY3Rvcnkp
CisgICAgICAgIG1fZmFjdG9yeS0+cmVtb3ZlSURCRGF0YWJhc2VCYWNrZW5kKG1faWRlbnRpZmll
cik7CisgICAgbV9jbG9zaW5nQ29ubmVjdGlvbiA9IGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQmFja2VuZC5oCmluZGV4IDIxNGQyZjUuLjdjOTNhYjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oCkBA
IC0xNDIsNiArMTQyLDggQEAgcHJpdmF0ZToKICAgICBib29sIGlzRGVsZXRlRGF0YWJhc2VCbG9j
a2VkKCk7CiAgICAgdm9pZCBkZWxldGVEYXRhYmFzZUFzeW5jKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPik7CiAKKyAgICB2b2lkIGZpbmlzaENsb3NlKCk7CisKICAgICBJREJEYXRhYmFzZU1ldGFk
YXRhIG1fbWV0YWRhdGE7CiAKICAgICBTdHJpbmcgbV9pZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZC5jcHAKaW5kZXggNjhkMmNhOC4uZGYyYjMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCkBAIC0x
MzEsMzkgKzEzMSw0NCBAQCB2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6YWJvcnQoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcikKICAgICAvLyBUaGUgbGFzdCByZWZlcmVuY2Ug
dG8gdGhpcyBvYmplY3QgbWF5IGJlIHJlbGVhc2VkIHdoaWxlIHBlcmZvcm1pbmcgdGhlCiAgICAg
Ly8gYWJvcnQgc3RlcHMgYmVsb3cuIFdlIHRoZXJlZm9yZSB0YWtlIGEgc2VsZiByZWZlcmVuY2Ug
dG8ga2VlcCBvdXJzZWx2ZXMKICAgICAvLyBhbGl2ZSB3aGlsZSBleGVjdXRpbmcgdGhpcyBtZXRo
b2QuCi0gICAgUmVmPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gcHJvdGVjdCh0aGlzKTsKIAotICAgIG1fc3Rh
dGUgPSBGaW5pc2hlZDsKLSAgICBtX3Rhc2tUaW1lci5zdG9wKCk7CisgICAgYXV0byBhYm9ydEJs
b2NrID0gW3Byb3RlY3QsIHRoaXMsIGVycm9yXSgpIG11dGFibGUgeworICAgICAgICAvLyBSdW4g
dGhlIGFib3J0IHRhc2tzLCBpZiBhbnkuCisgICAgICAgIHdoaWxlICghbV9hYm9ydFRhc2tRdWV1
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxJREJTeW5jaHJvbm91c09wZXJhdGlv
bj4gdGFzayhtX2Fib3J0VGFza1F1ZXVlLnRha2VGaXJzdCgpKTsKKyAgICAgICAgICAgIHRhc2st
PnBlcmZvcm0oKTsKKyAgICAgICAgfQogCi0gICAgaWYgKHdhc1J1bm5pbmcpCi0gICAgICAgIG1f
ZGF0YWJhc2UtPnNlcnZlckNvbm5lY3Rpb24oKS5yb2xsYmFja1RyYW5zYWN0aW9uKG1faWQsIFtd
KCkgeyB9KTsKKyAgICAgICAgLy8gQmFja2luZyBzdG9yZSByZXNvdXJjZXMgKGhlbGQgdmlhIGN1
cnNvcnMpIG11c3QgYmUgcmVsZWFzZWQgYmVmb3JlIHNjcmlwdCBjYWxsYmFja3MKKyAgICAgICAg
Ly8gYXJlIGZpcmVkLCBhcyB0aGUgc2NyaXB0IGNhbGxiYWNrcyBtYXkgcmVsZWFzZSByZWZlcmVu
Y2VzIGFuZCBhbGxvdyB0aGUgYmFja2luZyBzdG9yZQorICAgICAgICAvLyBpdHNlbGYgdG8gYmUg
cmVsZWFzZWQsIGFuZCBvcmRlciBpcyBjcml0aWNhbC4KKyAgICAgICAgY2xvc2VPcGVuQ3Vyc29y
cygpOworICAgIH07CiAKLSAgICAvLyBSdW4gdGhlIGFib3J0IHRhc2tzLCBpZiBhbnkuCi0gICAg
d2hpbGUgKCFtX2Fib3J0VGFza1F1ZXVlLmlzRW1wdHkoKSkgewotICAgICAgICBSZWZQdHI8SURC
U3luY2hyb25vdXNPcGVyYXRpb24+IHRhc2sobV9hYm9ydFRhc2tRdWV1ZS50YWtlRmlyc3QoKSk7
Ci0gICAgICAgIHRhc2stPnBlcmZvcm0oKTsKLSAgICB9CisgICAgaWYgKHdhc1J1bm5pbmcpCisg
ICAgICAgIHNjaGVkdWxlUm9sbGJhY2tUcmFuc2FjdGlvbk9wZXJhdGlvbihhYm9ydEJsb2NrKTsK
KyAgICBlbHNlCisgICAgICAgIGFib3J0QmxvY2soKTsKIAotICAgIC8vIEJhY2tpbmcgc3RvcmUg
cmVzb3VyY2VzIChoZWxkIHZpYSBjdXJzb3JzKSBtdXN0IGJlIHJlbGVhc2VkIGJlZm9yZSBzY3Jp
cHQgY2FsbGJhY2tzCi0gICAgLy8gYXJlIGZpcmVkLCBhcyB0aGUgc2NyaXB0IGNhbGxiYWNrcyBt
YXkgcmVsZWFzZSByZWZlcmVuY2VzIGFuZCBhbGxvdyB0aGUgYmFja2luZyBzdG9yZQotICAgIC8v
IGl0c2VsZiB0byBiZSByZWxlYXNlZCwgYW5kIG9yZGVyIGlzIGNyaXRpY2FsLgotICAgIGNsb3Nl
T3BlbkN1cnNvcnMoKTsKKyAgICBzY2hlZHVsZVJlc2V0VHJhbnNhY3Rpb25PcGVyYXRpb24oW3By
b3RlY3QsIHRoaXMsIGVycm9yXSgpIG11dGFibGUgeworICAgICAgICBtX3N0YXRlID0gRmluaXNo
ZWQ7CiAKLSAgICBtX2RhdGFiYXNlLT5zZXJ2ZXJDb25uZWN0aW9uKCkucmVzZXRUcmFuc2FjdGlv
bihtX2lkLCBbXSgpIHsgfSk7CisgICAgICAgIC8vIFRyYW5zYWN0aW9ucyBtdXN0IGFsc28gYmUg
bWFya2VkIGFzIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGZyb250LWVuZCBpcyBub3RpZmllZCwgYXMK
KyAgICAgICAgLy8gdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24gdW5ibG9ja3Mgb3BlcmF0aW9u
cyBsaWtlIGNsb3NpbmcgY29ubmVjdGlvbnMuCisgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKS0+ZGlkRmluaXNoVHJhbnNhY3Rpb24odGhpcyk7CisgICAgICAgIEFT
U0VSVCghbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpLT5pc0FjdGl2ZSh0aGlz
KSk7CisgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CiAKLSAg
ICAvLyBUcmFuc2FjdGlvbnMgbXVzdCBhbHNvIGJlIG1hcmtlZCBhcyBjb21wbGV0ZWQgYmVmb3Jl
IHRoZSBmcm9udC1lbmQgaXMgbm90aWZpZWQsIGFzCi0gICAgLy8gdGhlIHRyYW5zYWN0aW9uIGNv
bXBsZXRpb24gdW5ibG9ja3Mgb3BlcmF0aW9ucyBsaWtlIGNsb3NpbmcgY29ubmVjdGlvbnMuCi0g
ICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25Db29yZGluYXRvcigpLT5kaWRGaW5pc2hUcmFuc2Fj
dGlvbih0aGlzKTsKLSAgICBBU1NFUlQoIW1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IoKS0+aXNBY3RpdmUodGhpcykpOwotICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNo
ZWQodGhpcyk7CisgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmQ+IGRhdGFiYXNlID0g
bV9kYXRhYmFzZS5yZWxlYXNlKCk7CiAKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBk
YXRhYmFzZSA9IG1fZGF0YWJhc2UucmVsZWFzZSgpOworICAgICAgICBpZiAobV9jYWxsYmFja3Mp
CisgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChpZCgpLCBlcnJvcik7CiAKLSAgICBp
ZiAobV9jYWxsYmFja3MpCi0gICAgICAgIG1fY2FsbGJhY2tzLT5vbkFib3J0KGlkKCksIGVycm9y
KTsKKyAgICAgICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWRBbmRBYm9ydEZpcmVkKHRo
aXMpOwogCi0gICAgZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWRBbmRBYm9ydEZpcmVkKHRo
aXMpOworICAgICAgICBtX3Rhc2tUaW1lci5zdG9wKCk7CisgICAgfSk7CiB9CiAKIGJvb2wgSURC
VHJhbnNhY3Rpb25CYWNrZW5kOjppc1Rhc2tRdWV1ZUVtcHR5KCkgY29uc3QKQEAgLTIyOSwxMiAr
MjM0LDkgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OmNvbW1pdCgpCiAgICAgLy8gYWxp
dmUgd2hpbGUgZXhlY3V0aW5nIHRoaXMgbWV0aG9kLgogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlv
bkJhY2tlbmQ+IGJhY2tlbmQodGhpcyk7CiAKLSAgICBib29sIHVudXNlZCA9IG1fc3RhdGUgPT0g
VW51c2VkIHx8IG1fc3RhdGUgPT0gVW5vcGVuZWQ7Ci0gICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwot
Ci0gICAgYm9vbCBjb21taXR0ZWQgPSB1bnVzZWQ7CisgICAgYm9vbCBjb21taXR0ZWQgPSBtX3N0
YXRlID09IFVub3BlbmVkIHx8IG1fc3RhdGUgPT0gVW51c2VkOwogCi0gICAgbV9kYXRhYmFzZS0+
c2VydmVyQ29ubmVjdGlvbigpLmNvbW1pdFRyYW5zYWN0aW9uKG1faWQsIFtiYWNrZW5kLCB0aGlz
LCBjb21taXR0ZWQsIHVudXNlZF0oYm9vbCBzdWNjZXNzKSBtdXRhYmxlIHsKKyAgICBzY2hlZHVs
ZUNvbW1pdFRyYW5zYWN0aW9uT3BlcmF0aW9uKFtiYWNrZW5kLCB0aGlzLCBjb21taXR0ZWRdKGJv
b2wgc3VjY2VzcykgbXV0YWJsZSB7CiAgICAgICAgIC8vIFRoaXMgbWlnaHQgYmUgY29tbWl0VHJh
bnNhY3Rpb24gcmVxdWVzdCBhYm9ydGluZyBkdXJpbmcgb3IgYWZ0ZXIgc3luY2hyb25vdXMgSURC
VHJhbnNhY3Rpb25CYWNrZW5kOjphYm9ydCgpIGNhbGwuCiAgICAgICAgIC8vIFRoaXMgY2FuIGVh
c2lseSBoYXBwZW4gaWYgdGhlIHBhZ2UgaXMgbmF2aWdhdGVkIGJlZm9yZSBhbGwgdHJhbnNhY3Rp
b25zIGZpbmlzaC4KICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUgbm8gZnVydGhlciBj
bGVhbnVwIGFuZCBkb24ndCBuZWVkIHRvIG1ha2UgYW55IGNhbGxiYWNrcy4KQEAgLTI1MCwyMyAr
MjUyLDI3IEBAIHZvaWQgSURCVHJhbnNhY3Rpb25CYWNrZW5kOjpjb21taXQoKQogICAgICAgICAv
LyBpdHNlbGYgdG8gYmUgcmVsZWFzZWQsIGFuZCBvcmRlciBpcyBjcml0aWNhbC4KICAgICAgICAg
Y2xvc2VPcGVuQ3Vyc29ycygpOwogCi0gICAgICAgIG1fZGF0YWJhc2UtPnNlcnZlckNvbm5lY3Rp
b24oKS5yZXNldFRyYW5zYWN0aW9uKG1faWQsIFtdKCkgeyB9KTsKKyAgICAgICAgc2NoZWR1bGVS
ZXNldFRyYW5zYWN0aW9uT3BlcmF0aW9uKFtiYWNrZW5kLCB0aGlzLCBjb21taXR0ZWRdKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBib29sIHVub3BlbmVkID0gbV9zdGF0ZSA9PSBVbm9wZW5lZDsK
IAotICAgICAgICAvLyBUcmFuc2FjdGlvbnMgbXVzdCBhbHNvIGJlIG1hcmtlZCBhcyBjb21wbGV0
ZWQgYmVmb3JlIHRoZSBmcm9udC1lbmQgaXMgbm90aWZpZWQsIGFzCi0gICAgICAgIC8vIHRoZSB0
cmFuc2FjdGlvbiBjb21wbGV0aW9uIHVuYmxvY2tzIG9wZXJhdGlvbnMgbGlrZSBjbG9zaW5nIGNv
bm5lY3Rpb25zLgotICAgICAgICBpZiAoIXVudXNlZCkKLSAgICAgICAgICAgIG1fZGF0YWJhc2Ut
PnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+ZGlkRmluaXNoVHJhbnNhY3Rpb24odGhpcyk7Ci0g
ICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uRmluaXNoZWQodGhpcyk7CisgICAgICAgICAg
ICBtX3N0YXRlID0gRmluaXNoZWQ7CiAKLSAgICAgICAgaWYgKGNvbW1pdHRlZCkgewotICAgICAg
ICAgICAgbV9jYWxsYmFja3MtPm9uQ29tcGxldGUoaWQoKSk7Ci0gICAgICAgICAgICBtX2RhdGFi
YXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZCh0aGlzKTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkFib3J0KGlkKCksIElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50
ZXJuYWwgZXJyb3IgY29tbWl0dGluZyB0cmFuc2FjdGlvbi4iKSk7Ci0gICAgICAgICAgICBtX2Rh
dGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZCh0aGlzKTsKLSAgICAgICAg
fQorICAgICAgICAgICAgLy8gVHJhbnNhY3Rpb25zIG11c3QgYWxzbyBiZSBtYXJrZWQgYXMgY29t
cGxldGVkIGJlZm9yZSB0aGUgZnJvbnQtZW5kIGlzIG5vdGlmaWVkLCBhcworICAgICAgICAgICAg
Ly8gdGhlIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24gdW5ibG9ja3Mgb3BlcmF0aW9ucyBsaWtlIGNs
b3NpbmcgY29ubmVjdGlvbnMuCisgICAgICAgICAgICBpZiAoIXVub3BlbmVkKQorICAgICAgICAg
ICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+ZGlkRmluaXNoVHJh
bnNhY3Rpb24odGhpcyk7CisgICAgICAgICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlz
aGVkKHRoaXMpOworCisgICAgICAgICAgICBpZiAoY29tbWl0dGVkKSB7CisgICAgICAgICAgICAg
ICAgbV9jYWxsYmFja3MtPm9uQ29tcGxldGUoaWQoKSk7CisgICAgICAgICAgICAgICAgbV9kYXRh
YmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQodGhpcyk7CisgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkFib3J0KGlkKCks
IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVy
cm9yLCAiSW50ZXJuYWwgZXJyb3IgY29tbWl0dGluZyB0cmFuc2FjdGlvbi4iKSk7CisgICAgICAg
ICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZEFuZEFib3J0RmlyZWQodGhp
cyk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgbV9kYXRhYmFzZSA9IDA7CisgICAgICAgICAg
ICBtX2RhdGFiYXNlID0gMDsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTM2OCw2ICsz
NzQsMjEgQEAgdm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ2xlYXJPYmplY3RT
dG9yZU9wZXJhdGlvbihpbnQ2NF90IG9iamVjdFN0b3IKICAgICBzY2hlZHVsZVRhc2soQ2xlYXJP
YmplY3RTdG9yZU9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG9iamVjdFN0b3JlSWQsIGNhbGxiYWNr
cykpOwogfQogCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVDb21taXRUcmFu
c2FjdGlvbk9wZXJhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjYWxsYmFjaykKK3sK
KyAgICBzY2hlZHVsZVRhc2soQ29tbWl0VHJhbnNhY3Rpb25PcGVyYXRpb246OmNyZWF0ZSh0aGlz
LCBjYWxsYmFjaykpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6c2NoZWR1bGVS
b2xsYmFja1RyYW5zYWN0aW9uT3BlcmF0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY2FsbGJh
Y2spCit7CisgICAgc2NoZWR1bGVUYXNrKFJvbGxiYWNrVHJhbnNhY3Rpb25PcGVyYXRpb246OmNy
ZWF0ZSh0aGlzLCBjYWxsYmFjaykpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQmFja2VuZDo6
c2NoZWR1bGVSZXNldFRyYW5zYWN0aW9uT3BlcmF0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4g
Y2FsbGJhY2spCit7CisgICAgc2NoZWR1bGVUYXNrKFJlc2V0VHJhbnNhY3Rpb25PcGVyYXRpb246
OmNyZWF0ZSh0aGlzLCBjYWxsYmFjaykpOworfQorCiB9OwogCiAjZW5kaWYgLy8gRU5BQkxFKElO
REVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZC5oCmluZGV4IGJiMjAwZGQuLmI1NDRkZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
QmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQmFja2VuZC5oCkBAIC05OSw2ICs5OSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgdGFz
a1RpbWVyRmlyZWQoVGltZXI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiYpOwogICAgIHZvaWQgY2xv
c2VPcGVuQ3Vyc29ycygpOwogCisgICAgdm9pZCBzY2hlZHVsZUNvbW1pdFRyYW5zYWN0aW9uT3Bl
cmF0aW9uKHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNhbGxiYWNrKTsKKyAgICB2b2lkIHNj
aGVkdWxlUm9sbGJhY2tUcmFuc2FjdGlvbk9wZXJhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGNhbGxiYWNrKTsKKyAgICB2b2lkIHNjaGVkdWxlUmVzZXRUcmFuc2FjdGlvbk9wZXJhdGlvbihz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKTsKKwogICAgIGNvbnN0IEhhc2hTZXQ8aW50
NjRfdD4gbV9vYmplY3RTdG9yZUlkczsKICAgICBjb25zdCBJbmRleGVkREI6OlRyYW5zYWN0aW9u
TW9kZSBtX21vZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5jcHAKaW5k
ZXggMWZlNDI1Yy4uY2U4ZDEyOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlv
bnMuY3BwCkBAIC0yNzYsNiArMjc2LDMzIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpWZXJz
aW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246OnBlcmZvcm0oKQogICAgIG1fdHJhbnNhY3Rpb24tPmRh
dGFiYXNlKCkuc2V0Q3VycmVudFZlcnNpb24obV9wcmV2aW91c0ludFZlcnNpb24pOwogfQogCit2
b2lkIFJvbGxiYWNrVHJhbnNhY3Rpb25PcGVyYXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaykKK3sKKyAgICBMT0coU3RvcmFnZUFQSSwgIlJvbGxiYWNr
VHJhbnNhY3Rpb25PcGVyYXRpb24iKTsKKyAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNl
cnZlckNvbm5lY3Rpb24oKS5yb2xsYmFja1RyYW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24tPmlkKCks
IFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2tdKCkgeworICAgICAgICBtX2NhbGxiYWNrKCk7CisgICAg
ICAgIHN1Y2Nlc3NDYWxsYmFjaygpOworICAgIH0pOworfQorCit2b2lkIFJlc2V0VHJhbnNhY3Rp
b25PcGVyYXRpb246OnBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFj
aykKK3sKKyAgICBMT0coU3RvcmFnZUFQSSwgIlJlc2V0VHJhbnNhY3Rpb25PcGVyYXRpb24iKTsK
KyAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5lY3Rpb24oKS5yZXNldFRy
YW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24tPmlkKCksIFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2tdKCkg
eworICAgICAgICBtX2NhbGxiYWNrKCk7CisgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpOworICAg
IH0pOworfQorCit2b2lkIENvbW1pdFRyYW5zYWN0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spCit7CisgICAgTE9HKFN0b3JhZ2VBUEks
ICJDb21taXRUcmFuc2FjdGlvbk9wZXJhdGlvbiIpOworICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFi
YXNlKCkuc2VydmVyQ29ubmVjdGlvbigpLmNvbW1pdFRyYW5zYWN0aW9uKG1fdHJhbnNhY3Rpb24t
PmlkKCksIFt0aGlzLCBzdWNjZXNzQ2FsbGJhY2tdKGJvb2wgc3VjY2VzcykgeworICAgICAgICBt
X2NhbGxiYWNrKHN1Y2Nlc3MpOworICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKKyAgICB9KTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmgKaW5kZXggOTY0Y2I4
NS4uMDZmNTk1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuaApAQCAtNDY1
LDYgKzQ2NSw2OSBAQCBwcml2YXRlOgogICAgIGNvbnN0IFJlZlB0cjxJREJDYWxsYmFja3M+IG1f
Y2FsbGJhY2tzOwogfTsKIAorY2xhc3MgUm9sbGJhY2tUcmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1
YmxpYyBJREJPcGVyYXRpb24geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9w
ZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoKT4gY2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJvbGxiYWNrVHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb24sIGNhbGxiYWNr
KSk7CisgICAgfQorICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgp
PiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRlIGZpbmFsOworCisgICAgSURCVHJhbnNhY3Rpb25C
YWNrZW5kKiB0cmFuc2FjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb24uZ2V0KCk7
IH0KKworcHJpdmF0ZToKKyAgICBSb2xsYmFja1RyYW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5z
YWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY2FsbGJh
Y2spCisgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKQorICAgICwgbV9jYWxsYmFjayhj
YWxsYmFjaykKKyAgICB7CisgICAgfQorCisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZD4gbV90cmFuc2FjdGlvbjsKKyAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fY2Fs
bGJhY2s7Cit9OworCitjbGFzcyBSZXNldFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIElE
Qk9wZXJhdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9u
PiBjcmVhdGUoSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgc3RkOjpmdW5jdGlv
bjx2b2lkICgpPiBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UmVzZXRUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbiwgY2FsbGJhY2spKTsKKyAgICB9
CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3ND
YWxsYmFjaykgb3ZlcnJpZGUgZmluYWw7CisKKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRy
YW5zYWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbi5nZXQoKTsgfQorCitwcml2
YXRlOgorICAgIFJlc2V0VHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5k
KiB0cmFuc2FjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjYWxsYmFjaykKKyAgICA6IG1f
dHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pCisgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAg
IHsKKyAgICB9CisKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBtX3RyYW5zYWN0
aW9uOworICAgIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gbV9jYWxsYmFjazsKK307CisK
K2NsYXNzIENvbW1pdFRyYW5zYWN0aW9uT3BlcmF0aW9uIDogcHVibGljIElEQk9wZXJhdGlvbiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlcmF0aW9uPiBjcmVhdGUoSURC
VHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29s
KT4gY2FsbGJhY2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbW1pdFRy
YW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBjYWxsYmFjaykpOworICAgIH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNr
KSBvdmVycmlkZSBmaW5hbDsKKworICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgQ29tbWl0VHJhbnNhY3Rpb25PcGVyYXRpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFu
c2FjdGlvbiwgc3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY2FsbGJhY2spCisgICAgOiBtX3Ry
YW5zYWN0aW9uKHRyYW5zYWN0aW9uKQorICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICB7
CisgICAgfQorCisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlv
bjsKKyAgICBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBtX2NhbGxiYWNrOworfTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFU
QUJBU0UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236126</attachid>
            <date>2014-08-06 12:50:50 -0700</date>
            <delta_ts>2014-08-06 12:50:50 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>request-queue.patch</filename>
            <type>text/plain</type>
            <size>14354</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNl
QmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFz
ZUJhY2tlbmQuY3BwCmluZGV4IGVlNTM4MWEuLmFmYzliM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcApAQCAt
MzM1LDYgKzMzNSw5IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjp0cmFuc2FjdGlvbkZpbmlz
aGVkKElEQlRyYW5zYWN0aW9uQmFja2VuZCogcmF3VHJhbnNhY3RpCiAgICAgICAgIEFTU0VSVCh0
cmFuc2FjdGlvbi5nZXQoKSA9PSBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uZ2V0
KCkpOwogICAgICAgICBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uY2xlYXIoKTsK
ICAgICB9CisKKyAgICBpZiAobV9jbG9zaW5nQ29ubmVjdGlvbiAmJiBtX3RyYW5zYWN0aW9ucy5p
c0VtcHR5KCkpCisgICAgICAgIGZpbmlzaENsb3NlKCk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZChJREJUcmFuc2FjdGlvbkJh
Y2tlbmQqIHJhd1RyYW5zYWN0aW9uKQpAQCAtNTk2LDcgKzU5OSw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kOjpjbG9zZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBwcnBDYWxs
YmFja3MpCiAgICAgLy8gVG8gYXZvaWQgdGhhdCBzaXR1YXRpb24sIGRvbid0IHByb2NlZWQgaW4g
Y2FzZSBvZiByZWVudHJhbmN5LgogICAgIGlmIChtX2Nsb3NpbmdDb25uZWN0aW9uKQogICAgICAg
ICByZXR1cm47Ci0gICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNsb3NpbmdDb25uZWN0aW9uKG1f
Y2xvc2luZ0Nvbm5lY3Rpb24sIHRydWUpOworICAgIG1fY2xvc2luZ0Nvbm5lY3Rpb24gPSB0cnVl
OwogICAgIHByb2Nlc3NQZW5kaW5nQ2FsbHMoKTsKIAogICAgIC8vIEZJWE1FOiBBZGQgYSB0ZXN0
IGZvciB0aGUgbV9wZW5kaW5nT3BlbkNhbGxzIGNhc2VzIGJlbG93LgpAQCAtNjA2LDYgKzYwOSwx
NSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQogICAgICAgICBmb3IgKFRyYW5zYWN0aW9uTWFwOjpj
b25zdF9pdGVyYXRvcjo6VmFsdWVzIGl0ID0gdHJhbnNhY3Rpb25zLnZhbHVlcygpLmJlZ2luKCks
IGVuZCA9IHRyYW5zYWN0aW9ucy52YWx1ZXMoKS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAg
ICAgICAgICAgKCppdCktPmFib3J0KGVycm9yKTsKIAorICAgICAgICBpZiAobV90cmFuc2FjdGlv
bnMuaXNFbXB0eSgpKQorICAgICAgICAgICAgZmluaXNoQ2xvc2UoKTsKKyAgICB9Cit9CisKK3Zv
aWQgSURCRGF0YWJhc2VCYWNrZW5kOjpmaW5pc2hDbG9zZSgpCit7CisgICAgQVNTRVJUKG1fY2xv
c2luZ0Nvbm5lY3Rpb24pOworICAgIGlmICghY29ubmVjdGlvbkNvdW50KCkgJiYgIW1fcGVuZGlu
Z09wZW5DYWxscy5zaXplKCkgJiYgIW1fcGVuZGluZ0RlbGV0ZUNhbGxzLnNpemUoKSkgewogICAg
ICAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKIAogICAgICAgICBtX3NlcnZl
ckNvbm5lY3Rpb24tPmNsb3NlKCk7CkBAIC02MTUsNiArNjI3LDcgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmQ6OmNsb3NlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IHBycENhbGxi
YWNrcykKICAgICAgICAgaWYgKG1fZmFjdG9yeSkKICAgICAgICAgICAgIG1fZmFjdG9yeS0+cmVt
b3ZlSURCRGF0YWJhc2VCYWNrZW5kKG1faWRlbnRpZmllcik7CiAgICAgfQorICAgIG1fY2xvc2lu
Z0Nvbm5lY3Rpb24gPSBmYWxzZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQu
aAppbmRleCBlYzQzNTBhLi5hNmRhZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQuaApAQCAtMTQyLDYgKzE0Miw4IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpOwogICAgIHZvaWQg
ZGVsZXRlRGF0YWJhc2VBc3luYyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4pOwogCisgICAgdm9p
ZCBmaW5pc2hDbG9zZSgpOworCiAgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtX21ldGFkYXRhOwog
CiAgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDY4ZDJj
YTguLmRmMmIzMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kLmNwcApAQCAtMTMxLDM5ICsxMzEsNDQgQEAg
dm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OmFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4gZXJyb3IpCiAgICAgLy8gVGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0IG1h
eSBiZSByZWxlYXNlZCB3aGlsZSBwZXJmb3JtaW5nIHRoZQogICAgIC8vIGFib3J0IHN0ZXBzIGJl
bG93LiBXZSB0aGVyZWZvcmUgdGFrZSBhIHNlbGYgcmVmZXJlbmNlIHRvIGtlZXAgb3Vyc2VsdmVz
CiAgICAgLy8gYWxpdmUgd2hpbGUgZXhlY3V0aW5nIHRoaXMgbWV0aG9kLgotICAgIFJlZjxJREJU
cmFuc2FjdGlvbkJhY2tlbmQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZlB0cjxJREJUcmFuc2Fj
dGlvbkJhY2tlbmQ+IHByb3RlY3QodGhpcyk7CiAKLSAgICBtX3N0YXRlID0gRmluaXNoZWQ7Ci0g
ICAgbV90YXNrVGltZXIuc3RvcCgpOworICAgIGF1dG8gYWJvcnRCbG9jayA9IFtwcm90ZWN0LCB0
aGlzLCBlcnJvcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgLy8gUnVuIHRoZSBhYm9ydCB0YXNrcywg
aWYgYW55LgorICAgICAgICB3aGlsZSAoIW1fYWJvcnRUYXNrUXVldWUuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8SURCU3luY2hyb25vdXNPcGVyYXRpb24+IHRhc2sobV9hYm9ydFRh
c2tRdWV1ZS50YWtlRmlyc3QoKSk7CisgICAgICAgICAgICB0YXNrLT5wZXJmb3JtKCk7CisgICAg
ICAgIH0KIAotICAgIGlmICh3YXNSdW5uaW5nKQotICAgICAgICBtX2RhdGFiYXNlLT5zZXJ2ZXJD
b25uZWN0aW9uKCkucm9sbGJhY2tUcmFuc2FjdGlvbihtX2lkLCBbXSgpIHsgfSk7CisgICAgICAg
IC8vIEJhY2tpbmcgc3RvcmUgcmVzb3VyY2VzIChoZWxkIHZpYSBjdXJzb3JzKSBtdXN0IGJlIHJl
bGVhc2VkIGJlZm9yZSBzY3JpcHQgY2FsbGJhY2tzCisgICAgICAgIC8vIGFyZSBmaXJlZCwgYXMg
dGhlIHNjcmlwdCBjYWxsYmFja3MgbWF5IHJlbGVhc2UgcmVmZXJlbmNlcyBhbmQgYWxsb3cgdGhl
IGJhY2tpbmcgc3RvcmUKKyAgICAgICAgLy8gaXRzZWxmIHRvIGJlIHJlbGVhc2VkLCBhbmQgb3Jk
ZXIgaXMgY3JpdGljYWwuCisgICAgICAgIGNsb3NlT3BlbkN1cnNvcnMoKTsKKyAgICB9OwogCi0g
ICAgLy8gUnVuIHRoZSBhYm9ydCB0YXNrcywgaWYgYW55LgotICAgIHdoaWxlICghbV9hYm9ydFRh
c2tRdWV1ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUmVmUHRyPElEQlN5bmNocm9ub3VzT3BlcmF0
aW9uPiB0YXNrKG1fYWJvcnRUYXNrUXVldWUudGFrZUZpcnN0KCkpOwotICAgICAgICB0YXNrLT5w
ZXJmb3JtKCk7Ci0gICAgfQorICAgIGlmICh3YXNSdW5uaW5nKQorICAgICAgICBzY2hlZHVsZVJv
bGxiYWNrVHJhbnNhY3Rpb25PcGVyYXRpb24oYWJvcnRCbG9jayk7CisgICAgZWxzZQorICAgICAg
ICBhYm9ydEJsb2NrKCk7CiAKLSAgICAvLyBCYWNraW5nIHN0b3JlIHJlc291cmNlcyAoaGVsZCB2
aWEgY3Vyc29ycykgbXVzdCBiZSByZWxlYXNlZCBiZWZvcmUgc2NyaXB0IGNhbGxiYWNrcwotICAg
IC8vIGFyZSBmaXJlZCwgYXMgdGhlIHNjcmlwdCBjYWxsYmFja3MgbWF5IHJlbGVhc2UgcmVmZXJl
bmNlcyBhbmQgYWxsb3cgdGhlIGJhY2tpbmcgc3RvcmUKLSAgICAvLyBpdHNlbGYgdG8gYmUgcmVs
ZWFzZWQsIGFuZCBvcmRlciBpcyBjcml0aWNhbC4KLSAgICBjbG9zZU9wZW5DdXJzb3JzKCk7Cisg
ICAgc2NoZWR1bGVSZXNldFRyYW5zYWN0aW9uT3BlcmF0aW9uKFtwcm90ZWN0LCB0aGlzLCBlcnJv
cl0oKSBtdXRhYmxlIHsKKyAgICAgICAgbV9zdGF0ZSA9IEZpbmlzaGVkOwogCi0gICAgbV9kYXRh
YmFzZS0+c2VydmVyQ29ubmVjdGlvbigpLnJlc2V0VHJhbnNhY3Rpb24obV9pZCwgW10oKSB7IH0p
OworICAgICAgICAvLyBUcmFuc2FjdGlvbnMgbXVzdCBhbHNvIGJlIG1hcmtlZCBhcyBjb21wbGV0
ZWQgYmVmb3JlIHRoZSBmcm9udC1lbmQgaXMgbm90aWZpZWQsIGFzCisgICAgICAgIC8vIHRoZSB0
cmFuc2FjdGlvbiBjb21wbGV0aW9uIHVuYmxvY2tzIG9wZXJhdGlvbnMgbGlrZSBjbG9zaW5nIGNv
bm5lY3Rpb25zLgorICAgICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkt
PmRpZEZpbmlzaFRyYW5zYWN0aW9uKHRoaXMpOworICAgICAgICBBU1NFUlQoIW1fZGF0YWJhc2Ut
PnRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+aXNBY3RpdmUodGhpcykpOworICAgICAgICBtX2Rh
dGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOwogCi0gICAgLy8gVHJhbnNhY3Rpb25z
IG11c3QgYWxzbyBiZSBtYXJrZWQgYXMgY29tcGxldGVkIGJlZm9yZSB0aGUgZnJvbnQtZW5kIGlz
IG5vdGlmaWVkLCBhcwotICAgIC8vIHRoZSB0cmFuc2FjdGlvbiBjb21wbGV0aW9uIHVuYmxvY2tz
IG9wZXJhdGlvbnMgbGlrZSBjbG9zaW5nIGNvbm5lY3Rpb25zLgotICAgIG1fZGF0YWJhc2UtPnRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKS0+ZGlkRmluaXNoVHJhbnNhY3Rpb24odGhpcyk7Ci0gICAg
QVNTRVJUKCFtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCktPmlzQWN0aXZlKHRo
aXMpKTsKLSAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOworICAgICAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kPiBkYXRhYmFzZSA9IG1fZGF0YWJhc2UucmVsZWFz
ZSgpOwogCi0gICAgUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZD4gZGF0YWJhc2UgPSBtX2RhdGFi
YXNlLnJlbGVhc2UoKTsKKyAgICAgICAgaWYgKG1fY2FsbGJhY2tzKQorICAgICAgICAgICAgbV9j
YWxsYmFja3MtPm9uQWJvcnQoaWQoKSwgZXJyb3IpOwogCi0gICAgaWYgKG1fY2FsbGJhY2tzKQot
ICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChpZCgpLCBlcnJvcik7CisgICAgICAgIGRhdGFi
YXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZCh0aGlzKTsKIAotICAgIGRhdGFi
YXNlLT50cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZCh0aGlzKTsKKyAgICAgICAgbV90
YXNrVGltZXIuc3RvcCgpOworICAgIH0pOwogfQogCiBib29sIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZDo6aXNUYXNrUXVldWVFbXB0eSgpIGNvbnN0CkBAIC0yMjksMTIgKzIzNCw5IEBAIHZvaWQgSURC
VHJhbnNhY3Rpb25CYWNrZW5kOjpjb21taXQoKQogICAgIC8vIGFsaXZlIHdoaWxlIGV4ZWN1dGlu
ZyB0aGlzIG1ldGhvZC4KICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kPiBiYWNrZW5k
KHRoaXMpOwogCi0gICAgYm9vbCB1bnVzZWQgPSBtX3N0YXRlID09IFVudXNlZCB8fCBtX3N0YXRl
ID09IFVub3BlbmVkOwotICAgIG1fc3RhdGUgPSBGaW5pc2hlZDsKLQotICAgIGJvb2wgY29tbWl0
dGVkID0gdW51c2VkOworICAgIGJvb2wgY29tbWl0dGVkID0gbV9zdGF0ZSA9PSBVbm9wZW5lZCB8
fCBtX3N0YXRlID09IFVudXNlZDsKIAotICAgIG1fZGF0YWJhc2UtPnNlcnZlckNvbm5lY3Rpb24o
KS5jb21taXRUcmFuc2FjdGlvbihtX2lkLCBbYmFja2VuZCwgdGhpcywgY29tbWl0dGVkLCB1bnVz
ZWRdKGJvb2wgc3VjY2VzcykgbXV0YWJsZSB7CisgICAgc2NoZWR1bGVDb21taXRUcmFuc2FjdGlv
bk9wZXJhdGlvbihbYmFja2VuZCwgdGhpcywgY29tbWl0dGVkXShib29sIHN1Y2Nlc3MpIG11dGFi
bGUgewogICAgICAgICAvLyBUaGlzIG1pZ2h0IGJlIGNvbW1pdFRyYW5zYWN0aW9uIHJlcXVlc3Qg
YWJvcnRpbmcgZHVyaW5nIG9yIGFmdGVyIHN5bmNocm9ub3VzIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZDo6YWJvcnQoKSBjYWxsLgogICAgICAgICAvLyBUaGlzIGNhbiBlYXNpbHkgaGFwcGVuIGlmIHRo
ZSBwYWdlIGlzIG5hdmlnYXRlZCBiZWZvcmUgYWxsIHRyYW5zYWN0aW9ucyBmaW5pc2guCiAgICAg
ICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIG5vIGZ1cnRoZXIgY2xlYW51cCBhbmQgZG9uJ3Qg
bmVlZCB0byBtYWtlIGFueSBjYWxsYmFja3MuCkBAIC0yNTAsMjMgKzI1MiwyNyBAQCB2b2lkIElE
QlRyYW5zYWN0aW9uQmFja2VuZDo6Y29tbWl0KCkKICAgICAgICAgLy8gaXRzZWxmIHRvIGJlIHJl
bGVhc2VkLCBhbmQgb3JkZXIgaXMgY3JpdGljYWwuCiAgICAgICAgIGNsb3NlT3BlbkN1cnNvcnMo
KTsKIAotICAgICAgICBtX2RhdGFiYXNlLT5zZXJ2ZXJDb25uZWN0aW9uKCkucmVzZXRUcmFuc2Fj
dGlvbihtX2lkLCBbXSgpIHsgfSk7CisgICAgICAgIHNjaGVkdWxlUmVzZXRUcmFuc2FjdGlvbk9w
ZXJhdGlvbihbYmFja2VuZCwgdGhpcywgY29tbWl0dGVkXSgpIG11dGFibGUgeworICAgICAgICAg
ICAgYm9vbCB1bm9wZW5lZCA9IG1fc3RhdGUgPT0gVW5vcGVuZWQ7CiAKLSAgICAgICAgLy8gVHJh
bnNhY3Rpb25zIG11c3QgYWxzbyBiZSBtYXJrZWQgYXMgY29tcGxldGVkIGJlZm9yZSB0aGUgZnJv
bnQtZW5kIGlzIG5vdGlmaWVkLCBhcwotICAgICAgICAvLyB0aGUgdHJhbnNhY3Rpb24gY29tcGxl
dGlvbiB1bmJsb2NrcyBvcGVyYXRpb25zIGxpa2UgY2xvc2luZyBjb25uZWN0aW9ucy4KLSAgICAg
ICAgaWYgKCF1bnVzZWQpCi0gICAgICAgICAgICBtX2RhdGFiYXNlLT50cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKCktPmRpZEZpbmlzaFRyYW5zYWN0aW9uKHRoaXMpOwotICAgICAgICBtX2RhdGFiYXNl
LT50cmFuc2FjdGlvbkZpbmlzaGVkKHRoaXMpOworICAgICAgICAgICAgbV9zdGF0ZSA9IEZpbmlz
aGVkOwogCi0gICAgICAgIGlmIChjb21taXR0ZWQpIHsKLSAgICAgICAgICAgIG1fY2FsbGJhY2tz
LT5vbkNvbXBsZXRlKGlkKCkpOwotICAgICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25G
aW5pc2hlZEFuZENvbXBsZXRlRmlyZWQodGhpcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChpZCgpLCBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUo
SURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGNvbW1p
dHRpbmcgdHJhbnNhY3Rpb24uIikpOwotICAgICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rp
b25GaW5pc2hlZEFuZEFib3J0RmlyZWQodGhpcyk7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIC8v
IFRyYW5zYWN0aW9ucyBtdXN0IGFsc28gYmUgbWFya2VkIGFzIGNvbXBsZXRlZCBiZWZvcmUgdGhl
IGZyb250LWVuZCBpcyBub3RpZmllZCwgYXMKKyAgICAgICAgICAgIC8vIHRoZSB0cmFuc2FjdGlv
biBjb21wbGV0aW9uIHVuYmxvY2tzIG9wZXJhdGlvbnMgbGlrZSBjbG9zaW5nIGNvbm5lY3Rpb25z
LgorICAgICAgICAgICAgaWYgKCF1bm9wZW5lZCkKKyAgICAgICAgICAgICAgICBtX2RhdGFiYXNl
LT50cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCktPmRpZEZpbmlzaFRyYW5zYWN0aW9uKHRoaXMpOwor
ICAgICAgICAgICAgbV9kYXRhYmFzZS0+dHJhbnNhY3Rpb25GaW5pc2hlZCh0aGlzKTsKKworICAg
ICAgICAgICAgaWYgKGNvbW1pdHRlZCkgeworICAgICAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5v
bkNvbXBsZXRlKGlkKCkpOworICAgICAgICAgICAgICAgIG1fZGF0YWJhc2UtPnRyYW5zYWN0aW9u
RmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBtX2NhbGxiYWNrcy0+b25BYm9ydChpZCgpLCBJREJEYXRhYmFzZUVycm9y
OjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgIkludGVybmFsIGVy
cm9yIGNvbW1pdHRpbmcgdHJhbnNhY3Rpb24uIikpOworICAgICAgICAgICAgICAgIG1fZGF0YWJh
c2UtPnRyYW5zYWN0aW9uRmluaXNoZWRBbmRBYm9ydEZpcmVkKHRoaXMpOworICAgICAgICAgICAg
fQogCi0gICAgICAgIG1fZGF0YWJhc2UgPSAwOworICAgICAgICAgICAgbV9kYXRhYmFzZSA9IDA7
CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0zNjgsNiArMzc0LDIxIEBAIHZvaWQgSURC
VHJhbnNhY3Rpb25CYWNrZW5kOjpzY2hlZHVsZUNsZWFyT2JqZWN0U3RvcmVPcGVyYXRpb24oaW50
NjRfdCBvYmplY3RTdG9yCiAgICAgc2NoZWR1bGVUYXNrKENsZWFyT2JqZWN0U3RvcmVPcGVyYXRp
b246OmNyZWF0ZSh0aGlzLCBvYmplY3RTdG9yZUlkLCBjYWxsYmFja3MpKTsKIH0KIAordm9pZCBJ
REJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlQ29tbWl0VHJhbnNhY3Rpb25PcGVyYXRpb24o
c3RkOjpmdW5jdGlvbjx2b2lkIChib29sKT4gY2FsbGJhY2spCit7CisgICAgc2NoZWR1bGVUYXNr
KENvbW1pdFRyYW5zYWN0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJhY2spKTsKK30K
Kwordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlUm9sbGJhY2tUcmFuc2FjdGlv
bk9wZXJhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKQoreworICAgIHNjaGVk
dWxlVGFzayhSb2xsYmFja1RyYW5zYWN0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2FsbGJh
Y2spKTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbkJhY2tlbmQ6OnNjaGVkdWxlUmVzZXRUcmFu
c2FjdGlvbk9wZXJhdGlvbihzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKQoreworICAg
IHNjaGVkdWxlVGFzayhSZXNldFRyYW5zYWN0aW9uT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgY2Fs
bGJhY2spKTsKK30KKwogfTsKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b25CYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmQuaAppbmRleCBiYjIwMGRkLi5iNTQ0ZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmQuaApA
QCAtOTksNiArOTksMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRhc2tUaW1lckZpcmVkKFRpbWVy
PElEQlRyYW5zYWN0aW9uQmFja2VuZD4mKTsKICAgICB2b2lkIGNsb3NlT3BlbkN1cnNvcnMoKTsK
IAorICAgIHZvaWQgc2NoZWR1bGVDb21taXRUcmFuc2FjdGlvbk9wZXJhdGlvbihzdGQ6OmZ1bmN0
aW9uPHZvaWQgKGJvb2wpPiBjYWxsYmFjayk7CisgICAgdm9pZCBzY2hlZHVsZVJvbGxiYWNrVHJh
bnNhY3Rpb25PcGVyYXRpb24oc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjYWxsYmFjayk7CisgICAg
dm9pZCBzY2hlZHVsZVJlc2V0VHJhbnNhY3Rpb25PcGVyYXRpb24oc3RkOjpmdW5jdGlvbjx2b2lk
ICgpPiBjYWxsYmFjayk7CisKICAgICBjb25zdCBIYXNoU2V0PGludDY0X3Q+IG1fb2JqZWN0U3Rv
cmVJZHM7CiAgICAgY29uc3QgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbV9tb2RlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwCmluZGV4IDFmZTQyNWMuLmNlOGQx
Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmNwcApAQCAtMjc2LDYg
KzI3NiwzMyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6VmVyc2lvbkNoYW5nZUFib3J0T3Bl
cmF0aW9uOjpwZXJmb3JtKCkKICAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNldEN1cnJl
bnRWZXJzaW9uKG1fcHJldmlvdXNJbnRWZXJzaW9uKTsKIH0KIAordm9pZCBSb2xsYmFja1RyYW5z
YWN0aW9uT3BlcmF0aW9uOjpwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2Fs
bGJhY2spCit7CisgICAgTE9HKFN0b3JhZ2VBUEksICJSb2xsYmFja1RyYW5zYWN0aW9uT3BlcmF0
aW9uIik7CisgICAgbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCku
cm9sbGJhY2tUcmFuc2FjdGlvbihtX3RyYW5zYWN0aW9uLT5pZCgpLCBbdGhpcywgc3VjY2Vzc0Nh
bGxiYWNrXSgpIHsKKyAgICAgICAgbV9jYWxsYmFjaygpOworICAgICAgICBzdWNjZXNzQ2FsbGJh
Y2soKTsKKyAgICB9KTsKK30KKwordm9pZCBSZXNldFRyYW5zYWN0aW9uT3BlcmF0aW9uOjpwZXJm
b3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spCit7CisgICAgTE9HKFN0
b3JhZ2VBUEksICJSZXNldFRyYW5zYWN0aW9uT3BlcmF0aW9uIik7CisgICAgbV90cmFuc2FjdGlv
bi0+ZGF0YWJhc2UoKS5zZXJ2ZXJDb25uZWN0aW9uKCkucmVzZXRUcmFuc2FjdGlvbihtX3RyYW5z
YWN0aW9uLT5pZCgpLCBbdGhpcywgc3VjY2Vzc0NhbGxiYWNrXSgpIHsKKyAgICAgICAgbV9jYWxs
YmFjaygpOworICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKKyAgICB9KTsKK30KKwordm9pZCBD
b21taXRUcmFuc2FjdGlvbk9wZXJhdGlvbjo6cGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4g
c3VjY2Vzc0NhbGxiYWNrKQoreworICAgIExPRyhTdG9yYWdlQVBJLCAiQ29tbWl0VHJhbnNhY3Rp
b25PcGVyYXRpb24iKTsKKyAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNlcnZlckNvbm5l
Y3Rpb24oKS5jb21taXRUcmFuc2FjdGlvbihtX3RyYW5zYWN0aW9uLT5pZCgpLCBbdGhpcywgc3Vj
Y2Vzc0NhbGxiYWNrXShib29sIHN1Y2Nlc3MpIHsKKyAgICAgICAgbV9jYWxsYmFjayhzdWNjZXNz
KTsKKyAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kT3BlcmF0aW9ucy5oCmluZGV4IDk2NGNiODUuLjA2ZjU5NWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZE9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25zLmgKQEAgLTQ2NSw2ICs0NjUsNjkgQEAgcHJp
dmF0ZToKICAgICBjb25zdCBSZWZQdHI8SURCQ2FsbGJhY2tzPiBtX2NhbGxiYWNrczsKIH07CiAK
K2NsYXNzIFJvbGxiYWNrVHJhbnNhY3Rpb25PcGVyYXRpb24gOiBwdWJsaWMgSURCT3BlcmF0aW9u
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVyYXRpb24+IGNyZWF0ZShJ
REJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+
IGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSb2xsYmFja1Ry
YW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5zYWN0aW9uLCBjYWxsYmFjaykpOworICAgIH0KKyAgICB2
aXJ0dWFsIHZvaWQgcGVyZm9ybShzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gc3VjY2Vzc0NhbGxiYWNr
KSBvdmVycmlkZSBmaW5hbDsKKworICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uLmdldCgpOyB9CisKK3ByaXZhdGU6Cisg
ICAgUm9sbGJhY2tUcmFuc2FjdGlvbk9wZXJhdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRy
YW5zYWN0aW9uLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNhbGxiYWNrKQorICAgIDogbV90cmFu
c2FjdGlvbih0cmFuc2FjdGlvbikKKyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgewor
ICAgIH0KKworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+IG1fdHJhbnNhY3Rpb247
CisgICAgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBtX2NhbGxiYWNrOworfTsKKworY2xh
c3MgUmVzZXRUcmFuc2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24geworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5z
YWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY2FsbGJh
Y2spCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJlc2V0VHJhbnNhY3Rpb25P
cGVyYXRpb24odHJhbnNhY3Rpb24sIGNhbGxiYWNrKSk7CisgICAgfQorICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBzdWNjZXNzQ2FsbGJhY2spIG92ZXJyaWRl
IGZpbmFsOworCisgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kKiB0cmFuc2FjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb24uZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBSZXNldFRy
YW5zYWN0aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY2FsbGJhY2spCisgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uKQorICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICB7CisgICAgfQorCisgICAg
UmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZD4gbV90cmFuc2FjdGlvbjsKKyAgICBjb25zdCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fY2FsbGJhY2s7Cit9OworCitjbGFzcyBDb21taXRUcmFu
c2FjdGlvbk9wZXJhdGlvbiA6IHB1YmxpYyBJREJPcGVyYXRpb24geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQk9wZXJhdGlvbj4gY3JlYXRlKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZCogdHJhbnNhY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNhbGxiYWNrKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb21taXRUcmFuc2FjdGlvbk9wZXJhdGlv
bih0cmFuc2FjdGlvbiwgY2FsbGJhY2spKTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHBlcmZv
cm0oc3RkOjpmdW5jdGlvbjx2b2lkKCk+IHN1Y2Nlc3NDYWxsYmFjaykgb3ZlcnJpZGUgZmluYWw7
CisKKyAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmQqIHRyYW5zYWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV90cmFuc2FjdGlvbi5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIENvbW1pdFRyYW5zYWN0
aW9uT3BlcmF0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZCogdHJhbnNhY3Rpb24sIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoYm9vbCk+IGNhbGxiYWNrKQorICAgIDogbV90cmFuc2FjdGlvbih0cmFuc2Fj
dGlvbikKKyAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgeworICAgIH0KKworICAgIFJl
ZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmQ+IG1fdHJhbnNhY3Rpb247CisgICAgY29uc3Qgc3Rk
OjpmdW5jdGlvbjx2b2lkIChib29sKT4gbV9jYWxsYmFjazsKK307CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>