<?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>109772</bug_id>
          
          <creation_ts>2013-02-13 16:59:53 -0800</creation_ts>
          <short_desc>Move computedStyleIncludingVisitedInfo from TestRunner to Internals</short_desc>
          <delta_ts>2013-03-02 16:10:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832539</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-13 16:59:53 -0800</bug_when>
    <thetext>Move computedStyleIncludingVisitedInfo from TestRunner to Internals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832557</commentid>
    <comment_count>1</comment_count>
      <attachid>188228</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-13 17:06:31 -0800</bug_when>
    <thetext>Created attachment 188228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832581</commentid>
    <comment_count>2</comment_count>
      <attachid>188228</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-13 17:26:31 -0800</bug_when>
    <thetext>Comment on attachment 188228
Patch

Attachment 188228 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16536373</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832582</commentid>
    <comment_count>3</comment_count>
      <attachid>188228</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-13 17:27:19 -0800</bug_when>
    <thetext>Comment on attachment 188228
Patch

Attachment 188228 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16570097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832612</commentid>
    <comment_count>4</comment_count>
      <attachid>188239</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-13 17:56:03 -0800</bug_when>
    <thetext>Created attachment 188239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832679</commentid>
    <comment_count>5</comment_count>
      <attachid>188239</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 19:48:52 -0800</bug_when>
    <thetext>Comment on attachment 188239
Patch

Attachment 188239 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16543463

New failing tests:
fast/loader/stateobjects/state-url-sets-links-visited.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832691</commentid>
    <comment_count>6</comment_count>
      <attachid>188254</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-13 20:14:00 -0800</bug_when>
    <thetext>Created attachment 188254
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832707</commentid>
    <comment_count>7</comment_count>
      <attachid>188254</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 21:01:16 -0800</bug_when>
    <thetext>Comment on attachment 188254
Patch

Attachment 188254 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16570177

New failing tests:
fast/loader/stateobjects/state-url-sets-links-visited.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833347</commentid>
    <comment_count>8</comment_count>
      <attachid>188254</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-14 13:16:39 -0800</bug_when>
    <thetext>Comment on attachment 188254
Patch

Need to investigate the chromium mystery.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833654</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-14 20:37:29 -0800</bug_when>
    <thetext>*** Bug 37297 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843662</commentid>
    <comment_count>10</comment_count>
      <attachid>190637</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-27 20:14:18 -0800</bug_when>
    <thetext>Created attachment 190637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843735</commentid>
    <comment_count>11</comment_count>
      <attachid>190637</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-02-27 22:19:22 -0800</bug_when>
    <thetext>Comment on attachment 190637
Patch

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

r=me. This is great.

&gt; Source/WebCore/testing/Internals.idl:37
&gt; +    CSSStyleDeclaration computedStyleIncludingVisitedInfo(in Node node) raises(DOMException);

The TestRunner version took an Element argument, not a Node.
I don&apos;t think that&apos;s really a problem though, computed styles can be created from nodes, so it makes sense to support this in Internals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843748</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-27 22:40:24 -0800</bug_when>
    <thetext>&gt; The TestRunner version took an Element argument, not a Node.
&gt; I don&apos;t think that&apos;s really a problem though, computed styles can be created from nodes, so it makes sense to support this in Internals.

Yup, as you say, it is intentional :)

Thank you for the review. I should CC you more often instead of waiting 2 weeks for someone randomly r+ing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845733</commentid>
    <comment_count>13</comment_count>
      <attachid>191096</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-01 22:06:29 -0800</bug_when>
    <thetext>Created attachment 191096
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845881</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-02 16:10:51 -0800</bug_when>
    <thetext>Committed r144547: &lt;http://trac.webkit.org/changeset/144547&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188228</attachid>
            <date>2013-02-13 17:06:31 -0800</date>
            <delta_ts>2013-02-13 17:56:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109772-20130213170259.patch</filename>
            <type>text/plain</type>
            <size>43328</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNkOWI5MTRkYTYyNjhh
OTc1YzBiNzYxYjk5ZjIxMzBjY2RhOGRhYS4uY2VhNTgxODBlNDg3YWY3ODQyMWQ3N2RhOWY3YjY1
NjM5NDdiYzQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTEzICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmdW5j
dGlvbiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oKSBpcyBwdXJlbHkgaW50ZXJu
YWwgdG8gV2ViQ29yZSwKKyAgICAgICAgaXQgaXMgYmV0dGVyIGRlZmluZWQgb24gSW50ZXJuYWxz
IHRoYW4gb24gVGVzdFJ1bm5lci4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMi0xMyAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEV4Y2x1c2lvblBvbHlnb24gcmVm
bGV4IHZlcnRpY2VzIHNob3VsZCBjb25zdHJhaW4gdGhlIGZpcnN0IGZpdCBsb2NhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGViNDE5NzEyNDAxYjA0NzA0MDY5MjQyYTUx
MTk5MjQ5ODFkZjc1MmQuLmUwNTY1MmI1MmM2MTg5MGE0YjQxNDE1OWQwNzk3NjE0YzRlN2U5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAy
LTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1v
dmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJ
bnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwOgorICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0Lmg6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnQpOgorCiAyMDEzLTAyLTEyICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRz
QHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFzc3VtZSBzZXRTY3JvbGxpbmdPclpv
b21pbmcoKSB0byBiZSBjYWxsZWQgb24gdGhlIFdlYktpdCB0aHJlYWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggYmNiNDA2ZTI3ODkyZjk1NDg0OTg0NzE1ODAxMWM0MjFjN2NkNGFlMC4uZDkxOTI2NmE0
NzA5NDk5NjBmZDY3ZmVmYWU5NTg4ODAzNGRkN2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEzLTAyLTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIE1vdmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZy
b20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaDoKKwogMjAxMy0wMi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2Vu
QGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIHdpbmRvdy5vcGVuIHBhc3NlcyBoZWlnaHQgYW5k
IHdpZHRoIHBhcmFtZXRlcnMgZXZlbiBpZiBub3QgZGVmaW5lZCBpbiBhIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCAwZmZkMGJlY2FmYjk2Mzk3MDYwMmMxNzU3MTI1ZjY3MmM1NzEzMGNjLi43NTdj
ZDhmMWQwNTU1YWY5M2MwZTM5M2E2MWI3YzhiM2U1NDc0NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8gZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMy0w
Mi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIHdpbmRvdy5vcGVuIHBhc3NlcyBoZWlnaHQgYW5kIHdpZHRoIHBhcmFtZXRl
cnMgZXZlbiBpZiBub3QgZGVmaW5lZCBpbiBhIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1OTlj
ZGI2ZTgzY2JiM2U5NjQ3MmU4MGZiMzEzMTdmNjViZGFlMDgxLi45ZmQ5NTU1YjVkZTE4ODhmZWUx
YWFhZGUxMWJiZmQyM2Y3ZjhjZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJvbSBUZXN0UnVu
bmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oOgorCiAyMDEzLTAyLTEyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gRW5hYmxlIFBBR0VfVklTSUJJTElUWV9BUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggOTBlODRlYmVlOGE4OTUwZjkzYTkwOTgwYWEwNmU3Mjg5NTVhN2E0Ny4uYTNk
ZGExOGYwMzBmOGE4YjA4Y2E1ZDkwMTYwODQwYTZkODllNjQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMy0wMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5m
byBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5oOgorCiAyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gd2luZG93Lm9wZW4gcGFzc2VzIGhlaWdodCBh
bmQgd2lkdGggcGFyYW1ldGVycyBldmVuIGlmIG5vdCBkZWZpbmVkIGluIGEgcGFnZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGI4NzUxNTMwOTkwMzgyYzBlZjE0ZWUzODMzNzViNjVkMzdlZWUwM2EuLjBiYjAzZjk1
Zjk1OTc4ZjU4ODA3MDU5YzdjNGJjYTBkN2UwYTE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMy0wMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyBmcm9tIFRl
c3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVG
cmFtZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUZyYW1lUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAg
IChXZWJGcmFtZSk6CisKIDIwMTMtMDItMTMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBDb25zb2xpZGF0ZSBtYWluIGZ1bmN0aW9ucyBpbiBXZWJLaXQyIG5vdyB0aGF0
IHRoZXkgYXJlIGFsbCBpZGVudGljYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA3NzFmMGNjZjQyMGE5YzQ5YWFiOWMzZjJkYzViMGY0YWJhMTcwMDJhLi5lOGU0OTEwYTY3
ZGNiNGRmZmI4YWMyZTE3M2QyZTEyYjAzODU1ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjUzLDYgKzY1NCwxNyBAQCBzaXplX3QgSW50ZXJuYWxzOjpudW1iZXJPZlNjb3BlZEhU
TUxTdHlsZUNoaWxkcmVuKGNvbnN0IE5vZGUqIHNjb3BlLCBFeGNlcHRpb25DbwogICAgIHJldHVy
biAwOwogfQogCitQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gSW50ZXJu
YWxzOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oTm9kZSogbm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBib29sIGFs
bG93VmlzaXRlZFN0eWxlID0gdHJ1ZTsKKyAgICByZXR1cm4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUobm9kZSwgYWxsb3dWaXNpdGVkU3R5bGUpOworfQorCiBJbnRlcm5hbHM6
OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6ZW5zdXJlU2hh
ZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWhv
c3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGU3MGFjNmM4MTNiYzk5ZTQw
YWZhZmNhZmFkZjViYTk1YjBhZmI0MmYuLjJmYTBjY2Y2YmFlMDFlNzMyM2UxMjhhM2U3MGRkNzJl
N2MyNGU4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjcsNiArMjcsNyBA
QAogI2lmbmRlZiBJbnRlcm5hbHNfaAogI2RlZmluZSBJbnRlcm5hbHNfaAogCisjaW5jbHVkZSAi
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNp
bmNsdWRlICJOb2RlTGlzdC5oIgpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90
IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4g
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKE5vZGUqLCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB0eXBlZGVmIFNoYWRvd1Jvb3Qg
U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCBiZjYzNDc5ZDRjZjc0M2NhNDRhN2I4OWVjMzBmYmUyOWI1ZDE1YmFh
Li5jYTExN2IwYWQyNDJjODdlMGJhNDdhNDFmNDdmMWUxOWU5NTEwOTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNCw2ICszNCw3IEBACiAgICAgYm9vbGVhbiBpc0xv
YWRpbmdGcm9tTWVtb3J5Q2FjaGUoaW4gRE9NU3RyaW5nIHVybCk7CiAKICAgICB1bnNpZ25lZCBs
b25nIG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oaW4gTm9kZSBzY29wZSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiBjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
I2lmIGRlZmluZWQoRU5BQkxFX1NIQURPV19ET00pICYmIEVOQUJMRV9TSEFET1dfRE9NCiAgICAg
U2hhZG93Um9vdCBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKaW5kZXggZWViNzVmZDA4
NGVmYjAxMzRlYWJhYzRkMzkzNDYxNmNhNjBiZTAzMy4uODFiOGNkNDI4OGUwNmM2OTMyZGM2ZWE5
YjE0ZDEwZGI3YzE0ZGZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0y
MCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRy
ZWVTdXBwb3J0LmgiCiAKLSNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRlICJEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkRh
dGEuaCIKQEAgLTEyMiwyMSArMTIxLDYgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNj
YWxlUGFnZUJ5KFdlYlBhZ2UqIHdlYlBhZ2UsIGZsb2F0IHNjYWxlRmFjdG9yLCBmbG8KICAgICBj
b3JlUGFnZSh3ZWJQYWdlKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2lu
dCh4LCB5KSk7CiB9CiAKLUpTVmFsdWVSZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpjb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUpCi17Ci0gICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9K
UyhleGVjLCB2YWx1ZSk7Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNf
aW5mbykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAg
ICBKU0VsZW1lbnQqIGpzRWxlbWVudCA9IHN0YXRpY19jYXN0PEpTRWxlbWVudCo+KGFzT2JqZWN0
KGpzVmFsdWUpKTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0g
ICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCB0cnVlKTsKLSAgICByZXR1cm4gdG9S
ZWYoZXhlYywgdG9KUyhleGVjLCBqc0VsZW1lbnQtPmdsb2JhbE9iamVjdCgpLCBzdHlsZS5nZXQo
KSkpOwotfQotCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jayogdG9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3JpZW50
YXRpb25DbGllbnQqIGNsaWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKaW5kZXgg
YmJjMDQ1NTFkNDhhM2ZiM2IxMDlkZjUwNWQzNzQwYzM3MzY2YjE5My4uYzk2YjkyZWJiNTYxNGQ2
YmUxYTZkYzU3NTZhMzY4YzJlMTAyYTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgK
QEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHN0YXRp
YyB2b2lkIHNjYWxlUGFnZUJ5KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGZsb2F0LCBm
bG9hdCwgZmxvYXQpOwotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIHNfbGlua3NJbmNsdWRlZEluVGFiQ2hhaW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcAppbmRleCA4YmI0ODZkYWQ5YzM3OGZkNjNjZWJhNTVlNDAyZmE2MDMwMjM2MmQxLi41
NWI3Y2U0YTQ4Y2ZmZTBhMGI3NDllYWRkN2U4NGRmMTU5YzY2N2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgPEFQSUNhc3QuaD4KICNp
bmNsdWRlIDxBbmltYXRpb25Db250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmg+CiAjaW5jbHVkZSA8RG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxF
ZGl0b3JDbGllbnRFZmwuaD4KICNpbmNsdWRlIDxFaW5hLmg+CkBAIC01NzgsMjIgKzU3Nyw2IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVy
TWFnbmlmaWNhdGlvbihFdmFzX09iamVjCiAgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0VmFsaWRh
dGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24odmFsdWUpOwogfQogCi1KU1ZhbHVlUmVmIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZv
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIGlmICghdmFs
dWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0M6OkpTVmFsdWUg
anNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwotICAgIGlmICghanNWYWx1ZS5pbmhlcml0cygm
V2ViQ29yZTo6SlNFbGVtZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBXZWJDb3JlOjpKU0VsZW1lbnQqIGpzRWxlbWVudCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKLSAg
ICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCB0cnVlKTsKLSAg
ICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhleGVjLCBqc0VsZW1lbnQtPmdsb2JhbE9iamVjdCgp
LCBzdHlsZS5nZXQoKSkpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0
QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZW5h
YmxlZCkKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggZTkyNTA1NzkyYmZhNWNlZTQ3MDQ3OWI4ZjNj
MGQyM2Y3MjRhYzQ4Ni4uMjEzMzI5NmIyZTBkZTZhZGExZTE5MWRhMjRiZTk1MzNmYWQ2MjViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QpOwogICAgIHN0YXRpYyB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb25FbmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQpOwogICAgIHN0
YXRpYyB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgdmFsdWUpOwotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAg
IHN0YXRpYyB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAKaW5kZXggNzM1YTBlNzRmYTFiZDI5N2NmYjNiODY4ODIyZGM1NTBiOTE4NGRi
My4uZmE5ZWQ0NzIxZWJmZjJkNWQ2Y2RjZGQ3ODViNTBlZTMwYjY0ODc0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0
ay5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgpAQCAtNzE3LDIyICs3MTYsNiBAQCBi
b29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkKFdlYktpdFdlYgogICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzVGV4dEZp
ZWxkKCkgJiYgIWlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgaW5wdXRFbGVtZW50
LT5zaG91bGRBdXRvY29tcGxldGUoKTsKIH0KIAotSlNWYWx1ZVJlZiBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBpZiAoIW5vZGVPYmplY3QpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgbm9kZU9iamVjdCk7Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0Vs
ZW1lbnQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKLQotICAgIEpTRWxlbWVudCoganNFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SlNFbGVtZW50
Kj4oYXNPYmplY3QoanNWYWx1ZSkpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBqc0VsZW1lbnQt
PmltcGwoKTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHRydWUpOwotICAg
IHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+Z2xvYmFsT2JqZWN0KCks
IHN0eWxlLmdldCgpKSk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkZWxp
dmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkoKQogewogICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRl
bGl2ZXJBbGxNdXRhdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggYTM0OWZhOGNj
ZWVkYTc1MmQ4NjIwZTdlNmZiMGFlZjFlM2RjMTdhZS4uYjBlY2Y1NWVmOWE0YmE5MWMwMGM4ZmMy
YmM3M2E2MmU2YjJiY2M2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTcyLDcgKzcyLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDbG9zZShX
ZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZChXZWJLaXRXZWJGcmFtZSosIEpTU3RyaW5nUmVmKTsKLSAgICBzdGF0
aWMgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmKTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcKICAgICBzdGF0aWMgdm9p
ZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBu
YW1lLCBjb25zdCBnY2hhciogdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDdhYzkwYjdlNjc1M2M0MWZiYTYxYTlkNjYwZDMyZjEzOTNhMjA4NTcuLmU2NGM4YmY1
NjhlZTNlZGNiYWQ0MDQ5ZWNiNDg5ZjAwODE4YzdjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTExNiw3ICsxMTYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9y
d2FyZExpc3RJbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yTWFjLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC02
Njg5LDI1ICs2Njg4LDYgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFj
ayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQotCi0tIChKU1Zh
bHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZilj
b250ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUKLXsKLSAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIGlm
ICghdmFsdWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
LSAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKLSAgICBpZiAoIWpzVmFs
dWUuaW5oZXJpdHMoJkpTRWxlbWVudDo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwotICAgIEpTRWxlbWVudCoganNFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SlNFbGVtZW50Kj4oYXNPYmplY3QoanNWYWx1ZSkpOwotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBqc0VsZW1lbnQtPmltcGwoKTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1l
bnQsIHRydWUpOwotICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+
Z2xvYmFsT2JqZWN0KCksIHN0eWxlLmdldCgpKSk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0
aW9uIFdlYlZpZXcgKFdlYlZpZXdGdWxsU2NyZWVuKQogCiAtIChOU1ZpZXcqKWZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aAppbmRleCA2ODUzYjM0ODg1MzFmZGVjZTMxYWMzY2U3ZjE4ZWI5M2E3ZDBhMDFjLi5lNjE3ZTFi
ZTQyMDQzZjM3NDJkMTEzNTU5NjdjYTA5ZWIyNTg1ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC03NDUsMTAgKzc0NSw2IEBAIENvdWxkIGJlIHdv
cnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodWludDY0X3QpX25vdGlmaWNhdGlvbklERm9yVGVz
dGluZzooSlNWYWx1ZVJlZilqc05vdGlmaWNhdGlvbjsKIEBlbmQKIAotQGludGVyZmFjZSBXZWJW
aWV3IChXZWJWaWV3UHJpdmF0ZVN0eWxlSW5mbykKLS0gKEpTVmFsdWVSZWYpX2NvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRWxlbWVudDoo
SlNWYWx1ZVJlZil2YWx1ZTsKLUBlbmQKLQogQGludGVyZmFjZSBOU09iamVjdCAoV2ViVmlld0Zy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZSkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBkaWRGaXJzdExheW91dEluRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKaW5kZXggNWMzNjI1YWI2YTYxN2FmZTkyNWRjNWU1MWZkZDBiZjk5ODY5NzRkZS4u
NjBkMGNjODRhMTk4Njk4ODhiNzM1ZWNiYmRlNTI3MGE1MDE1YjUwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNs
dWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0LmgiCiAjaW5jbHVkZSAi
Q29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCkBAIC00MDYsMjQgKzQw
NSw2IEBAIHN0YXRpYyBRU3RyaW5nIGNvbnZlcnRUb1Byb3BlcnR5TmFtZShjb25zdCBRU3RyaW5n
JiBuYW1lKQogICAgIHJldHVybiBjYW1lbENhc2VOYW1lOwogfQogCi1RVmFyaWFudE1hcCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGNv
bnN0IFFXZWJFbGVtZW50JiBlbGVtZW50KQotewotICAgIFFWYXJpYW50TWFwIHJlczsKLQotICAg
IFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxlbWVudDsKLSAgICBp
ZiAoIXdlYkVsZW1lbnQpCi0gICAgICAgIHJldHVybiByZXM7Ci0KLSAgICBSZWZQdHI8V2ViQ29y
ZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxlRGVjbGFyYXRpb24g
PSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSh3ZWJFbGVtZW50LCB0cnVlKTsK
LSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNT
U1N0eWxlRGVjbGFyYXRpb24qPihjb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uZ2V0KCkpOwotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZS0+bGVuZ3RoKCk7IGkrKykgewotICAgICAg
ICBRU3RyaW5nIG5hbWUgPSBzdHlsZS0+aXRlbShpKTsKLSAgICAgICAgUVN0cmluZyB2YWx1ZSA9
IHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpOwotICAgICAgICByZXNbY29udmVydFRvUHJv
cGVydHlOYW1lKG5hbWUpXSA9IFFWYXJpYW50KHZhbHVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJl
czsKLX0KLQogUVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZWxlY3RlZFJh
bmdlKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlcikKIHsKICAgICBXZWJDb3JlOjpGcmFtZSogZnJh
bWUgPSBhZGFwdGVyLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1l
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggZWM3YjE3YjAyYWU2NGE3ODZiMzFlNTI1ZDVjZWJi
N2ZiOTkwY2QxMC4uZGQwNDQwMTk5NThlOGJlMjMyNDNlZTVkM2NjN2JlNzRjYmVhZjUwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQuaApAQCAtMTQwLDcgKzE0MCw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
aW50IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKFFXZWJQYWdl
QWRhcHRlciopOwogCiAgICAgc3RhdGljIFFTdHJpbmcgbWFya2VyVGV4dEZvckxpc3RJdGVtKGNv
bnN0IFFXZWJFbGVtZW50JiBsaXN0SXRlbSk7Ci0gICAgc3RhdGljIFFWYXJpYW50TWFwIGNvbXB1
dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhjb25zdCBRV2ViRWxlbWVudCYpOwogCiAgICAg
c3RhdGljIHZvaWQgZHVtcEZyYW1lTG9hZGVyKGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGR1bXBQ
cm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1l
LmNwcAppbmRleCAwNmRkYzNiNWQ5YjFmZWFlMDFlODkyMzA0MjlhMjFjY2M1Y2E5NThhLi41MmIw
MTFjYzExYTVkMDZiZTFmMjk0YzdiNmE5ZDUyMTc2MjJlYzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVGcmFtZS5jcHAKQEAgLTEyMiwxMSArMTIyLDYgQEAgV0tTdHJpbmdSZWYgV0tCdW5kbGVG
cmFtZUNvcHlOYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiAgICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPm5hbWUoKSk7CiB9CiAKLUpTVmFsdWVSZWYgV0tCdW5k
bGVGcmFtZUdldENvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lUmVmLCBKU09iamVjdFJlZiBlbGVtZW50KQotewotICAgIHJldHVybiB0b0ltcGwo
ZnJhbWVSZWYpLT5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZWxlbWVudCk7Ci19
Ci0KIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5Q291bnRlclZhbHVlKFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWVSZWYsIEpTT2JqZWN0UmVmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPmNvdW50ZXJWYWx1ZShlbGVtZW50KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmgKaW5kZXggNGU1YzVjM2IwZTBiZTAxZjI5
NDEzOWMyMWM1YmVmODY5YzA0ZmVkYS4uOWM2MjkwMGFiNDIxZGQ5ZjBlZjU3NGUwM2Y2ODEzYTgx
M2ZhNWE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVByaXZhdGUuaApAQCAt
NDAsNyArNDAsNiBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRs
ZUZyYW1lQ29weUlubmVyVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsKIFdLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUNvdW50ZXJWYWx1ZShXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBKU09iamVjdFJlZiBlbGVtZW50KTsKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1
bmRsZUZyYW1lQ29weU1hcmtlclRleHQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgSlNPYmplY3RS
ZWYgZWxlbWVudCk7Ci1XS19FWFBPUlQgSlNWYWx1ZVJlZiBXS0J1bmRsZUZyYW1lR2V0Q29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIEpTT2Jq
ZWN0UmVmIGVsZW1lbnQpOwogV0tfRVhQT1JUIHVuc2lnbmVkIFdLQnVuZGxlRnJhbWVHZXRQZW5k
aW5nVW5sb2FkQ291bnQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CiBXS19FWFBPUlQgV0tTdHJp
bmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlMYXllclRyZWVBc1RleHQoV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lQ2xlYXJPcGVuZXIoV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAppbmRleCA0ZmUzMTdlZjc2MjNhODZiZmUzNDM2MDVlZGQwZDk2NmViZGMwMGQ3
Li41NmU1MmM3MzdjYmVhZjM2NmNlYmE4NGJhYTIzMDFlYmQwNjhlODVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTQzLDcgKzQzLDYg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNoaXZlUmVzb3VyY2Uu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTYyMSwyMyArNjIwLDYgQEAgSlNW
YWx1ZVJlZiBXZWJGcmFtZTo6anNXcmFwcGVyRm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVSYW5nZUhh
bmRsZSogcmFuZ2VIYW5kbGUsIEkKICAgICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhleGVjLCBn
bG9iYWxPYmplY3QsIHJhbmdlSGFuZGxlLT5jb3JlUmFuZ2UoKSkpOwogfQogCi1KU1ZhbHVlUmVm
IFdlYkZyYW1lOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNPYmplY3RSZWYg
ZWxlbWVudCkKLXsKLSAgICBpZiAoIW1fY29yZUZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSBtX2NvcmVGcmFtZS0+c2NyaXB0KCktPmds
b2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Ci0gICAgRXhlY1N0YXRlKiBleGVj
ID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0KLSAgICBpZiAoIXRvSlMoZWxlbWVudCkt
PmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFr
ZVVuZGVmaW5lZCh0b1JlZihleGVjKSk7Ci0KLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKHN0
YXRpY19jYXN0PEpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpLT5pbXBsKCksIHRydWUpOwotCi0g
ICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHlsZS5nZXQoKSkpOwotfQotCiBTdHJpbmcgV2ViRnJhbWU6
OmNvdW50ZXJWYWx1ZShKU09iamVjdFJlZiBlbGVtZW50KQogewogICAgIGlmICghdG9KUyhlbGVt
ZW50KS0+aW5oZXJpdHMoJkpTRWxlbWVudDo6c19pbmZvKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMzMwNTMwNzNkMTAxYzczMDdlY2Q4MjM5
MDA3NWRkYzIzMTFmMDMxZS4uZTk4NTQwZmU1YWI2YjBiZDVjMWY3YjI2MzFmMTE0MjVjMDk5Y2I5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKQEAg
LTkyLDcgKzkyLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVNldCgpIGNvbnN0OwogICAg
IFdlYkZyYW1lKiBwYXJlbnRGcmFtZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SW1tdXRhYmxl
QXJyYXk+IGNoaWxkRnJhbWVzKCk7Ci0gICAgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVk
aW5nVmlzaXRlZEluZm8oSlNPYmplY3RSZWYgZWxlbWVudCk7CiAgICAgSlNHbG9iYWxDb250ZXh0
UmVmIGpzQ29udGV4dCgpOwogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHRGb3JXb3Js
ZChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKik7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBjb250
ZW50Qm91bmRzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggZTAxZWIxZmIyZDU5NDdhNjQ1YjNmZGE4OGRiZDg2ZjY0YzM4NTgxMC4u
ZTc4ZmUxYjdhYmE4NzRiYmUyOTIwMzI3ZGNjZDY4YjY5YWY1YjAxYyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEz
LTAyLTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAg
IE1vdmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0
byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChUZXN0UnVubmVy
OjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2JsYWNr
YmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJN
YWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcDoKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDoKKyAgICAgICAgKFRlc3RS
dW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwOgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIu
aDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorCiAyMDEzLTAyLTEzICBBbGFuIEN1dHRlciAgPGFs
YW5jdXR0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGNyLWxpbnV4IGRlYnVnIHNob3VsZCB1
c2UgY2xhbmcgYW5kIG1heWJlIGJlIGEgY29tcG9uZW50cyBidWlsZApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcAppbmRleCA4NTg0NzQwYzY3MjkxZTA1MmMzNmJlZjZmNTRlNTQzNjgzNTYw
MGEyLi41ZTQ3MTI1MGQyNzdjY2RmYzQ0NGRmODZkYTQ5NzEwN2UzODE2M2FhIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtNjgwLDE2ICs2ODAsNiBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBrZWVwV2ViSGlzdG9yeUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVj
dFJlZiBmdW5jdAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0K
IAotc3RhdGljIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENv
dW50ICE9IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
LSAgICAKLSAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCi0gICAgVGVzdFJ1bm5lciogY29u
dHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOwotICAgIHJldHVybiBjb250cm9sbGVyLT5jb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm8oY29udGV4dCwgYXJndW1lbnRzWzBdKTsKLX0KLQogc3RhdGljIEpTVmFsdWVS
ZWYgbm90aWZ5RG9uZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtMjA4OSw3ICsyMDc5LDYg
QEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAg
ICAgeyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3YXJkTGlzdENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0IiwgY2xl
YXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJj
bG9zZVdlYkluc3BlY3RvciIsIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAg
ICAgICAgeyAiY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIiwgY29tcHV0ZWRTdHls
ZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGVjb2Rl
SG9zdE5hbWUiLCBkZWNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRp
c2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEiLCBkaXNhbGxvd0luY3JlYXNl
Rm9yQXBwbGljYXRpb25DYWNoZVF1b3RhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlz
cGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzIiwgZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCA3OTIwZWM2NDQz
Njc5M2FjZDYyMmEyYWY1OTQzZTVkNGUzZDllYWU4Li41MDQ3Y2RhNTlmNGFmYjU5ZjI1NTQzZDcx
MjhkY2Y0ZjBlNDMyNjY1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC02Niw3ICs2
Niw2IEBAIHB1YmxpYzoKICAgICBsb25nIGxvbmcgYXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZv
ck9yaWdpbihKU1N0cmluZ1JlZiBuYW1lKTsKICAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoSlNT
dHJpbmdSZWYgbmFtZSk7CiAgICAgdm9pZCBrZWVwV2ViSGlzdG9yeSgpOwotICAgIEpTVmFsdWVS
ZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiwgSlNWYWx1
ZVJlZik7CiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAgICAgaW50IG51bWJlck9mUGVuZGluZ0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCk7CiAgICAgdm9pZCBvdmVycmlkZVByZWZlcmVu
Y2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmlu
ZGV4IDRhZDM2ZTY2MjdkNzMxYzFiOGVlMTI3NTJjNDJhMjNmNDkwMjhmMTIuLjFhYzk0ZmQ2YzBh
NDk4NTY3NzQ5ZDFiOWI4YzUxNTE5MjM4ZDExZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC01MDUs
MTEgKzUwNSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBi
b2FyZChib29sIGZsYWcpCiAgICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6
Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKS0+c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2Fy
ZChmbGFnKTsKIH0KIAotSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVk
aW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17
Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvKGNvbnRleHQsIHZhbHVlKTsKLX0KLQogSlNSZXRhaW5QdHI8SlNTdHJpbmdS
ZWY+IFRlc3RSdW5uZXI6OmxheWVyVHJlZUFzVGV4dCgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVy
RWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRl
eCA0NTY0NjEwOWNjZmU2ZDhiOGE3NzBiZWFjMTY0NjE3MDVmM2I2ODBiLi40NjU5NDAyZmY3OWE5
OTdiZWQ1YjE5MmFmZDBjMzQ5MWQzMDM0MGE3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0xMTIsMTEgKzExMiw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
a2VlcFdlYkhpc3RvcnkoKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2hvdWxk
VHJhY2tWaXNpdGVkTGlua3ModHJ1ZSk7CiB9CiAKLUpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6Y29t
cHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1Zh
bHVlUmVmIHZhbHVlKQotewotICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhjb250ZXh0LCB2YWx1ZSk7Ci19Ci0KIHNp
emVfdCBUZXN0UnVubmVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsKICAgICBjb25zdCBFd2tf
SGlzdG9yeSogaGlzdG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0KGJyb3dzZXItPm1haW5WaWV3
KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IDRj
OGU3YjQwOWQwODZlNDFkYTZkODdmOTMwMTYxNDcxMjkzOWFiZTkuLjlhZTkwNTZhNWI5ZGM5ZDkz
NDI3YzBiNzMzNWZmNmRjNmJhOWJlZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHAKQEAgLTEwOCwxMSArMTA4LDYgQEAgdm9pZCBUZXN0UnVubmVyOjprZWVw
V2ViSGlzdG9yeSgpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCi1KU1ZhbHVlUmVmIFRl
c3RSdW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29udGV4dCwgdmFs
dWUpOwotfQotCiBzaXplX3QgVGVzdFJ1bm5lcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCiB7CiAg
ICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3
KG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmlu
ZGV4IGZjM2FmYTY3NjUyMGFiZDRhZjRiYjVjNWZjMmM1ZDk1NDM1NGRmZTAuLjM0YzdlYWEyMGQy
NTRmNmMxZThlMWVmMWQ5ZTliZDUwZTU4ZTI0OTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9UZXN0UnVubmVyTWFjLm1tCkBAIC0yNzMsMTEgKzI3Myw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
a2VlcFdlYkhpc3RvcnkoKQogICAgIH0KIH0KIAotSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpjb21w
dXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFs
dWVSZWYgdmFsdWUpCi17ICAgCi0gICAgcmV0dXJuIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9jb21w
dXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86Y29udGV4dCBmb3JFbGVtZW50OnZhbHVlXTsK
LX0KLQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Om1hcmtlclRleHRGb3JM
aXN0SXRlbShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25z
dAogewogICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZy
b21KU0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9UZXN0UnVubmVyUXQuY3BwCmluZGV4IDc1MjljMmI1Mzg1Yjc1MGQzNDIxZjQ5ZWNkMmRm
ZGNlOGYyMjEyNmQuLmU3ZjU2NTYyNWU5MDZjYjlmN2ExM2MyMGJkM2FhMzVmNjkyYjMwZWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcApAQCAtNzU1LDExICs3NTUs
NiBAQCBRU3RyaW5nIFRlc3RSdW5uZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBRV2Vi
RWxlbWVudCYgbGlzdEl0ZW0pCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpt
YXJrZXJUZXh0Rm9yTGlzdEl0ZW0obGlzdEl0ZW0pOwogfQogCi1RVmFyaWFudE1hcCBUZXN0UnVu
bmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3QgUVdlYkVsZW1lbnQm
IGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpj
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZWxlbWVudCk7Ci19Ci0KIGJvb2wgVGVz
dFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFFT
dHJpbmcmIGVsZW1lbnRJZCkKIHsKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6
OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChtX2RydC0+bWFpbkZyYW1l
QWRhcHRlcigpLCBlbGVtZW50SWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
cXQvVGVzdFJ1bm5lclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
aAppbmRleCBlNmY4M2UxYTY1NTU5NmM1M2MyOTE0OWU0MGE0OGNkNjhlNGM2NzZkLi41MmM4ZWI5
YzVlOWRhNGZjZDlhZDBhYWQxMmYyNzkyZjE2NzhlMWU3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9UZXN0UnVubmVyUXQuaApAQCAtMjQ5LDcgKzI0OSw2IEBAIHB1YmxpYyBRX1NMT1RTOgogICAg
IHZvaWQgc2V0U2Nyb2xsYmFyUG9saWN5KGNvbnN0IFFTdHJpbmcmIG9yaWVudGF0aW9uLCBjb25z
dCBRU3RyaW5nJiBwb2xpY3kpOwogCiAgICAgUVN0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0o
Y29uc3QgUVdlYkVsZW1lbnQmIGxpc3RJdGVtKTsKLSAgICBRVmFyaWFudE1hcCBjb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3QgUVdlYkVsZW1lbnQmKSBjb25zdDsKIAogICAg
IC8vIFNpbXVsYXRlIGEgcmVxdWVzdCBhbiBlbWJlZGRpbmcgYXBwbGljYXRpb24gY291bGQgbWFr
ZSwgcG9wdWxhdGluZyBwZXItc2Vzc2lvbiBjcmVkZW50aWFsIHN0b3JhZ2UuCiAgICAgdm9pZCBh
dXRoZW50aWNhdGVTZXNzaW9uKGNvbnN0IFFTdHJpbmcmIHVybCwgY29uc3QgUVN0cmluZyYgdXNl
cm5hbWUsIGNvbnN0IFFTdHJpbmcmIHBhc3N3b3JkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9UZXN0UnVubmVyV2luLmNwcAppbmRleCA4YzI3YTUyYzdlYjQxODc1NTIyYjhiZjMzMWEyNzEx
MDMxYWUyOTQxLi5iZWYzMTQyNjYzM2VmZGZmMDE0ZGM1OTFlZDlmMWVjYjhjMjAyZDI1IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xNjAsMTIgKzE2
MCw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIGhpc3RvcnktPnNl
dE9wdGlvbmFsU2hhcmVkSGlzdG9yeShzaGFyZWRIaXN0b3J5LmdldCgpKTsKIH0KIAotSlNWYWx1
ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLX0K
LQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Om1hcmtlclRleHRGb3JMaXN0
SXRlbShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAog
ewogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9U
ZXN0UnVubmVyV3guY3BwCmluZGV4IGY4Zjk4NTU0NmU3ZmYzOTNkM2I0MjRmNjk1Yjg0NTQwMWM4
MThlMTcuLjFiZWE0YTI3YzBhMDIwZDQyYmJjZWQyNjc1ZGZmZDZhYTVjYmJmNWIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcApAQCAtNDY4LDExICs0NjgsNiBAQCBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6bWFya2VyVGV4dEZvckxpc3RJdGVt
KEpTQ29udGV4dFJlZiBjb250ZXh0LAogICAgIHJldHVybiAwOwogfQogCi1KU1ZhbHVlUmVmIFRl
c3RSdW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6YXV0
aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQog
ewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggMjQyZjVhYmU2Y2M3Y2QzOWVhMjlj
MzU5ZmMwNjYwY2ZiODk1MzRiYi4uN2Q5MTFhNDhlNWQxYjY5MmJhYzMzYWRjMTllMGU5ZDBmY2Vk
MjkwOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC03NCw3ICs3NCw2IEBAIGludGVy
ZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIC8vIFNwZWNpYWwgRE9NIGZ1bmN0aW9ucy4KICAgICB2
b2lkIGNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgb2JqZWN0IGNvbXB1dGVkU3R5bGVJbmNs
dWRpbmdWaXNpdGVkSW5mbyhpbiBvYmplY3QgZWxlbWVudCk7CiAgICAgdm9pZCBleGVjQ29tbWFu
ZChpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIGFyZ3VtZW50KTsKICAgICBib29sZWFu
IGlzQ29tbWFuZEVuYWJsZWQoaW4gRE9NU3RyaW5nIG5hbWUpOwogICAgIERPTVN0cmluZyBtYXJr
ZXJUZXh0Rm9yTGlzdEl0ZW0oaW4gb2JqZWN0IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYWUxODE3
NmJiMWEyNjIyYmY1ODM2YjdmM2Y3OGFkODdlZWExZmM5NS4uMTQ5ZTJjN2U4YjU1MGJlYmUxMDM0
ZTEyMzg3MzZkNzhjMzNkMjc3YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xOTAsMTkgKzE5MCw2IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIFdLQnVuZGxlU2V0U2hvdWxkVHJhY2tW
aXNpdGVkTGlua3MoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCB0cnVlKTsKIH0K
IAotSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8oSlNWYWx1ZVJlZiBlbGVtZW50KQotewotICAgIC8vIEZJWE1FOiBJcyBpdCBPSyB0aGlzIHdv
cmtzIG9ubHkgZm9yIHRoZSBtYWluIGZyYW1lPwotICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZy
YW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5w
YWdlKCktPnBhZ2UoKSk7Ci0gICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1l
R2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVj
dChjb250ZXh0LCBlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwotICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBXS0J1bmRsZUZyYW1lR2V0Q29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKG1haW5GcmFtZSwgY29uc3RfY2FzdDxKU09iamVj
dFJlZj4oZWxlbWVudCkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNWYWx1
ZVJlZiBlbGVtZW50KQogewogICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5k
bGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2Uo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oCmluZGV4IGNkYTYxYWE0YzE3MjMwNDBhOGVmMDkxOTFhZTZjMWNlOGRiYjcwYjUuLjUy
M2E5Yjc2YWJlYmE5ZmYyMTRmODM1NmFmYmZiNDBlMDk4OTQzNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0xMTcsNyAr
MTE3LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChpbnQpOwogCiAgICAgLy8g
U3BlY2lhbCBET00gZnVuY3Rpb25zLgotICAgIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUluY2x1
ZGluZ1Zpc2l0ZWRJbmZvKEpTVmFsdWVSZWYgZWxlbWVudCk7CiAgICAgdm9pZCBjbGVhckJhY2tG
b3J3YXJkTGlzdCgpOwogICAgIHZvaWQgZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYgbmFtZSwgSlNT
dHJpbmdSZWYgYXJndW1lbnQpOwogICAgIGJvb2wgaXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1Jl
ZiBuYW1lKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5MjQwYTM3YTAwYzYyNTQ2YTUxZWE2NGQ3OGNmY2FkMGVkZWY4OTA5
Li43YzA1YzZkOGE1M2UxN2U5NmEwNTc0MjFlN2ZkZWY0ZjA5N2FlZGVmIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5j
b20+CisKKyAgICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJv
bSBUZXN0UnVubmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB0ZXN0cy4KKworICAgICAgICAqIGZhc3QvaGlz
dG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3Rv
cnkvbmVzdGVkLXZpc2l0ZWQtdGVzdC5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zZWxm
LWlzLXZpc2l0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVk
LXRlc3QuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJs
LXNldHMtbGlua3MtdmlzaXRlZC5odG1sOgorCiAyMDEzLTAyLTEzICBIYW5zIE11bGxlciAgPGht
dWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gRXhjbHVzaW9uUG9s
eWdvbiByZWZsZXggdmVydGljZXMgc2hvdWxkIGNvbnN0cmFpbiB0aGUgZmlyc3QgZml0IGxvY2F0
aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L211bHRpcGxlLWNsYXNz
ZXMtdmlzaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L211bHRpcGxlLWNsYXNz
ZXMtdmlzaXRlZC5odG1sCmluZGV4IDk2NTA4NjFhNjk3NmMyOTA3Y2Y3ZmY0OThlNTMzMGI4NzM4
NTA5NjYuLjBmMDgzMWU5MjdmOGQxYTg5YjRkNmY4Y2I0YjM2ODg5MDUxOTc1YzcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbXVsdGlwbGUtY2xhc3Nlcy12aXNpdGVk
Lmh0bWwKQEAgLTgsOSArOCw5IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogCiBmdW5jdGlv
biBjb21wYXJlU3R5bGVzKCkKIHsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAg
ICAgdmFyIGZpcnN0U3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5jbHVk
aW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKLSAgICAgICAg
dmFyIHNlY29uZFN0eWxlID0gd2luZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKSk7CisgICAgaWYgKHdp
bmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgdmFyIGZpcnN0U3R5bGUgPSBpbnRlcm5hbHMuY29t
cHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdv
bmUnKSk7CisgICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IGludGVybmFscy5jb21wdXRlZFN0eWxl
SW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpKTsKICAg
ICAgICAgaWYgKGZpcnN0U3R5bGUuY29sb3IgIT0gc2Vjb25kU3R5bGUuY29sb3IpIHsKICAgICAg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJ
TCc7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L25lc3RlZC12aXNpdGVkLXRlc3QuaHRtbAppbmRleCAzZjMwNTE4YmJkYmQzOTNjYWExMDM3N2Jk
ZDFjZWY0ZmQ2MjVmMDEwLi40MjlkODM4ZTI2MGE1ZDVjNjVmNThhNDdmMGE5YmYwNmRiNzM3MTc2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVz
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9uZXN0ZWQtdmlzaXRlZC10ZXN0
Lmh0bWwKQEAgLTE0LDkgKzE0LDkgQEAgZnVuY3Rpb24gY29tcGFyZVN0eWxlcygpCiAgICAgYW5j
aG9yLmlubmVySFRNTCA9ICJPbmUiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbmNs
b3N1cmUnKS5hcHBlbmRDaGlsZChhbmNob3IpOwogCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7Ci0gICAgICAgIHZhciBmaXJzdFN0eWxlID0gd2luZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmUnKSk7
Ci0gICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHZhciBmaXJzdFN0eWxlID0gaW50
ZXJuYWxzLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnb25lJykpOworICAgICAgICB2YXIgc2Vjb25kU3R5bGUgPSBpbnRlcm5hbHMuY29t
cHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
d28nKSk7CiAgICAgICAgIGlmIChmaXJzdFN0eWxlLmNvbG9yID09IHNlY29uZFN0eWxlLmNvbG9y
KSB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJI
VE1MID0gJ0ZBSUwnOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9o
aXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sCmluZGV4IGI2OGQ1YmRiMDZkYzFmNDRmNjhhYzk4
YTdjOWE3ZGMzN2I1MjM5ZjAuLjg3ZDA2ZDAyOGUyNDJmMGJjNDY0YjhiNjAwZjA2MmQyMDkyZWNj
N2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zZWxmLWlzLXZpc2l0ZWQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2VsZi1pcy12aXNpdGVkLmh0bWwK
QEAgLTgsOSArOCw5IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogCiBmdW5jdGlvbiBjb21w
YXJlU3R5bGVzKCkKIHsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdmFy
IGZpcnN0U3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlz
aXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKLSAgICAgICAgdmFyIHNl
Y29uZFN0eWxlID0gd2luZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKSk7CisgICAgaWYgKHdpbmRvdy5p
bnRlcm5hbHMpIHsKKyAgICAgICAgdmFyIGZpcnN0U3R5bGUgPSBpbnRlcm5hbHMuY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmUnKSk7
CisgICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVk
aW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpKTsKICAgICAgICAg
aWYgKGZpcnN0U3R5bGUuY29sb3IgPT0gc2Vjb25kU3R5bGUuY29sb3IgfHwgZmlyc3RTdHlsZS5i
YWNrZ3JvdW5kQ29sb3IgPT0gc2Vjb25kU3R5bGUuYmFja2dyb3VuZENvbG9yKSB7CiAgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUwn
OwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L3NpYmxpbmctdmlzaXRlZC10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkv
c2libGluZy12aXNpdGVkLXRlc3QuaHRtbAppbmRleCAxZjUyY2I2MmI3NGE2YjZjOGExODQ4OGMw
N2FjZDdmYTZlOGMxMmIxLi41N2VhN2Y2Y2RiMDEzZmY1ODRmZDViMDYxNjdmNjAxYzg5MDk5NTlj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRl
c3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRl
c3QuaHRtbApAQCAtOCw5ICs4LDkgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAKIGZ1bmN0
aW9uIGNvbXBhcmVTdHlsZXMoKQogewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
ICAgICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNs
dWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJykpOwotICAgICAg
ICB2YXIgc2Vjb25kU3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5jbHVk
aW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpKTsKKyAgICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgICAgICB2YXIgZmlyc3RTdHlsZSA9IGludGVybmFscy5j
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J29uZScpKTsKKyAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOwog
ICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciA9PSBzZWNvbmRTdHlsZS5jb2xvcikgewogICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdG
QUlMJzsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3Mt
dmlzaXRlZC5odG1sCmluZGV4IGE4MDBjMGE1Yjg1MGM4N2E1ZjkzMTAxMTg1Y2MzN2JlZDg3NmIy
NjEuLjg0OWU4OTcyNjhkMzYzYTZhYTJiM2U0NjdlM2NhMmU1OTM3MDc4MDMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5r
cy12aXNpdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbApAQCAtMTAsOSArMTAsOSBAQCBmdW5j
dGlvbiBsb2FkZWQoKQogICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAiVGl0
bGUiLCAicmVwbGFjZWRVUkwuaHRtbCIpOwogICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShu
dWxsLCAiVGl0bGUiLCAicHVzaGVkVVJMLmh0bWwiKTsKIAotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgICAgICB2YXIgc3R5bGUxID0gd2luZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rMScp
KTsKLSAgICAgICAgdmFyIHN0eWxlMiA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJ
bmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGluazInKSk7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgdmFyIHN0eWxlMSA9IGludGVybmFs
cy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xpbmsxJykpOworICAgICAgICB2YXIgc3R5bGUyID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGluazInKSk7
CiAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CiAgICAg
ICAgIGlmIChzdHlsZTEuY29sb3IgIT0gInJnYigyNTUsIDE2NSwgMCkiIHx8IHN0eWxlMi5jb2xv
ciAhPSAicmdiKDI1NSwgMTY1LCAwKSIpCiAgICAgICAgICAgICByZXN1bHQuaW5uZXJUZXh0ID0g
IkZBSUwiOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188239</attachid>
            <date>2013-02-13 17:56:03 -0800</date>
            <delta_ts>2013-02-13 20:13:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109772-20130213175231.patch</filename>
            <type>text/plain</type>
            <size>44773</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNkOWI5MTRkYTYyNjhh
OTc1YzBiNzYxYjk5ZjIxMzBjY2RhOGRhYS4uY2VhNTgxODBlNDg3YWY3ODQyMWQ3N2RhOWY3YjY1
NjM5NDdiYzQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTEzICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmdW5j
dGlvbiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oKSBpcyBwdXJlbHkgaW50ZXJu
YWwgdG8gV2ViQ29yZSwKKyAgICAgICAgaXQgaXMgYmV0dGVyIGRlZmluZWQgb24gSW50ZXJuYWxz
IHRoYW4gb24gVGVzdFJ1bm5lci4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMi0xMyAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEV4Y2x1c2lvblBvbHlnb24gcmVm
bGV4IHZlcnRpY2VzIHNob3VsZCBjb25zdHJhaW4gdGhlIGZpcnN0IGZpdCBsb2NhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGViNDE5NzEyNDAxYjA0NzA0MDY5MjQyYTUx
MTk5MjQ5ODFkZjc1MmQuLmUwNTY1MmI1MmM2MTg5MGE0YjQxNDE1OWQwNzk3NjE0YzRlN2U5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAy
LTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1v
dmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJ
bnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwOgorICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0Lmg6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnQpOgorCiAyMDEzLTAyLTEyICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRz
QHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFzc3VtZSBzZXRTY3JvbGxpbmdPclpv
b21pbmcoKSB0byBiZSBjYWxsZWQgb24gdGhlIFdlYktpdCB0aHJlYWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggYmNiNDA2ZTI3ODkyZjk1NDg0OTg0NzE1ODAxMWM0MjFjN2NkNGFlMC4uZDkxOTI2NmE0
NzA5NDk5NjBmZDY3ZmVmYWU5NTg4ODAzNGRkN2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEzLTAyLTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIE1vdmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZy
b20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaDoKKwogMjAxMy0wMi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2Vu
QGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIHdpbmRvdy5vcGVuIHBhc3NlcyBoZWlnaHQgYW5k
IHdpZHRoIHBhcmFtZXRlcnMgZXZlbiBpZiBub3QgZGVmaW5lZCBpbiBhIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCAwZmZkMGJlY2FmYjk2Mzk3MDYwMmMxNzU3MTI1ZjY3MmM1NzEzMGNjLi43NTdj
ZDhmMWQwNTU1YWY5M2MwZTM5M2E2MWI3YzhiM2U1NDc0NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8gZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMy0w
Mi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIHdpbmRvdy5vcGVuIHBhc3NlcyBoZWlnaHQgYW5kIHdpZHRoIHBhcmFtZXRl
cnMgZXZlbiBpZiBub3QgZGVmaW5lZCBpbiBhIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1OTlj
ZGI2ZTgzY2JiM2U5NjQ3MmU4MGZiMzEzMTdmNjViZGFlMDgxLi45ZmQ5NTU1YjVkZTE4ODhmZWUx
YWFhZGUxMWJiZmQyM2Y3ZjhjZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJvbSBUZXN0UnVu
bmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oOgorCiAyMDEzLTAyLTEyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gRW5hYmxlIFBBR0VfVklTSUJJTElUWV9BUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggOTBlODRlYmVlOGE4OTUwZjkzYTkwOTgwYWEwNmU3Mjg5NTVhN2E0Ny4uYTNk
ZGExOGYwMzBmOGE4YjA4Y2E1ZDkwMTYwODQwYTZkODllNjQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMy0wMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5m
byBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5oOgorCiAyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gd2luZG93Lm9wZW4gcGFzc2VzIGhlaWdodCBh
bmQgd2lkdGggcGFyYW1ldGVycyBldmVuIGlmIG5vdCBkZWZpbmVkIGluIGEgcGFnZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGI4NzUxNTMwOTkwMzgyYzBlZjE0ZWUzODMzNzViNjVkMzdlZWUwM2EuLjBiYjAzZjk1
Zjk1OTc4ZjU4ODA3MDU5YzdjNGJjYTBkN2UwYTE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMy0wMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyBmcm9tIFRl
c3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVG
cmFtZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUZyYW1lUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAg
IChXZWJGcmFtZSk6CisKIDIwMTMtMDItMTMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBDb25zb2xpZGF0ZSBtYWluIGZ1bmN0aW9ucyBpbiBXZWJLaXQyIG5vdyB0aGF0
IHRoZXkgYXJlIGFsbCBpZGVudGljYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA3NzFmMGNjZjQyMGE5YzQ5YWFiOWMzZjJkYzViMGY0YWJhMTcwMDJhLi5lOGU0OTEwYTY3
ZGNiNGRmZmI4YWMyZTE3M2QyZTEyYjAzODU1ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjUzLDYgKzY1NCwxNyBAQCBzaXplX3QgSW50ZXJuYWxzOjpudW1iZXJPZlNjb3BlZEhU
TUxTdHlsZUNoaWxkcmVuKGNvbnN0IE5vZGUqIHNjb3BlLCBFeGNlcHRpb25DbwogICAgIHJldHVy
biAwOwogfQogCitQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gSW50ZXJu
YWxzOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oTm9kZSogbm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBib29sIGFs
bG93VmlzaXRlZFN0eWxlID0gdHJ1ZTsKKyAgICByZXR1cm4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUobm9kZSwgYWxsb3dWaXNpdGVkU3R5bGUpOworfQorCiBJbnRlcm5hbHM6
OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6ZW5zdXJlU2hh
ZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWhv
c3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGU3MGFjNmM4MTNiYzk5ZTQw
YWZhZmNhZmFkZjViYTk1YjBhZmI0MmYuLjJmYTBjY2Y2YmFlMDFlNzMyM2UxMjhhM2U3MGRkNzJl
N2MyNGU4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjcsNiArMjcsNyBA
QAogI2lmbmRlZiBJbnRlcm5hbHNfaAogI2RlZmluZSBJbnRlcm5hbHNfaAogCisjaW5jbHVkZSAi
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNp
bmNsdWRlICJOb2RlTGlzdC5oIgpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90
IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4g
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKE5vZGUqLCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB0eXBlZGVmIFNoYWRvd1Jvb3Qg
U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCBiZjYzNDc5ZDRjZjc0M2NhNDRhN2I4OWVjMzBmYmUyOWI1ZDE1YmFh
Li5jYTExN2IwYWQyNDJjODdlMGJhNDdhNDFmNDdmMWUxOWU5NTEwOTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNCw2ICszNCw3IEBACiAgICAgYm9vbGVhbiBpc0xv
YWRpbmdGcm9tTWVtb3J5Q2FjaGUoaW4gRE9NU3RyaW5nIHVybCk7CiAKICAgICB1bnNpZ25lZCBs
b25nIG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oaW4gTm9kZSBzY29wZSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiBjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
I2lmIGRlZmluZWQoRU5BQkxFX1NIQURPV19ET00pICYmIEVOQUJMRV9TSEFET1dfRE9NCiAgICAg
U2hhZG93Um9vdCBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKaW5kZXggZWViNzVmZDA4
NGVmYjAxMzRlYWJhYzRkMzkzNDYxNmNhNjBiZTAzMy4uODFiOGNkNDI4OGUwNmM2OTMyZGM2ZWE5
YjE0ZDEwZGI3YzE0ZGZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0y
MCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRy
ZWVTdXBwb3J0LmgiCiAKLSNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRlICJEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkRh
dGEuaCIKQEAgLTEyMiwyMSArMTIxLDYgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNj
YWxlUGFnZUJ5KFdlYlBhZ2UqIHdlYlBhZ2UsIGZsb2F0IHNjYWxlRmFjdG9yLCBmbG8KICAgICBj
b3JlUGFnZSh3ZWJQYWdlKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2lu
dCh4LCB5KSk7CiB9CiAKLUpTVmFsdWVSZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpjb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUpCi17Ci0gICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9K
UyhleGVjLCB2YWx1ZSk7Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNf
aW5mbykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAg
ICBKU0VsZW1lbnQqIGpzRWxlbWVudCA9IHN0YXRpY19jYXN0PEpTRWxlbWVudCo+KGFzT2JqZWN0
KGpzVmFsdWUpKTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0g
ICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCB0cnVlKTsKLSAgICByZXR1cm4gdG9S
ZWYoZXhlYywgdG9KUyhleGVjLCBqc0VsZW1lbnQtPmdsb2JhbE9iamVjdCgpLCBzdHlsZS5nZXQo
KSkpOwotfQotCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jayogdG9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3JpZW50
YXRpb25DbGllbnQqIGNsaWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKaW5kZXgg
YmJjMDQ1NTFkNDhhM2ZiM2IxMDlkZjUwNWQzNzQwYzM3MzY2YjE5My4uYzk2YjkyZWJiNTYxNGQ2
YmUxYTZkYzU3NTZhMzY4YzJlMTAyYTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgK
QEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHN0YXRp
YyB2b2lkIHNjYWxlUGFnZUJ5KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGZsb2F0LCBm
bG9hdCwgZmxvYXQpOwotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIHNfbGlua3NJbmNsdWRlZEluVGFiQ2hhaW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcAppbmRleCA4YmI0ODZkYWQ5YzM3OGZkNjNjZWJhNTVlNDAyZmE2MDMwMjM2MmQxLi41
NWI3Y2U0YTQ4Y2ZmZTBhMGI3NDllYWRkN2U4NGRmMTU5YzY2N2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgPEFQSUNhc3QuaD4KICNp
bmNsdWRlIDxBbmltYXRpb25Db250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmg+CiAjaW5jbHVkZSA8RG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxF
ZGl0b3JDbGllbnRFZmwuaD4KICNpbmNsdWRlIDxFaW5hLmg+CkBAIC01NzgsMjIgKzU3Nyw2IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVy
TWFnbmlmaWNhdGlvbihFdmFzX09iamVjCiAgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0VmFsaWRh
dGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24odmFsdWUpOwogfQogCi1KU1ZhbHVlUmVmIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZv
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIGlmICghdmFs
dWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0M6OkpTVmFsdWUg
anNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwotICAgIGlmICghanNWYWx1ZS5pbmhlcml0cygm
V2ViQ29yZTo6SlNFbGVtZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBXZWJDb3JlOjpKU0VsZW1lbnQqIGpzRWxlbWVudCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKLSAg
ICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCB0cnVlKTsKLSAg
ICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhleGVjLCBqc0VsZW1lbnQtPmdsb2JhbE9iamVjdCgp
LCBzdHlsZS5nZXQoKSkpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0
QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZW5h
YmxlZCkKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggZTkyNTA1NzkyYmZhNWNlZTQ3MDQ3OWI4ZjNj
MGQyM2Y3MjRhYzQ4Ni4uMjEzMzI5NmIyZTBkZTZhZGExZTE5MWRhMjRiZTk1MzNmYWQ2MjViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QpOwogICAgIHN0YXRpYyB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb25FbmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQpOwogICAgIHN0
YXRpYyB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgdmFsdWUpOwotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAg
IHN0YXRpYyB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAKaW5kZXggNzM1YTBlNzRmYTFiZDI5N2NmYjNiODY4ODIyZGM1NTBiOTE4NGRi
My4uZmE5ZWQ0NzIxZWJmZjJkNWQ2Y2RjZGQ3ODViNTBlZTMwYjY0ODc0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0
ay5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgpAQCAtNzE3LDIyICs3MTYsNiBAQCBi
b29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkKFdlYktpdFdlYgogICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzVGV4dEZp
ZWxkKCkgJiYgIWlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgaW5wdXRFbGVtZW50
LT5zaG91bGRBdXRvY29tcGxldGUoKTsKIH0KIAotSlNWYWx1ZVJlZiBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBpZiAoIW5vZGVPYmplY3QpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgbm9kZU9iamVjdCk7Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0Vs
ZW1lbnQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKLQotICAgIEpTRWxlbWVudCoganNFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SlNFbGVtZW50
Kj4oYXNPYmplY3QoanNWYWx1ZSkpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBqc0VsZW1lbnQt
PmltcGwoKTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHRydWUpOwotICAg
IHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+Z2xvYmFsT2JqZWN0KCks
IHN0eWxlLmdldCgpKSk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkZWxp
dmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkoKQogewogICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRl
bGl2ZXJBbGxNdXRhdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggYTM0OWZhOGNj
ZWVkYTc1MmQ4NjIwZTdlNmZiMGFlZjFlM2RjMTdhZS4uYjBlY2Y1NWVmOWE0YmE5MWMwMGM4ZmMy
YmM3M2E2MmU2YjJiY2M2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTcyLDcgKzcyLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDbG9zZShX
ZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZChXZWJLaXRXZWJGcmFtZSosIEpTU3RyaW5nUmVmKTsKLSAgICBzdGF0
aWMgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmKTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcKICAgICBzdGF0aWMgdm9p
ZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBu
YW1lLCBjb25zdCBnY2hhciogdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDdhYzkwYjdlNjc1M2M0MWZiYTYxYTlkNjYwZDMyZjEzOTNhMjA4NTcuLmU2NGM4YmY1
NjhlZTNlZGNiYWQ0MDQ5ZWNiNDg5ZjAwODE4YzdjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTExNiw3ICsxMTYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9y
d2FyZExpc3RJbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yTWFjLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC02
Njg5LDI1ICs2Njg4LDYgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFj
ayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQotCi0tIChKU1Zh
bHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZilj
b250ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUKLXsKLSAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIGlm
ICghdmFsdWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
LSAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKLSAgICBpZiAoIWpzVmFs
dWUuaW5oZXJpdHMoJkpTRWxlbWVudDo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwotICAgIEpTRWxlbWVudCoganNFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SlNFbGVtZW50Kj4oYXNPYmplY3QoanNWYWx1ZSkpOwotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBqc0VsZW1lbnQtPmltcGwoKTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1l
bnQsIHRydWUpOwotICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+
Z2xvYmFsT2JqZWN0KCksIHN0eWxlLmdldCgpKSk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0
aW9uIFdlYlZpZXcgKFdlYlZpZXdGdWxsU2NyZWVuKQogCiAtIChOU1ZpZXcqKWZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aAppbmRleCA2ODUzYjM0ODg1MzFmZGVjZTMxYWMzY2U3ZjE4ZWI5M2E3ZDBhMDFjLi5lNjE3ZTFi
ZTQyMDQzZjM3NDJkMTEzNTU5NjdjYTA5ZWIyNTg1ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC03NDUsMTAgKzc0NSw2IEBAIENvdWxkIGJlIHdv
cnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodWludDY0X3QpX25vdGlmaWNhdGlvbklERm9yVGVz
dGluZzooSlNWYWx1ZVJlZilqc05vdGlmaWNhdGlvbjsKIEBlbmQKIAotQGludGVyZmFjZSBXZWJW
aWV3IChXZWJWaWV3UHJpdmF0ZVN0eWxlSW5mbykKLS0gKEpTVmFsdWVSZWYpX2NvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRWxlbWVudDoo
SlNWYWx1ZVJlZil2YWx1ZTsKLUBlbmQKLQogQGludGVyZmFjZSBOU09iamVjdCAoV2ViVmlld0Zy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZSkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBkaWRGaXJzdExheW91dEluRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKaW5kZXggNWMzNjI1YWI2YTYxN2FmZTkyNWRjNWU1MWZkZDBiZjk5ODY5NzRkZS4u
YzQ2ZGU5MzdiZTgzNTBjNzlmZTA5YWE1MGI3NGZjNDQzZWQ1YTMxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNs
dWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0LmgiCiAjaW5jbHVkZSAi
Q29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCkBAIC0zOTIsMzggKzM5
MSw2IEBAIFFTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om1hcmtlclRleHRGb3JMaXN0
SXRlbShjb25zdCBRV2ViRWxlbWVudCYgbGlzdEl0CiAgICAgcmV0dXJuIFdlYkNvcmU6Om1hcmtl
clRleHRGb3JMaXN0SXRlbShsaXN0SXRlbS5tX2VsZW1lbnQpOwogfQogCi1zdGF0aWMgUVN0cmlu
ZyBjb252ZXJ0VG9Qcm9wZXJ0eU5hbWUoY29uc3QgUVN0cmluZyYgbmFtZSkKLXsKLSAgICBRU3Ry
aW5nTGlzdCBwYXJ0cyA9IG5hbWUuc3BsaXQoUUxhdGluMUNoYXIoJy0nKSk7Ci0gICAgUVN0cmlu
ZyBjYW1lbENhc2VOYW1lOwotICAgIGZvciAoaW50IGogPSAwOyBqIDwgcGFydHMuY291bnQoKTsg
KytqKSB7Ci0gICAgICAgIFFTdHJpbmcgcGFydCA9IHBhcnRzLmF0KGopOwotICAgICAgICBpZiAo
aikKLSAgICAgICAgICAgIGNhbWVsQ2FzZU5hbWUuYXBwZW5kKHBhcnQucmVwbGFjZSgwLCAxLCBw
YXJ0LmxlZnQoMSkudG9VcHBlcigpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbWVs
Q2FzZU5hbWUuYXBwZW5kKHBhcnQpOwotICAgIH0KLSAgICByZXR1cm4gY2FtZWxDYXNlTmFtZTsK
LX0KLQotUVZhcmlhbnRNYXAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNvbXB1dGVkU3R5bGVJ
bmNsdWRpbmdWaXNpdGVkSW5mbyhjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBR
VmFyaWFudE1hcCByZXM7Ci0KLSAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0gZWxl
bWVudC5tX2VsZW1lbnQ7Ci0gICAgaWYgKCF3ZWJFbGVtZW50KQotICAgICAgICByZXR1cm4gcmVz
OwotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVh
dGUod2ViRWxlbWVudCwgdHJ1ZSk7Ci0gICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKj4oY29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmdldCgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGUtPmxl
bmd0aCgpOyBpKyspIHsKLSAgICAgICAgUVN0cmluZyBuYW1lID0gc3R5bGUtPml0ZW0oaSk7Ci0g
ICAgICAgIFFTdHJpbmcgdmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKTsKLSAg
ICAgICAgcmVzW2NvbnZlcnRUb1Byb3BlcnR5TmFtZShuYW1lKV0gPSBRVmFyaWFudCh2YWx1ZSk7
Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KIFFWYXJpYW50TGlzdCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2VsZWN0ZWRSYW5nZShRV2ViUGFnZUFkYXB0ZXIgKmFkYXB0ZXIpCiB7CiAg
ICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gYWRhcHRlci0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCmluZGV4IGVjN2IxN2Iw
MmFlNjRhNzg2YjMxZTUyNWQ1Y2ViYjdmYjk5MGNkMTAuLmRkMDQ0MDE5OTU4ZThiZTIzMjQzZWU1
ZDNjYzdiZTc0Y2JlYWY1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTE0MCw3ICsxNDAsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0cyhRV2ViUGFnZUFkYXB0ZXIqKTsKIAogICAgIHN0YXRpYyBRU3RyaW5nIG1h
cmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBRV2ViRWxlbWVudCYgbGlzdEl0ZW0pOwotICAgIHN0
YXRpYyBRVmFyaWFudE1hcCBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3Qg
UVdlYkVsZW1lbnQmKTsKIAogICAgIHN0YXRpYyB2b2lkIGR1bXBGcmFtZUxvYWRlcihib29sKTsK
ICAgICBzdGF0aWMgdm9pZCBkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKGJvb2wpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKaW5kZXggMDZkZGMzYjVkOWIxZmVhZTAxZTg5MjMw
NDI5YTIxY2NjNWNhOTU4YS4uNTJiMDExY2MxMWE1ZDA2YmUxZjI5NGM3YjZhOWQ1MjE3NjIyZWM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCkBAIC0xMjIsMTEgKzEyMiw2IEBA
IFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
UmVmKQogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5uYW1lKCkpOwog
fQogCi1KU1ZhbHVlUmVmIFdLQnVuZGxlRnJhbWVHZXRDb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlz
aXRlZEluZm8oV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgSlNPYmplY3RSZWYgZWxlbWVudCkK
LXsKLSAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zp
c2l0ZWRJbmZvKGVsZW1lbnQpOwotfQotCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUNv
dW50ZXJWYWx1ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBKU09iamVjdFJlZiBlbGVtZW50
KQogewogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5jb3VudGVyVmFs
dWUoZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oCmlu
ZGV4IDRlNWM1YzNiMGUwYmUwMWYyOTQxMzljMjFjNWJlZjg2OWMwNGZlZGEuLjljNjI5MDBhYjQy
MWRkOWYwZWY1NzRlMDNmNjgxM2E4MTNmYTVhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWVQcml2YXRlLmgKQEAgLTQwLDcgKzQwLDYgQEAgZXh0ZXJuICJDIiB7CiBXS19FWFBP
UlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlDb3VudGVy
VmFsdWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgSlNPYmplY3RSZWYgZWxlbWVudCk7CiBXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlNYXJrZXJUZXh0KFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUsIEpTT2JqZWN0UmVmIGVsZW1lbnQpOwotV0tfRVhQT1JUIEpTVmFsdWVSZWYg
V0tCdW5kbGVGcmFtZUdldENvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lLCBKU09iamVjdFJlZiBlbGVtZW50KTsKIFdLX0VYUE9SVCB1bnNpZ25l
ZCBXS0J1bmRsZUZyYW1lR2V0UGVuZGluZ1VubG9hZENvdW50KFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNU
ZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVGcmFt
ZUNsZWFyT3BlbmVyKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNGZlMzE3ZWY3NjIzYTg2YmZl
MzQzNjA1ZWRkMGQ5NjZlYmRjMDBkNy4uNTZlNTJjNzM3Y2JlYWYzNjZjZWJhODRiYWEyMzAxZWJk
MDY4ZTg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBA
IC02MjEsMjMgKzYyMCw2IEBAIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmpzV3JhcHBlckZvcldvcmxk
KEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUqIHJhbmdlSGFuZGxlLCBJCiAgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCByYW5nZUhhbmRsZS0+Y29yZVJhbmdl
KCkpKTsKIH0KIAotSlNWYWx1ZVJlZiBXZWJGcmFtZTo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zp
c2l0ZWRJbmZvKEpTT2JqZWN0UmVmIGVsZW1lbnQpCi17Ci0gICAgaWYgKCFtX2NvcmVGcmFtZSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gbV9j
b3JlRnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
OwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotCi0g
ICAgaWYgKCF0b0pTKGVsZW1lbnQpLT5pbmhlcml0cygmSlNFbGVtZW50OjpzX2luZm8pKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQodG9SZWYoZXhlYykpOwotCi0gICAgUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZShzdGF0aWNfY2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQp
KS0+aW1wbCgpLCB0cnVlKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIHJl
dHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUuZ2V0KCkpKTsK
LX0KLQogU3RyaW5nIFdlYkZyYW1lOjpjb3VudGVyVmFsdWUoSlNPYmplY3RSZWYgZWxlbWVudCkK
IHsKICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNfaW5mbykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDMz
MDUzMDczZDEwMWM3MzA3ZWNkODIzOTAwNzVkZGMyMzExZjAzMWUuLmU5ODU0MGZlNWFiNmIwYmQ1
YzFmN2IyNjMxZjExNDI1YzA5OWNiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5oCkBAIC05Miw3ICs5Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGlz
RnJhbWVTZXQoKSBjb25zdDsKICAgICBXZWJGcmFtZSogcGFyZW50RnJhbWUoKSBjb25zdDsKICAg
ICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjaGlsZEZyYW1lcygpOwotICAgIEpTVmFsdWVS
ZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTT2JqZWN0UmVmIGVsZW1lbnQp
OwogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQoKTsKICAgICBKU0dsb2JhbENvbnRl
eHRSZWYganNDb250ZXh0Rm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOwogICAg
IFdlYkNvcmU6OkludFJlY3QgY29udGVudEJvdW5kcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIKaW5kZXggN2M3ZTE3OTNiNjhlZDEwNTU4YzEzZTBlMGFjNTBmNTY5OGQ3ZTAyNC4uZWI1
NzlhNzA2NDYyMzkxMzNmYmM0OWZiMGI0NWVmZWRhYzRmNDZkYyAxMDA2NDQKLS0tIGEvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyCkBAIC0xMDUsNiArMTA1LDcgQEAgX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29u
dHJvbGxlcjEwbWFya2Vyc0ZvckVQTlNfNE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjEKIF9aTjdX
ZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxOGFkZFRleHRNYXRjaE1hcmtlckVQS05T
XzVSYW5nZUViOwogX1pON1dlYkNvcmUyNWNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfMTdW
aWV3cG9ydEFyZ3VtZW50c0VpaWlmTlNfN0ludFNpemVFOwogX1pON1dlYkNvcmUyNWpzU3RyaW5n
V2l0aENhY2hlU2xvd0Nhc2VFUE4zSlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEw
U3RyaW5nSW1wbEVOUzBfNFdlYWtJTlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFzaElTNl9FRU5T
M18xMEhhc2hUcmFpdHNJUzZfRUVOU0NfSVM5X0VFRUVTNl87CitfWk43V2ViQ29yZTI3Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uQzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktO
UzFfNlN0cmluZ0U7CiBfWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDEy
bW92ZVdpbmRvd0J5RWZmOwogX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwxMm9wZW5Jbk5ld1RhYkVSS04zV1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTI4SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDE0ZnJvbnRlbmRMb2FkZWRFdjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMDFlYjFmYjJkNTk0N2E2NDViM2Zk
YTg4ZGJkODZmNjRjMzg1ODEwLi5lNzhmZTFiN2FiYTg3NGJiZTI5MjAzMjdkY2NkNjhiNjlhZjVi
MDFjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8gZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoK
KyAgICAgICAgKFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvVGVzdFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHA6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9U
ZXN0UnVubmVyUXQuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJR
dC5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L1Rlc3RSdW5uZXJXaW4uY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5u
ZXJXeC5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisKIDIwMTMtMDIt
MTMgIEFsYW4gQ3V0dGVyICA8YWxhbmN1dHRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgY3It
bGludXggZGVidWcgc2hvdWxkIHVzZSBjbGFuZyBhbmQgbWF5YmUgYmUgYSBjb21wb25lbnRzIGJ1
aWxkCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDg1ODQ3NDBjNjcyOTFlMDUy
YzM2YmVmNmY1NGU1NDM2ODM1NjAwYTIuLjVlNDcxMjUwZDI3N2NjZGZjNDQ0ZGY4NmRhNDk3MTA3
ZTM4MTYzYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC02ODAsMTYgKzY4
MCw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGtlZXBXZWJIaXN0b3J5Q2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17
Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwotICAgIAotICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24K
LSAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIGNvbnRyb2xsZXItPmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhjb250ZXh0LCBhcmd1bWVudHNbMF0pOwot
fQotCiBzdGF0aWMgSlNWYWx1ZVJlZiBub3RpZnlEb25lQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9u
CkBAIC0yMDg5LDcgKzIwNzksNiBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpzdGF0
aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJjbGVhckJhY2tGb3J3YXJkTGlzdCIsIGNsZWFyQmFj
a0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJQZXJzaXN0ZW50
VXNlclN0eWxlU2hlZXQiLCBjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldENhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImNsb3NlV2ViSW5zcGVjdG9yIiwgY2xvc2VXZWJJbnNwZWN0b3JD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7ICJjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRl
ZEluZm8iLCBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm9DYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJkZWNvZGVIb3N0TmFtZSIsIGRlY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2FjaGVRdW90
YSIsIGRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGFDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJkaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMiLCBkaXNwYXRjaFBl
bmRpbmdMb2FkUmVxdWVzdHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5l
ci5oCmluZGV4IDc5MjBlYzY0NDM2NzkzYWNkNjIyYTJhZjU5NDNlNWQ0ZTNkOWVhZTguLjUwNDdj
ZGE1OWY0YWZiNTlmMjU1NDNkNzEyOGRjZjRmMGU0MzI2NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
UnVubmVyLmgKQEAgLTY2LDcgKzY2LDYgQEAgcHVibGljOgogICAgIGxvbmcgbG9uZyBhcHBsaWNh
dGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG5hbWUpOwogICAgIGJvb2wg
aXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBuYW1lKTsKICAgICB2b2lkIGtlZXBXZWJIaXN0
b3J5KCk7Ci0gICAgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8o
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICB2b2lkIG5vdGlmeURvbmUoKTsKICAgICBp
bnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKTsKICAgICB2
b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZhbHVl
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5l
ckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVu
bmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggNGFkMzZlNjYyN2Q3MzFjMWI4ZWUxMjc1MmM0MmEyM2Y0
OTAyOGYxMi4uMWFjOTRmZDZjMGE0OTg1Njc3NDlkMWI5YjhjNTE1MTkyMzhkMTFmYSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJy
eS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxh
Y2tCZXJyeS5jcHAKQEAgLTUwNSwxMSArNTA1LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpzZXRKYXZh
U2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJvb2wgZmxhZykKICAgICBCbGFja0JlcnJ5OjpXZWJL
aXQ6OkR1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLT5zZXRKYXZhU2Ny
aXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGZsYWcpOwogfQogCi1KU1ZhbHVlUmVmIFRlc3RSdW5uZXI6
OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNWYWx1ZVJlZiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpj
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29udGV4dCwgdmFsdWUpOwotfQotCiBK
U1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6bGF5ZXJUcmVlQXNUZXh0KCkgY29u
c3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rl
c3RSdW5uZXJFZmwuY3BwCmluZGV4IDQ1NjQ2MTA5Y2NmZTZkOGI4YTc3MGJlYWMxNjQ2MTcwNWYz
YjY4MGIuLjQ2NTk0MDJmZjc5YTk5N2JlZDViMTkyYWZkMGMzNDkxZDMwMzQwYTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKQEAgLTExMiwxMSArMTEyLDYg
QEAgdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyh0cnVlKTsKIH0KIAotSlNWYWx1
ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGNvbnRl
eHQsIHZhbHVlKTsKLX0KLQogc2l6ZV90IFRlc3RSdW5uZXI6OndlYkhpc3RvcnlJdGVtQ291bnQo
KQogewogICAgIGNvbnN0IEV3a19IaXN0b3J5KiBoaXN0b3J5ID0gZXdrX3ZpZXdfaGlzdG9yeV9n
ZXQoYnJvd3Nlci0+bWFpblZpZXcoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1
bm5lckd0ay5jcHAKaW5kZXggNGM4ZTdiNDA5ZDA4NmU0MWRhNmQ4N2Y5MzAxNjE0NzEyOTM5YWJl
OS4uOWFlOTA1NmE1YjlkYzlkOTM0MjdjMGI3MzM1ZmY2ZGM2YmE5YmVlMCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcApAQCAtMTA4LDExICsxMDgsNiBAQCB2
b2lkIFRlc3RSdW5uZXI6OmtlZXBXZWJIaXN0b3J5KCkKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
CiB9CiAKLUpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIHJl
dHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNp
dGVkSW5mbyhjb250ZXh0LCB2YWx1ZSk7Ci19Ci0KIHNpemVfdCBUZXN0UnVubmVyOjp3ZWJIaXN0
b3J5SXRlbUNvdW50KCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dl
Yl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW0KaW5kZXggZmMzYWZhNjc2NTIwYWJkNGFmNGJiNWM1ZmMyYzVkOTU0
MzU0ZGZlMC4uMzRjN2VhYTIwZDI1NGY2YzFlOGUxZWYxZDllOWJkNTBlNThlMjQ5OSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTI3MywxMSArMjczLDYg
QEAgdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAgfQogfQogCi1KU1ZhbHVl
UmVmIFRlc3RSdW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsgICAKLSAgICByZXR1cm4gW1ttYWlu
RnJhbWUgd2ViVmlld10gX2NvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzpjb250ZXh0
IGZvckVsZW1lbnQ6dmFsdWVdOwotfQotCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1
bm5lcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QpIGNvbnN0CiB7CiAgICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IFtET01F
bGVtZW50IF9ET01FbGVtZW50RnJvbUpTQ29udGV4dDpjb250ZXh0IHZhbHVlOm5vZGVPYmplY3Rd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKaW5kZXggNzUyOWMyYjUz
ODViNzUwZDM0MjFmNDllY2QyZGZkY2U4ZjIyMTI2ZC4uZTdmNTY1NjI1ZTkwNmNiOWY3YTEzYzIw
YmQzYWEzNWY2OTJiMzBlZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVz
dFJ1bm5lclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
Y3BwCkBAIC03NTUsMTEgKzc1NSw2IEBAIFFTdHJpbmcgVGVzdFJ1bm5lcjo6bWFya2VyVGV4dEZv
ckxpc3RJdGVtKGNvbnN0IFFXZWJFbGVtZW50JiBsaXN0SXRlbSkKICAgICByZXR1cm4gRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6Om1hcmtlclRleHRGb3JMaXN0SXRlbShsaXN0SXRlbSk7CiB9CiAK
LVFWYXJpYW50TWFwIFRlc3RSdW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5m
byhjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkgY29uc3QKLXsKLSAgICByZXR1cm4gRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQ6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhlbGVt
ZW50KTsKLX0KLQogYm9vbCBUZXN0UnVubmVyOjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVs
ZW1lbnRXaXRoSWQoY29uc3QgUVN0cmluZyYgZWxlbWVudElkKQogewogICAgIHJldHVybiBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdDo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0
aElkKG1fZHJ0LT5tYWluRnJhbWVBZGFwdGVyKCksIGVsZW1lbnRJZCk7CmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3F0L1Rlc3RSdW5uZXJRdC5oCmluZGV4IGU2ZjgzZTFhNjU1NTk2YzUzYzI5MTQ5ZTQwYTQ4
Y2Q2OGU0YzY3NmQuLjUyYzhlYjljNWU5ZGE0ZmNkOWFkMGFhZDEyZjI3OTJmMTY3OGUxZTcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCkBAIC0yNDksNyArMjQ5LDYgQEAg
cHVibGljIFFfU0xPVFM6CiAgICAgdm9pZCBzZXRTY3JvbGxiYXJQb2xpY3koY29uc3QgUVN0cmlu
ZyYgb3JpZW50YXRpb24sIGNvbnN0IFFTdHJpbmcmIHBvbGljeSk7CiAKICAgICBRU3RyaW5nIG1h
cmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBRV2ViRWxlbWVudCYgbGlzdEl0ZW0pOwotICAgIFFW
YXJpYW50TWFwIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhjb25zdCBRV2ViRWxl
bWVudCYpIGNvbnN0OwogCiAgICAgLy8gU2ltdWxhdGUgYSByZXF1ZXN0IGFuIGVtYmVkZGluZyBh
cHBsaWNhdGlvbiBjb3VsZCBtYWtlLCBwb3B1bGF0aW5nIHBlci1zZXNzaW9uIGNyZWRlbnRpYWwg
c3RvcmFnZS4KICAgICB2b2lkIGF1dGhlbnRpY2F0ZVNlc3Npb24oY29uc3QgUVN0cmluZyYgdXJs
LCBjb25zdCBRU3RyaW5nJiB1c2VybmFtZSwgY29uc3QgUVN0cmluZyYgcGFzc3dvcmQpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCmluZGV4IDhjMjdhNTJjN2Vi
NDE4NzU1MjJiOGJmMzMxYTI3MTEwMzFhZTI5NDEuLmJlZjMxNDI2NjMzZWZkZmYwMTRkYzU5MWVk
OWYxZWNiOGMyMDJkMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0
UnVubmVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldp
bi5jcHAKQEAgLTE2MCwxMiArMTYwLDYgQEAgdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9y
eSgpCiAgICAgaGlzdG9yeS0+c2V0T3B0aW9uYWxTaGFyZWRIaXN0b3J5KHNoYXJlZEhpc3Rvcnku
Z2V0KCkpOwogfQogCi1KU1ZhbHVlUmVmIFRlc3RSdW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsK
LSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwotfQotCiBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5l
cjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVm
IG5vZGVPYmplY3QpIGNvbnN0CiB7CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3OwpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKaW5kZXggZjhmOTg1NTQ2ZTdmZjM5
M2QzYjQyNGY2OTViODQ1NDAxYzgxOGUxNy4uMWJlYTRhMjdjMGEwMjBkNDJiYmNlZDI2NzVkZmZk
NmFhNWNiYmY1YiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5l
cld4LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCkBA
IC00NjgsMTEgKzQ2OCw2IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjpt
YXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmIGNvbnRleHQsCiAgICAgcmV0dXJuIDA7
CiB9CiAKLUpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZikKLXsKLSAgICByZXR1cm4gMDsKLX0KLQog
dm9pZCBUZXN0UnVubmVyOjphdXRoZW50aWNhdGVTZXNzaW9uKEpTU3RyaW5nUmVmLCBKU1N0cmlu
Z1JlZiwgSlNTdHJpbmdSZWYpCiB7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCAy
NDJmNWFiZTZjYzdjZDM5ZWEyOWMzNTlmYzA2NjBjZmI4OTUzNGJiLi43ZDkxMWE0OGU1ZDFiNjky
YmFjMzNhZGMxOWUwZTlkMGZjZWQyOTA4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAg
LTc0LDcgKzc0LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogCiAgICAgLy8gU3BlY2lhbCBE
T00gZnVuY3Rpb25zLgogICAgIHZvaWQgY2xlYXJCYWNrRm9yd2FyZExpc3QoKTsKLSAgICBvYmpl
Y3QgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGluIG9iamVjdCBlbGVtZW50KTsK
ICAgICB2b2lkIGV4ZWNDb21tYW5kKGluIERPTVN0cmluZyBuYW1lLCBpbiBET01TdHJpbmcgYXJn
dW1lbnQpOwogICAgIGJvb2xlYW4gaXNDb21tYW5kRW5hYmxlZChpbiBET01TdHJpbmcgbmFtZSk7
CiAgICAgRE9NU3RyaW5nIG1hcmtlclRleHRGb3JMaXN0SXRlbShpbiBvYmplY3QgZWxlbWVudCk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVu
bmVyLmNwcAppbmRleCBhZTE4MTc2YmIxYTI2MjJiZjU4MzZiN2YzZjc4YWQ4N2VlYTFmYzk1Li4x
NDllMmM3ZThiNTUwYmViZTEwMzRlMTIzODczNmQ3OGMzM2QyNzdiIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE5
MCwxOSArMTkwLDYgQEAgdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAgV0tC
dW5kbGVTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyhJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCku
YnVuZGxlKCksIHRydWUpOwogfQogCi1KU1ZhbHVlUmVmIFRlc3RSdW5uZXI6OmNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU1ZhbHVlUmVmIGVsZW1lbnQpCi17Ci0gICAgLy8gRklY
TUU6IElzIGl0IE9LIHRoaXMgd29ya3Mgb25seSBmb3IgdGhlIG1haW4gZnJhbWU/Ci0gICAgV0tC
dW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0
ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKLSAgICBKU0NvbnRleHRSZWYgY29u
dGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwotICAg
IGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHQsIGVsZW1lbnQpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IFdL
QnVuZGxlRnJhbWVHZXRDb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8obWFpbkZyYW1l
LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihlbGVtZW50KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotICAgIHJldHVybiB2
YWx1ZTsKLX0KLQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Om1hcmtlclRl
eHRGb3JMaXN0SXRlbShKU1ZhbHVlUmVmIGVsZW1lbnQpCiB7CiAgICAgV0tCdW5kbGVGcmFtZVJl
ZiBtYWluRnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5kZXggY2RhNjFhYTRjMTcyMzA0MGE4ZWYwOTE5
MWFlNmMxY2U4ZGJiNzBiNS4uNTIzYTliNzZhYmViYTlmZjIxNGY4MzU2YWZiZmI0MGUwOTg5NDM1
NCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmgKQEAgLTExNyw3ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDYWNoZU1v
ZGVsKGludCk7CiAKICAgICAvLyBTcGVjaWFsIERPTSBmdW5jdGlvbnMuCi0gICAgSlNWYWx1ZVJl
ZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNWYWx1ZVJlZiBlbGVtZW50KTsK
ICAgICB2b2lkIGNsZWFyQmFja0ZvcndhcmRMaXN0KCk7CiAgICAgdm9pZCBleGVjQ29tbWFuZChK
U1N0cmluZ1JlZiBuYW1lLCBKU1N0cmluZ1JlZiBhcmd1bWVudCk7CiAgICAgYm9vbCBpc0NvbW1h
bmRFbmFibGVkKEpTU3RyaW5nUmVmIG5hbWUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDkyNDBhMzdhMDBjNjI1NDZhNTFl
YTY0ZDc4Y2ZjYWQwZWRlZjg5MDkuLjdjMDVjNmQ4YTUzZTE3ZTk2YTA1NzQyMWU3ZmRlZjRmMDk3
YWVkZWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wMi0xMyAgQmVuamFtaW4gUG91bGFp
biAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNs
dWRpbmdWaXNpdGVkSW5mbyBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIHRlc3RzLgor
CisgICAgICAgICogZmFzdC9oaXN0b3J5L211bHRpcGxlLWNsYXNzZXMtdmlzaXRlZC5odG1sOgor
ICAgICAgICAqIGZhc3QvaGlzdG9yeS9uZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWw6CisgICAgICAg
ICogZmFzdC9oaXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvaGlz
dG9yeS9zaWJsaW5nLXZpc2l0ZWQtdGVzdC5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0
YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVkLmh0bWw6CisKIDIwMTMtMDIt
MTMgIEhhbnMgTXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBFeGNs
dXNpb25zXSBFeGNsdXNpb25Qb2x5Z29uIHJlZmxleCB2ZXJ0aWNlcyBzaG91bGQgY29uc3RyYWlu
IHRoZSBmaXJzdCBmaXQgbG9jYXRpb24uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvbXVsdGlwbGUtY2xhc3Nlcy12aXNpdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvbXVsdGlwbGUtY2xhc3Nlcy12aXNpdGVkLmh0bWwKaW5kZXggOTY1MDg2MWE2OTc2YzI5
MDdjZjdmZjQ5OGU1MzMwYjg3Mzg1MDk2Ni4uMGYwODMxZTkyN2Y4ZDFhODliNGQ2ZjhjYjRiMzY4
ODkwNTE5NzVjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L211bHRpcGxl
LWNsYXNzZXMtdmlzaXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9tdWx0
aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRtbApAQCAtOCw5ICs4LDkgQEAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CiAKIGZ1bmN0aW9uIGNvbXBhcmVTdHlsZXMoKQogewotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgICAgICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVy
LmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnb25lJykpOwotICAgICAgICB2YXIgc2Vjb25kU3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5j
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3R3bycpKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB2YXIgZmlyc3RT
dHlsZSA9IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKKyAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gaW50
ZXJuYWxzLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndHdvJykpOwogICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciAhPSBzZWNvbmRT
dHlsZS5jb2xvcikgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVySFRNTCA9ICdGQUlMJzsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9uZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVzdC5odG1sCmluZGV4IDNmMzA1
MThiYmRiZDM5M2NhYTEwMzc3YmRkMWNlZjRmZDYyNWYwMTAuLjQyOWQ4MzhlMjYwYTVkNWM2NWY1
OGE0N2YwYTliZjA2ZGI3MzcxNzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9uZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5
L25lc3RlZC12aXNpdGVkLXRlc3QuaHRtbApAQCAtMTQsOSArMTQsOSBAQCBmdW5jdGlvbiBjb21w
YXJlU3R5bGVzKCkKICAgICBhbmNob3IuaW5uZXJIVE1MID0gIk9uZSI7CiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2VuY2xvc3VyZScpLmFwcGVuZENoaWxkKGFuY2hvcik7CiAKLSAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgdmFyIGZpcnN0U3R5bGUgPSB3aW5kb3cu
dGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ29uZScpKTsKLSAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93LnRl
c3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0d28nKSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAg
dmFyIGZpcnN0U3R5bGUgPSBpbnRlcm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJ
bmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmUnKSk7CisgICAgICAgIHZhciBzZWNvbmRT
dHlsZSA9IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpKTsKICAgICAgICAgaWYgKGZpcnN0U3R5bGUuY29sb3Ig
PT0gc2Vjb25kU3R5bGUuY29sb3IpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTCc7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2VsZi1pcy12aXNpdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2VsZi1pcy12aXNpdGVkLmh0bWwKaW5kZXggYjY4
ZDViZGIwNmRjMWY0NGY2OGFjOThhN2M5YTdkYzM3YjUyMzlmMC4uODdkMDZkMDI4ZTI0MmYwYmM0
NjRiOGI2MDBmMDYyZDIwOTJlY2M3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0
b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9z
ZWxmLWlzLXZpc2l0ZWQuaHRtbApAQCAtOCw5ICs4LDkgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiAKIGZ1bmN0aW9uIGNvbXBhcmVTdHlsZXMoKQogewotICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewotICAgICAgICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1
dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25l
JykpOwotICAgICAgICB2YXIgc2Vjb25kU3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycp
KTsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB2YXIgZmlyc3RTdHlsZSA9
IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ29uZScpKTsKKyAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gaW50ZXJuYWxz
LmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndHdvJykpOwogICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciA9PSBzZWNvbmRTdHlsZS5j
b2xvciB8fCBmaXJzdFN0eWxlLmJhY2tncm91bmRDb2xvciA9PSBzZWNvbmRTdHlsZS5iYWNrZ3Jv
dW5kQ29sb3IpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQn
KS5pbm5lckhUTUwgPSAnRkFJTCc7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9zaWJsaW5nLXZpc2l0ZWQtdGVzdC5odG1sCmluZGV4IDFmNTJj
YjYyYjc0YTZiNmM4YTE4NDg4YzA3YWNkN2ZhNmU4YzEyYjEuLjU3ZWE3ZjZjZGIwMTNmZjU4NGZk
NWIwNjE2N2Y2MDFjODkwOTk1OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9zaWJsaW5nLXZpc2l0ZWQtdGVzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9y
eS9zaWJsaW5nLXZpc2l0ZWQtdGVzdC5odG1sCkBAIC04LDkgKzgsOSBAQCBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKIAogZnVuY3Rpb24gY29tcGFyZVN0eWxlcygpCiB7Ci0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHZhciBmaXJzdFN0eWxlID0gd2luZG93LnRlc3RSdW5u
ZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdvbmUnKSk7Ci0gICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVy
LmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndHdvJykpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHZhciBmaXJz
dFN0eWxlID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJykpOworICAgICAgICB2YXIgc2Vjb25kU3R5bGUgPSBp
bnRlcm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0d28nKSk7CiAgICAgICAgIGlmIChmaXJzdFN0eWxlLmNvbG9yID09IHNlY29u
ZFN0eWxlLmNvbG9yKSB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVz
dWx0JykuaW5uZXJIVE1MID0gJ0ZBSUwnOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLXVybC1zZXRzLWxp
bmtzLXZpc2l0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9z
dGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVkLmh0bWwKaW5kZXggYTgwMGMwYTViODUwYzg3YTVm
OTMxMDExODVjYzM3YmVkODc2YjI2MS4uODQ5ZTg5NzI2OGQzNjNhNmFhMmIzZTQ2N2UzY2EyZTU5
MzcwNzgwMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3Rz
L3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRlZC5odG1sCkBA
IC0xMCw5ICsxMCw5IEBAIGZ1bmN0aW9uIGxvYWRlZCgpCiAgICAgd2luZG93Lmhpc3RvcnkucmVw
bGFjZVN0YXRlKG51bGwsICJUaXRsZSIsICJyZXBsYWNlZFVSTC5odG1sIik7CiAgICAgd2luZG93
Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsICJUaXRsZSIsICJwdXNoZWRVUkwuaHRtbCIpOwogCi0g
ICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHZhciBzdHlsZTEgPSB3aW5kb3cu
dGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xpbmsxJykpOwotICAgICAgICB2YXIgc3R5bGUyID0gd2luZG93LnRlc3RS
dW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdsaW5rMicpKTsKKyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB2
YXIgc3R5bGUxID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGluazEnKSk7CisgICAgICAgIHZhciBzdHlsZTIgPSBp
bnRlcm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdsaW5rMicpKTsKICAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInAiKTsKICAgICAgICAgaWYgKHN0eWxlMS5jb2xvciAhPSAicmdiKDI1NSwgMTY1
LCAwKSIgfHwgc3R5bGUyLmNvbG9yICE9ICJyZ2IoMjU1LCAxNjUsIDApIikKICAgICAgICAgICAg
IHJlc3VsdC5pbm5lclRleHQgPSAiRkFJTCI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188254</attachid>
            <date>2013-02-13 20:14:00 -0800</date>
            <delta_ts>2013-02-27 20:14:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109772-20130213201028.patch</filename>
            <type>text/plain</type>
            <size>47248</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNkOWI5MTRkYTYyNjhh
OTc1YzBiNzYxYjk5ZjIxMzBjY2RhOGRhYS4uY2VhNTgxODBlNDg3YWY3ODQyMWQ3N2RhOWY3YjY1
NjM5NDdiYzQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTEzICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmdW5j
dGlvbiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oKSBpcyBwdXJlbHkgaW50ZXJu
YWwgdG8gV2ViQ29yZSwKKyAgICAgICAgaXQgaXMgYmV0dGVyIGRlZmluZWQgb24gSW50ZXJuYWxz
IHRoYW4gb24gVGVzdFJ1bm5lci4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMi0xMyAgSGFucyBNdWxsZXIgIDxobXVsbGVyQGFk
b2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEV4Y2x1c2lvbnNdIEV4Y2x1c2lvblBvbHlnb24gcmVm
bGV4IHZlcnRpY2VzIHNob3VsZCBjb25zdHJhaW4gdGhlIGZpcnN0IGZpdCBsb2NhdGlvbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCmluZGV4IGViNDE5NzEyNDAxYjA0NzA0MDY5MjQyYTUx
MTk5MjQ5ODFkZjc1MmQuLmUwNTY1MmI1MmM2MTg5MGE0YjQxNDE1OWQwNzk3NjE0YzRlN2U5Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAy
LTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1v
dmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJ
bnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwOgorICAgICAgICAqIFdl
YktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0Lmg6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnQpOgorCiAyMDEzLTAyLTEyICBKYWtvYiBQZXRzb3ZpdHMgIDxqcGV0c292aXRz
QHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFzc3VtZSBzZXRTY3JvbGxpbmdPclpv
b21pbmcoKSB0byBiZSBjYWxsZWQgb24gdGhlIFdlYktpdCB0aHJlYWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
aW5kZXggYmNiNDA2ZTI3ODkyZjk1NDg0OTg0NzE1ODAxMWM0MjFjN2NkNGFlMC4uZDkxOTI2NmE0
NzA5NDk5NjBmZDY3ZmVmYWU5NTg4ODAzNGRkN2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEzLTAyLTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIE1vdmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZy
b20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaDoKKwogMjAxMy0wMi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2Vu
QGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIHdpbmRvdy5vcGVuIHBhc3NlcyBoZWlnaHQgYW5k
IHdpZHRoIHBhcmFtZXRlcnMgZXZlbiBpZiBub3QgZGVmaW5lZCBpbiBhIHBhZ2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCAwZmZkMGJlY2FmYjk2Mzk3MDYwMmMxNzU3MTI1ZjY3MmM1NzEzMGNjLi43NTdj
ZDhmMWQwNTU1YWY5M2MwZTM5M2E2MWI3YzhiM2U1NDc0NDk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8gZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrKToKKwogMjAxMy0w
Mi0xMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIHdpbmRvdy5vcGVuIHBhc3NlcyBoZWlnaHQgYW5kIHdpZHRoIHBhcmFtZXRl
cnMgZXZlbiBpZiBub3QgZGVmaW5lZCBpbiBhIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA1OTlj
ZGI2ZTgzY2JiM2U5NjQ3MmU4MGZiMzEzMTdmNjViZGFlMDgxLi45ZmQ5NTU1YjVkZTE4ODhmZWUx
YWFhZGUxMWJiZmQyM2Y3ZjhjZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJvbSBUZXN0UnVu
bmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3
UHJpdmF0ZS5oOgorCiAyMDEzLTAyLTEyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gRW5hYmxlIFBBR0VfVklTSUJJTElUWV9BUEkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cKaW5kZXggOTBlODRlYmVlOGE4OTUwZjkzYTkwOTgwYWEwNmU3Mjg5NTVhN2E0Ny4uYTNk
ZGExOGYwMzBmOGE4YjA4Y2E1ZDkwMTYwODQwYTZkODllNjQ5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMy0wMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5m
byBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5oOgorCiAyMDEzLTAyLTEzICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5z
ZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gd2luZG93Lm9wZW4gcGFzc2VzIGhlaWdodCBh
bmQgd2lkdGggcGFyYW1ldGVycyBldmVuIGlmIG5vdCBkZWZpbmVkIGluIGEgcGFnZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CmluZGV4IGI4NzUxNTMwOTkwMzgyYzBlZjE0ZWUzODMzNzViNjVkMzdlZWUwM2EuLjBiYjAzZjk1
Zjk1OTc4ZjU4ODA3MDU5YzdjNGJjYTBkN2UwYTE0YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMy0wMi0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4K
KworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyBmcm9tIFRl
c3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVG
cmFtZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUZyYW1lUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAg
IChXZWJGcmFtZSk6CisKIDIwMTMtMDItMTMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBDb25zb2xpZGF0ZSBtYWluIGZ1bmN0aW9ucyBpbiBXZWJLaXQyIG5vdyB0aGF0
IHRoZXkgYXJlIGFsbCBpZGVudGljYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCA3NzFmMGNjZjQyMGE5YzQ5YWFiOWMzZjJkYzViMGY0YWJhMTcwMDJhLi5lOGU0OTEwYTY3
ZGNiNGRmZmI4YWMyZTE3M2QyZTEyYjAzODU1ZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjUzLDYgKzY1NCwxNyBAQCBzaXplX3QgSW50ZXJuYWxzOjpudW1iZXJPZlNjb3BlZEhU
TUxTdHlsZUNoaWxkcmVuKGNvbnN0IE5vZGUqIHNjb3BlLCBFeGNlcHRpb25DbwogICAgIHJldHVy
biAwOwogfQogCitQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gSW50ZXJu
YWxzOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oTm9kZSogbm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBib29sIGFs
bG93VmlzaXRlZFN0eWxlID0gdHJ1ZTsKKyAgICByZXR1cm4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpjcmVhdGUobm9kZSwgYWxsb3dWaXNpdGVkU3R5bGUpOworfQorCiBJbnRlcm5hbHM6
OlNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6ZW5zdXJlU2hh
ZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWhv
c3QpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGU3MGFjNmM4MTNiYzk5ZTQw
YWZhZmNhZmFkZjViYTk1YjBhZmI0MmYuLjJmYTBjY2Y2YmFlMDFlNzMyM2UxMjhhM2U3MGRkNzJl
N2MyNGU4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjcsNiArMjcsNyBA
QAogI2lmbmRlZiBJbnRlcm5hbHNfaAogI2RlZmluZSBJbnRlcm5hbHNfaAogCisjaW5jbHVkZSAi
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0
aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNp
bmNsdWRlICJOb2RlTGlzdC5oIgpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c0xvYWRpbmdGcm9tTWVtb3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90
IG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4g
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKE5vZGUqLCBFeGNlcHRpb25Db2RlJikg
Y29uc3Q7CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICB0eXBlZGVmIFNoYWRvd1Jvb3Qg
U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAppbmRleCBiZjYzNDc5ZDRjZjc0M2NhNDRhN2I4OWVjMzBmYmUyOWI1ZDE1YmFh
Li5jYTExN2IwYWQyNDJjODdlMGJhNDdhNDFmNDdmMWUxOWU5NTEwOTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0zNCw2ICszNCw3IEBACiAgICAgYm9vbGVhbiBpc0xv
YWRpbmdGcm9tTWVtb3J5Q2FjaGUoaW4gRE9NU3RyaW5nIHVybCk7CiAKICAgICB1bnNpZ25lZCBs
b25nIG51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oaW4gTm9kZSBzY29wZSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiBjb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAog
I2lmIGRlZmluZWQoRU5BQkxFX1NIQURPV19ET00pICYmIEVOQUJMRV9TSEFET1dfRE9NCiAgICAg
U2hhZG93Um9vdCBlbnN1cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKaW5kZXggZWViNzVmZDA4
NGVmYjAxMzRlYWJhYzRkMzkzNDYxNmNhNjBiZTAzMy4uODFiOGNkNDI4OGUwNmM2OTMyZGM2ZWE5
YjE0ZDEwZGI3YzE0ZGZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0y
MCw3ICsyMCw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRy
ZWVTdXBwb3J0LmgiCiAKLSNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRlICJEZXZp
Y2VPcmllbnRhdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkRh
dGEuaCIKQEAgLTEyMiwyMSArMTIxLDYgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNj
YWxlUGFnZUJ5KFdlYlBhZ2UqIHdlYlBhZ2UsIGZsb2F0IHNjYWxlRmFjdG9yLCBmbG8KICAgICBj
b3JlUGFnZSh3ZWJQYWdlKS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2lu
dCh4LCB5KSk7CiB9CiAKLUpTVmFsdWVSZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpjb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVS
ZWYgdmFsdWUpCi17Ci0gICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBK
U0xvY2tIb2xkZXIgbG9jayhleGVjKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9K
UyhleGVjLCB2YWx1ZSk7Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNf
aW5mbykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAg
ICBKU0VsZW1lbnQqIGpzRWxlbWVudCA9IHN0YXRpY19jYXN0PEpTRWxlbWVudCo+KGFzT2JqZWN0
KGpzVmFsdWUpKTsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0g
ICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCB0cnVlKTsKLSAgICByZXR1cm4gdG9S
ZWYoZXhlYywgdG9KUyhleGVjLCBqc0VsZW1lbnQtPmdsb2JhbE9iamVjdCgpLCBzdHlsZS5nZXQo
KSkpOwotfQotCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIERldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jayogdG9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3JpZW50
YXRpb25DbGllbnQqIGNsaWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKaW5kZXgg
YmJjMDQ1NTFkNDhhM2ZiM2IxMDlkZjUwNWQzNzQwYzM3MzY2YjE5My4uYzk2YjkyZWJiNTYxNGQ2
YmUxYTZkYzU3NTZhMzY4YzJlMTAyYTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKKysrIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgK
QEAgLTU4LDcgKzU4LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2Nh
dGlvblBvc2l0aW9uKEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGRvdWJsZSBsYXRpdHVk
ZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRNb2NrRGV2aWNlT3JpZW50YXRpb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgYm9v
bCBjYW5Qcm92aWRlQWxwaGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91
YmxlIGJldGEsIGJvb2wgY2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHN0YXRp
YyB2b2lkIHNjYWxlUGFnZUJ5KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGZsb2F0LCBm
bG9hdCwgZmxvYXQpOwotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiBwcml2YXRlOgogICAg
IHN0YXRpYyBib29sIHNfbGlua3NJbmNsdWRlZEluVGFiQ2hhaW47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcAppbmRleCA4YmI0ODZkYWQ5YzM3OGZkNjNjZWJhNTVlNDAyZmE2MDMwMjM2MmQxLi41
NWI3Y2U0YTQ4Y2ZmZTBhMGI3NDllYWRkN2U4NGRmMTU5YzY2N2Q3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbC5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgPEFQSUNhc3QuaD4KICNp
bmNsdWRlIDxBbmltYXRpb25Db250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8Q1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmg+CiAjaW5jbHVkZSA8RG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxF
ZGl0b3JDbGllbnRFZmwuaD4KICNpbmNsdWRlIDxFaW5hLmg+CkBAIC01NzgsMjIgKzU3Nyw2IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVy
TWFnbmlmaWNhdGlvbihFdmFzX09iamVjCiAgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0VmFsaWRh
dGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24odmFsdWUpOwogfQogCi1KU1ZhbHVlUmVmIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZv
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIGlmICghdmFs
dWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAg
IEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0M6OkpTVmFsdWUg
anNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwotICAgIGlmICghanNWYWx1ZS5pbmhlcml0cygm
V2ViQ29yZTo6SlNFbGVtZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBXZWJDb3JlOjpKU0VsZW1lbnQqIGpzRWxlbWVudCA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OkpTRWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKLSAg
ICBXZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0gICAgUmVm
UHRyPFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBXZWJDb3Jl
OjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCB0cnVlKTsKLSAg
ICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhleGVjLCBqc0VsZW1lbnQtPmdsb2JhbE9iamVjdCgp
LCBzdHlsZS5nZXQoKSkpOwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0
QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZW5h
YmxlZCkKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggZTkyNTA1NzkyYmZhNWNlZTQ3MDQ3OWI4ZjNj
MGQyM2Y3MjRhYzQ4Ni4uMjEzMzI5NmIyZTBkZTZhZGExZTE5MWRhMjRiZTk1MzNmYWQ2MjViOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTExMSw3ICsxMTEsNiBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIFN0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmLCBKU1ZhbHVl
UmVmIG5vZGVPYmplY3QpOwogICAgIHN0YXRpYyB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb25FbmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQpOwogICAgIHN0
YXRpYyB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgdmFsdWUpOwotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAg
IHN0YXRpYyB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAKaW5kZXggNzM1YTBlNzRmYTFiZDI5N2NmYjNiODY4ODIyZGM1NTBiOTE4NGRi
My4uZmE5ZWQ0NzIxZWJmZjJkNWQ2Y2RjZGQ3ODViNTBlZTMwYjY0ODc0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0
ay5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgpAQCAtNzE3LDIyICs3MTYsNiBAQCBi
b29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkKFdlYktpdFdlYgogICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzVGV4dEZp
ZWxkKCkgJiYgIWlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgaW5wdXRFbGVtZW50
LT5zaG91bGRBdXRvY29tcGxldGUoKTsKIH0KIAotSlNWYWx1ZVJlZiBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBpZiAoIW5vZGVPYmplY3QpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgbm9kZU9iamVjdCk7Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0Vs
ZW1lbnQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKLQotICAgIEpTRWxlbWVudCoganNFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SlNFbGVtZW50
Kj4oYXNPYmplY3QoanNWYWx1ZSkpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBqc0VsZW1lbnQt
PmltcGwoKTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHRydWUpOwotICAg
IHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+Z2xvYmFsT2JqZWN0KCks
IHN0eWxlLmdldCgpKSk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkZWxp
dmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkoKQogewogICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRl
bGl2ZXJBbGxNdXRhdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggYTM0OWZhOGNj
ZWVkYTc1MmQ4NjIwZTdlNmZiMGFlZjFlM2RjMTdhZS4uYjBlY2Y1NWVmOWE0YmE5MWMwMGM4ZmMy
YmM3M2E2MmU2YjJiY2M2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTcyLDcgKzcyLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDbG9zZShX
ZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZChXZWJLaXRXZWJGcmFtZSosIEpTU3RyaW5nUmVmKTsKLSAgICBzdGF0
aWMgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmKTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcKICAgICBzdGF0aWMgdm9p
ZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBu
YW1lLCBjb25zdCBnY2hhciogdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDdhYzkwYjdlNjc1M2M0MWZiYTYxYTlkNjYwZDMyZjEzOTNhMjA4NTcuLmU2NGM4YmY1
NjhlZTNlZGNiYWQ0MDQ5ZWNiNDg5ZjAwODE4YzdjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTExNiw3ICsxMTYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9y
d2FyZExpc3RJbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yTWFjLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC02
Njg5LDI1ICs2Njg4LDYgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFj
ayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQotCi0tIChKU1Zh
bHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZilj
b250ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUKLXsKLSAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIGlm
ICghdmFsdWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
LSAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKLSAgICBpZiAoIWpzVmFs
dWUuaW5oZXJpdHMoJkpTRWxlbWVudDo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwotICAgIEpTRWxlbWVudCoganNFbGVtZW50ID0gc3RhdGlj
X2Nhc3Q8SlNFbGVtZW50Kj4oYXNPYmplY3QoanNWYWx1ZSkpOwotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBqc0VsZW1lbnQtPmltcGwoKTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1l
bnQsIHRydWUpOwotICAgIHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+
Z2xvYmFsT2JqZWN0KCksIHN0eWxlLmdldCgpKSk7Ci19Ci0KLUBlbmQKLQogQGltcGxlbWVudGF0
aW9uIFdlYlZpZXcgKFdlYlZpZXdGdWxsU2NyZWVuKQogCiAtIChOU1ZpZXcqKWZ1bGxTY3JlZW5Q
bGFjZWhvbGRlclZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUu
aAppbmRleCA2ODUzYjM0ODg1MzFmZGVjZTMxYWMzY2U3ZjE4ZWI5M2E3ZDBhMDFjLi5lNjE3ZTFi
ZTQyMDQzZjM3NDJkMTEzNTU5NjdjYTA5ZWIyNTg1ZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC03NDUsMTAgKzc0NSw2IEBAIENvdWxkIGJlIHdv
cnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodWludDY0X3QpX25vdGlmaWNhdGlvbklERm9yVGVz
dGluZzooSlNWYWx1ZVJlZilqc05vdGlmaWNhdGlvbjsKIEBlbmQKIAotQGludGVyZmFjZSBXZWJW
aWV3IChXZWJWaWV3UHJpdmF0ZVN0eWxlSW5mbykKLS0gKEpTVmFsdWVSZWYpX2NvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRWxlbWVudDoo
SlNWYWx1ZVJlZil2YWx1ZTsKLUBlbmQKLQogQGludGVyZmFjZSBOU09iamVjdCAoV2ViVmlld0Zy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZSkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRl
ciBkaWRGaXJzdExheW91dEluRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKaW5kZXggNWMzNjI1YWI2YTYxN2FmZTkyNWRjNWU1MWZkZDBiZjk5ODY5NzRkZS4u
YzQ2ZGU5MzdiZTgzNTBjNzlmZTA5YWE1MGI3NGZjNDQzZWQ1YTMxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgIkFQSUNhc3QuaCIKICNpbmNs
dWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudFF0LmgiCiAjaW5jbHVkZSAi
Q29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkNvbnRleHRNZW51LmgiCkBAIC0zOTIsMzggKzM5
MSw2IEBAIFFTdHJpbmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om1hcmtlclRleHRGb3JMaXN0
SXRlbShjb25zdCBRV2ViRWxlbWVudCYgbGlzdEl0CiAgICAgcmV0dXJuIFdlYkNvcmU6Om1hcmtl
clRleHRGb3JMaXN0SXRlbShsaXN0SXRlbS5tX2VsZW1lbnQpOwogfQogCi1zdGF0aWMgUVN0cmlu
ZyBjb252ZXJ0VG9Qcm9wZXJ0eU5hbWUoY29uc3QgUVN0cmluZyYgbmFtZSkKLXsKLSAgICBRU3Ry
aW5nTGlzdCBwYXJ0cyA9IG5hbWUuc3BsaXQoUUxhdGluMUNoYXIoJy0nKSk7Ci0gICAgUVN0cmlu
ZyBjYW1lbENhc2VOYW1lOwotICAgIGZvciAoaW50IGogPSAwOyBqIDwgcGFydHMuY291bnQoKTsg
KytqKSB7Ci0gICAgICAgIFFTdHJpbmcgcGFydCA9IHBhcnRzLmF0KGopOwotICAgICAgICBpZiAo
aikKLSAgICAgICAgICAgIGNhbWVsQ2FzZU5hbWUuYXBwZW5kKHBhcnQucmVwbGFjZSgwLCAxLCBw
YXJ0LmxlZnQoMSkudG9VcHBlcigpKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbWVs
Q2FzZU5hbWUuYXBwZW5kKHBhcnQpOwotICAgIH0KLSAgICByZXR1cm4gY2FtZWxDYXNlTmFtZTsK
LX0KLQotUVZhcmlhbnRNYXAgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmNvbXB1dGVkU3R5bGVJ
bmNsdWRpbmdWaXNpdGVkSW5mbyhjb25zdCBRV2ViRWxlbWVudCYgZWxlbWVudCkKLXsKLSAgICBR
VmFyaWFudE1hcCByZXM7Ci0KLSAgICBXZWJDb3JlOjpFbGVtZW50KiB3ZWJFbGVtZW50ID0gZWxl
bWVudC5tX2VsZW1lbnQ7Ci0gICAgaWYgKCF3ZWJFbGVtZW50KQotICAgICAgICByZXR1cm4gcmVz
OwotCi0gICAgUmVmUHRyPFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVh
dGUod2ViRWxlbWVudCwgdHJ1ZSk7Ci0gICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBz
dGF0aWNfY2FzdDxXZWJDb3JlOjpDU1NTdHlsZURlY2xhcmF0aW9uKj4oY29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmdldCgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3R5bGUtPmxl
bmd0aCgpOyBpKyspIHsKLSAgICAgICAgUVN0cmluZyBuYW1lID0gc3R5bGUtPml0ZW0oaSk7Ci0g
ICAgICAgIFFTdHJpbmcgdmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlWYWx1ZShuYW1lKTsKLSAg
ICAgICAgcmVzW2NvbnZlcnRUb1Byb3BlcnR5TmFtZShuYW1lKV0gPSBRVmFyaWFudCh2YWx1ZSk7
Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KIFFWYXJpYW50TGlzdCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdDo6c2VsZWN0ZWRSYW5nZShRV2ViUGFnZUFkYXB0ZXIgKmFkYXB0ZXIpCiB7CiAg
ICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gYWRhcHRlci0+cGFnZS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIGIvU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCmluZGV4IGVjN2IxN2Iw
MmFlNjRhNzg2YjMxZTUyNWQ1Y2ViYjdmYjk5MGNkMTAuLmRkMDQ0MDE5OTU4ZThiZTIzMjQzZWU1
ZDNjYzdiZTc0Y2JlYWY1MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKQEAgLTE0MCw3ICsxNDAsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0cyhRV2ViUGFnZUFkYXB0ZXIqKTsKIAogICAgIHN0YXRpYyBRU3RyaW5nIG1h
cmtlclRleHRGb3JMaXN0SXRlbShjb25zdCBRV2ViRWxlbWVudCYgbGlzdEl0ZW0pOwotICAgIHN0
YXRpYyBRVmFyaWFudE1hcCBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3Qg
UVdlYkVsZW1lbnQmKTsKIAogICAgIHN0YXRpYyB2b2lkIGR1bXBGcmFtZUxvYWRlcihib29sKTsK
ICAgICBzdGF0aWMgdm9pZCBkdW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKGJvb2wpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKaW5kZXggMDZkZGMzYjVkOWIxZmVhZTAxZTg5MjMw
NDI5YTIxY2NjNWNhOTU4YS4uNTJiMDExY2MxMWE1ZDA2YmUxZjI5NGM3YjZhOWQ1MjE3NjIyZWM0
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZUZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCkBAIC0xMjIsMTEgKzEyMiw2IEBA
IFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
UmVmKQogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5uYW1lKCkpOwog
fQogCi1KU1ZhbHVlUmVmIFdLQnVuZGxlRnJhbWVHZXRDb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlz
aXRlZEluZm8oV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZiwgSlNPYmplY3RSZWYgZWxlbWVudCkK
LXsKLSAgICByZXR1cm4gdG9JbXBsKGZyYW1lUmVmKS0+Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zp
c2l0ZWRJbmZvKGVsZW1lbnQpOwotfQotCiBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUNv
dW50ZXJWYWx1ZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBKU09iamVjdFJlZiBlbGVtZW50
KQogewogICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZnJhbWVSZWYpLT5jb3VudGVyVmFs
dWUoZWxlbWVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oCmlu
ZGV4IDRlNWM1YzNiMGUwYmUwMWYyOTQxMzljMjFjNWJlZjg2OWMwNGZlZGEuLjljNjI5MDBhYjQy
MWRkOWYwZWY1NzRlMDNmNjgxM2E4MTNmYTVhNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWVQcml2YXRlLmgKQEAgLTQwLDcgKzQwLDYgQEAgZXh0ZXJuICJDIiB7CiBXS19FWFBP
UlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlJbm5lclRleHQoV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSk7CiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlDb3VudGVy
VmFsdWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgSlNPYmplY3RSZWYgZWxlbWVudCk7CiBXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlNYXJrZXJUZXh0KFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWUsIEpTT2JqZWN0UmVmIGVsZW1lbnQpOwotV0tfRVhQT1JUIEpTVmFsdWVSZWYg
V0tCdW5kbGVGcmFtZUdldENvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lLCBKU09iamVjdFJlZiBlbGVtZW50KTsKIFdLX0VYUE9SVCB1bnNpZ25l
ZCBXS0J1bmRsZUZyYW1lR2V0UGVuZGluZ1VubG9hZENvdW50KFdLQnVuZGxlRnJhbWVSZWYgZnJh
bWUpOwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNU
ZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVGcmFt
ZUNsZWFyT3BlbmVyKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggNGZlMzE3ZWY3NjIzYTg2YmZl
MzQzNjA1ZWRkMGQ5NjZlYmRjMDBkNy4uNTZlNTJjNzM3Y2JlYWYzNjZjZWJhODRiYWEyMzAxZWJk
MDY4ZTg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2Nr
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvQXJjaGl2ZVJlc291cmNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBA
IC02MjEsMjMgKzYyMCw2IEBAIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmpzV3JhcHBlckZvcldvcmxk
KEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUqIHJhbmdlSGFuZGxlLCBJCiAgICAgcmV0dXJuIHRv
UmVmKGV4ZWMsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCByYW5nZUhhbmRsZS0+Y29yZVJhbmdl
KCkpKTsKIH0KIAotSlNWYWx1ZVJlZiBXZWJGcmFtZTo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zp
c2l0ZWRJbmZvKEpTT2JqZWN0UmVmIGVsZW1lbnQpCi17Ci0gICAgaWYgKCFtX2NvcmVGcmFtZSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gbV9j
b3JlRnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
OwotICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotCi0g
ICAgaWYgKCF0b0pTKGVsZW1lbnQpLT5pbmhlcml0cygmSlNFbGVtZW50OjpzX2luZm8pKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQodG9SZWYoZXhlYykpOwotCi0gICAgUmVm
UHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmNyZWF0ZShzdGF0aWNfY2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQp
KS0+aW1wbCgpLCB0cnVlKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIHJl
dHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUuZ2V0KCkpKTsK
LX0KLQogU3RyaW5nIFdlYkZyYW1lOjpjb3VudGVyVmFsdWUoSlNPYmplY3RSZWYgZWxlbWVudCkK
IHsKICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNfaW5mbykp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDMz
MDUzMDczZDEwMWM3MzA3ZWNkODIzOTAwNzVkZGMyMzExZjAzMWUuLmU5ODU0MGZlNWFiNmIwYmQ1
YzFmN2IyNjMxZjExNDI1YzA5OWNiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5oCkBAIC05Miw3ICs5Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGlz
RnJhbWVTZXQoKSBjb25zdDsKICAgICBXZWJGcmFtZSogcGFyZW50RnJhbWUoKSBjb25zdDsKICAg
ICBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjaGlsZEZyYW1lcygpOwotICAgIEpTVmFsdWVS
ZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTT2JqZWN0UmVmIGVsZW1lbnQp
OwogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQoKTsKICAgICBKU0dsb2JhbENvbnRl
eHRSZWYganNDb250ZXh0Rm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOwogICAg
IFdlYkNvcmU6OkludFJlY3QgY29udGVudEJvdW5kcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5m
aWx0ZXIKaW5kZXggN2M3ZTE3OTNiNjhlZDEwNTU4YzEzZTBlMGFjNTBmNTY5OGQ3ZTAyNC4uZWIz
OGI3NmMwNWJiNjlmYTgzM2ZjOTdhMGNjMmQ4YjBkYmM2MjMxNCAxMDA2NDQKLS0tIGEvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyCkBAIC0zNyw2ICszNyw3IEBAIF9aTjdXZWJDb3JlNFBhZ2UxNnNldENhblN0YXJ0TWVk
aWFFYjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2Jh
bE9iamVjdEVQTlNfMTBDbGllbnRSZWN0RTsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNT
dGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFkb3dSb290RTsKIF9aTjdXZWJD
b3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTRD
bGllbnRSZWN0TGlzdEU7CitfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3
SlNET01HbG9iYWxPYmplY3RFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkU7CiBfWk43V2ViQ29y
ZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzVSYW5n
ZUU7CiBfWk43V2ViQ29yZTVSYW5nZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOERvY3Vt
ZW50RUVFTlMyX0lOU180Tm9kZUVFRWlTNl9pOwogX1pON1dlYkNvcmU1UmFuZ2VEMUV2OwpAQCAt
MTA1LDYgKzEwNiw3IEBAIF9aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxMG1h
cmtlcnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIxCiBfWk43V2ViQ29yZTI0RG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyMThhZGRUZXh0TWF0Y2hNYXJrZXJFUEtOU181UmFuZ2VFYjsK
IF9aTjdXZWJDb3JlMjVjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzRU5TXzE3Vmlld3BvcnRBcmd1
bWVudHNFaWlpZk5TXzdJbnRTaXplRTsKIF9aTjdXZWJDb3JlMjVqc1N0cmluZ1dpdGhDYWNoZVNs
b3dDYXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0ltcGxF
TlMwXzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfN1B0ckhhc2hJUzZfRUVOUzNfMTBIYXNoVHJh
aXRzSVM2X0VFTlNDX0lTOV9FRUVFUzZfOworX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJLTlMxXzZTdHJpbmdF
OwogX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxMm1vdmVXaW5kb3dC
eUVmZjsKIF9aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTJvcGVuSW5O
ZXdUYWJFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwxNGZyb250ZW5kTG9hZGVkRXY7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTAxZWIxZmIyZDU5NDdhNjQ1YjNmZGE4OGRiZDg2ZjY0
YzM4NTgxMC4uZTc4ZmUxYjdhYmE4NzRiYmUyOTIwMzI3ZGNjZDY4YjY5YWY1YjAxYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEzLTAyLTEzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgor
CisgICAgICAgIE1vdmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVz
dFJ1bm5lciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChU
ZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW06CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0
LmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaDoKKyAgICAg
ICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVy
V2luLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1
bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0
UnVubmVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rl
c3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorCiAyMDEzLTAyLTEzICBBbGFuIEN1
dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGNyLWxpbnV4IGRlYnVn
IHNob3VsZCB1c2UgY2xhbmcgYW5kIG1heWJlIGJlIGEgY29tcG9uZW50cyBidWlsZApkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRleCA4NTg0NzQwYzY3MjkxZTA1MmMzNmJlZjZmNTRl
NTQzNjgzNTYwMGEyLi41ZTQ3MTI1MGQyNzdjY2RmYzQ0NGRmODZkYTQ5NzEwN2UzODE2M2FhIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcApAQCAtNjgwLDE2ICs2ODAsNiBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBrZWVwV2ViSGlzdG9yeUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdAogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChh
cmd1bWVudENvdW50ICE9IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KTsKLSAgICAKLSAgICAvLyBIYXMgbWFjIGltcGxlbWVudGF0aW9uCi0gICAgVGVzdFJ1
bm5lciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOwotICAgIHJldHVybiBjb250cm9sbGVyLT5jb21wdXRlZFN0eWxl
SW5jbHVkaW5nVmlzaXRlZEluZm8oY29udGV4dCwgYXJndW1lbnRzWzBdKTsKLX0KLQogc3RhdGlj
IEpTVmFsdWVSZWYgbm90aWZ5RG9uZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtMjA4OSw3
ICsyMDc5LDYgQEAgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25z
KCkKICAgICAgICAgeyAiY2xlYXJCYWNrRm9yd2FyZExpc3QiLCBjbGVhckJhY2tGb3J3YXJkTGlz
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNo
ZWV0IiwgY2xlYXJQZXJzaXN0ZW50VXNlclN0eWxlU2hlZXRDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJjbG9zZVdlYkluc3BlY3RvciIsIGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKLSAgICAgICAgeyAiY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIiwgY29t
cHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAiZGVjb2RlSG9zdE5hbWUiLCBkZWNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgImRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGEiLCBkaXNhbGxv
d0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNoZVF1b3RhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0
cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAg
ICAgeyAiZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzIiwgZGlzcGF0Y2hQZW5kaW5nTG9hZFJl
cXVlc3RzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCA3
OTIwZWM2NDQzNjc5M2FjZDYyMmEyYWY1OTQzZTVkNGUzZDllYWU4Li41MDQ3Y2RhNTlmNGFmYjU5
ZjI1NTQzZDcxMjhkY2Y0ZjBlNDMyNjY1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBA
IC02Niw3ICs2Niw2IEBAIHB1YmxpYzoKICAgICBsb25nIGxvbmcgYXBwbGljYXRpb25DYWNoZURp
c2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1JlZiBuYW1lKTsKICAgICBib29sIGlzQ29tbWFuZEVu
YWJsZWQoSlNTdHJpbmdSZWYgbmFtZSk7CiAgICAgdm9pZCBrZWVwV2ViSGlzdG9yeSgpOwotICAg
IEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJl
ZiwgSlNWYWx1ZVJlZik7CiAgICAgdm9pZCBub3RpZnlEb25lKCk7CiAgICAgaW50IG51bWJlck9m
UGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzKCk7CiAgICAgdm9pZCBvdmVycmlk
ZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ibGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVy
cnkuY3BwCmluZGV4IDRhZDM2ZTY2MjdkNzMxYzFiOGVlMTI3NTJjNDJhMjNmNDkwMjhmMTIuLjFh
Yzk0ZmQ2YzBhNDk4NTY3NzQ5ZDFiOWI4YzUxNTE5MjM4ZDExZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3Bw
CkBAIC01MDUsMTEgKzUwNSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFj
Y2Vzc0NsaXBib2FyZChib29sIGZsYWcpCiAgICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVu
ZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCktPnBhZ2UoKS0+c2V0SmF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZChmbGFnKTsKIH0KIAotSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
dmFsdWUpCi17Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6Y29tcHV0ZWRTdHls
ZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGNvbnRleHQsIHZhbHVlKTsKLX0KLQogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6OmxheWVyVHJlZUFzVGV4dCgpIGNvbnN0CiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9U
ZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZs
LmNwcAppbmRleCA0NTY0NjEwOWNjZmU2ZDhiOGE3NzBiZWFjMTY0NjE3MDVmM2I2ODBiLi40NjU5
NDAyZmY3OWE5OTdiZWQ1YjE5MmFmZDBjMzQ5MWQzMDM0MGE3IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCkBAIC0xMTIsMTEgKzExMiw2IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6
c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3ModHJ1ZSk7CiB9CiAKLUpTVmFsdWVSZWYgVGVzdFJ1
bm5lcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRFZmw6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhjb250ZXh0LCB2YWx1ZSk7
Ci19Ci0KIHNpemVfdCBUZXN0UnVubmVyOjp3ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsKICAgICBj
b25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSA9IGV3a192aWV3X2hpc3RvcnlfZ2V0KGJyb3dzZXIt
Pm1haW5WaWV3KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RS
dW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3Bw
CmluZGV4IDRjOGU3YjQwOWQwODZlNDFkYTZkODdmOTMwMTYxNDcxMjkzOWFiZTkuLjlhZTkwNTZh
NWI5ZGM5ZDkzNDI3YzBiNzMzNWZmNmRjNmJhOWJlZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAgLTEwOCwxMSArMTA4LDYgQEAgdm9pZCBUZXN0UnVu
bmVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQogCi1KU1Zh
bHVlUmVmIFRlc3RSdW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29u
dGV4dCwgdmFsdWUpOwotfQotCiBzaXplX3QgVGVzdFJ1bm5lcjo6d2ViSGlzdG9yeUl0ZW1Db3Vu
dCgpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVy
TWFjLm1tCmluZGV4IGZjM2FmYTY3NjUyMGFiZDRhZjRiYjVjNWZjMmM1ZDk1NDM1NGRmZTAuLjM0
YzdlYWEyMGQyNTRmNmMxZThlMWVmMWQ5ZTliZDUwZTU4ZTI0OTkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCkBAIC0yNzMsMTEgKzI3Myw2IEBAIHZvaWQgVGVz
dFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIH0KIH0KIAotSlNWYWx1ZVJlZiBUZXN0UnVu
bmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17ICAgCi0gICAgcmV0dXJuIFtbbWFpbkZyYW1lIHdlYlZp
ZXddIF9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86Y29udGV4dCBmb3JFbGVtZW50
OnZhbHVlXTsKLX0KLQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Om1hcmtl
clRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2Jq
ZWN0KSBjb25zdAogewogICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9N
RWxlbWVudEZyb21KU0NvbnRleHQ6Y29udGV4dCB2YWx1ZTpub2RlT2JqZWN0XTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwCmluZGV4IDc1MjljMmI1Mzg1Yjc1MGQzNDIx
ZjQ5ZWNkMmRmZGNlOGYyMjEyNmQuLmU3ZjU2NTYyNWU5MDZjYjlmN2ExM2MyMGJkM2FhMzVmNjky
YjMwZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNwcApAQCAtNzU1
LDExICs3NTUsNiBAQCBRU3RyaW5nIFRlc3RSdW5uZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShj
b25zdCBRV2ViRWxlbWVudCYgbGlzdEl0ZW0pCiAgICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0OjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0obGlzdEl0ZW0pOwogfQogCi1RVmFyaWFudE1h
cCBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3QgUVdl
YkVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZWxlbWVudCk7Ci19Ci0K
IGJvb2wgVGVzdFJ1bm5lcjo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElk
KGNvbnN0IFFTdHJpbmcmIGVsZW1lbnRJZCkKIHsKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQ6OmVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChtX2RydC0+
bWFpbkZyYW1lQWRhcHRlcigpLCBlbGVtZW50SWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0
UnVubmVyUXQuaAppbmRleCBlNmY4M2UxYTY1NTU5NmM1M2MyOTE0OWU0MGE0OGNkNjhlNGM2NzZk
Li41MmM4ZWI5YzVlOWRhNGZjZDlhZDBhYWQxMmYyNzkyZjE2NzhlMWU3IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaApAQCAtMjQ5LDcgKzI0OSw2IEBAIHB1YmxpYyBRX1NM
T1RTOgogICAgIHZvaWQgc2V0U2Nyb2xsYmFyUG9saWN5KGNvbnN0IFFTdHJpbmcmIG9yaWVudGF0
aW9uLCBjb25zdCBRU3RyaW5nJiBwb2xpY3kpOwogCiAgICAgUVN0cmluZyBtYXJrZXJUZXh0Rm9y
TGlzdEl0ZW0oY29uc3QgUVdlYkVsZW1lbnQmIGxpc3RJdGVtKTsKLSAgICBRVmFyaWFudE1hcCBj
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3QgUVdlYkVsZW1lbnQmKSBjb25z
dDsKIAogICAgIC8vIFNpbXVsYXRlIGEgcmVxdWVzdCBhbiBlbWJlZGRpbmcgYXBwbGljYXRpb24g
Y291bGQgbWFrZSwgcG9wdWxhdGluZyBwZXItc2Vzc2lvbiBjcmVkZW50aWFsIHN0b3JhZ2UuCiAg
ICAgdm9pZCBhdXRoZW50aWNhdGVTZXNzaW9uKGNvbnN0IFFTdHJpbmcmIHVybCwgY29uc3QgUVN0
cmluZyYgdXNlcm5hbWUsIGNvbnN0IFFTdHJpbmcmIHBhc3N3b3JkKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAppbmRleCA4YzI3YTUyYzdlYjQxODc1NTIyYjhi
ZjMzMWEyNzExMDMxYWUyOTQxLi5iZWYzMTQyNjYzM2VmZGZmMDE0ZGM1OTFlZDlmMWVjYjhjMjAy
ZDI1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0x
NjAsMTIgKzE2MCw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIGhp
c3RvcnktPnNldE9wdGlvbmFsU2hhcmVkSGlzdG9yeShzaGFyZWRIaXN0b3J5LmdldCgpKTsKIH0K
IAotSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgLy8gRklY
TUU6IEltcGxlbWVudCB0aGlzLgotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKLX0KLQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Om1hcmtlclRl
eHRGb3JMaXN0SXRlbShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0
KSBjb25zdAogewogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS93eC9UZXN0UnVubmVyV3guY3BwCmluZGV4IGY4Zjk4NTU0NmU3ZmYzOTNkM2I0MjRmNjk1
Yjg0NTQwMWM4MThlMTcuLjFiZWE0YTI3YzBhMDIwZDQyYmJjZWQyNjc1ZGZmZDZhYTVjYmJmNWIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5lcld4LmNwcApAQCAtNDY4LDExICs0
NjgsNiBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6bWFya2VyVGV4dEZv
ckxpc3RJdGVtKEpTQ29udGV4dFJlZiBjb250ZXh0LAogICAgIHJldHVybiAwOwogfQogCi1KU1Zh
bHVlUmVmIFRlc3RSdW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0Nv
bnRleHRSZWYsIEpTVmFsdWVSZWYpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHZvaWQgVGVzdFJ1
bm5lcjo6YXV0aGVudGljYXRlU2Vzc2lvbihKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYsIEpTU3Ry
aW5nUmVmKQogewogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggMjQyZjVhYmU2Y2M3
Y2QzOWVhMjljMzU5ZmMwNjYwY2ZiODk1MzRiYi4uN2Q5MTFhNDhlNWQxYjY5MmJhYzMzYWRjMTll
MGU5ZDBmY2VkMjkwOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC03NCw3ICs3NCw2
IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKIAogICAgIC8vIFNwZWNpYWwgRE9NIGZ1bmN0aW9u
cy4KICAgICB2b2lkIGNsZWFyQmFja0ZvcndhcmRMaXN0KCk7Ci0gICAgb2JqZWN0IGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhpbiBvYmplY3QgZWxlbWVudCk7CiAgICAgdm9pZCBl
eGVjQ29tbWFuZChpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIGFyZ3VtZW50KTsKICAg
ICBib29sZWFuIGlzQ29tbWFuZEVuYWJsZWQoaW4gRE9NU3RyaW5nIG5hbWUpOwogICAgIERPTVN0
cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oaW4gb2JqZWN0IGVsZW1lbnQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5k
ZXggYWUxODE3NmJiMWEyNjIyYmY1ODM2YjdmM2Y3OGFkODdlZWExZmM5NS4uMTQ5ZTJjN2U4YjU1
MGJlYmUxMDM0ZTEyMzg3MzZkNzhjMzNkMjc3YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xOTAsMTkgKzE5MCw2
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIFdLQnVuZGxlU2V0U2hv
dWxkVHJhY2tWaXNpdGVkTGlua3MoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCB0
cnVlKTsKIH0KIAotSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm8oSlNWYWx1ZVJlZiBlbGVtZW50KQotewotICAgIC8vIEZJWE1FOiBJcyBpdCBP
SyB0aGlzIHdvcmtzIG9ubHkgZm9yIHRoZSBtYWluIGZyYW1lPwotICAgIFdLQnVuZGxlRnJhbWVS
ZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7Ci0gICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1
bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKLSAgICBpZiAoIUpTVmFs
dWVJc09iamVjdChjb250ZXh0LCBlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOwotICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBXS0J1bmRsZUZyYW1l
R2V0Q29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKG1haW5GcmFtZSwgY29uc3RfY2Fz
dDxKU09iamVjdFJlZj4oZWxlbWVudCkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0K
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBUZXN0UnVubmVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0
ZW0oSlNWYWx1ZVJlZiBlbGVtZW50KQogewogICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1l
ID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdl
KCktPnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvVGVzdFJ1bm5lci5oCmluZGV4IGNkYTYxYWE0YzE3MjMwNDBhOGVmMDkxOTFhZTZjMWNlOGRi
YjcwYjUuLjUyM2E5Yjc2YWJlYmE5ZmYyMTRmODM1NmFmYmZiNDBlMDk4OTQzNTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBA
IC0xMTcsNyArMTE3LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChpbnQpOwog
CiAgICAgLy8gU3BlY2lhbCBET00gZnVuY3Rpb25zLgotICAgIEpTVmFsdWVSZWYgY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTVmFsdWVSZWYgZWxlbWVudCk7CiAgICAgdm9pZCBj
bGVhckJhY2tGb3J3YXJkTGlzdCgpOwogICAgIHZvaWQgZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYg
bmFtZSwgSlNTdHJpbmdSZWYgYXJndW1lbnQpOwogICAgIGJvb2wgaXNDb21tYW5kRW5hYmxlZChK
U1N0cmluZ1JlZiBuYW1lKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5MjQwYTM3YTAwYzYyNTQ2YTUxZWE2NGQ3OGNmY2Fk
MGVkZWY4OTA5Li43YzA1YzZkOGE1M2UxN2U5NmEwNTc0MjFlN2ZkZWY0ZjA5N2FlZGVmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTMtMDItMTMgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRl
ZEluZm8gZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSB0ZXN0cy4KKworICAgICAgICAq
IGZhc3QvaGlzdG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRtbDoKKyAgICAgICAgKiBm
YXN0L2hpc3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVzdC5odG1sOgorICAgICAgICAqIGZhc3QvaGlz
dG9yeS9zZWxmLWlzLXZpc2l0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2libGlu
Zy12aXNpdGVkLXRlc3QuaHRtbDoKKyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMv
c3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRlZC5odG1sOgorCiAyMDEzLTAyLTEzICBIYW5zIE11
bGxlciAgPGhtdWxsZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgRXhjbHVzaW9uc10gRXhj
bHVzaW9uUG9seWdvbiByZWZsZXggdmVydGljZXMgc2hvdWxkIGNvbnN0cmFpbiB0aGUgZmlyc3Qg
Zml0IGxvY2F0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L211bHRp
cGxlLWNsYXNzZXMtdmlzaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L211bHRp
cGxlLWNsYXNzZXMtdmlzaXRlZC5odG1sCmluZGV4IDk2NTA4NjFhNjk3NmMyOTA3Y2Y3ZmY0OThl
NTMzMGI4NzM4NTA5NjYuLjBmMDgzMWU5MjdmOGQxYTg5YjRkNmY4Y2I0YjM2ODg5MDUxOTc1Yzcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZp
c2l0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbXVsdGlwbGUtY2xhc3Nl
cy12aXNpdGVkLmh0bWwKQEAgLTgsOSArOCw5IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewog
CiBmdW5jdGlvbiBjb21wYXJlU3R5bGVzKCkKIHsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKLSAgICAgICAgdmFyIGZpcnN0U3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsK
LSAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRTdHls
ZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKSk7Cisg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgdmFyIGZpcnN0U3R5bGUgPSBpbnRl
cm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdvbmUnKSk7CisgICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IGludGVybmFscy5jb21w
dXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3
bycpKTsKICAgICAgICAgaWYgKGZpcnN0U3R5bGUuY29sb3IgIT0gc2Vjb25kU3R5bGUuY29sb3Ip
IHsKICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhU
TUwgPSAnRkFJTCc7CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRlc3QuaHRtbAppbmRleCAzZjMwNTE4YmJkYmQzOTNj
YWExMDM3N2JkZDFjZWY0ZmQ2MjVmMDEwLi40MjlkODM4ZTI2MGE1ZDVjNjVmNThhNDdmMGE5YmYw
NmRiNzM3MTc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZp
c2l0ZWQtdGVzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9uZXN0ZWQtdmlz
aXRlZC10ZXN0Lmh0bWwKQEAgLTE0LDkgKzE0LDkgQEAgZnVuY3Rpb24gY29tcGFyZVN0eWxlcygp
CiAgICAgYW5jaG9yLmlubmVySFRNTCA9ICJPbmUiOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdlbmNsb3N1cmUnKS5hcHBlbmRDaGlsZChhbmNob3IpOwogCi0gICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7Ci0gICAgICAgIHZhciBmaXJzdFN0eWxlID0gd2luZG93LnRlc3RSdW5uZXIu
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdvbmUnKSk7Ci0gICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVyLmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dHdvJykpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHZhciBmaXJzdFN0
eWxlID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnb25lJykpOworICAgICAgICB2YXIgc2Vjb25kU3R5bGUgPSBpbnRl
cm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0d28nKSk7CiAgICAgICAgIGlmIChmaXJzdFN0eWxlLmNvbG9yID09IHNlY29uZFN0
eWxlLmNvbG9yKSB7CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
JykuaW5uZXJIVE1MID0gJ0ZBSUwnOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sCmluZGV4IGI2OGQ1YmRiMDZkYzFm
NDRmNjhhYzk4YTdjOWE3ZGMzN2I1MjM5ZjAuLjg3ZDA2ZDAyOGUyNDJmMGJjNDY0YjhiNjAwZjA2
MmQyMDkyZWNjN2UgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zZWxmLWlz
LXZpc2l0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2VsZi1pcy12aXNp
dGVkLmh0bWwKQEAgLTgsOSArOCw5IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogCiBmdW5j
dGlvbiBjb21wYXJlU3R5bGVzKCkKIHsKLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAg
ICAgICAgdmFyIGZpcnN0U3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKLSAgICAg
ICAgdmFyIHNlY29uZFN0eWxlID0gd2luZG93LnRlc3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1
ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKSk7CisgICAgaWYg
KHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgdmFyIGZpcnN0U3R5bGUgPSBpbnRlcm5hbHMu
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdvbmUnKSk7CisgICAgICAgIHZhciBzZWNvbmRTdHlsZSA9IGludGVybmFscy5jb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpKTsK
ICAgICAgICAgaWYgKGZpcnN0U3R5bGUuY29sb3IgPT0gc2Vjb25kU3R5bGUuY29sb3IgfHwgZmly
c3RTdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPT0gc2Vjb25kU3R5bGUuYmFja2dyb3VuZENvbG9yKSB7
CiAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1M
ID0gJ0ZBSUwnOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9oaXN0b3J5L3NpYmxpbmctdmlzaXRlZC10ZXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QuaHRtbAppbmRleCAxZjUyY2I2MmI3NGE2YjZj
OGExODQ4OGMwN2FjZDdmYTZlOGMxMmIxLi41N2VhN2Y2Y2RiMDEzZmY1ODRmZDViMDYxNjdmNjAx
Yzg5MDk5NTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12
aXNpdGVkLXRlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12
aXNpdGVkLXRlc3QuaHRtbApAQCAtOCw5ICs4LDkgQEAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAKIGZ1bmN0aW9uIGNvbXBhcmVTdHlsZXMoKQogewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewotICAgICAgICB2YXIgZmlyc3RTdHlsZSA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJykp
OwotICAgICAgICB2YXIgc2Vjb25kU3R5bGUgPSB3aW5kb3cudGVzdFJ1bm5lci5jb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3R3bycpKTsK
KyAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB2YXIgZmlyc3RTdHlsZSA9IGlu
dGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ29uZScpKTsKKyAgICAgICAgdmFyIHNlY29uZFN0eWxlID0gaW50ZXJuYWxzLmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dHdvJykpOwogICAgICAgICBpZiAoZmlyc3RTdHlsZS5jb2xvciA9PSBzZWNvbmRTdHlsZS5jb2xv
cikgewogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVy
SFRNTCA9ICdGQUlMJzsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNl
dHMtbGlua3MtdmlzaXRlZC5odG1sCmluZGV4IGE4MDBjMGE1Yjg1MGM4N2E1ZjkzMTAxMTg1Y2Mz
N2JlZDg3NmIyNjEuLjg0OWU4OTcyNjhkMzYzYTZhYTJiM2U0NjdlM2NhMmU1OTM3MDc4MDMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwt
c2V0cy1saW5rcy12aXNpdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3Rh
dGVvYmplY3RzL3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbApAQCAtMTAsOSArMTAs
OSBAQCBmdW5jdGlvbiBsb2FkZWQoKQogICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShu
dWxsLCAiVGl0bGUiLCAicmVwbGFjZWRVUkwuaHRtbCIpOwogICAgIHdpbmRvdy5oaXN0b3J5LnB1
c2hTdGF0ZShudWxsLCAiVGl0bGUiLCAicHVzaGVkVVJMLmh0bWwiKTsKIAotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewotICAgICAgICB2YXIgc3R5bGUxID0gd2luZG93LnRlc3RSdW5uZXIu
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdsaW5rMScpKTsKLSAgICAgICAgdmFyIHN0eWxlMiA9IHdpbmRvdy50ZXN0UnVubmVyLmNvbXB1
dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGlu
azInKSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgdmFyIHN0eWxlMSA9
IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xpbmsxJykpOworICAgICAgICB2YXIgc3R5bGUyID0gaW50ZXJuYWxzLmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
bGluazInKSk7CiAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJw
Iik7CiAgICAgICAgIGlmIChzdHlsZTEuY29sb3IgIT0gInJnYigyNTUsIDE2NSwgMCkiIHx8IHN0
eWxlMi5jb2xvciAhPSAicmdiKDI1NSwgMTY1LCAwKSIpCiAgICAgICAgICAgICByZXN1bHQuaW5u
ZXJUZXh0ID0gIkZBSUwiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNp
dGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0
L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRlZC1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZTdhNDc2ZTcxN2E3MmUwNWZm
MzdjMTU5ZWY1ZDJhMWUxNTVlNTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvbG9hZGVy
L3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVkLWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE0OiBV
bmNhdWdodCBUeXBlRXJyb3I6IE9iamVjdCBbb2JqZWN0IE9iamVjdF0gaGFzIG5vIG1ldGhvZCAn
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvJwotVGhpcyBsaW5rIHNob3VsZCBnZXQg
Y29sb3JlZCB2aXNpdGVkIGFzIGEgcmVzdWx0IG9mIHJlcGxhY2VTdGF0ZSgpIHNldHRpbmcgaXQg
YXMgdGhlIGN1cnJlbnQgVVJMCi1UaGlzIGxpbmsgc2hvdWxkIGdldCBjb2xvcmVkIHZpc2l0ZWQg
YXMgYSByZXN1bHQgb2YgcHVzaFN0YXRlKCkgYWRkaW5nIGl0IHRvIHRoZSBmb3J3YXJkIGxpc3QK
LUlmIHlvdSdyZSBydW5uaW5nIGluIGEgYnJvd3NlciwgdGhlIGxpbmsgc2hvdWxkIGJlIG9yYW5n
ZS1vbi1ibGFjayBhbmQgeW91IHNob3VsZCBzZWUgInJlcGxhY2VkVVJMLmh0bWwiIGluIHlvdXIg
Z2xvYmFsIGhpc3RvcnkuCi1JZiB5b3UncmUgcnVubmluZyBpbiBEUlQsIHRoZSB0ZXN0IHdpbGwg
YWxzbyBhcHBlbmQgIlBBU1MiIG9yICJGQUlMIi4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5r
cy12aXNpdGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9mYXN0L2xv
YWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRlZC1leHBlY3RlZC50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYWI3ZGE4OTg2MTkyN2Q4YjMwNDM3
OGM1NmMyNTUyNjdkNTY4OWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0
cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVkLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxs
CkBAIC0xLDYgKzAsMCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE3OiBUeXBlRXJyb3I6ICd1
bmRlZmluZWQnIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3N0eWxlMS5jb2xvcicpCi1U
aGlzIGxpbmsgc2hvdWxkIGdldCBjb2xvcmVkIHZpc2l0ZWQgYXMgYSByZXN1bHQgb2YgcmVwbGFj
ZVN0YXRlKCkgc2V0dGluZyBpdCBhcyB0aGUgY3VycmVudCBVUkwKLVRoaXMgbGluayBzaG91bGQg
Z2V0IGNvbG9yZWQgdmlzaXRlZCBhcyBhIHJlc3VsdCBvZiBwdXNoU3RhdGUoKSBhZGRpbmcgaXQg
dG8gdGhlIGZvcndhcmQgbGlzdAotSWYgeW91J3JlIHJ1bm5pbmcgaW4gYSBicm93c2VyLCB0aGUg
bGluayBzaG91bGQgYmUgb3JhbmdlLW9uLWJsYWNrIGFuZCB5b3Ugc2hvdWxkIHNlZSAicmVwbGFj
ZWRVUkwuaHRtbCIgaW4geW91ciBnbG9iYWwgaGlzdG9yeS4KLUlmIHlvdSdyZSBydW5uaW5nIGlu
IERSVCwgdGhlIHRlc3Qgd2lsbCBhbHNvIGFwcGVuZCAiUEFTUyIgb3IgIkZBSUwiLgotCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190637</attachid>
            <date>2013-02-27 20:14:18 -0800</date>
            <delta_ts>2013-03-01 22:06:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109772-20130227201030.patch</filename>
            <type>text/plain</type>
            <size>47824</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzUyYmY1ZjcxNDg4NmRj
Y2RjMmUzZmNmYjQ1MTg2ZTgyNTEyM2JlZC4uNjk2MGFmMzcxNmUzYjlmNDQ0ODQzMmM4ZGE1ZDI4
ZDMxMWY3NGM2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAyLTI3ICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBmdW5j
dGlvbiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oKSBpcyBwdXJlbHkgaW50ZXJu
YWwgdG8gV2ViQ29yZSwKKyAgICAgICAgaXQgaXMgYmV0dGVyIGRlZmluZWQgb24gSW50ZXJuYWxz
IHRoYW4gb24gVGVzdFJ1bm5lci4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKwogMjAxMy0wMi0yNyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgdHJhbnNmb3JtIHBhaW50aW5nL2hpdCB0ZXN0aW5n
IGNvZGUgaW4gUmVuZGVyTGF5ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBi
Y2Q5MzZmNGJhZGRlZTZkZTYyMzA1YzY2YTA5ZmNkMTZlMzA3NDNjLi42ZWJhZmU2N2RkOTdkMTYx
ODZiMjNjZTQyZWU0MGQ5NDM2NmZiMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMi0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVk
SW5mbyBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0LmNwcDoKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dC5oOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0KToKKwogMjAxMy0wMi0yNyAgSm9o
biBHcmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CiAKICAgICAgICAgMjAxMy0wMi0yNyAgSm9obiBH
cmlnZ3MgIDxqZ3JpZ2dzQHJpbS5jb20+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggNzU0Y2RkZDRiZTM5
OWExZWJiYjQ5YjIxYWVkMzllZmZiNGZmZjQ4NS4uNjFhYmIxNGE3MDUzNWUyZGNhNTAzNTE1NGFl
MDdkNDhmN2UyZTk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAy
LTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1v
dmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJ
bnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaDoKKwogMjAxMy0wMi0y
MyAgSmFzb24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBnbWFpbC5jb20+CiAKICAgICAgICAgTW92
ZSBzZXRBdXRvZmlsbGVkIGZyb20gVGVzdFJ1bm5lciB0byBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggMDMzNGFjYjkyMzkyYjMzMWQ2YTQ4M2I2MGIzM2JiMzViNTQ1MzVhOC4uMjQ3MWJkMTMx
ZDM1OTRmZTlkZmY4MWE1NGJkY2JjNzg3YWVjY2VkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEzLTAyLTI3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIE1vdmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZy
b20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ayk6CisKIDIwMTMtMDItMjYg
IE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIxNDM2MTkpOiBDcmFzaGVzIGluIHRocmVlIGxheW91dCB0ZXN0cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IGE1MWU2YWUyMzZlYWU1NWU4M2MwY2NkZTFkMjc1ODc3ZDExNGI0YjAuLmUzZWYw
MGQ0Mzk3N2MxNWI2NmViZGI2ODU0YWU0ZmViNTAyMTMxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMy0wMi0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFw
cGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5m
byBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKiBX
ZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIwMTMtMDItMjYgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgYWRkIGEgYm9keSB0byBwbGF0Zm9y
bSByZXF1ZXN0IHVudGlsIG5lY2Vzc2FyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA4MjIzNWQ1MzE4OTE3
NGQ3MTJiYjdkOTk3ZjNkMWMzYjFkMDZhNTI1Li5lMjkxNjBiYTVlZjQ4ZGY0MDlhZWU1MGU4MmZj
NTYwMzA2MGJjMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAyLTI3
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUg
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJbnRl
cm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
OTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIwMTMtMDItMjQgIEFu
ZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFN0eWxlZEVsZW1lbnQ6
IERvbid0IGV4cG9zZSBhIG11dGFibGUgZGlyZWN0IGludGVyZmFjZSB0byB0aGUgaW5saW5lIHN0
eWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCmluZGV4IDdiNjJhYTEyY2FjYzI2ZjJjZmJhOGVjNDU5OTI0MjgxZDFjNGY5
ZGUuLjU3MTA2NWI0ODc2NmEyYWI2M2JiNjcwZDM4YjExNTRiNmRmNWQ3NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNiBAQAorMjAxMy0wMi0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVk
SW5mbyBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVGcmFtZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
Lmg6CisgICAgICAgIChXZWJGcmFtZSk6CisKIDIwMTMtMDItMjcgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoNDg1MzMpOiBGdWxsLWZyYW1l
IHBsdWdpbnMgc3RvcHBlZCB3b3JraW5nIChkb3dubG9hZCBpbnN0ZWFkIG9mIGxvYWRpbmcgdGhl
IHBsdWdpbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBjZjU2ZjMxZmNh
ZWM4ZGE3YmRiOWIzOTFhMzBhNzAzOTUwMDUzMWIwLi5mNGY4YmVmMzYwZDkxYTc3OTJhMGQ1Njdj
OGQwMmU1ZjRlZjRlNDU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0x
LDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjU5LDYgKzY2
MCwxNyBAQCBzaXplX3QgSW50ZXJuYWxzOjpudW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVu
KGNvbnN0IE5vZGUqIHNjb3BlLCBFeGNlcHRpb25DbwogICAgIHJldHVybiAwOwogfQogCitQYXNz
UmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gSW50ZXJuYWxzOjpjb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpIGNv
bnN0Cit7CisgICAgaWYgKCFub2RlKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJS
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBib29sIGFsbG93VmlzaXRlZFN0eWxl
ID0gdHJ1ZTsKKyAgICByZXR1cm4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUo
bm9kZSwgYWxsb3dWaXNpdGVkU3R5bGUpOworfQorCiBJbnRlcm5hbHM6OlNoYWRvd1Jvb3RJZlNo
YWRvd0RPTUVuYWJsZWRPck5vZGUqIEludGVybmFsczo6ZW5zdXJlU2hhZG93Um9vdChFbGVtZW50
KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWhvc3QpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IGNjM2JhZTY2YWRmZTZmNTZjMTBlYzRiNDdlOTNkMjY5
MmU1M2FhZDUuLmFjMTg2NzNkYmIyZjgyZWU2MmE0NjNjMWFiMTE3YzFlMTBmNzEyNDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBJbnRl
cm5hbHNfaAogI2RlZmluZSBJbnRlcm5hbHNfaAogCisjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJOb2RlTGlz
dC5oIgpAQCAtNzYsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tTWVt
b3J5Q2FjaGUoY29uc3QgU3RyaW5nJiB1cmwpOwogCiAgICAgc2l6ZV90IG51bWJlck9mU2NvcGVk
SFRNTFN0eWxlQ2hpbGRyZW4oY29uc3QgTm9kZSosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAg
ICBQYXNzUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZUlu
Y2x1ZGluZ1Zpc2l0ZWRJbmZvKE5vZGUqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICB0eXBlZGVmIFNoYWRvd1Jvb3QgU2hhZG93Um9vdElmU2hh
ZG93RE9NRW5hYmxlZE9yTm9kZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRl
eCBmYjA2MDA5OGE5ZmIzYTlmOTIxZjk2NWUzYWFiMzM1ZmU3NDIzNTIxLi4wZTdlODgyMGQwZDEy
NjBkNTU1OWRmZTNlODNlMTI0MTUyZmRmYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaWRsCkBAIC0zNCw2ICszNCw3IEBACiAgICAgYm9vbGVhbiBpc0xvYWRpbmdGcm9tTWVtb3J5
Q2FjaGUoaW4gRE9NU3RyaW5nIHVybCk7CiAKICAgICB1bnNpZ25lZCBsb25nIG51bWJlck9mU2Nv
cGVkSFRNTFN0eWxlQ2hpbGRyZW4oaW4gTm9kZSBzY29wZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8oaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogI2lmIGRlZmluZWQoRU5B
QkxFX1NIQURPV19ET00pICYmIEVOQUJMRV9TSEFET1dfRE9NCiAgICAgU2hhZG93Um9vdCBlbnN1
cmVTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKaW5kZXggZWViNzVmZDA4NGVmYjAxMzRlYWJhYzRk
MzkzNDYxNmNhNjBiZTAzMy4uODFiOGNkNDI4OGUwNmM2OTMyZGM2ZWE5YjE0ZDEwZGI3YzE0ZGZh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCkBAIC0yMCw3ICsyMCw2IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgiCiAK
LSNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJEZXZp
Y2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkNv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkRhdGEuaCIKQEAgLTEyMiwy
MSArMTIxLDYgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNjYWxlUGFnZUJ5KFdlYlBh
Z2UqIHdlYlBhZ2UsIGZsb2F0IHNjYWxlRmFjdG9yLCBmbG8KICAgICBjb3JlUGFnZSh3ZWJQYWdl
KS0+c2V0UGFnZVNjYWxlRmFjdG9yKHNjYWxlRmFjdG9yLCBJbnRQb2ludCh4LCB5KSk7CiB9CiAK
LUpTVmFsdWVSZWYgRHVtcFJlbmRlclRyZWVTdXBwb3J0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0g
ICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0xvY2tIb2xkZXIgbG9j
ayhleGVjKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRl
ZmluZWQoY29udGV4dCk7Ci0gICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9KUyhleGVjLCB2YWx1ZSk7
Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNfaW5mbykpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAgICBKU0VsZW1lbnQqIGpz
RWxlbWVudCA9IHN0YXRpY19jYXN0PEpTRWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKLSAg
ICBFbGVtZW50KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0gICAgUmVmUHRyPENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmNyZWF0ZShlbGVtZW50LCB0cnVlKTsKLSAgICByZXR1cm4gdG9SZWYoZXhlYywgdG9KUyhl
eGVjLCBqc0VsZW1lbnQtPmdsb2JhbE9iamVjdCgpLCBzdHlsZS5nZXQoKSkpOwotfQotCiAjaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayog
dG9EZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soRGV2aWNlT3JpZW50YXRpb25DbGllbnQqIGNs
aWVudCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKaW5kZXggYmJjMDQ1NTFkNDhhM2Zi
M2IxMDlkZjUwNWQzNzQwYzM3MzY2YjE5My4uYzk2YjkyZWJiNTYxNGQ2YmUxYTZkYzU3NTZhMzY4
YzJlMTAyYTkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmgKQEAgLTU4LDcgKzU4LDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldE1vY2tHZW9sb2NhdGlvblBvc2l0aW9uKEJs
YWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdp
dHVkZSwgZG91YmxlIGFjY3VyYWN5KTsKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrRGV2aWNlT3Jp
ZW50YXRpb24oQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlKiwgYm9vbCBjYW5Qcm92aWRlQWxw
aGEsIGRvdWJsZSBhbHBoYSwgYm9vbCBjYW5Qcm92aWRlQmV0YSwgZG91YmxlIGJldGEsIGJvb2wg
Y2FuUHJvdmlkZUdhbW1hLCBkb3VibGUgZ2FtbWEpOwogICAgIHN0YXRpYyB2b2lkIHNjYWxlUGFn
ZUJ5KEJsYWNrQmVycnk6OldlYktpdDo6V2ViUGFnZSosIGZsb2F0LCBmbG9hdCwgZmxvYXQpOwot
ICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIHNf
bGlua3NJbmNsdWRlZEluVGFiQ2hhaW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAppbmRleCBi
OWQxN2U4YzE4NDJmMzAzMWNlOTdjMGRhYzdmZDgyNWMxNzIxNzg0Li5iYzY0NGI0MzA1MWJjNjAx
NjBhNTJiOTU5NGI1MjIxZmY5ZTIwMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAg
LTMwLDcgKzMwLDYgQEAKIAogI2luY2x1ZGUgPEFQSUNhc3QuaD4KICNpbmNsdWRlIDxBbmltYXRp
b25Db250cm9sbGVyLmg+Ci0jaW5jbHVkZSA8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg+
CiAjaW5jbHVkZSA8RG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxFZGl0b3JDbGllbnRFZmwu
aD4KICNpbmNsdWRlIDxFaW5hLmg+CkBAIC01NjUsMjIgKzU2NCw2IEBAIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpzZXRWYWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbihF
dmFzX09iamVjCiAgICAgcGFnZS0+c2V0dGluZ3MoKS0+c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1l
ck1hZ25pZmljYXRpb24odmFsdWUpOwogfQogCi1KU1ZhbHVlUmVmIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTQzo6RXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSA9IHRvSlMo
ZXhlYywgdmFsdWUpOwotICAgIGlmICghanNWYWx1ZS5pbmhlcml0cygmV2ViQ29yZTo6SlNFbGVt
ZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Ci0KLSAgICBXZWJDb3JlOjpKU0VsZW1lbnQqIGpzRWxlbWVudCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkpTRWxlbWVudCo+KGFzT2JqZWN0KGpzVmFsdWUpKTsKLSAgICBXZWJDb3JlOjpFbGVt
ZW50KiBlbGVtZW50ID0ganNFbGVtZW50LT5pbXBsKCk7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OkNT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBXZWJDb3JlOjpDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmNyZWF0ZShlbGVtZW50LCB0cnVlKTsKLSAgICByZXR1cm4gdG9SZWYo
ZXhlYywgdG9KUyhleGVjLCBqc0VsZW1lbnQtPmdsb2JhbE9iamVjdCgpLCBzdHlsZS5nZXQoKSkp
OwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0QXV0aG9yQW5kVXNlclN0
eWxlc0VuYWJsZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJvb2wgZW5hYmxlZCkKIHsKICAgICBE
UlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5oIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmgKaW5kZXggYWVkM2M3NWQwMmY5ZmYzOTMxZTM3N2Q1OTRhMzgyOTExMmViYWJhNy4u
MGM2YTE1Zjk5OThiZjBlODA4NjcxMWU5NTI5YTNlMjNiNmFhNzQ4MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsLmgKQEAgLTExMCw3ICsxMTAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBt
YXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIG5vZGVPYmplY3Qp
OwogICAgIHN0YXRpYyB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQpOwogICAgIHN0YXRpYyB2b2lkIHNldFZh
bGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBp
bnQgdmFsdWUpOwotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdW
aXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAgIHN0YXRpYyB2b2lkIHNl
dEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1l
KGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAgICAgc3RhdGljIHZvaWQg
c2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKaW5k
ZXggZWVjY2Q2NzI2YTBmNjZmYWMyNGUzOWM1ZWUwZWRlOGEwNjBkODY5OS4uNDRlYjliMzE4YmEw
NDIwZjY3Mzk3MmRiMGI4N2Y5MmFhNGRlYWJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oIgotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0ay5oIgogI2luY2x1ZGUg
IkRPTVdyYXBwZXJXb3JsZC5oIgpAQCAtNzA0LDIyICs3MDMsNiBAQCBib29sIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEd0azo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKFdl
YktpdFdlYgogICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzVGV4dEZpZWxkKCkgJiYgIWlucHV0
RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgaW5wdXRFbGVtZW50LT5zaG91bGRBdXRvY29t
cGxldGUoKTsKIH0KIAotSlNWYWx1ZVJlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNvbXB1
dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiBub2RlT2JqZWN0KQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjb250
ZXh0KTsKLSAgICBpZiAoIW5vZGVPYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgbm9k
ZU9iamVjdCk7Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNfaW5mbykp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpT
RWxlbWVudCoganNFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SlNFbGVtZW50Kj4oYXNPYmplY3QoanNW
YWx1ZSkpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBqc0VsZW1lbnQtPmltcGwoKTsKLSAgICBS
ZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHRydWUpOwotICAgIHJldHVybiB0b1JlZihl
eGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+Z2xvYmFsT2JqZWN0KCksIHN0eWxlLmdldCgpKSk7
Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkZWxpdmVyQWxsTXV0YXRpb25z
SWZOZWNlc3NhcnkoKQogewogICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXJBbGxNdXRhdGlv
bnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggNDJiODVjZDVmZDlmY2JjNTgyMjRmMjE5
OWQ2OGE2MTQxNDliMzIyMC4uNmRiMTE0ZDNiNWI1YWM0MDAzMjQ4MzUzNGM0OTVhMGMwMTg4ZDRl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTcxLDcgKzcxLDYgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYsIEpT
U3RyaW5nUmVmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDbG9zZShXZWJLaXRXZWJGcmFtZSop
OwogICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJ
ZChXZWJLaXRXZWJGcmFtZSosIEpTU3RyaW5nUmVmKTsKLSAgICBzdGF0aWMgSlNWYWx1ZVJlZiBj
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcKICAgICBzdGF0aWMgdm9pZCBleGVjdXRlQ29yZUNv
bW1hbmRCeU5hbWUoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBuYW1lLCBjb25zdCBnY2hh
ciogdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDhkYjIwOTkx
YTYwZjlkOTViNGFlMTUwNTlkYjkwZGQyYzkwNjY1ZDIuLjFhOTE1NGE2N2EyMjk4OTJkYzNlNWE3
ZWZiNDI3NzQ5M2Y2ZmQ4MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAg
LTExNiw3ICsxMTYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2FyZExpc3RJbXBsLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9y
TWFjLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oPgog
I2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvRGF0YWJhc2VNYW5h
Z2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC02Njk1LDI1ICs2Njk0LDYg
QEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFjayhDRlJ1bkxvb3BPYnNl
cnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdl
YlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQotCi0tIChKU1ZhbHVlUmVmKV9jb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250ZXh0IGZvckVsZW1l
bnQ6KEpTVmFsdWVSZWYpdmFsdWUKLXsKLSAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGNvbnRl
eHQpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIGlmICghdmFsdWUpCi0gICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAgICBKU0M6OkpTVmFs
dWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwotICAgIGlmICghanNWYWx1ZS5pbmhlcml0
cygmSlNFbGVtZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Ci0gICAgSlNFbGVtZW50KiBqc0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxKU0Vs
ZW1lbnQqPihhc09iamVjdChqc1ZhbHVlKSk7Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGpzRWxl
bWVudC0+aW1wbCgpOwotICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IHN0
eWxlID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoZWxlbWVudCwgdHJ1ZSk7
Ci0gICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywganNFbGVtZW50LT5nbG9iYWxPYmpl
Y3QoKSwgc3R5bGUuZ2V0KCkpKTsKLX0KLQotQGVuZAotCiBAaW1wbGVtZW50YXRpb24gV2ViVmll
dyAoV2ViVmlld0Z1bGxTY3JlZW4pCiAKIC0gKE5TVmlldyopZnVsbFNjcmVlblBsYWNlaG9sZGVy
VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDY4
NTNiMzQ4ODUzMWZkZWNlMzFhYzNjZTdmMThlYjkzYTdkMGEwMWMuLmU2MTdlMWJlNDIwNDNmMzc0
MmQxMTM1NTk2N2NhMDllYjI1ODVkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXdQcml2YXRlLmgKQEAgLTc0NSwxMCArNzQ1LDYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5n
IHRvIHRoZSBBUEkuCiAtICh1aW50NjRfdClfbm90aWZpY2F0aW9uSURGb3JUZXN0aW5nOihKU1Zh
bHVlUmVmKWpzTm90aWZpY2F0aW9uOwogQGVuZAogCi1AaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZp
ZXdQcml2YXRlU3R5bGVJbmZvKQotLSAoSlNWYWx1ZVJlZilfY29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvOihKU0NvbnRleHRSZWYpY29udGV4dCBmb3JFbGVtZW50OihKU1ZhbHVlUmVm
KXZhbHVlOwotQGVuZAotCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJWaWV3RnJhbWVMb2FkRGVs
ZWdhdGVQcml2YXRlKQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZEZpcnN0
TGF5b3V0SW5GcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApp
bmRleCA0ZWM1ZDJlOWViNGFmNzdkNzE0MjdlMmZhMGI0NTcxZGM1NzljOWVjLi4xZmQ2NzY5NjBi
NThmYTMzZTZhMWRjYTZjMWIzZmIzOWZhNDY1NGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcApA
QCAtMjUsNyArMjUsNiBAQAogCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgogI2luY2x1ZGUgIkFwcGxp
Y2F0aW9uQ2FjaGVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKICNpbmNsdWRlICJDb250YWluZXJO
b2RlLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKQEAgLTM4MCwzOCArMzc5LDYgQEAgUVN0
cmluZyBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6bWFya2VyVGV4dEZvckxpc3RJdGVtKGNvbnN0
IFFXZWJFbGVtZW50JiBsaXN0SXQKICAgICByZXR1cm4gV2ViQ29yZTo6bWFya2VyVGV4dEZvckxp
c3RJdGVtKGxpc3RJdGVtLm1fZWxlbWVudCk7CiB9CiAKLXN0YXRpYyBRU3RyaW5nIGNvbnZlcnRU
b1Byb3BlcnR5TmFtZShjb25zdCBRU3RyaW5nJiBuYW1lKQotewotICAgIFFTdHJpbmdMaXN0IHBh
cnRzID0gbmFtZS5zcGxpdChRTGF0aW4xQ2hhcignLScpKTsKLSAgICBRU3RyaW5nIGNhbWVsQ2Fz
ZU5hbWU7Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBwYXJ0cy5jb3VudCgpOyArK2opIHsKLSAg
ICAgICAgUVN0cmluZyBwYXJ0ID0gcGFydHMuYXQoaik7Ci0gICAgICAgIGlmIChqKQotICAgICAg
ICAgICAgY2FtZWxDYXNlTmFtZS5hcHBlbmQocGFydC5yZXBsYWNlKDAsIDEsIHBhcnQubGVmdCgx
KS50b1VwcGVyKCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY2FtZWxDYXNlTmFtZS5h
cHBlbmQocGFydCk7Ci0gICAgfQotICAgIHJldHVybiBjYW1lbENhc2VOYW1lOwotfQotCi1RVmFy
aWFudE1hcCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zp
c2l0ZWRJbmZvKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50KQotewotICAgIFFWYXJpYW50TWFw
IHJlczsKLQotICAgIFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1lbnQgPSBlbGVtZW50Lm1fZWxl
bWVudDsKLSAgICBpZiAoIXdlYkVsZW1lbnQpCi0gICAgICAgIHJldHVybiByZXM7Ci0KLSAgICBS
ZWZQdHI8V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24gPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSh3ZWJFbGVt
ZW50LCB0cnVlKTsKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IHN0YXRpY19jYXN0
PFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qPihjb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Z2V0KCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHlsZS0+bGVuZ3RoKCk7IGkr
KykgewotICAgICAgICBRU3RyaW5nIG5hbWUgPSBzdHlsZS0+aXRlbShpKTsKLSAgICAgICAgUVN0
cmluZyB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpOwotICAgICAgICByZXNb
Y29udmVydFRvUHJvcGVydHlOYW1lKG5hbWUpXSA9IFFWYXJpYW50KHZhbHVlKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHJlczsKLX0KLQogUVZhcmlhbnRMaXN0IER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
OjpzZWxlY3RlZFJhbmdlKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRlcikKIHsKICAgICBXZWJDb3Jl
OjpGcmFtZSogZnJhbWUgPSBhZGFwdGVyLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXggMDNiNDg4YjljY2FmMjUzYzk5
MWQ4ZDAyZTBmNjQyNDhlYjQzNGIyMy4uY2NmOWMzM2RjYWY3YWRiNWYwZDU3MDU3ODM2Y2VmZTE5
Nzc4MGEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtMTQwLDcgKzE0MCw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgaW50IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RzKFFXZWJQYWdlQWRhcHRlciopOwogCiAgICAgc3RhdGljIFFTdHJpbmcgbWFya2VyVGV4dEZv
ckxpc3RJdGVtKGNvbnN0IFFXZWJFbGVtZW50JiBsaXN0SXRlbSk7Ci0gICAgc3RhdGljIFFWYXJp
YW50TWFwIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhjb25zdCBRV2ViRWxlbWVu
dCYpOwogCiAgICAgc3RhdGljIHZvaWQgZHVtcEZyYW1lTG9hZGVyKGJvb2wpOwogICAgIHN0YXRp
YyB2b2lkIGR1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soYm9vbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJh
bWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9X
S0J1bmRsZUZyYW1lLmNwcAppbmRleCAwNmRkYzNiNWQ5YjFmZWFlMDFlODkyMzA0MjlhMjFjY2M1
Y2E5NThhLi41MmIwMTFjYzExYTVkMDZiZTFmMjk0YzdiNmE5ZDUyMTc2MjJlYzQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAKQEAgLTEyMiwxMSArMTIyLDYgQEAgV0tTdHJpbmdS
ZWYgV0tCdW5kbGVGcmFtZUNvcHlOYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiAgICAg
cmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPm5hbWUoKSk7CiB9CiAKLUpTVmFs
dWVSZWYgV0tCdW5kbGVGcmFtZUdldENvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lUmVmLCBKU09iamVjdFJlZiBlbGVtZW50KQotewotICAgIHJl
dHVybiB0b0ltcGwoZnJhbWVSZWYpLT5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8o
ZWxlbWVudCk7Ci19Ci0KIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5Q291bnRlclZhbHVl
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYsIEpTT2JqZWN0UmVmIGVsZW1lbnQpCiB7CiAgICAg
cmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPmNvdW50ZXJWYWx1ZShlbGVtZW50
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmgKaW5kZXggNGU1YzVj
M2IwZTBiZTAxZjI5NDEzOWMyMWM1YmVmODY5YzA0ZmVkYS4uOWM2MjkwMGFiNDIxZGQ5ZjBlZjU3
NGUwM2Y2ODEzYTgxM2ZhNWE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVBy
aXZhdGUuaApAQCAtNDAsNyArNDAsNiBAQCBleHRlcm4gIkMiIHsKIFdLX0VYUE9SVCBXS1N0cmlu
Z1JlZiBXS0J1bmRsZUZyYW1lQ29weUlubmVyVGV4dChXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKTsK
IFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weUNvdW50ZXJWYWx1ZShXS0J1
bmRsZUZyYW1lUmVmIGZyYW1lLCBKU09iamVjdFJlZiBlbGVtZW50KTsKIFdLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS0J1bmRsZUZyYW1lQ29weU1hcmtlclRleHQoV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgSlNPYmplY3RSZWYgZWxlbWVudCk7Ci1XS19FWFBPUlQgSlNWYWx1ZVJlZiBXS0J1bmRsZUZy
YW1lR2V0Q29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKFdLQnVuZGxlRnJhbWVSZWYg
ZnJhbWUsIEpTT2JqZWN0UmVmIGVsZW1lbnQpOwogV0tfRVhQT1JUIHVuc2lnbmVkIFdLQnVuZGxl
RnJhbWVHZXRQZW5kaW5nVW5sb2FkQ291bnQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CiBXS19F
WFBPUlQgV0tTdHJpbmdSZWYgV0tCdW5kbGVGcmFtZUNvcHlMYXllclRyZWVBc1RleHQoV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSk7CiBXS19FWFBPUlQgdm9pZCBXS0J1bmRsZUZyYW1lQ2xlYXJPcGVu
ZXIoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCAyNGUwOGQzMGVmNDQ1YTA5NjFiNTBhZjk5Njdl
N2Y2MTlkNzgyYjBhLi4wMzA0ODljOWQ5MDhmMWVhN2JhNTBmNGVlMzc0MzliMzFiZWIzMGM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU1ZhbHVlUmVmLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcmNo
aXZlUmVzb3VyY2UuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
b2N1bWVudExvYWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KQEAgLTYyMSwyMyAr
NjIwLDYgQEAgSlNWYWx1ZVJlZiBXZWJGcmFtZTo6anNXcmFwcGVyRm9yV29ybGQoSW5qZWN0ZWRC
dW5kbGVSYW5nZUhhbmRsZSogcmFuZ2VIYW5kbGUsIEkKICAgICByZXR1cm4gdG9SZWYoZXhlYywg
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIHJhbmdlSGFuZGxlLT5jb3JlUmFuZ2UoKSkpOwogfQog
Ci1KU1ZhbHVlUmVmIFdlYkZyYW1lOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8o
SlNPYmplY3RSZWYgZWxlbWVudCkKLXsKLSAgICBpZiAoIW1fY29yZUZyYW1lKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSBtX2NvcmVGcmFtZS0+
c2NyaXB0KCktPmdsb2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Ci0gICAgRXhl
Y1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Ci0KLSAgICBpZiAoIXRv
SlMoZWxlbWVudCktPmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZCh0b1JlZihleGVjKSk7Ci0KLSAgICBSZWZQdHI8Q1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Y3JlYXRlKHN0YXRpY19jYXN0PEpTRWxlbWVudCo+KHRvSlMoZWxlbWVudCkpLT5pbXBsKCks
IHRydWUpOwotCi0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0gICAgcmV0dXJuIHRvUmVm
KGV4ZWMsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBzdHlsZS5nZXQoKSkpOwotfQotCiBTdHJp
bmcgV2ViRnJhbWU6OmNvdW50ZXJWYWx1ZShKU09iamVjdFJlZiBlbGVtZW50KQogewogICAgIGlm
ICghdG9KUyhlbGVtZW50KS0+aW5oZXJpdHMoJkpTRWxlbWVudDo6c19pbmZvKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKaW5kZXggMzMwNTMwNzNkMTAx
YzczMDdlY2Q4MjM5MDA3NWRkYzIzMTFmMDMxZS4uZTk4NTQwZmU1YWI2YjBiZDVjMWY3YjI2MzFm
MTE0MjVjMDk5Y2I5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmgKQEAgLTkyLDcgKzkyLDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNGcmFtZVNldCgp
IGNvbnN0OwogICAgIFdlYkZyYW1lKiBwYXJlbnRGcmFtZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQ
dHI8SW1tdXRhYmxlQXJyYXk+IGNoaWxkRnJhbWVzKCk7Ci0gICAgSlNWYWx1ZVJlZiBjb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNPYmplY3RSZWYgZWxlbWVudCk7CiAgICAgSlNH
bG9iYWxDb250ZXh0UmVmIGpzQ29udGV4dCgpOwogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0Nv
bnRleHRGb3JXb3JsZChJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKik7CiAgICAgV2ViQ29yZTo6
SW50UmVjdCBjb250ZW50Qm91bmRzKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRl
eCA5ZTFjZjY1N2FiM2IwZTYwMmNkOWNkNWFmOTM4NGZlNDAxZGFhOWUxLi43MmY3NTc4YjhjY2U3
MTgxMTZiMGQ2MzRkMmQ1ZmRhMGRiYjc1YTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAg
LTM3LDYgKzM3LDcgQEAgX1pON1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRNZWRpYUViOwogX1pO
N1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBO
U18xMENsaWVudFJlY3RFOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RFOwogX1pON1dlYkNvcmU0dG9KU0VQ
TjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xNENsaWVudFJlY3RM
aXN0RTsKK19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2Jh
bE9iamVjdEVQTlNfMTlDU1NTdHlsZURlY2xhcmF0aW9uRTsKIF9aTjdXZWJDb3JlNHRvSlNFUE4z
SlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNVJhbmdlRTsKIF9aTjdX
ZWJDb3JlNVJhbmdlNmNyZWF0ZUVOM1dURjEwUGFzc1JlZlB0cklOU184RG9jdW1lbnRFRUVOUzJf
SU5TXzROb2RlRUVFaVM2X2k7CiBfWk43V2ViQ29yZTVSYW5nZUQxRXY7CkBAIC0xMDgsNiArMTA5
LDcgQEAgX1pON1dlYkNvcmUyNERvY3VtZW50TWFya2VyQ29udHJvbGxlcjEwbWFya2Vyc0ZvckVQ
TlNfNE5vZGVFTlNfMTREb2N1bWVudE1hcmtlcjEKIF9aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIxOGFkZFRleHRNYXRjaE1hcmtlckVQS05TXzVSYW5nZUViOwogX1pON1dlYkNv
cmUyNWNvbXB1dGVWaWV3cG9ydEF0dHJpYnV0ZXNFTlNfMTdWaWV3cG9ydEFyZ3VtZW50c0VpaWlm
TlNfN0ludFNpemVFOwogX1pON1dlYkNvcmUyNWpzU3RyaW5nV2l0aENhY2hlU2xvd0Nhc2VFUE4z
SlNDOUV4ZWNTdGF0ZUVSTjNXVEY3SGFzaE1hcElQTlMzXzEwU3RyaW5nSW1wbEVOUzBfNFdlYWtJ
TlMwXzhKU1N0cmluZ0VFRU5TM183UHRySGFzaElTNl9FRU5TM18xMEhhc2hUcmFpdHNJUzZfRUVO
U0NfSVM5X0VFRUVTNl87CitfWk43V2ViQ29yZTI3Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
QzFFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUViUktOUzFfNlN0cmluZ0U7CiBfWk43V2Vi
Q29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDEybW92ZVdpbmRvd0J5RWZmOwogX1pO
N1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxMm9wZW5Jbk5ld1RhYkVSS04z
V1RGNlN0cmluZ0U7CiBfWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDE0
ZnJvbnRlbmRMb2FkZWRFdjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAyZDVlMzM0NDY1OTk4Mzc4N2Q1Y2U5NmYyYWRhZGY3MzJjMGZkZGYyLi43
ZWFkMzM3Yjc1Y2U4YTk5OTIwN2U1Y2FlY2JjNWZkMzNjZTJhMmU5IDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTMt
MDItMjcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJvbSBUZXN0UnVubmVyIHRv
IEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYmxhY2ti
ZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
ZWZsL1Rlc3RSdW5uZXJFZmwuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9UZXN0
UnVubmVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1h
Yy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3BwOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oOgorICAgICAgICAoVGVzdFJ1
bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHA6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbDoK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
OgorICAgICAgICAoVGVzdFJ1bm5lcik6CisKIDIwMTMtMDItMjcgIEpvY2hlbiBFaXNpbmdlciAg
PGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgcGx1Z2lucy9uZXRzY2FwZS1wbHVnaW4t
c2V0d2luZG93LXNpemUqLmh0bWwgYW5kIHBsdWdpbnMvcGFzcy1kaWZmZXJlbnQtbnBwLXN0cnVj
dC5odG1sIHNob3VsZCBiZSBhc3luYwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAppbmRl
eCA3MmU2ZmYxNWQzMDNlNGFkYWE5YWIwODEwNjUyZmE4OWMzMzBmMGExLi43YWU4YjFmODllZDIw
OGVmNTc4NmNjYWUzMDhmYTdlMGE4MzRhMzhjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVy
LmNwcApAQCAtNjgwLDE2ICs2ODAsNiBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBrZWVwV2ViSGlzdG9y
eUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdAogICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAotc3RhdGljIEpTVmFsdWVS
ZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50ICE9IDEpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLSAgICAKLSAgICAvLyBIYXMg
bWFjIGltcGxlbWVudGF0aW9uCi0gICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9IHN0YXRpY19j
YXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOwotICAgIHJl
dHVybiBjb250cm9sbGVyLT5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29udGV4
dCwgYXJndW1lbnRzWzBdKTsKLX0KLQogc3RhdGljIEpTVmFsdWVSZWYgbm90aWZ5RG9uZUNhbGxi
YWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJn
dW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2lu
ZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAtMjA3OCw3ICsyMDY4LDYgQEAgSlNTdGF0aWNGdW5jdGlv
biogVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAiY2xlYXJCYWNrRm9y
d2FyZExpc3QiLCBjbGVhckJhY2tGb3J3YXJkTGlzdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImNsZWFyUGVyc2lzdGVudFVzZXJTdHlsZVNoZWV0IiwgY2xlYXJQZXJzaXN0ZW50VXNlclN0
eWxlU2hlZXRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJjbG9zZVdlYkluc3BlY3RvciIs
IGNsb3NlV2ViSW5zcGVjdG9yQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAiY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIiwgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJ
bmZvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGVjb2RlSG9zdE5hbWUiLCBkZWNvZGVI
b3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImRpc2FsbG93SW5jcmVhc2VGb3JB
cHBsaWNhdGlvbkNhY2hlUXVvdGEiLCBkaXNhbGxvd0luY3JlYXNlRm9yQXBwbGljYXRpb25DYWNo
ZVF1b3RhQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzcGF0Y2hQZW5kaW5nTG9hZFJl
cXVlc3RzIiwgZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXVlc3RzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAppbmRleCBkZjg0MGUxYzI4M2Q2MzdjNjI2MjUwY2Q4NTAx
MmUxOGE2ODYwYzg4Li4yYzU1YTY3ZTA0Y2I5NGI4ZTdmZWY5ODFjNGJlMTBmMGMwMDQyYWIxIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCkBAIC02Niw3ICs2Niw2IEBAIHB1YmxpYzoKICAg
ICBsb25nIGxvbmcgYXBwbGljYXRpb25DYWNoZURpc2tVc2FnZUZvck9yaWdpbihKU1N0cmluZ1Jl
ZiBuYW1lKTsKICAgICBib29sIGlzQ29tbWFuZEVuYWJsZWQoSlNTdHJpbmdSZWYgbmFtZSk7CiAg
ICAgdm9pZCBrZWVwV2ViSGlzdG9yeSgpOwotICAgIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUlu
Y2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiwgSlNWYWx1ZVJlZik7CiAgICAgdm9pZCBu
b3RpZnlEb25lKCk7CiAgICAgaW50IG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RzKCk7CiAgICAgdm9pZCBvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5
LCBKU1N0cmluZ1JlZiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9i
bGFja2JlcnJ5L1Rlc3RSdW5uZXJCbGFja0JlcnJ5LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2JsYWNrYmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCmluZGV4IDdjMDhhYWU3NDEzNGQ3
ZjkyZTA3MDZlMmViYzdjMTZkODZjNGU2ZGIuLjQ0ZjJkOTdiNmIzYTc2YTg2NzMxODk5M2QyZWVi
NjI1YTI0YTZlYmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkv
VGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNr
YmVycnkvVGVzdFJ1bm5lckJsYWNrQmVycnkuY3BwCkBAIC01MDUsMTEgKzUwNSw2IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChib29sIGZsYWcpCiAg
ICAgQmxhY2tCZXJyeTo6V2ViS2l0OjpEdW1wUmVuZGVyVHJlZTo6Y3VycmVudEluc3RhbmNlKCkt
PnBhZ2UoKS0+c2V0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZChmbGFnKTsKIH0KIAotSlNW
YWx1ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGNvbnRl
eHQsIHZhbHVlKTsKLX0KLQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Omxh
eWVyVHJlZUFzVGV4dCgpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAppbmRleCBmMzk0M2RjNWRlODg4NWQ5
MmNmZDRhYWEyNjEwYWI4MWExN2QxYTVkLi41YTA4NjY1ZjE3NzQ2OWJkYTBjYTBiMjMxNzIxMDY5
YzIzOGU2MWMzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5l
ckVmbC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3Bw
CkBAIC0xMTIsMTEgKzExMiw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQog
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3Mo
dHJ1ZSk7CiB9CiAKLUpTVmFsdWVSZWYgVGVzdFJ1bm5lcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewot
ICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyhjb250ZXh0LCB2YWx1ZSk7Ci19Ci0KIHNpemVfdCBUZXN0UnVubmVyOjp3
ZWJIaXN0b3J5SXRlbUNvdW50KCkKIHsKICAgICBjb25zdCBFd2tfSGlzdG9yeSogaGlzdG9yeSA9
IGV3a192aWV3X2hpc3RvcnlfZ2V0KGJyb3dzZXItPm1haW5WaWV3KCkpOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCmluZGV4IDk5NmZiNTgyY2MwNzljZjZkYTA5
MmZmMjcxZDBlM2FmNzE5MGJmMGMuLjI2MzhiZDMyYzg4MzA5OTA2YjZiNjEyOGI0Y2M0N2NiMmI2
NjQ0NWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9UZXN0UnVubmVyR3Rr
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5jcHAKQEAg
LTEwOCwxMSArMTA4LDYgQEAgdm9pZCBUZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAg
Ly8gRklYTUU6IGltcGxlbWVudAogfQogCi1KU1ZhbHVlUmVmIFRlc3RSdW5uZXI6OmNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJl
ZiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpjb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29udGV4dCwgdmFsdWUpOwotfQotCiBzaXplX3Qg
VGVzdFJ1bm5lcjo6d2ViSGlzdG9yeUl0ZW1Db3VudCgpCiB7CiAgICAgV2ViS2l0V2ViVmlldyog
d2ViVmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IDM2YjNjOTI5ZjE0MTUw
ZTcyYWNjNTZkNDFkNDJkZGVmZmY1Nzk2NGEuLjA5YmEzYWY5M2I2Nzc1OGM2YmMwNzViZGNhZjNi
NmYyYjUyYjQxMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC0yNzMsMTEgKzI3Myw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQog
ICAgIH0KIH0KIAotSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17ICAg
Ci0gICAgcmV0dXJuIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9jb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm86Y29udGV4dCBmb3JFbGVtZW50OnZhbHVlXTsKLX0KLQogSlNSZXRhaW5QdHI8
SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAogewogICAgIERPTUVsZW1l
bnQgKmVsZW1lbnQgPSBbRE9NRWxlbWVudCBfRE9NRWxlbWVudEZyb21KU0NvbnRleHQ6Y29udGV4
dCB2YWx1ZTpub2RlT2JqZWN0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0
L1Rlc3RSdW5uZXJRdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQu
Y3BwCmluZGV4IDE1YWQxMjc2MTFkYmNkOWVmMTI0NjRlNWMyMGYyZGE4YjdlMjE0MTUuLmY5MTNk
Y2ViOWEyMDA1YTg2M2MyNjExMzg2YzhmNGRhZDlhNDkzY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvVGVzdFJ1bm5lclF0LmNwcApAQCAtNzUwLDExICs3NTAsNiBAQCBRU3RyaW5nIFRlc3RS
dW5uZXJRdDo6bWFya2VyVGV4dEZvckxpc3RJdGVtKGNvbnN0IFFXZWJFbGVtZW50JiBsaXN0SXRl
bSkKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6Om1hcmtlclRleHRGb3JMaXN0
SXRlbShsaXN0SXRlbSk7CiB9CiAKLVFWYXJpYW50TWFwIFRlc3RSdW5uZXJRdDo6Y29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50KSBjb25z
dAotewotICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29tcHV0ZWRTdHlsZUlu
Y2x1ZGluZ1Zpc2l0ZWRJbmZvKGVsZW1lbnQpOwotfQotCiBib29sIFRlc3RSdW5uZXJRdDo6ZWxl
bWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKGNvbnN0IFFTdHJpbmcmIGVsZW1l
bnRJZCkKIHsKICAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmVsZW1lbnREb2Vz
QXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZChtX2RydC0+bWFpbkZyYW1lQWRhcHRlcigpLCBl
bGVtZW50SWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5l
clF0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuaAppbmRleCA2NTJh
ZDFjMTdiMDY0NTdkMTA1NDE3ZmUyZTQwNTRlNGI4ZmE0MTdjLi4xYTAwODAxMzFmMmM3YWI2ZjE5
YWViOGJlNjc4MzI2Mjk4MWRlZTUwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9UZXN0UnVubmVyUXQuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVy
UXQuaApAQCAtMjQ4LDcgKzI0OCw2IEBAIHB1YmxpYyBRX1NMT1RTOgogICAgIHZvaWQgc2V0U2Ny
b2xsYmFyUG9saWN5KGNvbnN0IFFTdHJpbmcmIG9yaWVudGF0aW9uLCBjb25zdCBRU3RyaW5nJiBw
b2xpY3kpOwogCiAgICAgUVN0cmluZyBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oY29uc3QgUVdlYkVs
ZW1lbnQmIGxpc3RJdGVtKTsKLSAgICBRVmFyaWFudE1hcCBjb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm8oY29uc3QgUVdlYkVsZW1lbnQmKSBjb25zdDsKIAogICAgIC8vIFNpbXVsYXRl
IGEgcmVxdWVzdCBhbiBlbWJlZGRpbmcgYXBwbGljYXRpb24gY291bGQgbWFrZSwgcG9wdWxhdGlu
ZyBwZXItc2Vzc2lvbiBjcmVkZW50aWFsIHN0b3JhZ2UuCiAgICAgdm9pZCBhdXRoZW50aWNhdGVT
ZXNzaW9uKGNvbnN0IFFTdHJpbmcmIHVybCwgY29uc3QgUVN0cmluZyYgdXNlcm5hbWUsIGNvbnN0
IFFTdHJpbmcmIHBhc3N3b3JkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9UZXN0UnVubmVyV2luLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVy
V2luLmNwcAppbmRleCA0YTBiNzg3YWI4NzU5MGI1YjgwNjI1YWVmOWQyM2M5NmUwZTk4ZjczLi4z
ZTM5YTQ5NDcxMzY5N2U1NTM1YTRjMWFkOTk2Yzg1YzNjYmNjYWYwIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCkBAIC0xNjAsMTIgKzE2MCw2IEBAIHZvaWQg
VGVzdFJ1bm5lcjo6a2VlcFdlYkhpc3RvcnkoKQogICAgIGhpc3RvcnktPnNldE9wdGlvbmFsU2hh
cmVkSGlzdG9yeShzaGFyZWRIaXN0b3J5LmdldCgpKTsKIH0KIAotSlNWYWx1ZVJlZiBUZXN0UnVu
bmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgot
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLX0KLQogSlNSZXRhaW5Q
dHI8SlNTdHJpbmdSZWY+IFRlc3RSdW5uZXI6Om1hcmtlclRleHRGb3JMaXN0SXRlbShKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KSBjb25zdAogewogICAgIENPTVB0
cjxJV2ViVmlldz4gd2ViVmlldzsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3d4
L1Rlc3RSdW5uZXJXeC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3gu
Y3BwCmluZGV4IGIxYzQ1YzQzMGI2NzM3YWQ3MDAwMDQ0MTE5ODIzOTVkMTZlMWEzMDkuLjM3ZmE4
YTgxYjA5ODExNDllN2I2NWY5NGYxNzM1YjlkNjU1MjBlZTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvd3gvVGVzdFJ1bm5lcld4LmNwcApAQCAtNDYzLDExICs0NjMsNiBAQCBKU1JldGFpblB0cjxK
U1N0cmluZ1JlZj4gVGVzdFJ1bm5lcjo6bWFya2VyVGV4dEZvckxpc3RJdGVtKEpTQ29udGV4dFJl
ZiBjb250ZXh0LAogICAgIHJldHVybiAwOwogfQogCi1KU1ZhbHVlUmVmIFRlc3RSdW5uZXI6OmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYp
Ci17Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6YXV0aGVudGljYXRlU2Vz
c2lvbihKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVmKQogewogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvVGVzdFJ1bm5lci5pZGwKaW5kZXggMjQyZjVhYmU2Y2M3Y2QzOWVhMjljMzU5ZmMwNjYwY2Zi
ODk1MzRiYi4uN2Q5MTFhNDhlNWQxYjY5MmJhYzMzYWRjMTllMGU5ZDBmY2VkMjkwOCAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsCkBAIC03NCw3ICs3NCw2IEBAIGludGVyZmFjZSBUZXN0UnVu
bmVyIHsKIAogICAgIC8vIFNwZWNpYWwgRE9NIGZ1bmN0aW9ucy4KICAgICB2b2lkIGNsZWFyQmFj
a0ZvcndhcmRMaXN0KCk7Ci0gICAgb2JqZWN0IGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVk
SW5mbyhpbiBvYmplY3QgZWxlbWVudCk7CiAgICAgdm9pZCBleGVjQ29tbWFuZChpbiBET01TdHJp
bmcgbmFtZSwgaW4gRE9NU3RyaW5nIGFyZ3VtZW50KTsKICAgICBib29sZWFuIGlzQ29tbWFuZEVu
YWJsZWQoaW4gRE9NU3RyaW5nIG5hbWUpOwogICAgIERPTVN0cmluZyBtYXJrZXJUZXh0Rm9yTGlz
dEl0ZW0oaW4gb2JqZWN0IGVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggYWUxODE3NmJiMWEyNjIyYmY1
ODM2YjdmM2Y3OGFkODdlZWExZmM5NS4uMTQ5ZTJjN2U4YjU1MGJlYmUxMDM0ZTEyMzg3MzZkNzhj
MzNkMjc3YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC0xOTAsMTkgKzE5MCw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
a2VlcFdlYkhpc3RvcnkoKQogICAgIFdLQnVuZGxlU2V0U2hvdWxkVHJhY2tWaXNpdGVkTGlua3Mo
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmJ1bmRsZSgpLCB0cnVlKTsKIH0KIAotSlNWYWx1ZVJl
ZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNWYWx1ZVJl
ZiBlbGVtZW50KQotewotICAgIC8vIEZJWE1FOiBJcyBpdCBPSyB0aGlzIHdvcmtzIG9ubHkgZm9y
IHRoZSBtYWluIGZyYW1lPwotICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5k
bGVQYWdlR2V0TWFpbkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2Uo
KSk7Ci0gICAgSlNDb250ZXh0UmVmIGNvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlw
dENvbnRleHQobWFpbkZyYW1lKTsKLSAgICBpZiAoIUpTVmFsdWVJc09iamVjdChjb250ZXh0LCBl
bGVtZW50KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwot
ICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBXS0J1bmRsZUZyYW1lR2V0Q29tcHV0ZWRTdHlsZUluY2x1
ZGluZ1Zpc2l0ZWRJbmZvKG1haW5GcmFtZSwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZWxlbWVu
dCkpOwotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKLSAgICByZXR1cm4gdmFsdWU7Ci19Ci0KIEpTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBUZXN0UnVubmVyOjptYXJrZXJUZXh0Rm9yTGlzdEl0ZW0oSlNWYWx1ZVJlZiBlbGVtZW50
KQogewogICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFp
bkZyYW1lKEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4
IGNkYTYxYWE0YzE3MjMwNDBhOGVmMDkxOTFhZTZjMWNlOGRiYjcwYjUuLjUyM2E5Yjc2YWJlYmE5
ZmYyMTRmODM1NmFmYmZiNDBlMDk4OTQzNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0xMTcsNyArMTE3LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChpbnQpOwogCiAgICAgLy8gU3BlY2lhbCBET00g
ZnVuY3Rpb25zLgotICAgIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJ
bmZvKEpTVmFsdWVSZWYgZWxlbWVudCk7CiAgICAgdm9pZCBjbGVhckJhY2tGb3J3YXJkTGlzdCgp
OwogICAgIHZvaWQgZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYgbmFtZSwgSlNTdHJpbmdSZWYgYXJn
dW1lbnQpOwogICAgIGJvb2wgaXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBuYW1lKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCBlYzkwMDJjZWZhZTMwZDFlNzNkMjBmY2UxNjJjNDIyMmNhNDZkNWU3Li5hYmRlYTc4Mzg2
MGRlYjUyZDcyZDU3OGUyMzFmYmNhMTY3ODUyNzQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIw
MTMtMDItMjcgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJvbSBUZXN0UnVubmVy
IHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVXBkYXRlIHRoZSB0ZXN0cy4KKworICAgICAgICAqIGZhc3QvaGlzdG9yeS9tdWx0aXBs
ZS1jbGFzc2VzLXZpc2l0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3RvcnkvbmVzdGVkLXZp
c2l0ZWQtdGVzdC5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zZWxmLWlzLXZpc2l0ZWQu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QuaHRtbDoK
KyAgICAgICAgKiBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3Mt
dmlzaXRlZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOiB1
bnNraXAgdGhlIHRlc3RzLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTMtMDItMjcgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgcGx1Z2lucy9uZXRzY2FwZS1wbHVnaW4tc2V0d2luZG93LXNpemUqLmh0
bWwgYW5kIHBsdWdpbnMvcGFzcy1kaWZmZXJlbnQtbnBwLXN0cnVjdC5odG1sIHNob3VsZCBiZSBh
c3luYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L211bHRpcGxlLWNsYXNz
ZXMtdmlzaXRlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L211bHRpcGxlLWNsYXNz
ZXMtdmlzaXRlZC5odG1sCmluZGV4IDgxZmUyNDhjODA3NmI2Zjg0OTJhMzFjOTJhNDBhYzlkNzNl
ZDRkOWMuLjcwYzRhYjFlNzlhNzNlMzJhOTRjODcyMWIxZTExNTI3N2VhMzFlMmUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbXVsdGlwbGUtY2xhc3Nlcy12aXNpdGVk
Lmh0bWwKQEAgLTksOSArOSw5IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIAogZnVuY3Rpb24g
Y29tcGFyZVN0eWxlcygpCiB7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAg
IGZpcnN0U3R5bGUgPSB0ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5m
byhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJykpOwotICAgICAgICBzZWNvbmRTdHlsZSA9
IHRlc3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0d28nKSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAg
ICAgZmlyc3RTdHlsZSA9IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKKyAgICAgICAgc2Vjb25kU3R5bGUg
PSBpbnRlcm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCd0d28nKSk7CiAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCdmaXJzdFN0
eWxlLmNvbG9yJywgJ3NlY29uZFN0eWxlLmNvbG9yJywgZmluaXNoSlNUZXN0KTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVz
dC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRlc3QuaHRt
bAppbmRleCA4MGRkNjBiOWJjNmMwMWQ5NmQ1Y2U2NTc3NThlMTM4ZmVmZjRiN2UwLi45OTUzMTBh
NjE4YzY0MDcxMmY0NzYyNTQ4NzhkNzliN2RjZTQxNWE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVzdC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvaGlzdG9yeS9uZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWwKQEAgLTE1LDkgKzE1LDkgQEAg
ZnVuY3Rpb24gY29tcGFyZVN0eWxlcygpCiAgICAgYW5jaG9yLmlubmVySFRNTCA9ICJPbmUiOwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlbmNsb3N1cmUnKS5hcHBlbmRDaGlsZChhbmNo
b3IpOwogCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIGZpcnN0U3R5bGUg
PSB0ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnb25lJykpOwotICAgICAgICBzZWNvbmRTdHlsZSA9IHRlc3RSdW5uZXIu
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0d28nKSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgZmlyc3RTdHls
ZSA9IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKKyAgICAgICAgc2Vjb25kU3R5bGUgPSBpbnRlcm5hbHMu
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCd0d28nKSk7CiAgICAgICAgIHNob3VsZEJlY29tZURpZmZlcmVudCgnZmlyc3RTdHlsZS5jb2xv
cicsICdzZWNvbmRTdHlsZS5jb2xvcicsIGZpbmlzaEpTVGVzdCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sCmluZGV4IGVhOThjNmJj
ZDA1NWMzOTMyNjcwNzZmYTExNzdiNDliNzNkOGQ1Y2QuLjNlNDZiZmE5Yjk3NjI3MmExMTBmOTA1
YWQyNjFjYWQzMGQwYjUzY2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9z
ZWxmLWlzLXZpc2l0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2VsZi1p
cy12aXNpdGVkLmh0bWwKQEAgLTksOSArOSw5IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIAog
ZnVuY3Rpb24gY29tcGFyZVN0eWxlcygpCiB7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0gICAgICAgIGZpcnN0U3R5bGUgPSB0ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdW
aXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb25lJykpOwotICAgICAgICBzZWNv
bmRTdHlsZSA9IHRlc3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMp
IHsKKyAgICAgICAgZmlyc3RTdHlsZSA9IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKKyAgICAgICAgc2Vj
b25kU3R5bGUgPSBpbnRlcm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd0d28nKSk7CiAgICAgICAgIHNob3VsZEJlY29tZURpZmZl
cmVudCgnZmlyc3RTdHlsZS5jb2xvcicsICdzZWNvbmRTdHlsZS5jb2xvcicsIGZ1bmN0aW9uKCkg
ewogICAgICAgICAgICAgc2hvdWxkQmVjb21lRGlmZmVyZW50KCdmaXJzdFN0eWxlLmJhY2tncm91
bmRDb2xvcicsICdzZWNvbmRTdHlsZS5iYWNrZ3JvdW5kQ29sb3InLCBmaW5pc2hKU1Rlc3QpOwog
ICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zaWJsaW5n
LXZpc2l0ZWQtdGVzdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NpYmxpbmctdmlz
aXRlZC10ZXN0Lmh0bWwKaW5kZXggN2M5OWUwYjQ3M2VhZjY1ZTJkZGUyNWQ1MTlhZDlkZGY2YmFh
MjA2Zi4uMjBkNzA2NGI2YWM3MGQ1OTkyMzY5MGJkZmYzZjIyZjI3Mjk4YjBhYyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NpYmxpbmctdmlzaXRlZC10ZXN0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NpYmxpbmctdmlzaXRlZC10ZXN0Lmh0bWwKQEAg
LTksOSArOSw5IEBAIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKIAogZnVuY3Rpb24gY29tcGFyZVN0
eWxlcygpCiB7Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIGZpcnN0U3R5
bGUgPSB0ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnb25lJykpOwotICAgICAgICBzZWNvbmRTdHlsZSA9IHRlc3RSdW5u
ZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0d28nKSk7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgZmlyc3RT
dHlsZSA9IGludGVybmFscy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsKKyAgICAgICAgc2Vjb25kU3R5bGUgPSBpbnRlcm5h
bHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0d28nKSk7CiAgICAgICAgIHNob3VsZEJlY29tZURpZmZlcmVudCgnZmlyc3RTdHlsZS5j
b2xvcicsICdzZWNvbmRTdHlsZS5jb2xvcicsIGZpbmlzaEpTVGVzdCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLXVybC1z
ZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2Jq
ZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVkLmh0bWwKaW5kZXggNjIxMmUwM2U4YTYw
ODA4NmJmYmI5NzkyZmViMmNkODBjYzk4NjU2My4uYzNmOTFiYWRlMWFlZjVhNGMwOTNkMWQ3NmUx
ZDQzOGY2MThjNmJjYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVv
YmplY3RzL3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlua3MtdmlzaXRlZC5o
dG1sCkBAIC0xNCw5ICsxNCw5IEBAIGZ1bmN0aW9uIGxvYWRlZCgpCiAgICAgd2luZG93Lmhpc3Rv
cnkucmVwbGFjZVN0YXRlKG51bGwsICJUaXRsZSIsICJyZXBsYWNlZFVSTC5odG1sIik7CiAgICAg
d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKG51bGwsICJUaXRsZSIsICJwdXNoZWRVUkwuaHRtbCIp
OwogCi0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHN0eWxlMSA9IHRlc3RS
dW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdsaW5rMScpKTsKLSAgICAgICAgc3R5bGUyID0gdGVzdFJ1bm5lci5jb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmsyJykp
OworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHN0eWxlMSA9IGludGVybmFs
cy5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xpbmsxJykpOworICAgICAgICBzdHlsZTIgPSBpbnRlcm5hbHMuY29tcHV0ZWRTdHlsZUlu
Y2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rMicpKTsKIAog
ICAgICAgICAvLyBUaGUgc3R5bGUgaXMgbm90IG5lY2Vzc2FyaWx5IHVwZGF0ZWQgc3luY2hyb25v
dXNseSBpbiByZXNwb25zZSB0byBoaXN0b3J5LnJlcGxhY2VTdGF0ZSBhbmQgaGlzdG9yeS5wdXNo
U3RhdGUuCiAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsVG9TdHJpbmcoInN0eWxlMS5jb2xvciIs
ICJyZ2IoMjU1LCAxNjUsIDApIiwgZnVuY3Rpb24oKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBkYTU4MzUwMjYxMGU1MWQxZDI2MmYz
MTYyOWI1Y2QzYWNiZWFmNGJiLi42YzZjMDk5YjQ5MzRmZDE2MDE1NTAzM2YzYjgzOWY0MzlmZmU5
MThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTIyMjQsMTUgKzIyMjQsMTQgQEAgd2Via2l0Lm9yZy9iLzM2NjY2IHN0b3JhZ2Uvd2Vi
c3FsL29wZW4tZGF0YWJhc2Utb3Zlci1xdW90YS5odG1sIFsgRmFpbHVyZSBdCiAKIHdlYmtpdC5v
cmcvYi8zNzI4MyBmYXN0L292ZXJmbG93L3Njcm9sbGJhci1yZXN0b3JlZC1hbmQtdGhlbi1sb2Nr
ZWQuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2IvMzcyOTcgZmFzdC9oaXN0b3J5L25l
c3RlZC12aXNpdGVkLXRlc3QuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBdCi13ZWJraXQub3JnL2Iv
MzcyOTcgZmFzdC9oaXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sIFsgRmFpbHVyZSBUaW1lb3V0
IF0KLXdlYmtpdC5vcmcvYi8zNzI5NyBmYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3Qu
aHRtbCBbIEZhaWx1cmUgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMzcyOTcgZmFzdC9sb2FkZXIv
c3RhdGVvYmplY3RzL3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbCBbIEZhaWx1cmUg
VGltZW91dCBdCi13ZWJraXQub3JnL2IvNTgwMDAgWyBNYWMgQW5kcm9pZCBdIGZhc3QvaGlzdG9y
eS92aXNpdGVkLWxpbmstYmFja2dyb3VuZC1jb2xvci5odG1sIFsgRmFpbHVyZSBdCi0KLSMgQWRk
ZWQgaW4gaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTc0NzYuIEZhaWxzIGluIENo
cm9taXVtIGJlY2F1c2UKLSMgTGF5b3V0VGVzdENvbnRyb2xsZXI6OmNvbXB1dGVkU3R5bGVXaXRo
VmlzaXRlZEluZm8oKSBpcyBtaXNzaW5nLgotY3JidWcuY29tLzQxMjA2IGZhc3QvaGlzdG9yeS9t
dWx0aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBdCisjIENocm9t
aXVtIER1bXBSZW5kZXJUcmVlIGRvZXMgbm90IGhhdmUgc3VwcG9ydCBmb3IgdmlzaXRlZCBsaW5r
cy4KKyMgSXQgYWx3YXlzIHJldHVybiBmYWxzZSBpbiByZXNwb25zZSB0byBpc0xpbmtWaXNpdGVk
KCkuCit3ZWJraXQub3JnL2IvMTExMDMxIGZhc3QvaGlzdG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZp
c2l0ZWQuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzExMTAzMSBmYXN0L2hpc3Rvcnkv
bmVzdGVkLXZpc2l0ZWQtdGVzdC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTExMDMx
IGZhc3QvaGlzdG9yeS9zZWxmLWlzLXZpc2l0ZWQuaHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzExMTAzMSBmYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QuaHRtbCBbIEZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzExMTAzMSBmYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUt
dXJsLXNldHMtbGlua3MtdmlzaXRlZC5odG1sIFsgRmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTEx
MDMxIFsgTWFjIEFuZHJvaWQgXSBmYXN0L2hpc3RvcnkvdmlzaXRlZC1saW5rLWJhY2tncm91bmQt
Y29sb3IuaHRtbCBbIEZhaWx1cmUgXQogCiAjIFRlc3RzIHRoYXQgd29yayB3aXRoIEtVUkwsIGJ1
dCBmYWlsIHdpdGggR1VSTAogd2Via2l0Lm9yZy9iLzcxNzU4IGZhc3QvdXJsL2ludmFsaWQtdXJs
cy11dGY4Lmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggMjE5NDE0MDZlNTE1N2YwNjRlNmM0Y2Q4YmYzYWFkYTBlMDEwYmIzYS4u
YTI0N2NlMGRiMTcyYjAzN2IwMWIwZDYwMWJlNTEwZGZkMzJmYjI0ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTkyNCwxMiArOTI0LDYgQEAgZmFzdC9q
cy9jb25zdHJ1Y3Rvci1sZW5ndGguaHRtbAogIyBOZWVkIHRvIGFkZCBmdW5jdGlvbmFsaXR5IHRv
IER1bXBSZW5kZXJUcmVlIHRvIGhhbmRsZSBlcnJvciBwYWdlcwogZmFzdC9oaXN0b3J5L2JhY2st
Zm9yd2FyZC1yZXNldC1hZnRlci1lcnJvci1oYW5kbGluZy5odG1sCiAKLSMgTmVlZCB0byBpbXBs
ZW1lbnQgY29tcHV0ZWRTdHlsZVdpdGhWaXNpdGVkSW5mbwotZmFzdC9oaXN0b3J5L211bHRpcGxl
LWNsYXNzZXMtdmlzaXRlZC5odG1sCi1mYXN0L2hpc3RvcnkvbmVzdGVkLXZpc2l0ZWQtdGVzdC5o
dG1sCi1mYXN0L2hpc3Rvcnkvc2VsZi1pcy12aXNpdGVkLmh0bWwKLWZhc3QvaGlzdG9yeS9zaWJs
aW5nLXZpc2l0ZWQtdGVzdC5odG1sCi0KICMgQUNDRUxFUkFURURfQ09NUE9TSVRJTkcgdGVzdHMg
dGhhdCBoYXZlIGluY29ycmVjdCBsYXlvdXQKIGNvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLWJhY2tn
cm91bmQtY29sb3IuaHRtbAogY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtcmVmbGVjdGlvbi5odG1s
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191096</attachid>
            <date>2013-03-01 22:06:29 -0800</date>
            <delta_ts>2013-03-01 22:06:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109772-20130301220240.patch</filename>
            <type>text/plain</type>
            <size>47687</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0NTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QxMTk2ZmFjNzZjZTUx
ODZjY2MwYjUzODk3YWM5ZTJjOGJkZjdlZC4uYjZjMDdhNjE2OGI2ZWQ1ODQyYTJkYTU1ZjVlMWEw
OTU5ZjEyODZjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAzLTAxICBCZW5q
YW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisgICAgICAgIE1vdmUgY29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTc3Mgor
CisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVGhlIGZ1bmN0
aW9uIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbygpIGlzIHB1cmVseSBpbnRlcm5h
bCB0byBXZWJDb3JlLAorICAgICAgICBpdCBpcyBiZXR0ZXIgZGVmaW5lZCBvbiBJbnRlcm5hbHMg
dGhhbiBvbiBUZXN0UnVubmVyLgorCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRl
ZEluZm8pOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmg6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsOgorCiAyMDEzLTAzLTAxICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xv
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOYXRpdmUgTWVtb3J5IElu
c3RydW1lbnRhdGlvbjogZG8gbm90IHZpc2l0IHJhdyBwb2ludGVycyBieSBkZWZhdWx0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggZTU5NTY1YjMwY2E2YTcwMWM2ZDkzMGYxZjUx
NjhjNGQyMjg3YTE0MC4uNGFlNjExNWMyN2FiZTUzMTM3MDY3ZDJiOWQ0NTU1YmVlN2E3Y2RhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDMt
MDEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92
ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJvbSBUZXN0UnVubmVyIHRvIElu
dGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAq
IFdlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcDoKKyAgICAgICAgKiBXZWJL
aXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oOgorICAgICAgICAoRHVtcFJlbmRlclRy
ZWVTdXBwb3J0KToKKwogMjAxMy0wMy0wMSAgSXJpcyBXdSAgPHNodXd1QHJpbS5jb20+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIFVwc3RyZWFtIHNtYXJ0IHNlbGVjdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CmluZGV4IDJmMjMzMmVjYzg2YWE4OTk0M2U5YWIwN2RlZTI5MmVhZWFmNjgxMGQuLjkyNTNmYjc1
MDFkMzAzNGY0YzgwY2NkMDJhOTM3MzYwM2QwNTMyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMy0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyBm
cm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFz
IEtsaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuaDoKKwogMjAxMy0wMy0wMSAgSmFzb24gQW5kZXJzc2VuICA8amFuZGVyc3NlbkBnbWFpbC5j
b20+CiAKICAgICAgICAgTW92ZSBtYXJrZXJUZXh0Rm9yTGlzdEl0ZW0gZnJvbSBUZXN0UnVubmVy
IHRvIEludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGRmZTc3ZTQ3NWI5ZGFmMzEyNmE5NzUz
Yjc4MmIxYzdjZTU3Y2IzMGIuLmZmOWI5NDUyZDVkZjRlNmNiN2EzODJjY2Q0NmZiMjZhYzIwYTlj
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMy0wMSAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0ayk6CisKIDIwMTMtMDMtMDEgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5A
Z21haWwuY29tPgogCiAgICAgICAgIE1vdmUgbWFya2VyVGV4dEZvckxpc3RJdGVtIGZyb20gVGVz
dFJ1bm5lciB0byBJbnRlcm5hbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA0NzE2MDYyNWEwMzEzZWE2
YTYwY2Y5Mzc1NTQxMTUyMGZlOTE5YzA2Li41YTMzMTgwMWMwN2Y4ZDViMzgyNjM0MWNmYzE4OGIz
MmI1NzU2MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMDEg
IEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBj
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJvbSBUZXN0UnVubmVyIHRvIEludGVy
bmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5
NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisK
IDIwMTMtMDMtMDEgIEphc29uIEFuZGVyc3NlbiAgPGphbmRlcnNzZW5AZ21haWwuY29tPgogCiAg
ICAgICAgIE1vdmUgbWFya2VyVGV4dEZvckxpc3RJdGVtIGZyb20gVGVzdFJ1bm5lciB0byBJbnRl
cm5hbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZTBjZjg0MGEzNWU4ZmNkNGNhOGY3ODdhYmM0MGJiYmYx
ZTZhODM3ZS4uMzJkNzE2NTExYjU5YWVhMjAyZmY2MTQ5ZjI5ODc5MjBmMDJiY2ZiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0wMSAgQmVuamFtaW4gUG91bGFpbiAg
PGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyBmcm9tIFRlc3RSdW5uZXIgdG8gSW50ZXJuYWxzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk3NzIKKworICAgICAgICBSZXZp
ZXdlZCBieSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0Lmg6CisKIDIwMTMtMDMtMDEgIEphc29uIEFuZGVyc3NlbiAgPGphbmRl
cnNzZW5AZ21haWwuY29tPgogCiAgICAgICAgIE1vdmUgbWFya2VyVGV4dEZvckxpc3RJdGVtIGZy
b20gVGVzdFJ1bm5lciB0byBJbnRlcm5hbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjOGNmMThiNzM5ZGNkOThk
MzhlMzlkYjVkNDlhMTQ3OTBmN2UyNzA1Li4wMDI0ZmFhYWRiOTJmNTZmNzYwYjA2OTQ2OTY4M2Y1
ZDhkMWM1YjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDMtMDEgIEJlbmph
bWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBjb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8gZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVhcyBLbGluZy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgIChXZWJGcmFtZSk6CisKIDIwMTMtMDMt
MDEgIEtpcmFuIE11cHBhbGEgIDxjbXVwcGFsYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGNhbGwgdG8gc2V0IHRhc2sgcHJpb3JpdHkgb2YgV2ViS2l0MiBwcm9jZXNzZXMgb24gTWFjCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZjFhMTUzYjA4OWM4YWQwNjhiM2Iw
MWI3ODBiMzkwY2Y0OGZjNjA5Yi4uM2RkZWZmN2ZhMDE3MDljNWM3ZTA2YjAyYzZiNWZlMmFmZTk3
MDE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1OSw2ICs2NjAsMTcgQEAgc2l6
ZV90IEludGVybmFsczo6bnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihjb25zdCBOb2Rl
KiBzY29wZSwgRXhjZXB0aW9uQ28KICAgICByZXR1cm4gMDsKIH0KIAorUGFzc1JlZlB0cjxDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IEludGVybmFsczo6Y29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAoreworICAg
IGlmICghbm9kZSkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCisgICAgYm9vbCBhbGxvd1Zpc2l0ZWRTdHlsZSA9IHRydWU7Cisg
ICAgcmV0dXJuIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKG5vZGUsIGFsbG93
VmlzaXRlZFN0eWxlKTsKK30KKwogSW50ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFi
bGVkT3JOb2RlKiBJbnRlcm5hbHM6OmVuc3VyZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFob3N0KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaAppbmRleCAwZTY1ODgxYzRlYzg4ZGNkNjQ5ZmU2ZGI0MGM3Yjg2ZTZhYWJmYmU3Li40
YTI2YTk1MTY1ZmVhYmVhN2U4Y2IzNDU2ZDZlMjczNDk4NmVjZDg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgSW50ZXJuYWxzX2gKICNk
ZWZpbmUgSW50ZXJuYWxzX2gKIAorI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5oIgogI2luY2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKQEAgLTc2
LDYgKzc3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKGNv
bnN0IFN0cmluZyYgdXJsKTsKIAogICAgIHNpemVfdCBudW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNo
aWxkcmVuKGNvbnN0IE5vZGUqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNp
dGVkSW5mbyhOb2RlKiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFNIQURP
V19ET00pCiAgICAgdHlwZWRlZiBTaGFkb3dSb290IFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJs
ZWRPck5vZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKaW5kZXggNmY1ODU2MDI1
N2U3NGEzYjFhZjIwNGU3MTFiZGM4MDAxMmM0Yzc5My4uMjBiY2M2ODZkODQxNDFlYjNmNWE2M2Nj
NWRmODRiZjE5MjQwYjU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAt
MzQsNiArMzQsNyBAQAogICAgIGJvb2xlYW4gaXNMb2FkaW5nRnJvbU1lbW9yeUNhY2hlKGluIERP
TVN0cmluZyB1cmwpOwogCiAgICAgdW5zaWduZWQgbG9uZyBudW1iZXJPZlNjb3BlZEhUTUxTdHls
ZUNoaWxkcmVuKGluIE5vZGUgc2NvcGUpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIENTU1N0
eWxlRGVjbGFyYXRpb24gY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGluIE5vZGUg
bm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9TSEFET1df
RE9NKSAmJiBFTkFCTEVfU0hBRE9XX0RPTQogICAgIFNoYWRvd1Jvb3QgZW5zdXJlU2hhZG93Um9v
dChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuY3BwCmluZGV4IDQ0YjM2Yzg2OGNjNjM0MjdhZDgyOThmNzMzZTI5YzExODk1
MjBhODQuLjgyOTlhNWQxN2ZhZTE2ZjllZjNhMWFhNmYxZTc0MWI2NGRjZjU3MDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcApAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkR1bXBSZW5kZXJUcmVlU3VwcG9ydC5oIgogCi0jaW5jbHVkZSAi
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiRGV2aWNlT3JpZW50YXRpb25EYXRhLmgiCkBAIC0xMjIsMjEgKzEyMSw2IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzY2FsZVBhZ2VCeShXZWJQYWdlKiB3ZWJQYWdl
LCBmbG9hdCBzY2FsZUZhY3RvciwgZmxvCiAgICAgY29yZVBhZ2Uod2ViUGFnZSktPnNldFBhZ2VT
Y2FsZUZhY3RvcihzY2FsZUZhY3RvciwgSW50UG9pbnQoeCwgeSkpOwogfQogCi1KU1ZhbHVlUmVm
IER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZv
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2soZXhlYyk7Ci0g
ICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwotICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwotICAgIGlmICgh
anNWYWx1ZS5pbmhlcml0cygmSlNFbGVtZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0gICAgSlNFbGVtZW50KiBqc0VsZW1lbnQgPSBz
dGF0aWNfY2FzdDxKU0VsZW1lbnQqPihhc09iamVjdChqc1ZhbHVlKSk7Ci0gICAgRWxlbWVudCog
ZWxlbWVudCA9IGpzRWxlbWVudC0+aW1wbCgpOwotICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUo
ZWxlbWVudCwgdHJ1ZSk7Ci0gICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywganNFbGVt
ZW50LT5nbG9iYWxPYmplY3QoKSwgc3R5bGUuZ2V0KCkpKTsKLX0KLQogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIHRvRGV2aWNlT3Jp
ZW50YXRpb25DbGllbnRNb2NrKERldmljZU9yaWVudGF0aW9uQ2xpZW50KiBjbGllbnQpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnQuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oCmluZGV4IGEzMDA2MmZkYTZhMmE0MmQ1MDljOTAxZGEy
OGY5OTQ5MGFlYzIzOTAuLmM1MjI4ZTExNTYxYWU3MGNkMDdiNjk3MDcyZmNhNjRmOTQzMGMzOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5oCkBAIC01OCw3ICs1OCw2IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3NpdGlvbihCbGFja0JlcnJ5OjpX
ZWJLaXQ6OldlYlBhZ2UqLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJs
ZSBhY2N1cmFjeSwgYm9vbCBwcm92aWRlc0FsdGl0dWRlLCBkb3VibGUgYWx0aXR1ZGUsIGJvb2wg
cHJvdmlkZXNBbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgYm9vbCBw
cm92aWRlc0hlYWRpbmcsIGRvdWJsZSBoZWFkaW5nLCBib29sIHByb3ZpZGVzU3BlZWQsIGRvdWJs
ZSBzcGVlZCk7CiAgICAgc3RhdGljIHZvaWQgc2V0TW9ja0RldmljZU9yaWVudGF0aW9uKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZSosIGJvb2wgY2FuUHJvdmlkZUFscGhhLCBkb3VibGUgYWxw
aGEsIGJvb2wgY2FuUHJvdmlkZUJldGEsIGRvdWJsZSBiZXRhLCBib29sIGNhblByb3ZpZGVHYW1t
YSwgZG91YmxlIGdhbW1hKTsKICAgICBzdGF0aWMgdm9pZCBzY2FsZVBhZ2VCeShCbGFja0JlcnJ5
OjpXZWJLaXQ6OldlYlBhZ2UqLCBmbG9hdCwgZmxvYXQsIGZsb2F0KTsKLSAgICBzdGF0aWMgSlNW
YWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmLCBK
U1ZhbHVlUmVmKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzX2xpbmtzSW5jbHVkZWRJ
blRhYkNoYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggMGNjOTI2NDc5MmU4ODli
NDBmYTA4YjBmYjQ1NjgyM2Q3N2UxNGUzMy4uMmU2ZWYxZmQ4OTQ5NTM0ZWQ0MzdlYzY2OTgzMmVi
MjU4NGRlYmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0zMCw3ICszMCw2IEBA
CiAKICNpbmNsdWRlIDxBUElDYXN0Lmg+CiAjaW5jbHVkZSA8QW5pbWF0aW9uQ29udHJvbGxlci5o
PgotI2luY2x1ZGUgPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oPgogI2luY2x1ZGUgPERv
Y3VtZW50TG9hZGVyLmg+CiAjaW5jbHVkZSA8RWRpdG9yQ2xpZW50RWZsLmg+CiAjaW5jbHVkZSA8
RWluYS5oPgpAQCAtNTU1LDIyICs1NTQsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24oRXZhc19PYmplYwogICAg
IHBhZ2UtPnNldHRpbmdzKCktPnNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9u
KHZhbHVlKTsKIH0KIAotSlNWYWx1ZVJlZiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OmNvbXB1
dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiB2YWx1ZSkKLXsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMo
Y29udGV4dCk7Ci0gICAgSlNDOjpKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsK
LSAgICBpZiAoIWpzVmFsdWUuaW5oZXJpdHMoJldlYkNvcmU6OkpTRWxlbWVudDo6c19pbmZvKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgV2Vi
Q29yZTo6SlNFbGVtZW50KiBqc0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpKU0VsZW1l
bnQqPihhc09iamVjdChqc1ZhbHVlKSk7Ci0gICAgV2ViQ29yZTo6RWxlbWVudCogZWxlbWVudCA9
IGpzRWxlbWVudC0+aW1wbCgpOwotICAgIFJlZlB0cjxXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24+IHN0eWxlID0gV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
OjpjcmVhdGUoZWxlbWVudCwgdHJ1ZSk7Ci0gICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMoZXhl
YywganNFbGVtZW50LT5nbG9iYWxPYmplY3QoKSwgc3R5bGUuZ2V0KCkpKTsKLX0KLQogdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQpCiB7CiAgICAgRFJUX1NVUFBSVF9QQUdF
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgcGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuaCBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCmluZGV4
IGZhNjIyYmEzMzJjMTBlOWQ2YzMxYjM1NDJkNGQwMmM3OGUzMjUwZjEuLmQ4ZmYzZTU2ZmM5Zjhi
MzZmOTQyYTgwNDZkYWRlNTA5MWRkMmZhNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oCkBAIC0x
MDksNyArMTA5LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRlbGl2ZXJBbGxNdXRhdGlv
bnNJZk5lY2Vzc2FyeSgpOwogICAgIHN0YXRpYyB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb25FbmFibGVkKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBib29sIGVuYWJsZWQpOwogICAgIHN0
YXRpYyB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBpbnQgdmFsdWUpOwotICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogICAg
IHN0YXRpYyB2b2lkIHNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBib29sKTsKICAgICBzdGF0aWMgdm9pZCBzZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0U2VyaWFsaXplSFRUUExvYWRzKGJvb2wpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAKaW5kZXggYWQ3Zjk2ZTY2ZWY4MDg4YzUyMDc4NmQ4MDFkYmMyZjFkMTI1ZThi
ZC4uY2U0OTM2Zjc5Mjk0ZjlkODBiNjZjMDc4MGE2ZmVjMjQ4MWMwMDdkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3Rr
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU9iamVjdC5oIgogI2luY2x1ZGUgIkFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJB
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkNocm9tZUNsaWVudEd0
ay5oIgogI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgpAQCAtNjk0LDIyICs2OTMsNiBAQCBi
b29sIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JF
bGVtZW50V2l0aElkKFdlYktpdFdlYgogICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzVGV4dEZp
ZWxkKCkgJiYgIWlucHV0RWxlbWVudC0+aXNQYXNzd29yZEZpZWxkKCkgJiYgaW5wdXRFbGVtZW50
LT5zaG91bGRBdXRvY29tcGxldGUoKTsKIH0KIAotSlNWYWx1ZVJlZiBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYg
Y29udGV4dCwgSlNWYWx1ZVJlZiBub2RlT2JqZWN0KQotewotICAgIEpTQzo6RXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjb250ZXh0KTsKLSAgICBpZiAoIW5vZGVPYmplY3QpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLQotICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgbm9kZU9iamVjdCk7Ci0gICAgaWYgKCFqc1ZhbHVlLmluaGVyaXRzKCZKU0Vs
ZW1lbnQ6OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKLQotICAgIEpTRWxlbWVudCoganNFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SlNFbGVtZW50
Kj4oYXNPYmplY3QoanNWYWx1ZSkpOwotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBqc0VsZW1lbnQt
PmltcGwoKTsKLSAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHRydWUpOwotICAg
IHJldHVybiB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGpzRWxlbWVudC0+Z2xvYmFsT2JqZWN0KCks
IHN0eWxlLmdldCgpKSk7Ci19Ci0KIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpkZWxp
dmVyQWxsTXV0YXRpb25zSWZOZWNlc3NhcnkoKQogewogICAgIE11dGF0aW9uT2JzZXJ2ZXI6OmRl
bGl2ZXJBbGxNdXRhdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5oIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKaW5kZXggNGRhZWNmZjE0
ZDk1YTBlZWM5YmY2MjE5NmJhY2Q5ZjUyMzFhN2Y0Mi4uMDljZTcyMjY0NGY1MmIxMGM1ZjU1ZGQ4
NmU4MDYyMjY0OTM1YmU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmgKQEAgLTcwLDcgKzcwLDYg
QEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldFZhbHVlRm9yVXNlcihKU0NvbnRleHRSZWYs
IEpTVmFsdWVSZWYsIEpTU3RyaW5nUmVmKTsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRDbG9zZShX
ZWJLaXRXZWJGcmFtZSopOwogICAgIHN0YXRpYyBib29sIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRl
Rm9yRWxlbWVudFdpdGhJZChXZWJLaXRXZWJGcmFtZSosIEpTU3RyaW5nUmVmKTsKLSAgICBzdGF0
aWMgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0
UmVmLCBKU1ZhbHVlUmVmKTsKIAogICAgIC8vIFdlYktpdFdlYlZpZXcKICAgICBzdGF0aWMgdm9p
ZCBleGVjdXRlQ29yZUNvbW1hbmRCeU5hbWUoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBu
YW1lLCBjb25zdCBnY2hhciogdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IGJkZDhhZTFkZjFiOTRlMGViN2ViMDNhMDMxMDFlNWJlNDhmNjQ1MGEuLjJjMWQ2YTMy
MTIwMzUyNzc3MDljZWRjMzdmY2I0NjdkZjhhYTg4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTExNiw3ICsxMTYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9y
d2FyZExpc3RJbXBsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL01lbW9yeUNhY2hlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0NvbG9yTWFjLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRGF0YWJhc2VNYW5hZ2VyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RvY3VtZW50Lmg+CkBAIC02
NzA4LDI1ICs2NzA3LDYgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25DYWxsYmFj
ayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIH0KIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQotCi0tIChKU1Zh
bHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZilj
b250ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUKLXsKLSAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGNvbnRleHQpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIGlm
ICghdmFsdWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
LSAgICBKU0M6OkpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwotICAgIGlmICgh
anNWYWx1ZS5pbmhlcml0cygmSlNFbGVtZW50OjpzX2luZm8pKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0gICAgSlNFbGVtZW50KiBqc0VsZW1lbnQgPSBz
dGF0aWNfY2FzdDxKU0VsZW1lbnQqPihhc09iamVjdChqc1ZhbHVlKSk7Ci0gICAgRWxlbWVudCog
ZWxlbWVudCA9IGpzRWxlbWVudC0+aW1wbCgpOwotICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUo
ZWxlbWVudCwgdHJ1ZSk7Ci0gICAgcmV0dXJuIHRvUmVmKGV4ZWMsIHRvSlMoZXhlYywganNFbGVt
ZW50LT5nbG9iYWxPYmplY3QoKSwgc3R5bGUuZ2V0KCkpKTsKLX0KLQotQGVuZAotCiBAaW1wbGVt
ZW50YXRpb24gV2ViVmlldyAoV2ViVmlld0Z1bGxTY3JlZW4pCiAKIC0gKE5TVmlldyopZnVsbFNj
cmVlblBsYWNlaG9sZGVyVmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IDNjY2QyNDU4ZTRhMjc1OGI3NWQwNTZmYjk4Y2M3ZDc1YWZmYzJhNzAuLjI0
NGYwZWIwNjIzZGQ2MmI5NjM3NjFhNTM4ZjEyMjdkN2RlYTkyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTc0NywxMCArNzQ3LDYgQEAgQ291bGQg
YmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh1aW50NjRfdClfbm90aWZpY2F0aW9uSURG
b3JUZXN0aW5nOihKU1ZhbHVlUmVmKWpzTm90aWZpY2F0aW9uOwogQGVuZAogCi1AaW50ZXJmYWNl
IFdlYlZpZXcgKFdlYlZpZXdQcml2YXRlU3R5bGVJbmZvKQotLSAoSlNWYWx1ZVJlZilfY29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvOihKU0NvbnRleHRSZWYpY29udGV4dCBmb3JFbGVt
ZW50OihKU1ZhbHVlUmVmKXZhbHVlOwotQGVuZAotCiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJW
aWV3RnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
c2VuZGVyIGRpZEZpcnN0TGF5b3V0SW5GcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcAppbmRleCA1MTAzZjlhYTc2NDEyNmM5YmNkZmRiOTc1YjJhY2YyYzQxNDBj
YjU2Li44YTRlMGVjYTg0MTVjNThhN2Y2Y2IwNzBmMzJlMDEyOTQxOTNmYzdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0LmNwcApAQCAtMjUsNyArMjUsNiBAQAogCiAjaW5jbHVkZSAiQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50UXQuaCIKICNpbmNs
dWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiQ29udGV4dE1lbnUuaCIKQEAgLTM3NSwz
OCArMzc0LDYgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6ZmluZFN0cmluZyhRV2Vi
UGFnZUFkYXB0ZXIgKmFkYXB0ZXIsIGNvbnN0IFFTdHJpbmcKICAgICByZXR1cm4gZnJhbWUgJiYg
ZnJhbWUtPmVkaXRvcigpLT5maW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucyk7CiB9CiAKLXN0YXRp
YyBRU3RyaW5nIGNvbnZlcnRUb1Byb3BlcnR5TmFtZShjb25zdCBRU3RyaW5nJiBuYW1lKQotewot
ICAgIFFTdHJpbmdMaXN0IHBhcnRzID0gbmFtZS5zcGxpdChRTGF0aW4xQ2hhcignLScpKTsKLSAg
ICBRU3RyaW5nIGNhbWVsQ2FzZU5hbWU7Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBwYXJ0cy5j
b3VudCgpOyArK2opIHsKLSAgICAgICAgUVN0cmluZyBwYXJ0ID0gcGFydHMuYXQoaik7Ci0gICAg
ICAgIGlmIChqKQotICAgICAgICAgICAgY2FtZWxDYXNlTmFtZS5hcHBlbmQocGFydC5yZXBsYWNl
KDAsIDEsIHBhcnQubGVmdCgxKS50b1VwcGVyKCkpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgY2FtZWxDYXNlTmFtZS5hcHBlbmQocGFydCk7Ci0gICAgfQotICAgIHJldHVybiBjYW1lbENh
c2VOYW1lOwotfQotCi1RVmFyaWFudE1hcCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Y29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGNvbnN0IFFXZWJFbGVtZW50JiBlbGVtZW50KQot
ewotICAgIFFWYXJpYW50TWFwIHJlczsKLQotICAgIFdlYkNvcmU6OkVsZW1lbnQqIHdlYkVsZW1l
bnQgPSBlbGVtZW50Lm1fZWxlbWVudDsKLSAgICBpZiAoIXdlYkVsZW1lbnQpCi0gICAgICAgIHJl
dHVybiByZXM7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uPiBjb21wdXRlZFN0eWxlRGVjbGFyYXRpb24gPSBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b246OmNyZWF0ZSh3ZWJFbGVtZW50LCB0cnVlKTsKLSAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkNTU1N0eWxlRGVjbGFyYXRpb24qPihjb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uZ2V0KCkpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
dHlsZS0+bGVuZ3RoKCk7IGkrKykgewotICAgICAgICBRU3RyaW5nIG5hbWUgPSBzdHlsZS0+aXRl
bShpKTsKLSAgICAgICAgUVN0cmluZyB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKG5h
bWUpOwotICAgICAgICByZXNbY29udmVydFRvUHJvcGVydHlOYW1lKG5hbWUpXSA9IFFWYXJpYW50
KHZhbHVlKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKLX0KLQogUVZhcmlhbnRMaXN0IER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpzZWxlY3RlZFJhbmdlKFFXZWJQYWdlQWRhcHRlciAqYWRhcHRl
cikKIHsKICAgICBXZWJDb3JlOjpGcmFtZSogZnJhbWUgPSBhZGFwdGVyLT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmggYi9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmgKaW5kZXgg
YWU0NjgwMDllZTY2MmIxNzY4M2MxOWIwM2Y1NWYyNGRkYTZjYzU5Yy4uMDk4MDllZjk3NjMxNzE0
Y2Y4OWU4MmYzYmRkZTQyYWRjMGViNDZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuaApAQCAtMTM5LDgg
KzEzOSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRNb2NrR2VvbG9jYXRpb25Qb3Np
dGlvblVuYXZhaWxhYmxlRXJyb3IoUVdlYlBhZ2VBZGFwdGVyKiwgY29uc3QgUVN0cmluZyYgbWVz
c2FnZSk7CiAgICAgc3RhdGljIGludCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0cyhRV2ViUGFnZUFkYXB0ZXIqKTsKIAotICAgIHN0YXRpYyBRVmFyaWFudE1hcCBj
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3QgUVdlYkVsZW1lbnQmKTsKLQog
ICAgIHN0YXRpYyB2b2lkIGR1bXBGcmFtZUxvYWRlcihib29sKTsKICAgICBzdGF0aWMgdm9pZCBk
dW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIGR1bXBV
c2VyR2VzdHVyZUluRnJhbWVMb2FkZXIoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1l
LmNwcAppbmRleCAyZTE4N2Q3MDE3ZTcyMThjYzljODg0YWIyNmRjMjA0MjBlNGM1MmY5Li42MGM0
MWFhMDVkZWRjMjVlYjVjZDE1YjMzZjAxOThhN2FmYWQ2YmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVGcmFtZS5jcHAKQEAgLTEyMiwxMSArMTIyLDYgQEAgV0tTdHJpbmdSZWYgV0tCdW5kbGVG
cmFtZUNvcHlOYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYpCiAgICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPm5hbWUoKSk7CiB9CiAKLUpTVmFsdWVSZWYgV0tCdW5k
bGVGcmFtZUdldENvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lUmVmLCBKU09iamVjdFJlZiBlbGVtZW50KQotewotICAgIHJldHVybiB0b0ltcGwo
ZnJhbWVSZWYpLT5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZWxlbWVudCk7Ci19
Ci0KIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5Q291bnRlclZhbHVlKFdLQnVuZGxlRnJh
bWVSZWYgZnJhbWVSZWYsIEpTT2JqZWN0UmVmIGVsZW1lbnQpCiB7CiAgICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChmcmFtZVJlZiktPmNvdW50ZXJWYWx1ZShlbGVtZW50KSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVu
ZGxlRnJhbWVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWVQcml2YXRlLmgKaW5kZXggOWIzOWYyM2I1Yzk3YWI4Zjlj
MzExY2ExMzMzMGVlOGRmZWY5NmRhYi4uNTZhYTYyNjU5MDdhYWNlZDU3NzE5Y2E2MWRiYjY1ZmMx
NmQzNzAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZVByaXZhdGUuaApAQCAt
MzksNyArMzksNiBAQCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVu
ZGxlRnJhbWVDb3B5SW5uZXJUZXh0KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5Q291bnRlclZhbHVlKFdLQnVuZGxlRnJhbWVS
ZWYgZnJhbWUsIEpTT2JqZWN0UmVmIGVsZW1lbnQpOwotV0tfRVhQT1JUIEpTVmFsdWVSZWYgV0tC
dW5kbGVGcmFtZUdldENvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBKU09iamVjdFJlZiBlbGVtZW50KTsKIFdLX0VYUE9SVCB1bnNpZ25lZCBX
S0J1bmRsZUZyYW1lR2V0UGVuZGluZ1VubG9hZENvdW50KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUp
OwogV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLQnVuZGxlRnJhbWVDb3B5TGF5ZXJUcmVlQXNUZXh0
KFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwogV0tfRVhQT1JUIHZvaWQgV0tCdW5kbGVGcmFtZUNs
ZWFyT3BlbmVyKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjBjZDVlMTAzOWNiNDk4OGNhMjRh
NThkYjY3NDgzOWUyNjc2ZjVhMC4uNjI1NTdiNGQ2ZTc5NDhlZDZjOThhYWYxYWJiYjQ3NjQ4ODVh
NWJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNMb2NrLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQXJjaGl2ZVJlc291cmNlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nocm9tZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRG9jdW1lbnRMb2FkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CkBAIC02
MjEsMjMgKzYyMCw2IEBAIEpTVmFsdWVSZWYgV2ViRnJhbWU6OmpzV3JhcHBlckZvcldvcmxkKElu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUqIHJhbmdlSGFuZGxlLCBJCiAgICAgcmV0dXJuIHRvUmVm
KGV4ZWMsIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCByYW5nZUhhbmRsZS0+Y29yZVJhbmdlKCkp
KTsKIH0KIAotSlNWYWx1ZVJlZiBXZWJGcmFtZTo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0
ZWRJbmZvKEpTT2JqZWN0UmVmIGVsZW1lbnQpCi17Ci0gICAgaWYgKCFtX2NvcmVGcmFtZSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gbV9jb3Jl
RnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpOwot
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwotCi0gICAg
aWYgKCF0b0pTKGVsZW1lbnQpLT5pbmhlcml0cygmSlNFbGVtZW50OjpzX2luZm8pKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQodG9SZWYoZXhlYykpOwotCi0gICAgUmVmUHRy
PENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmNyZWF0ZShzdGF0aWNfY2FzdDxKU0VsZW1lbnQqPih0b0pTKGVsZW1lbnQpKS0+
aW1wbCgpLCB0cnVlKTsKLQotICAgIEpTTG9ja0hvbGRlciBsb2NrKGV4ZWMpOwotICAgIHJldHVy
biB0b1JlZihleGVjLCB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgc3R5bGUuZ2V0KCkpKTsKLX0K
LQogU3RyaW5nIFdlYkZyYW1lOjpjb3VudGVyVmFsdWUoSlNPYmplY3RSZWYgZWxlbWVudCkKIHsK
ICAgICBpZiAoIXRvSlMoZWxlbWVudCktPmluaGVyaXRzKCZKU0VsZW1lbnQ6OnNfaW5mbykpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCmluZGV4IDU2MTkz
ZTRjMjhkYWIxOWQ0OGM5MTdhMmM0NDhmN2Q2Y2Q4Zjg4ZDkuLmZiZDBiMmJjODMxZDcxOGI0NWNl
YmM0MjllNjEzOTBiNjc1YWJmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5oCkBAIC05Miw3ICs5Miw2IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnJh
bWVTZXQoKSBjb25zdDsKICAgICBXZWJGcmFtZSogcGFyZW50RnJhbWUoKSBjb25zdDsKICAgICBQ
YXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBjaGlsZEZyYW1lcygpOwotICAgIEpTVmFsdWVSZWYg
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTT2JqZWN0UmVmIGVsZW1lbnQpOwog
ICAgIEpTR2xvYmFsQ29udGV4dFJlZiBqc0NvbnRleHQoKTsKICAgICBKU0dsb2JhbENvbnRleHRS
ZWYganNDb250ZXh0Rm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCopOwogICAgIFdl
YkNvcmU6OkludFJlY3QgY29udGVudEJvdW5kcygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIKaW5kZXggYWFkNmY2YjllY2RhNmVjMTE4NjFmOThkYjExYzI0OWZmMjU4MjAyZi4uZGJlYWY0
N2M2ZmRkODUwODlhZTllM2IzNjAzYmM1Njk4YjM3YjkwZSAxMDA2NDQKLS0tIGEvU291cmNlL2F1
dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCkBAIC0zNyw2ICszNyw3IEBAIF9aTjdXZWJDb3JlNFBhZ2UxNnNldENhblN0YXJ0TWVkaWFF
YjsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9i
amVjdEVQTlNfMTBDbGllbnRSZWN0RTsKIF9aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0
ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFkb3dSb290RTsKIF9aTjdXZWJDb3Jl
NHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTRDbGll
bnRSZWN0TGlzdEU7CitfWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNE
T01HbG9iYWxPYmplY3RFUE5TXzE5Q1NTU3R5bGVEZWNsYXJhdGlvbkU7CiBfWk43V2ViQ29yZTR0
b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzVSYW5nZUU7
CiBfWk43V2ViQ29yZTVSYW5nZTZjcmVhdGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfOERvY3VtZW50
RUVFTlMyX0lOU180Tm9kZUVFRWlTNl9pOwogX1pON1dlYkNvcmU1UmFuZ2VEMUV2OwpAQCAtMTA4
LDYgKzEwOSw3IEBAIF9aTjdXZWJDb3JlMjREb2N1bWVudE1hcmtlckNvbnRyb2xsZXIxMG1hcmtl
cnNGb3JFUE5TXzROb2RlRU5TXzE0RG9jdW1lbnRNYXJrZXIxCiBfWk43V2ViQ29yZTI0RG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyMThhZGRUZXh0TWF0Y2hNYXJrZXJFUEtOU181UmFuZ2VFYjsKIF9a
TjdXZWJDb3JlMjVjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzRU5TXzE3Vmlld3BvcnRBcmd1bWVu
dHNFaWlpZk5TXzdJbnRTaXplRTsKIF9aTjdXZWJDb3JlMjVqc1N0cmluZ1dpdGhDYWNoZVNsb3dD
YXNlRVBOM0pTQzlFeGVjU3RhdGVFUk4zV1RGN0hhc2hNYXBJUE5TM18xMFN0cmluZ0ltcGxFTlMw
XzRXZWFrSU5TMF84SlNTdHJpbmdFRUVOUzNfN1B0ckhhc2hJUzZfRUVOUzNfMTBIYXNoVHJhaXRz
SVM2X0VFTlNDX0lTOV9FRUVFUzZfOworX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFYlJLTlMxXzZTdHJpbmdFOwog
X1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwxMm1vdmVXaW5kb3dCeUVm
ZjsKIF9aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMTJvcGVuSW5OZXdU
YWJFUktOM1dURjZTdHJpbmdFOwogX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwxNGZyb250ZW5kTG9hZGVkRXY7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggNzEwZTM0YjFlNmM4MWRhZGU1NTJiM2E0YjU3ZGYzMzBkZjdk
MDMxZC4uNzIzNjJkMjY2MDg3MmViZTU1YTBmZmEzNTJiYjIwNmZiZWIxODk2YiAxMDA2NDQKLS0t
IGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBA
CisyMDEzLTAzLTAxICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvIGZyb20gVGVzdFJ1
bm5lciB0byBJbnRlcm5hbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwOTc3MgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFRlc3RS
dW5uZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1
bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
YmxhY2tiZXJyeS9UZXN0UnVubmVyQmxhY2tCZXJyeS5jcHA6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0
ay9UZXN0UnVubmVyR3RrLmNwcDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1
bm5lck1hYy5tbToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVyUXQuY3Bw
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oOgorICAgICAgICAo
VGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4u
Y3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHA6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVy
LmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1
bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisKIDIwMTMtMDMtMDEgIElseWEgVGlraG9u
b3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE5h
dGl2ZSBNZW1vcnkgSW5zdHJ1bWVudGF0aW9uOiBkbyBub3QgdmlzaXQgcmF3IHBvaW50ZXJzIGJ5
IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCmluZGV4IDAyNjM5ZjYwY2Ey
ZGIwMTI5Zjk2NGNhMDhmZWI5YTE5MTc1YTgyMDYuLjIzYjcyMzgyYzk5N2VkZGMxZmZiMzQ5MDk5
YzlhM2Q5MDFhNmZkMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCkBAIC02ODAs
MTYgKzY4MCw2IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGtlZXBXZWJIaXN0b3J5Q2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0CiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBjb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNP
YmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRp
b24pCi17Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgIT0gMSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotICAgIAotICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50
YXRpb24KLSAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5l
cio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0gICAgcmV0dXJuIGNvbnRyb2xs
ZXItPmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhjb250ZXh0LCBhcmd1bWVudHNb
MF0pOwotfQotCiBzdGF0aWMgSlNWYWx1ZVJlZiBub3RpZnlEb25lQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVu
dGF0aW9uCkBAIC0yMDcwLDcgKzIwNjAsNiBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVy
OjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJjbGVhckJhY2tGb3J3YXJkTGlzdCIsIGNs
ZWFyQmFja0ZvcndhcmRMaXN0Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiY2xlYXJQZXJz
aXN0ZW50VXNlclN0eWxlU2hlZXQiLCBjbGVhclBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldENhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgImNsb3NlV2ViSW5zcGVjdG9yIiwgY2xvc2VXZWJJbnNw
ZWN0b3JDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAotICAgICAgICB7ICJjb21wdXRlZFN0eWxlSW5jbHVkaW5n
VmlzaXRlZEluZm8iLCBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm9DYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJkZWNvZGVIb3N0TmFtZSIsIGRlY29kZUhvc3ROYW1lQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZGlzYWxsb3dJbmNyZWFzZUZvckFwcGxpY2F0aW9uQ2Fj
aGVRdW90YSIsIGRpc2FsbG93SW5jcmVhc2VGb3JBcHBsaWNhdGlvbkNhY2hlUXVvdGFDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJkaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMiLCBkaXNw
YXRjaFBlbmRpbmdMb2FkUmVxdWVzdHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5oCmluZGV4IDE5YmI1ZDIxNGNmMTVmMDcwZTZlZTM1N2FkN2FjNzFhYTc1MzI3MWMu
LmNjYTQxZjc0ZmE0NjgzZDE3YzU4NGJiMjg5ZDZjYTBmZDMzMjg2MjUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmgKQEAgLTY2LDcgKzY2LDYgQEAgcHVibGljOgogICAgIGxvbmcgbG9uZyBh
cHBsaWNhdGlvbkNhY2hlRGlza1VzYWdlRm9yT3JpZ2luKEpTU3RyaW5nUmVmIG5hbWUpOwogICAg
IGJvb2wgaXNDb21tYW5kRW5hYmxlZChKU1N0cmluZ1JlZiBuYW1lKTsKICAgICB2b2lkIGtlZXBX
ZWJIaXN0b3J5KCk7Ci0gICAgSlNWYWx1ZVJlZiBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRl
ZEluZm8oSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKTsKICAgICB2b2lkIG5vdGlmeURvbmUoKTsK
ICAgICBpbnQgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdHMoKTsK
ICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVm
IHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2JsYWNrYmVycnkvVGVz
dFJ1bm5lckJsYWNrQmVycnkuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9U
ZXN0UnVubmVyQmxhY2tCZXJyeS5jcHAKaW5kZXggZTc3MDcwOWQ1NzE3Yzg2OGQwYmJlYWUyNDBm
NDZkNGY4OGM1M2YxYi4uYWFlODQzODhhOGMyZTJiMzE0MWQ2ODMzN2QxOGE0YWJmMWQzNDVmNiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVubmVyQmxh
Y2tCZXJyeS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYmxhY2tiZXJyeS9UZXN0UnVu
bmVyQmxhY2tCZXJyeS5jcHAKQEAgLTUwNSwxMSArNTA1LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpz
ZXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGJvb2wgZmxhZykKICAgICBCbGFja0JlcnJ5
OjpXZWJLaXQ6OkR1bXBSZW5kZXJUcmVlOjpjdXJyZW50SW5zdGFuY2UoKS0+cGFnZSgpLT5zZXRK
YXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKGZsYWcpOwogfQogCi1KU1ZhbHVlUmVmIFRlc3RS
dW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gRHVtcFJlbmRlclRyZWVTdXBw
b3J0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29udGV4dCwgdmFsdWUpOwot
fQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFBsdWdpbnNFbmFibGVkKGJvb2wgZmxhZykKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L1Rlc3RSdW5uZXJFZmwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJF
ZmwuY3BwCmluZGV4IGUzMmFmMmU4OTMwNTAxMDk2ZmI5YWY5MjE3ZTRmNjJjMzIwNzk0ODQuLjg4
NzU2ZGNkNzJlNjc0ZjdlMDZhYzU2ZjA0MzE2Mjk0NmNjNmVlMzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAKQEAgLTExMiwxMSArMTEyLDYgQEAgdm9pZCBU
ZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpzZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcyh0cnVlKTsKIH0KIAotSlNWYWx1ZVJlZiBUZXN0
UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGNvbnRleHQsIHZhbHVl
KTsKLX0KLQogc2l6ZV90IFRlc3RSdW5uZXI6OndlYkhpc3RvcnlJdGVtQ291bnQoKQogewogICAg
IGNvbnN0IEV3a19IaXN0b3J5KiBoaXN0b3J5ID0gZXdrX3ZpZXdfaGlzdG9yeV9nZXQoYnJvd3Nl
ci0+bWFpblZpZXcoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVz
dFJ1bm5lckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvVGVzdFJ1bm5lckd0ay5j
cHAKaW5kZXggNTIyNjk3N2Q4ZDQzNjI1ODA5NzJlZDcyZWIyZTE5Njk2NjgwMjBmNS4uZjFjMzA2
OTI3NjI2YmZjZTIxNDIyMjY3OTdkNjk4YmFiNjdiZDk3NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL1Rlc3RSdW5uZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9UZXN0UnVubmVyR3RrLmNwcApAQCAtMTA4LDExICsxMDgsNiBAQCB2b2lkIFRlc3RS
dW5uZXI6OmtlZXBXZWJIaXN0b3J5KCkKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiB9CiAKLUpT
VmFsdWVSZWYgVGVzdFJ1bm5lcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIHJldHVybiBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhj
b250ZXh0LCB2YWx1ZSk7Ci19Ci0KIHNpemVfdCBUZXN0UnVubmVyOjp3ZWJIaXN0b3J5SXRlbUNv
dW50KCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gd2Via2l0X3dlYl9mcmFtZV9n
ZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5u
ZXJNYWMubW0KaW5kZXggMWI0NTM0NTY2ZmYzYjI2NjVmYTk4ZTBlODAyNzMzOTcwYmE4MDEzZC4u
NjFjNzFlMDVkOTM4MWI0ZmMwMDQ5NjgxNWRkYTVhMjQ5MDhkZWY0OCAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTI3MywxMSArMjczLDYgQEAgdm9pZCBU
ZXN0UnVubmVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAgfQogfQogCi1KU1ZhbHVlUmVmIFRlc3RS
dW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSkKLXsgICAKLSAgICByZXR1cm4gW1ttYWluRnJhbWUgd2Vi
Vmlld10gX2NvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzpjb250ZXh0IGZvckVsZW1l
bnQ6dmFsdWVdOwotfQotCiBpbnQgVGVzdFJ1bm5lcjo6bnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdHMoKQogewogICAgIHJldHVybiBbW1ttYWluRnJhbWUgd2ViVmll
d10gVUlEZWxlZ2F0ZV0gbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dHNdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvVGVzdFJ1bm5lclF0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5jcHAKaW5kZXggMTI5NDdl
OTI4N2I3OWE1MzAyMzdiZmZmYzM3YWRlN2Q4ODVlZDkyMy4uNjBjNTNiYjAzNjc2YjNmNTdlYjJl
NDhmZDNiMjViYzhhMzE1NTUzYiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQv
VGVzdFJ1bm5lclF0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9UZXN0UnVubmVy
UXQuY3BwCkBAIC03NDUsMTEgKzc0NSw2IEBAIGJvb2wgVGVzdFJ1bm5lclF0OjpmaW5kU3RyaW5n
KGNvbnN0IFFTdHJpbmcmIHN0cmluZywgY29uc3QgUVN0cmluZ0xpc3QmIG9wdGlvbkFyCiAgICAg
cmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpmaW5kU3RyaW5nKG1fZHJ0LT5wYWdlQWRh
cHRlcigpLCBzdHJpbmcsIG9wdGlvbkFycmF5KTsKIH0KIAotUVZhcmlhbnRNYXAgVGVzdFJ1bm5l
clF0Ojpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oY29uc3QgUVdlYkVsZW1lbnQm
IGVsZW1lbnQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojpj
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZWxlbWVudCk7Ci19Ci0KIGJvb2wgVGVz
dFJ1bm5lclF0OjplbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQoY29uc3Qg
UVN0cmluZyYgZWxlbWVudElkKQogewogICAgIHJldHVybiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dDo6ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkKG1fZHJ0LT5tYWluRnJh
bWVBZGFwdGVyKCksIGVsZW1lbnRJZCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9xdC9UZXN0UnVubmVyUXQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJR
dC5oCmluZGV4IDZjMGE1Njg2ZDk0ZTg5MDM1Y2E1OWE2MTZlMzVjZjk5MWU5MmRmZmEuLmRkMDI2
ZGUxYjA5YTQyMGYyYTgxMWY2OGFiZmIwMDZhMWJmMDQzZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L1Rlc3RSdW5uZXJRdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L1Rlc3RSdW5uZXJRdC5oCkBAIC0yNDcsOCArMjQ3LDYgQEAgcHVibGljIFFfU0xPVFM6CiAg
ICAgKi8KICAgICB2b2lkIHNldFNjcm9sbGJhclBvbGljeShjb25zdCBRU3RyaW5nJiBvcmllbnRh
dGlvbiwgY29uc3QgUVN0cmluZyYgcG9saWN5KTsKIAotICAgIFFWYXJpYW50TWFwIGNvbXB1dGVk
U3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhjb25zdCBRV2ViRWxlbWVudCYpIGNvbnN0OwotCiAg
ICAgLy8gU2ltdWxhdGUgYSByZXF1ZXN0IGFuIGVtYmVkZGluZyBhcHBsaWNhdGlvbiBjb3VsZCBt
YWtlLCBwb3B1bGF0aW5nIHBlci1zZXNzaW9uIGNyZWRlbnRpYWwgc3RvcmFnZS4KICAgICB2b2lk
IGF1dGhlbnRpY2F0ZVNlc3Npb24oY29uc3QgUVN0cmluZyYgdXJsLCBjb25zdCBRU3RyaW5nJiB1
c2VybmFtZSwgY29uc3QgUVN0cmluZyYgcGFzc3dvcmQpOwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKaW5kZXggNDM4NTA4MWNlODcyMTk4MGQxNDE1Mjk5Nzlh
NWMxMzg1MWRlMmNkOC4uODQyMzI2Y2JjZjU5NThjOWVkMzQ3MGMwYjExMjUzN2U1MzA1YmI4MSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcApAQCAtMTYwLDEy
ICsxNjAsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmtlZXBXZWJIaXN0b3J5KCkKICAgICBoaXN0b3J5
LT5zZXRPcHRpb25hbFNoYXJlZEhpc3Rvcnkoc2hhcmVkSGlzdG9yeS5nZXQoKSk7CiB9CiAKLUpT
VmFsdWVSZWYgVGVzdFJ1bm5lcjo6Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlKQotewotICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7
Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKIHsKICAgICBD
T01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS93eC9UZXN0UnVubmVyV3guY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd3gvVGVzdFJ1bm5l
cld4LmNwcAppbmRleCA1ZTAxMzYyMmZhYzBhOTQ4NWFjMmNlNWIzZGVhYWIwMGU5OTE1MTI4Li45
Nzc1MTEzNTBlY2ViZWQwZDk1MzJmZTUwNDlmZjVmYWFmNjg3M2VjIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS93eC9UZXN0UnVubmVyV3guY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L1Rlc3RSdW5uZXJXeC5jcHAKQEAgLTQ1OCwxMSArNDU4LDYgQEAgYm9vbCBUZXN0
UnVubmVyOjpjYWxsU2hvdWxkQ2xvc2VPbldlYlZpZXcoKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotSlNWYWx1ZVJlZiBUZXN0UnVubmVyOjpjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZElu
Zm8oSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKQotewotICAgIHJldHVybiAwOwotfQotCiB2b2lk
IFRlc3RSdW5uZXI6OmF1dGhlbnRpY2F0ZVNlc3Npb24oSlNTdHJpbmdSZWYsIEpTU3RyaW5nUmVm
LCBKU1N0cmluZ1JlZikKIHsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IDA4MTcx
YTA4MGVkNTI5M2U1YjE0OGY3OTliMDg5ZDdhZDJlNDE4NWIuLmQ3NjU2MDdlMjMwOTIzNjA3NGE4
NjM3ZTRmNzUzMWNmYjk0ZWExMTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtNzQs
NyArNzQsNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAKICAgICAvLyBTcGVjaWFsIERPTSBm
dW5jdGlvbnMuCiAgICAgdm9pZCBjbGVhckJhY2tGb3J3YXJkTGlzdCgpOwotICAgIG9iamVjdCBj
b21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oaW4gb2JqZWN0IGVsZW1lbnQpOwogICAg
IHZvaWQgZXhlY0NvbW1hbmQoaW4gRE9NU3RyaW5nIG5hbWUsIGluIERPTVN0cmluZyBhcmd1bWVu
dCk7CiAgICAgYm9vbGVhbiBpc0NvbW1hbmRFbmFibGVkKGluIERPTVN0cmluZyBuYW1lKTsKICAg
ICB1bnNpZ25lZCBsb25nIHdpbmRvd0NvdW50KCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCA2NTM5ZTRiNTRhZjI1
MjA3MWQ3ZjA0MmM1NGUwNTliOTI0ZTM1Y2I5Li4xMTEzZDQ1NzUyODg5MjA3YWM4M2VmM2U0Mjgy
MGMzOTU4OGU5N2YxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTE5MCwxOSArMTkwLDYgQEAgdm9pZCBUZXN0UnVu
bmVyOjprZWVwV2ViSGlzdG9yeSgpCiAgICAgV0tCdW5kbGVTZXRTaG91bGRUcmFja1Zpc2l0ZWRM
aW5rcyhJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuYnVuZGxlKCksIHRydWUpOwogfQogCi1KU1Zh
bHVlUmVmIFRlc3RSdW5uZXI6OmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhKU1Zh
bHVlUmVmIGVsZW1lbnQpCi17Ci0gICAgLy8gRklYTUU6IElzIGl0IE9LIHRoaXMgd29ya3Mgb25s
eSBmb3IgdGhlIG1haW4gZnJhbWU/Ci0gICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBX
S0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+
cGFnZSgpKTsKLSAgICBKU0NvbnRleHRSZWYgY29udGV4dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZh
U2NyaXB0Q29udGV4dChtYWluRnJhbWUpOwotICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRl
eHQsIGVsZW1lbnQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Ci0gICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IFdLQnVuZGxlRnJhbWVHZXRDb21wdXRlZFN0eWxl
SW5jbHVkaW5nVmlzaXRlZEluZm8obWFpbkZyYW1lLCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihl
bGVtZW50KSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQogdm9pZCBUZXN0UnVubmVy
OjpleGVjQ29tbWFuZChKU1N0cmluZ1JlZiBuYW1lLCBKU1N0cmluZ1JlZiBhcmd1bWVudCkKIHsK
ICAgICBXS0J1bmRsZVBhZ2VFeGVjdXRlRWRpdGluZ0NvbW1hbmQoSW5qZWN0ZWRCdW5kbGU6OnNo
YXJlZCgpLnBhZ2UoKS0+cGFnZSgpLCB0b1dLKG5hbWUpLmdldCgpLCB0b1dLKGFyZ3VtZW50KS5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5oCmluZGV4IGIxOWUzZGM2ZDcxNGI0ZjRjMzk1Mzk1MjJlMTIwNjUyOThlMzY1MDIu
LmY4NjM4MzIzMjYyZGU4ZjJkMTFhNzg0OTAzMGQxZGVlN2M0YWJjZWEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0xMTcs
NyArMTE3LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Q2FjaGVNb2RlbChpbnQpOwogCiAgICAg
Ly8gU3BlY2lhbCBET00gZnVuY3Rpb25zLgotICAgIEpTVmFsdWVSZWYgY29tcHV0ZWRTdHlsZUlu
Y2x1ZGluZ1Zpc2l0ZWRJbmZvKEpTVmFsdWVSZWYgZWxlbWVudCk7CiAgICAgdm9pZCBjbGVhckJh
Y2tGb3J3YXJkTGlzdCgpOwogICAgIHZvaWQgZXhlY0NvbW1hbmQoSlNTdHJpbmdSZWYgbmFtZSwg
SlNTdHJpbmdSZWYgYXJndW1lbnQpOwogICAgIGJvb2wgaXNDb21tYW5kRW5hYmxlZChKU1N0cmlu
Z1JlZiBuYW1lKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA5ZDIzMGFlYTFmZmVlM2Y4NDVlODBjODZjYTA0ZWFjNGJiZjYx
MzYxLi5hMjg5YWMwOTc5ZTMxOGQyY2MxMTQ4N2Q5ZmViY2ZjN2NhYjA3OTA0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTMtMDMtMDEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBs
ZS5jb20+CisKKyAgICAgICAgTW92ZSBjb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8g
ZnJvbSBUZXN0UnVubmVyIHRvIEludGVybmFscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NzcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5kcmVh
cyBLbGluZy4KKworICAgICAgICBVcGRhdGUgdGhlIHRlc3RzLgorCisgICAgICAgICogZmFzdC9o
aXN0b3J5L211bHRpcGxlLWNsYXNzZXMtdmlzaXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvaGlz
dG9yeS9uZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9oaXN0b3J5L3Nl
bGYtaXMtdmlzaXRlZC5odG1sOgorICAgICAgICAqIGZhc3QvaGlzdG9yeS9zaWJsaW5nLXZpc2l0
ZWQtdGVzdC5odG1sOgorICAgICAgICAqIGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11
cmwtc2V0cy1saW5rcy12aXNpdGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnM6IHVuc2tpcCB0aGUgdGVzdHMuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMy0wMy0wMSAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3R5bGUgcmVjYWxjdWxhdGlvbiB0YWtlcyB0b28g
bG9uZyB3aGVuIGFkZGluZyB3aGl0ZXNwYWNlIHRleHQgbm9kZXMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvaGlzdG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRtbAppbmRleCA4
MWZlMjQ4YzgwNzZiNmY4NDkyYTMxYzkyYTQwYWM5ZDczZWQ0ZDljLi43MGM0YWIxZTc5YTczZTMy
YTk0Yzg3MjFiMWUxMTUyNzdlYTMxZTJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2hp
c3RvcnkvbXVsdGlwbGUtY2xhc3Nlcy12aXNpdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9oaXN0b3J5L211bHRpcGxlLWNsYXNzZXMtdmlzaXRlZC5odG1sCkBAIC05LDkgKzksOSBAQCBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCiAKIGZ1bmN0aW9uIGNvbXBhcmVTdHlsZXMoKQogewotICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICBmaXJzdFN0eWxlID0gdGVzdFJ1bm5l
ci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ29uZScpKTsKLSAgICAgICAgc2Vjb25kU3R5bGUgPSB0ZXN0UnVubmVyLmNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOwor
ICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGZpcnN0U3R5bGUgPSBpbnRlcm5h
bHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdvbmUnKSk7CisgICAgICAgIHNlY29uZFN0eWxlID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOwog
ICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgnZmlyc3RTdHlsZS5jb2xvcicsICdzZWNvbmRTdHls
ZS5jb2xvcicsIGZpbmlzaEpTVGVzdCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRlc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvaGlzdG9yeS9uZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWwKaW5kZXggODBkZDYwYjliYzZjMDFk
OTZkNWNlNjU3NzU4ZTEzOGZlZmY0YjdlMC4uOTk1MzEwYTYxOGM2NDA3MTJmNDc2MjU0ODc4ZDc5
YjdkY2U0MTVhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L25lc3RlZC12
aXNpdGVkLXRlc3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpc3RvcnkvbmVzdGVkLXZp
c2l0ZWQtdGVzdC5odG1sCkBAIC0xNSw5ICsxNSw5IEBAIGZ1bmN0aW9uIGNvbXBhcmVTdHlsZXMo
KQogICAgIGFuY2hvci5pbm5lckhUTUwgPSAiT25lIjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZW5jbG9zdXJlJykuYXBwZW5kQ2hpbGQoYW5jaG9yKTsKIAotICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewotICAgICAgICBmaXJzdFN0eWxlID0gdGVzdFJ1bm5lci5jb21wdXRlZFN0
eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScpKTsK
LSAgICAgICAgc2Vjb25kU3R5bGUgPSB0ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdW
aXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOworICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGZpcnN0U3R5bGUgPSBpbnRlcm5hbHMuY29tcHV0ZWRT
dHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmUnKSk7
CisgICAgICAgIHNlY29uZFN0eWxlID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdW
aXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOwogICAgICAgICBzaG91
bGRCZWNvbWVEaWZmZXJlbnQoJ2ZpcnN0U3R5bGUuY29sb3InLCAnc2Vjb25kU3R5bGUuY29sb3In
LCBmaW5pc2hKU1Rlc3QpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
aGlzdG9yeS9zZWxmLWlzLXZpc2l0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9z
ZWxmLWlzLXZpc2l0ZWQuaHRtbAppbmRleCBlYTk4YzZiY2QwNTVjMzkzMjY3MDc2ZmExMTc3YjQ5
YjczZDhkNWNkLi4zZTQ2YmZhOWI5NzYyNzJhMTEwZjkwNWFkMjYxY2FkMzBkMGI1M2NkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2VsZi1pcy12aXNpdGVkLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9oaXN0b3J5L3NlbGYtaXMtdmlzaXRlZC5odG1sCkBAIC05LDkg
KzksOSBAQCBpZiAod2luZG93LnRlc3RSdW5uZXIpCiAKIGZ1bmN0aW9uIGNvbXBhcmVTdHlsZXMo
KQogewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICBmaXJzdFN0eWxlID0g
dGVzdFJ1bm5lci5jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ29uZScpKTsKLSAgICAgICAgc2Vjb25kU3R5bGUgPSB0ZXN0UnVubmVyLmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dHdvJykpOworICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGZpcnN0U3R5bGUg
PSBpbnRlcm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdvbmUnKSk7CisgICAgICAgIHNlY29uZFN0eWxlID0gaW50ZXJuYWxzLmNv
bXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
dHdvJykpOwogICAgICAgICBzaG91bGRCZWNvbWVEaWZmZXJlbnQoJ2ZpcnN0U3R5bGUuY29sb3In
LCAnc2Vjb25kU3R5bGUuY29sb3InLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHNob3VsZEJl
Y29tZURpZmZlcmVudCgnZmlyc3RTdHlsZS5iYWNrZ3JvdW5kQ29sb3InLCAnc2Vjb25kU3R5bGUu
YmFja2dyb3VuZENvbG9yJywgZmluaXNoSlNUZXN0KTsKICAgICAgICAgfSk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvaGlzdG9yeS9zaWJsaW5nLXZpc2l0ZWQtdGVzdC5odG1sCmluZGV4IDdj
OTllMGI0NzNlYWY2NWUyZGRlMjVkNTE5YWQ5ZGRmNmJhYTIwNmYuLjIwZDcwNjRiNmFjNzBkNTk5
MjM2OTBiZGZmM2YyMmYyNzI5OGIwYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9zaWJsaW5nLXZpc2l0ZWQtdGVzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlz
dG9yeS9zaWJsaW5nLXZpc2l0ZWQtdGVzdC5odG1sCkBAIC05LDkgKzksOSBAQCBpZiAod2luZG93
LnRlc3RSdW5uZXIpCiAKIGZ1bmN0aW9uIGNvbXBhcmVTdHlsZXMoKQogewotICAgIGlmICh3aW5k
b3cudGVzdFJ1bm5lcikgewotICAgICAgICBmaXJzdFN0eWxlID0gdGVzdFJ1bm5lci5jb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm8oZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29uZScp
KTsKLSAgICAgICAgc2Vjb25kU3R5bGUgPSB0ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOworICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIGZpcnN0U3R5bGUgPSBpbnRlcm5hbHMuY29tcHV0
ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbmUn
KSk7CisgICAgICAgIHNlY29uZFN0eWxlID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5bGVJbmNsdWRp
bmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHdvJykpOwogICAgICAgICBz
aG91bGRCZWNvbWVEaWZmZXJlbnQoJ2ZpcnN0U3R5bGUuY29sb3InLCAnc2Vjb25kU3R5bGUuY29s
b3InLCBmaW5pc2hKU1Rlc3QpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1saW5rcy12aXNpdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9zdGF0ZW9iamVjdHMvc3RhdGUtdXJsLXNldHMtbGlu
a3MtdmlzaXRlZC5odG1sCmluZGV4IDYyMTJlMDNlOGE2MDgwODZiZmJiOTc5MmZlYjJjZDgwY2M5
ODY1NjMuLmMzZjkxYmFkZTFhZWY1YTRjMDkzZDFkNzZlMWQ0MzhmNjE4YzZiY2MgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwtc2V0cy1s
aW5rcy12aXNpdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvc3RhdGVvYmpl
Y3RzL3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQuaHRtbApAQCAtMTQsOSArMTQsOSBAQCBm
dW5jdGlvbiBsb2FkZWQoKQogICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCAi
VGl0bGUiLCAicmVwbGFjZWRVUkwuaHRtbCIpOwogICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0
ZShudWxsLCAiVGl0bGUiLCAicHVzaGVkVVJMLmh0bWwiKTsKIAotICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewotICAgICAgICBzdHlsZTEgPSB0ZXN0UnVubmVyLmNvbXB1dGVkU3R5bGVJbmNs
dWRpbmdWaXNpdGVkSW5mbyhkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGluazEnKSk7Ci0gICAg
ICAgIHN0eWxlMiA9IHRlc3RSdW5uZXIuY29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZv
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rMicpKTsKKyAgICBpZiAod2luZG93LmludGVy
bmFscykgeworICAgICAgICBzdHlsZTEgPSBpbnRlcm5hbHMuY29tcHV0ZWRTdHlsZUluY2x1ZGlu
Z1Zpc2l0ZWRJbmZvKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rMScpKTsKKyAgICAgICAg
c3R5bGUyID0gaW50ZXJuYWxzLmNvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbyhkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnbGluazInKSk7CiAKICAgICAgICAgLy8gVGhlIHN0eWxlIGlz
IG5vdCBuZWNlc3NhcmlseSB1cGRhdGVkIHN5bmNocm9ub3VzbHkgaW4gcmVzcG9uc2UgdG8gaGlz
dG9yeS5yZXBsYWNlU3RhdGUgYW5kIGhpc3RvcnkucHVzaFN0YXRlLgogICAgICAgICBzaG91bGRC
ZWNvbWVFcXVhbFRvU3RyaW5nKCJzdHlsZTEuY29sb3IiLCAicmdiKDI1NSwgMTY1LCAwKSIsIGZ1
bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggNzJmY2JkY2FiNTg3NzgxNWQ0OWRjYWUyYmU4ZDViMzlmYTEzZDM1Mi4uZGIx
MzFhMmM1OGYzMWEwNzlmNzJmZjQ5OTRiNzcyZjcxOTE1Y2VlNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMjAxLDE1ICsyMjAxLDE0
IEBAIHdlYmtpdC5vcmcvYi8zNjY2NiBzdG9yYWdlL3dlYnNxbC9vcGVuLWRhdGFiYXNlLW92ZXIt
cXVvdGEuaHRtbCBbIEZhaWx1cmUgXQogCiB3ZWJraXQub3JnL2IvMzcyODMgZmFzdC9vdmVyZmxv
dy9zY3JvbGxiYXItcmVzdG9yZWQtYW5kLXRoZW4tbG9ja2VkLmh0bWwgWyBGYWlsdXJlIF0KIAot
d2Via2l0Lm9yZy9iLzM3Mjk3IGZhc3QvaGlzdG9yeS9uZXN0ZWQtdmlzaXRlZC10ZXN0Lmh0bWwg
WyBGYWlsdXJlIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9iLzM3Mjk3IGZhc3QvaGlzdG9yeS9zZWxm
LWlzLXZpc2l0ZWQuaHRtbCBbIEZhaWx1cmUgVGltZW91dCBdCi13ZWJraXQub3JnL2IvMzcyOTcg
ZmFzdC9oaXN0b3J5L3NpYmxpbmctdmlzaXRlZC10ZXN0Lmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQg
XQotd2Via2l0Lm9yZy9iLzM3Mjk3IGZhc3QvbG9hZGVyL3N0YXRlb2JqZWN0cy9zdGF0ZS11cmwt
c2V0cy1saW5rcy12aXNpdGVkLmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQgXQotd2Via2l0Lm9yZy9i
LzU4MDAwIFsgTWFjIEFuZHJvaWQgXSBmYXN0L2hpc3RvcnkvdmlzaXRlZC1saW5rLWJhY2tncm91
bmQtY29sb3IuaHRtbCBbIEZhaWx1cmUgXQotCi0jIEFkZGVkIGluIGh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzU3NDc2LiBGYWlscyBpbiBDaHJvbWl1bSBiZWNhdXNlCi0jIExheW91
dFRlc3RDb250cm9sbGVyOjpjb21wdXRlZFN0eWxlV2l0aFZpc2l0ZWRJbmZvKCkgaXMgbWlzc2lu
Zy4KLWNyYnVnLmNvbS80MTIwNiBmYXN0L2hpc3RvcnkvbXVsdGlwbGUtY2xhc3Nlcy12aXNpdGVk
Lmh0bWwgWyBGYWlsdXJlIFRpbWVvdXQgXQorIyBDaHJvbWl1bSBEdW1wUmVuZGVyVHJlZSBkb2Vz
IG5vdCBoYXZlIHN1cHBvcnQgZm9yIHZpc2l0ZWQgbGlua3MuCisjIEl0IGFsd2F5cyByZXR1cm4g
ZmFsc2UgaW4gcmVzcG9uc2UgdG8gaXNMaW5rVmlzaXRlZCgpLgord2Via2l0Lm9yZy9iLzExMTAz
MSBmYXN0L2hpc3RvcnkvbXVsdGlwbGUtY2xhc3Nlcy12aXNpdGVkLmh0bWwgWyBGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8xMTEwMzEgZmFzdC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRlc3QuaHRt
bCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzExMTAzMSBmYXN0L2hpc3Rvcnkvc2VsZi1pcy12
aXNpdGVkLmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMTEwMzEgZmFzdC9oaXN0b3J5
L3NpYmxpbmctdmlzaXRlZC10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMTEw
MzEgZmFzdC9sb2FkZXIvc3RhdGVvYmplY3RzL3N0YXRlLXVybC1zZXRzLWxpbmtzLXZpc2l0ZWQu
aHRtbCBbIEZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzExMTAzMSBbIE1hYyBBbmRyb2lkIF0gZmFz
dC9oaXN0b3J5L3Zpc2l0ZWQtbGluay1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwgWyBGYWlsdXJlIF0K
IAogIyBUZXN0cyB0aGF0IHdvcmsgd2l0aCBLVVJMLCBidXQgZmFpbCB3aXRoIEdVUkwKIHdlYmtp
dC5vcmcvYi83MTc1OCBmYXN0L3VybC9pbnZhbGlkLXVybHMtdXRmOC5odG1sIFsgRmFpbHVyZSBd
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk1M2I0OWY1
ZjdhMThkODBmMzZjZWY4ODM5MGFlYWE2NDc5NzJlMDguLjM1ZmZkM2Y0NWM5NWFhYzUwZWZjNDM3
MDhhZjMzNWEyOTNkZGM0MjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9U
ZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0
YXRpb25zCkBAIC05MjQsMTIgKzkyNCw2IEBAIGZhc3QvanMvY29uc3RydWN0b3ItbGVuZ3RoLmh0
bWwKICMgTmVlZCB0byBhZGQgZnVuY3Rpb25hbGl0eSB0byBEdW1wUmVuZGVyVHJlZSB0byBoYW5k
bGUgZXJyb3IgcGFnZXMKIGZhc3QvaGlzdG9yeS9iYWNrLWZvcndhcmQtcmVzZXQtYWZ0ZXItZXJy
b3ItaGFuZGxpbmcuaHRtbAogCi0jIE5lZWQgdG8gaW1wbGVtZW50IGNvbXB1dGVkU3R5bGVXaXRo
VmlzaXRlZEluZm8KLWZhc3QvaGlzdG9yeS9tdWx0aXBsZS1jbGFzc2VzLXZpc2l0ZWQuaHRtbAot
ZmFzdC9oaXN0b3J5L25lc3RlZC12aXNpdGVkLXRlc3QuaHRtbAotZmFzdC9oaXN0b3J5L3NlbGYt
aXMtdmlzaXRlZC5odG1sCi1mYXN0L2hpc3Rvcnkvc2libGluZy12aXNpdGVkLXRlc3QuaHRtbAot
CiAjIEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HIHRlc3RzIHRoYXQgaGF2ZSBpbmNvcnJlY3QgbGF5
b3V0CiBjb21wb3NpdGluZy93ZWJnbC93ZWJnbC1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKIGNvbXBv
c2l0aW5nL3dlYmdsL3dlYmdsLXJlZmxlY3Rpb24uaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>