<?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>89295</bug_id>
          
          <creation_ts>2012-06-16 17:56:58 -0700</creation_ts>
          <short_desc>REGRESSION(r120539): Does not compile on chromium-mac (Requested by abarth on #webkit).</short_desc>
          <delta_ts>2012-06-16 18:02:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>88482</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>enne</cc>
    
    <cc>zlieber</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>650912</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 17:56:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/120539 broke the build:
Does not compile on chromium-mac (Requested by abarth on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650914</commentid>
    <comment_count>1</comment_count>
      <attachid>147997</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 17:57:38 -0700</bug_when>
    <thetext>Created attachment 147997
ROLLOUT of r120539

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650919</commentid>
    <comment_count>2</comment_count>
      <attachid>147997</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 18:02:06 -0700</bug_when>
    <thetext>Comment on attachment 147997
ROLLOUT of r120539

Clearing flags on attachment: 147997

Committed r120542: &lt;http://trac.webkit.org/changeset/120542&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>650920</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-16 18:02:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147997</attachid>
            <date>2012-06-16 17:57:38 -0700</date>
            <delta_ts>2012-06-16 18:02:06 -0700</delta_ts>
            <desc>ROLLOUT of r120539</desc>
            <filename>bug-89295-20120617010227.patch</filename>
            <type>text/plain</type>
            <size>52962</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGRiNDM1NDRmN2E5MjYx
NDMyYmRkMWMxNTgxYTQ4MmMyZmZjMDFhZC4uZWQ0Mjg1NTAzN2M3NGU0YzU4ZTg3YzhkNjBhMDM5
NjgxMGQ2YWJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA2LTE2ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTIwNTM5LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjA1MzkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5Mjk1CisKKyAgICAgICAgRG9lcyBub3QgY29tcGlsZSBvbiBjaHJvbWl1bS1t
YWMgKFJlcXVlc3RlZCBieSBhYmFydGggb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NEYW1hZ2VUcmFja2VyOjpleHRlbmREYW1hZ2VGb3JMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OmV4dGVuZERhbWFnZUZvclJlbmRlclN1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpDQ0xheWVySW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldE9wYWNpdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllckltcGw6OnNldFRyYW5zZm9ybSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaDoKKyAgICAgICAgKENDTGF5
ZXJJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6
OmNhbGN1bGF0ZVJlbmRlclBhc3Nlcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3RJbXBsOjpwcmVwYXJlVG9EcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RJ
bXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBh
c3MuaDoKKyAgICAgICAgKENDUmVuZGVyUGFzcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkND
UmVuZGVyU3VyZmFjZTo6cHJlcGFyZUNvbnRlbnRzVGV4dHVyZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmg6CisgICAgICAgIChDQ1Jl
bmRlclN1cmZhY2UpOgorCiAyMDEyLTA2LTE2ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgSWdub3JlIHBhdGhzIGluIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IHNv
dXJjZXMgcmF0aGVyIHRoYW4gZmFpbGluZyB0byBwYXJzZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBjNTFlMjk4MjdjM2MzMzViYTViYTk5NzkxZGQyZmVmZTRjMmFiZmVmLi4y
MDM5ZWM3ZDcyN2ZkNTFhNTdhMWQyMDBiMDZjOGI3NTU5YTJlNThhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA2LTE2ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTIwNTM5LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8x
MjA1MzkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5
Mjk1CisKKyAgICAgICAgRG9lcyBub3QgY29tcGlsZSBvbiBjaHJvbWl1bS1tYWMgKFJlcXVlc3Rl
ZCBieSBhYmFydGggb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ0Rh
bWFnZVRyYWNrZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpURVNUX0YpOgorICAg
ICAgICAqIHRlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcDoKKwogMjAxMi0wNi0xNiAgWmVldiBMaWViZXIgIDx6bGllYmVyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIENvbXBvc2l0b3Igc2hvdWxkIGF2b2lkIGRyYXdp
bmcgcXVhZHMgd2hlbiBjYWNoZWQgdGV4dHVyZXMgYXJlIGF2YWlsYWJsZSBhbmQgY29udGVudHMg
dW5jaGFuZ2VkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAppbmRleCAxZGJiNTk0MDhl
ZDkxN2Q3N2Y1ODc3ODJiMWQxODZhNzg3NmMwMmNkLi5hNmZkYmI4ZmZmYWNjYTM5ZjkxZjBjMDNh
YjcyZmFlODRhZTY2NmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKQEAgLTIz
OSwxOCArMjM5LDYgQEAgRmxvYXRSZWN0IENDRGFtYWdlVHJhY2tlcjo6dHJhY2tEYW1hZ2VGcm9t
TGVmdG92ZXJSZWN0cygpCiAgICAgcmV0dXJuIGRhbWFnZVJlY3Q7CiB9CiAKLXN0YXRpYyBib29s
IGxheWVyTmVlZHNUb1JlZHJhd09udG9JdHNUYXJnZXRTdXJmYWNlKENDTGF5ZXJJbXBsKiBsYXll
cikKLXsKLSAgICAvLyBJZiB0aGUgbGF5ZXIgZG9lcyBOT1Qgb3duIGEgc3VyZmFjZSBidXQgaGFz
IFN1cmZhY2VQcm9wZXJ0eUNoYW5nZWQsCi0gICAgLy8gdGhpcyBtZWFucyB0aGF0IGl0cyB0YXJn
ZXQgc3VyZmFjZSBpcyBhZmZlY3RlZCBhbmQgbmVlZHMgdG8gYmUgcmVkcmF3bi4KLSAgICAvLyBI
b3dldmVyLCBpZiB0aGUgbGF5ZXIgRE9FUyBvd24gYSBzdXJmYWNlLCB0aGVuIHRoZSBTdXJmYWNl
UHJvcGVydHlDaGFuZ2VkIAotICAgIC8vIGZsYWcgc2hvdWxkIG5vdCBiZSB1c2VkIGhlcmUsIGJl
Y2F1c2UgdGhhdCBmbGFnIHJlcHJlc2VudHMgd2hldGhlciB0aGUKLSAgICAvLyBsYXllcidzIHN1
cmZhY2UgaGFzIGNoYW5nZWQuCi0gICAgaWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpCi0gICAg
ICAgIHJldHVybiBsYXllci0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKTsKLSAgICByZXR1cm4gbGF5
ZXItPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkgfHwgbGF5ZXItPmxheWVyU3VyZmFjZVByb3BlcnR5
Q2hhbmdlZCgpOwotfQotCiB2b2lkIENDRGFtYWdlVHJhY2tlcjo6ZXh0ZW5kRGFtYWdlRm9yTGF5
ZXIoQ0NMYXllckltcGwqIGxheWVyLCBGbG9hdFJlY3QmIHRhcmdldERhbWFnZVJlY3QpCiB7CiAg
ICAgLy8gVGhlcmUgYXJlIHR3byB3YXlzIHRoYXQgYSBsYXllciBjYW4gZGFtYWdlIGEgcmVnaW9u
IG9mIHRoZSB0YXJnZXQgc3VyZmFjZToKQEAgLTI2MywxMSArMjUxLDYgQEAgdm9pZCBDQ0RhbWFn
ZVRyYWNrZXI6OmV4dGVuZERhbWFnZUZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgRmxvYXRS
ZWN0JiB0YXJnZXQKICAgICAvLyAgICAgIHJlZ2lvbiBkYW1hZ2VzIHRoZSBzdXJmYWNlLgogICAg
IC8vCiAgICAgLy8gUHJvcGVydHkgY2hhbmdlcyB0YWtlIHByaW9yaXR5IG92ZXIgdXBkYXRlIHJl
Y3RzLgotICAgIC8vCi0gICAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gd2Ugd2FudCB0
byBjb25zaWRlciBob3cgYSBsYXllciBjb250cmlidXRlcyB0byBpdHMKLSAgICAvLyB0YXJnZXRS
ZW5kZXJTdXJmYWNlLCBldmVuIGlmIHRoYXQgbGF5ZXIgb3ducyB0aGUgdGFyZ2V0UmVuZGVyU3Vy
ZmFjZSBpdHNlbGYuCi0gICAgLy8gVG8gY29uc2lkZXIgaG93IGEgbGF5ZXIncyB0YXJnZXRTdXJm
YWNlIGNvbnRyaWJ1dGVzIHRvIHRoZSBhbmNlc3RvclN1cmZhY2UsCi0gICAgLy8gZXh0ZW5kRGFt
YWdlRm9yUmVuZGVyU3VyZmFjZSgpIG11c3QgYmUgY2FsbGVkIGluc3RlYWQuCiAKICAgICAvLyBD
b21wdXRlIHRoZSBsYXllcidzICJvcmlnaW5UcmFuc2Zvcm0iIGJ5IHRyYW5zbGF0aW5nIHRoZSBk
cmF3VHJhbnNmb3JtLgogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG9yaWdpblRyYW5zZm9y
bSA9IGxheWVyLT5kcmF3VHJhbnNmb3JtKCk7CkBAIC0yNzksNyArMjYyLDcgQEAgdm9pZCBDQ0Rh
bWFnZVRyYWNrZXI6OmV4dGVuZERhbWFnZUZvckxheWVyKENDTGF5ZXJJbXBsKiBsYXllciwgRmxv
YXRSZWN0JiB0YXJnZXQKICAgICBGbG9hdFJlY3QgbGF5ZXJSZWN0SW5UYXJnZXRTcGFjZSA9IEND
TWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG9yaWdpblRyYW5zZm9ybSwgRmxvYXRSZWN0KEZsb2F0
UG9pbnQ6Onplcm8oKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgc2F2ZVJlY3RGb3JOZXh0RnJh
bWUobGF5ZXItPmlkKCksIGxheWVyUmVjdEluVGFyZ2V0U3BhY2UpOwogCi0gICAgaWYgKGxheWVy
SXNOZXcgfHwgbGF5ZXJOZWVkc1RvUmVkcmF3T250b0l0c1RhcmdldFN1cmZhY2UobGF5ZXIpKSB7
CisgICAgaWYgKGxheWVySXNOZXcgfHwgbGF5ZXItPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpIHsK
ICAgICAgICAgLy8gSWYgYSBsYXllciBpcyBuZXcgb3IgaGFzIGNoYW5nZWQsIHRoZW4gaXRzIGVu
dGlyZSBsYXllciByZWN0IGFmZmVjdHMgdGhlIHRhcmdldCBzdXJmYWNlLgogICAgICAgICB0YXJn
ZXREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKGxheWVyUmVjdEluVGFyZ2V0U3BhY2UpOwogCkBA
IC0zMTcsNyArMzAwLDcgQEAgdm9pZCBDQ0RhbWFnZVRyYWNrZXI6OmV4dGVuZERhbWFnZUZvclJl
bmRlclN1cmZhY2UoQ0NMYXllckltcGwqIGxheWVyLCBGbG9hdFJlY3QKICAgICBzYXZlUmVjdEZv
ck5leHRGcmFtZShsYXllci0+aWQoKSwgc3VyZmFjZVJlY3RJblRhcmdldFNwYWNlKTsKIAogICAg
IEZsb2F0UmVjdCBkYW1hZ2VSZWN0SW5Mb2NhbFNwYWNlOwotICAgIGlmIChzdXJmYWNlSXNOZXcg
fHwgcmVuZGVyU3VyZmFjZS0+c3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgpIHx8IGxheWVyLT5sYXll
clN1cmZhY2VQcm9wZXJ0eUNoYW5nZWQoKSkgeworICAgIGlmIChzdXJmYWNlSXNOZXcgfHwgcmVu
ZGVyU3VyZmFjZS0+c3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgpKSB7CiAgICAgICAgIC8vIFRoZSBl
bnRpcmUgc3VyZmFjZSBjb250cmlidXRlcyBkYW1hZ2UuCiAgICAgICAgIGRhbWFnZVJlY3RJbkxv
Y2FsU3BhY2UgPSByZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
SW1wbC5jcHAKaW5kZXggMDdmMDIyZDljYzVkNzFiNzQyNGRmNzRkMjQwZmE5ZmU2MzA1YjZkMC4u
ZTYxYmY5MWQwNmM1Y2EyNWM1YzNiYTZiNGYzYmU0NjlhMWI5Y2QwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJJbXBsLmNwcApAQCAtNTUsNyArNTUsNiBAQCBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50
IGlkKQogICAgICwgbV9oYXZlV2hlZWxFdmVudEhhbmRsZXJzKGZhbHNlKQogICAgICwgbV9kb3Vi
bGVTaWRlZCh0cnVlKQogICAgICwgbV9sYXllclByb3BlcnR5Q2hhbmdlZChmYWxzZSkKLSAgICAs
IG1fbGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2VkKGZhbHNlKQogICAgICwgbV9tYXNrc1RvQm91
bmRzKGZhbHNlKQogICAgICwgbV9vcGFxdWUoZmFsc2UpCiAgICAgLCBtX29wYWNpdHkoMS4wKQpA
QCAtMzExLDI2ICszMTAsNiBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRTdGFja2luZ09yZGVyQ2hh
bmdlZChib29sIHN0YWNraW5nT3JkZXJDaGFuZ2VkKQogICAgICAgICBub3RlTGF5ZXJQcm9wZXJ0
eUNoYW5nZWRGb3JTdWJ0cmVlKCk7CiB9CiAKLWJvb2wgQ0NMYXllckltcGw6OmxheWVyU3VyZmFj
ZVByb3BlcnR5Q2hhbmdlZCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1fbGF5ZXJTdXJmYWNlUHJvcGVy
dHlDaGFuZ2VkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIElmIHRoaXMgbGF5ZXIn
cyBzdXJmYWNlIHByb3BlcnR5IGhhc24ndCBjaGFuZ2VkLCB3ZSB3YW50IHRvIHNlZSBpZgotICAg
IC8vIHNvbWUgbGF5ZXIgYWJvdmUgdXMgaGFzIGNoYW5nZWQgdGhpcyBwcm9wZXJ0eS4gVGhpcyBp
cyBkb25lIGZvciB0aGUKLSAgICAvLyBjYXNlIHdoZW4gc3VjaCBwYXJlbnQgbGF5ZXIgZG9lcyBu
b3QgZHJhdyBjb250ZW50LCBhbmQgdGhlcmVmb3JlIHdpbGwKLSAgICAvLyBub3QgYmUgdHJhdmVy
c2VkIGJ5IHRoZSBkYW1hZ2UgdHJhY2tlci4gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdAotICAg
IC8vIHByb3BlcnR5IGNoYW5nZSBvbiBzdWNoIGxheWVyIHdpbGwgYmUgY2F1Z2h0IGJ5IGl0cyBk
ZXNjZW5kYW50cy4KLSAgICBDQ0xheWVySW1wbCogY3VycmVudCA9IHRoaXMtPm1fcGFyZW50Owot
ICAgIHdoaWxlIChjdXJyZW50ICYmICFjdXJyZW50LT5tX3JlbmRlclN1cmZhY2UpIHsKLSAgICAg
ICAgaWYgKGN1cnJlbnQtPm1fbGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2VkKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5tX3BhcmVudDsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgQ0NMYXllckltcGw6Om5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKQogewogICAgIG1fbGF5ZXJQcm9wZXJ0eUNoYW5n
ZWQgPSB0cnVlOwpAQCAtMzQ2LDggKzMyNSw2IEBAIHZvaWQgQ0NMYXllckltcGw6Om5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZEZvckRlc2NlbmRhbnRzKCkKIHZvaWQgQ0NMYXllckltcGw6OnJlc2V0
QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCkKIHsKICAgICBtX2xheWVyUHJvcGVydHlDaGFu
Z2VkID0gZmFsc2U7Ci0gICAgbV9sYXllclN1cmZhY2VQcm9wZXJ0eUNoYW5nZWQgPSBmYWxzZTsK
LQogICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdCgpOwogCiAgICAgaWYgKG1fcmVuZGVyU3Vy
ZmFjZSkKQEAgLTQ4OCw3ICs0NjUsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KGZs
b2F0IG9wYWNpdHkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fb3BhY2l0eSA9IG9wYWNpdHk7
Ci0gICAgbV9sYXllclN1cmZhY2VQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOworICAgIG5vdGVMYXll
clByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAogYm9vbCBDQ0xheWVySW1wbDo6b3Bh
Y2l0eUlzQW5pbWF0aW5nKCkgY29uc3QKQEAgLTUzMCw3ICs1MDcsNyBAQCB2b2lkIENDTGF5ZXJJ
bXBsOjpzZXRUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV90cmFuc2Zvcm0gPSB0cmFuc2Zvcm07Ci0gICAg
bV9sYXllclN1cmZhY2VQcm9wZXJ0eUNoYW5nZWQgPSB0cnVlOworICAgIG5vdGVMYXllclByb3Bl
cnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAogYm9vbCBDQ0xheWVySW1wbDo6dHJhbnNmb3Jt
SXNBbmltYXRpbmcoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXggMjRhYmEzYTkzNDEy
ZjYyOWEzNjIzNTE1ZWNkMTQ2ZTcxOWE1MzhhNS4uNDkyOTA2MDY2OGQzMDUzYmE3OGU1NjNiODU5
ZWU5Mjg2ODg2MzQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC0yNTMsOCArMjUzLDYgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U3RhY2tpbmdPcmRlckNoYW5nZWQoYm9vbCk7CiAKICAgICBi
b29sIGxheWVyUHJvcGVydHlDaGFuZ2VkKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclByb3BlcnR5
Q2hhbmdlZDsgfQotICAgIGJvb2wgbGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2VkKCkgY29uc3Q7
Ci0KICAgICB2b2lkIHJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JTdWJ0cmVlKCk7CiAKICAgICBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlciogbGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkgeyBy
ZXR1cm4gbV9sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuZ2V0KCk7IH0KQEAgLTMxOCwxMiArMzE2
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBUcmFja3MgaWYgZHJhd2luZy1yZWxhdGVkIHByb3BlcnRp
ZXMgaGF2ZSBjaGFuZ2VkIHNpbmNlIGxhc3QgcmVkcmF3LgogICAgIGJvb2wgbV9sYXllclByb3Bl
cnR5Q2hhbmdlZDsKIAotICAgIC8vIEluZGljYXRlcyB0aGF0IGEgcHJvcGVydHkgaGFzIGNoYW5n
ZWQgb24gdGhpcyBsYXllciB0aGF0IHdvdWxkIG5vdAotICAgIC8vIGFmZmVjdCB0aGUgcGl4ZWxz
IG9uIGl0cyB0YXJnZXQgc3VyZmFjZSwgYnV0IHdvdWxkIHJlcXVpcmUgcmVkcmF3aW5nCi0gICAg
Ly8gYnV0IHdvdWxkIHJlcXVpcmUgcmVkcmF3aW5nIHRoZSB0YXJnZXRTdXJmYWNlIG9udG8gaXRz
IGFuY2VzdG9yIHRhcmdldFN1cmZhY2UuCi0gICAgLy8gRm9yIGxheWVycyB0aGF0IGRvIG5vdCBv
d24gYSBzdXJmYWNlIHRoaXMgZmxhZyBhY3RzIGFzIG1fbGF5ZXJQcm9wZXJ0eUNoYW5nZWQuCi0g
ICAgYm9vbCBtX2xheWVyU3VyZmFjZVByb3BlcnR5Q2hhbmdlZDsKLQogICAgIC8vIFVzZXMgbGF5
ZXIncyBjb250ZW50IHNwYWNlLgogICAgIEludFJlY3QgbV92aXNpYmxlTGF5ZXJSZWN0OwogICAg
IGJvb2wgbV9tYXNrc1RvQm91bmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAppbmRleCBjMTBhZmRkZGViZTI4ZDI2MjNmNmNkNzI3YTk1MWJiOTA4NzYxOTFjLi43MjI2
MTE2YWViYzJlYjI5NWQ3NDY5M2Y0ODBiNmMyYzlhYjYzNGE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgImNjL0ND
TGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNs
dWRlICJjYy9DQ1BhZ2VTY2FsZUFuaW1hdGlvbi5oIgotI2luY2x1ZGUgImNjL0NDUmVuZGVyUGFz
c0RyYXdRdWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NTZXR0aW5ncy5oIgogI2luY2x1ZGUgImNjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIKQEAgLTI2
NywyNSArMjY2LDI1IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVy
U3VyZmFjZUxheWVyTGlzdChDQ0xheWVyTGlzdCYgcmVuZGVyU3VyCiAgICAgfQogfQogCi1ib29s
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZy
YW1lKQorYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoQ0NS
ZW5kZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ0xheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgQ0NMYXllckxpc3QmIHdpbGxEcmF3TGF5ZXJzKQogewotICAgIEFTU0VSVChmcmFtZS5yZW5k
ZXJQYXNzZXMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQocGFzc2VzLmlzRW1wdHkoKSk7CiAKLSAg
ICBjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KCpmcmFtZS5yZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKKyAgICBjYWxjdWxhdGVSZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogCi0gICAgVFJBQ0VfRVZFTlQxKCJjYyIsICJDQ0xheWVyVHJlZUhvc3RJ
bXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMiLCAicmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXpl
KCkiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmcgdW5zaWduZWQ+KGZyYW1lLnJlbmRlclN1cmZhY2VM
YXllckxpc3QtPnNpemUoKSkpOworICAgIFRSQUNFX0VWRU5UMSgiY2MiLCAiQ0NMYXllclRyZWVI
b3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzIiwgInJlbmRlclN1cmZhY2VMYXllckxpc3Qu
c2l6ZSgpIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nIHVuc2lnbmVkPihyZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LnNpemUoKSkpOwogCiAgICAgbV9yb290TGF5ZXJJbXBsLT5zZXRTY2lzc29yUmVjdChl
bmNsb3NpbmdJbnRSZWN0KG1fcm9vdFNjaXNzb3JSZWN0KSk7CiAKICAgICAvLyBDcmVhdGUgdGhl
IHJlbmRlciBwYXNzZXMgaW4gZGVwZW5kZW5jeSBvcmRlci4KICAgICBIYXNoTWFwPENDUmVuZGVy
U3VyZmFjZSosIENDUmVuZGVyUGFzcyo+IHN1cmZhY2VQYXNzTWFwOwotICAgIGZvciAoaW50IHN1
cmZhY2VJbmRleCA9IGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3QtPnNpemUoKSAtIDE7IHN1
cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgQ0NMYXllckltcGwq
IHJlbmRlclN1cmZhY2VMYXllciA9ICgqZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdClbc3Vy
ZmFjZUluZGV4XTsKKyAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsK
KyAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VM
YXllckxpc3Rbc3VyZmFjZUluZGV4XTsKICAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAKICAgICAgICAg
T3duUHRyPENDUmVuZGVyUGFzcz4gcGFzcyA9IENDUmVuZGVyUGFzczo6Y3JlYXRlKHJlbmRlclN1
cmZhY2UpOwogICAgICAgICBzdXJmYWNlUGFzc01hcC5hZGQocmVuZGVyU3VyZmFjZSwgcGFzcy5n
ZXQoKSk7Ci0gICAgICAgIGZyYW1lLnJlbmRlclBhc3Nlcy5hcHBlbmQocGFzcy5yZWxlYXNlKCkp
OworICAgICAgICBwYXNzZXMuYXBwZW5kKHBhc3MucmVsZWFzZSgpKTsKICAgICB9CiAKICAgICBi
b29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSA9IHRydWU7IC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJl
LCBkaXNhYmxlIHRoaXMgd2hlbiBhYm91dDp0cmFjaW5nIGlzIG9mZi4KQEAgLTMwMCw4ICsyOTks
OCBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFt
ZURhdGEmIGZyYW1lKQogICAgIC8vIGluIHRoZSBmdXR1cmUuCiAgICAgYm9vbCBkcmF3RnJhbWUg
PSB0cnVlOwogCi0gICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBlbmQgPSBDQ0xheWVySXRlcmF0b3JU
eXBlOjplbmQoZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgZm9yIChDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oZnJhbWUucmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgIENDTGF5ZXJJdGVyYXRv
clR5cGUgZW5kID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6ZW5kKCZyZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsKKyAgICBmb3IgKENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JU
eXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7IGl0ICE9IGVuZDsgKytpdCkgewog
ICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSBpdC50YXJnZXRSZW5kZXJT
dXJmYWNlTGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOwogICAgICAgICBDQ1JlbmRlclBhc3MqIHBh
c3MgPSBzdXJmYWNlUGFzc01hcC5nZXQocmVuZGVyU3VyZmFjZSk7CiAgICAgICAgIGJvb2wgaGFk
TWlzc2luZ1RpbGVzID0gZmFsc2U7CkBAIC0zMTMsNyArMzEyLDcgQEAgYm9vbCBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJiBmcmFtZSkKICAgICAg
ICAgICAgIHBhc3MtPmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgY29udHJp
YnV0aW5nUmVuZGVyUGFzcywgJm9jY2x1c2lvblRyYWNrZXIpOwogICAgICAgICB9IGVsc2UgaWYg
KGl0LnJlcHJlc2VudHNJdHNlbGYoKSAmJiAhb2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgqaXQs
IGl0LT52aXNpYmxlTGF5ZXJSZWN0KCkpICYmICFpdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1w
dHkoKSAmJiAhaXQtPnNjaXNzb3JSZWN0KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpdC0+
d2lsbERyYXcobV9sYXllclJlbmRlcmVyLmdldCgpLCBjb250ZXh0KCkpOwotICAgICAgICAgICAg
ZnJhbWUud2lsbERyYXdMYXllcnMuYXBwZW5kKCppdCk7CisgICAgICAgICAgICB3aWxsRHJhd0xh
eWVycy5hcHBlbmQoKml0KTsKIAogICAgICAgICAgICAgcGFzcy0+YXBwZW5kUXVhZHNGb3JMYXll
cigqaXQsICZvY2NsdXNpb25UcmFja2VyLCBoYWRNaXNzaW5nVGlsZXMpOwogICAgICAgICB9CkBA
IC0zMjgsMTUgKzMyNywxMiBAQCBib29sIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJl
bmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAgIH0KIAogICAgIGlmICghbV9oYXNUcmFu
c3BhcmVudEJhY2tncm91bmQpIHsKLSAgICAgICAgZnJhbWUucmVuZGVyUGFzc2VzLmxhc3QoKS0+
c2V0SGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGZhbHNlKTsKLSAgICAgICAgZnJhbWUucmVuZGVy
UGFzc2VzLmxhc3QoKS0+YXBwZW5kUXVhZHNUb0ZpbGxTY3JlZW4obV9yb290TGF5ZXJJbXBsLmdl
dCgpLCBtX2JhY2tncm91bmRDb2xvciwgb2NjbHVzaW9uVHJhY2tlcik7CisgICAgICAgIHBhc3Nl
cy5sYXN0KCktPnNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChmYWxzZSk7CisgICAgICAgIHBh
c3Nlcy5sYXN0KCktPmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKG1fcm9vdExheWVySW1wbC5nZXQo
KSwgbV9iYWNrZ3JvdW5kQ29sb3IsIG9jY2x1c2lvblRyYWNrZXIpOwogICAgIH0KIAogICAgIGlm
IChkcmF3RnJhbWUpCiAgICAgICAgIG9jY2x1c2lvblRyYWNrZXIub3ZlcmRyYXdNZXRyaWNzKCku
cmVjb3JkTWV0cmljcyh0aGlzKTsKLQotICAgIHJlbW92ZVBhc3Nlc1dpdGhDYWNoZWRUZXh0dXJl
cyhmcmFtZS5yZW5kZXJQYXNzZXMsIGZyYW1lLnNraXBwZWRQYXNzZXMpOwotCiAgICAgcmV0dXJu
IGRyYXdGcmFtZTsKIH0KIApAQCAtMzg2LDcwICszODIsNiBAQCBJbnRTaXplIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNvbnRlbnRTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9yb290U2Nyb2xsTGF5
ZXJJbXBsLT5jaGlsZHJlbigpWzBdLT5jb250ZW50Qm91bmRzKCk7CiB9CiAKLXZvaWQgQ0NMYXll
clRyZWVIb3N0SW1wbDo6cmVtb3ZlUmVuZGVyUGFzc2VzUmVjdXJzaXZlKENDUmVuZGVyUGFzc0xp
c3QmIHBhc3Nlcywgc2l6ZV90IGJvdHRvbVBhc3MsIGNvbnN0IENDUmVuZGVyUGFzcyogZmlyc3RU
b1JlbW92ZSwgQ0NSZW5kZXJQYXNzTGlzdCYgc2tpcHBlZFBhc3NlcykKLXsKLSAgICBzaXplX3Qg
cmVtb3ZlSW5kZXggPSBwYXNzZXMuZmluZChmaXJzdFRvUmVtb3ZlKTsKLQotICAgIC8vIFRoZSBw
YXNzIHdhcyBhbHJlYWR5IHJlbW92ZWQgYnkgYW5vdGhlciBxdWFkIC0gcHJvYmFibHkgdGhlIG9y
aWdpbmFsLCBhbmQgd2UgYXJlIHRoZSByZXBsaWNhLgotICAgIGlmIChyZW1vdmVJbmRleCA9PSBu
b3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcmVt
b3ZlZFBhc3MgPSBwYXNzZXNbcmVtb3ZlSW5kZXhdLnJlbGVhc2UoKTsKLSAgICBwYXNzZXMucmVt
b3ZlKHJlbW92ZUluZGV4KTsKLQotICAgIC8vIE5vdyBmb2xsb3cgdXAgZm9yIGFsbCBSZW5kZXJQ
YXNzIHF1YWRzIGFuZCByZW1vdmUgdGhlaXIgcmVuZGVyIHBhc3NlcyByZWN1cnNpdmVseS4KLSAg
ICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCA9IHJlbW92ZWRQYXNzLT5xdWFkTGlzdCgpOwot
ICAgIENDUXVhZExpc3Q6OmNvbnN0QmFja1RvRnJvbnRJdGVyYXRvciBxdWFkTGlzdEl0ZXJhdG9y
ID0gcXVhZExpc3QuYmFja1RvRnJvbnRCZWdpbigpOwotICAgIGZvciAoOyBxdWFkTGlzdEl0ZXJh
dG9yICE9IHF1YWRMaXN0LmJhY2tUb0Zyb250RW5kKCk7ICsrcXVhZExpc3RJdGVyYXRvcikgewot
ICAgICAgICBDQ0RyYXdRdWFkKiBjdXJyZW50UXVhZCA9ICgqcXVhZExpc3RJdGVyYXRvcikuZ2V0
KCk7Ci0gICAgICAgIGlmIChjdXJyZW50UXVhZC0+bWF0ZXJpYWwoKSAhPSBDQ0RyYXdRdWFkOjpS
ZW5kZXJQYXNzKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgQ0NSZW5kZXJQYXNz
RHJhd1F1YWQqIHJlbmRlclBhc3NRdWFkID0gc3RhdGljX2Nhc3Q8Q0NSZW5kZXJQYXNzRHJhd1F1
YWQqPihjdXJyZW50UXVhZCk7Ci0gICAgICAgIGNvbnN0IENDUmVuZGVyUGFzcyogbmV4dFJlbmRl
clBhc3MgPSByZW5kZXJQYXNzUXVhZC0+cmVuZGVyUGFzcygpOwotCi0gICAgICAgIC8vIE91ciBz
ZWFyY2ggaXMgbm93IGxpbWl0ZWQgdXAgdG8gdGhlIHBhc3MgdGhhdCB3ZSBqdXN0IHJlbW92ZWQu
Ci0gICAgICAgIC8vIFN1YnN0aXR1dGUgcmVtb3ZlSW5kZXggZm9yIGJvdHRvbVBhc3Mgbm93Lgot
ICAgICAgICByZW1vdmVSZW5kZXJQYXNzZXNSZWN1cnNpdmUocGFzc2VzLCByZW1vdmVJbmRleCwg
bmV4dFJlbmRlclBhc3MsIHNraXBwZWRQYXNzZXMpOwotICAgIH0KLSAgICBza2lwcGVkUGFzc2Vz
LmFwcGVuZChyZW1vdmVkUGFzcy5yZWxlYXNlKCkpOwotfQotCi12b2lkIENDTGF5ZXJUcmVlSG9z
dEltcGw6OnJlbW92ZVBhc3Nlc1dpdGhDYWNoZWRUZXh0dXJlcyhDQ1JlbmRlclBhc3NMaXN0JiBw
YXNzZXMsIENDUmVuZGVyUGFzc0xpc3QmIHNraXBwZWRQYXNzZXMpCi17Ci0gICAgZm9yIChzc2l6
ZV90IHBhc3NJbmRleCA9IHBhc3Nlcy5zaXplKCkgLSAxOyBwYXNzSW5kZXggPj0gMDsgLS1wYXNz
SW5kZXgpIHsKLSAgICAgICAgQ0NSZW5kZXJQYXNzKiBjdXJyZW50UGFzcyA9IHBhc3Nlc1twYXNz
SW5kZXhdLmdldCgpOwotICAgICAgICBjb25zdCBDQ1F1YWRMaXN0JiBxdWFkTGlzdCA9IGN1cnJl
bnRQYXNzLT5xdWFkTGlzdCgpOwotICAgICAgICBDQ1F1YWRMaXN0Ojpjb25zdEJhY2tUb0Zyb250
SXRlcmF0b3IgcXVhZExpc3RJdGVyYXRvciA9IHF1YWRMaXN0LmJhY2tUb0Zyb250QmVnaW4oKTsK
LQotICAgICAgICBmb3IgKDsgcXVhZExpc3RJdGVyYXRvciAhPSBxdWFkTGlzdC5iYWNrVG9Gcm9u
dEVuZCgpOyArK3F1YWRMaXN0SXRlcmF0b3IpIHsKLSAgICAgICAgICAgIENDRHJhd1F1YWQqIGN1
cnJlbnRRdWFkID0gcXVhZExpc3RJdGVyYXRvci0+Z2V0KCk7Ci0KLSAgICAgICAgICAgIGlmIChj
dXJyZW50UXVhZC0+bWF0ZXJpYWwoKSAhPSBDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZCog
cmVuZGVyUGFzc1F1YWQgPSBzdGF0aWNfY2FzdDxDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KGN1cnJl
bnRRdWFkKTsKLSAgICAgICAgICAgIENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFjZSA9IHJl
bmRlclBhc3NRdWFkLT5yZW5kZXJQYXNzKCktPnRhcmdldFN1cmZhY2UoKTsKLQotICAgICAgICAg
ICAgaWYgKHRhcmdldFN1cmZhY2UtPmNvbnRlbnRzQ2hhbmdlZCgpIHx8ICF0YXJnZXRTdXJmYWNl
LT5oYXNDYWNoZWRDb250ZW50c1RleHR1cmUoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgLy8gUmVzZXJ2ZSB0aGUgdGV4dHVyZSBpbW1lZGlhdGVseS4gV2UgZG8g
bm90IG5lZWQgdG8gcGFzcyBpbiBsYXllciByZW5kZXJlcgotICAgICAgICAgICAgLy8gc2luY2Ug
dGhlIHRleHR1cmUgYWxyZWFkeSBleGlzdHMsIGp1c3QgbmVlZHMgdG8gYmUgcmVzZXJ2ZWQuCi0g
ICAgICAgICAgICBpZiAoIXRhcmdldFN1cmZhY2UtPnByZXBhcmVDb250ZW50c1RleHR1cmUoMCkp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIC8vIFdlIGFyZSBjaGFu
Z2luZyB0aGUgdmVjdG9yIGluIHRoZSBtaWRkbGUgb2YgcmV2ZXJzZSBpdGVyYXRpb24uCi0gICAg
ICAgICAgICAvLyBXZSBhcmUgZ3VhcmFudGVlZCB0aGF0IGFueSBkYXRhIGZyb20gaXRlcmF0b3Ig
dG8gdGhlIGVuZCB3aWxsIG5vdCBjaGFuZ2UuCi0gICAgICAgICAgICAvLyBDYXB0dXJlIHRoZSBp
dGVyYXRvciBwb3NpdGlvbiBmcm9tIHRoZSBlbmQsIGFuZCByZXN0b3JlIGl0IGFmdGVyIHRoZSBj
aGFuZ2UuCi0gICAgICAgICAgICBpbnQgcG9zaXRpb25Gcm9tRW5kID0gcGFzc2VzLnNpemUoKSAt
IHBhc3NJbmRleDsKLSAgICAgICAgICAgIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShwYXNz
ZXMsIHBhc3NJbmRleCwgcmVuZGVyUGFzc1F1YWQtPnJlbmRlclBhc3MoKSwgc2tpcHBlZFBhc3Nl
cyk7Ci0gICAgICAgICAgICBwYXNzSW5kZXggPSBwYXNzZXMuc2l6ZSgpIC0gcG9zaXRpb25Gcm9t
RW5kOwotICAgICAgICAgICAgQVNTRVJUKHBhc3NJbmRleCA+PSAwKTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQogYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0
YSYgZnJhbWUpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJjYyIsICJDQ0xheWVyVHJlZUhvc3RJbXBs
OjpwcmVwYXJlVG9EcmF3Iik7CkBAIC00NjAsNyArMzkyLDcgQEAgYm9vbCBDQ0xheWVyVHJlZUhv
c3RJbXBsOjpwcmVwYXJlVG9EcmF3KEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgZnJhbWUucmVuZGVy
U3VyZmFjZUxheWVyTGlzdC0+Y2xlYXIoKTsKICAgICBmcmFtZS53aWxsRHJhd0xheWVycy5jbGVh
cigpOwogCi0gICAgaWYgKCFjYWxjdWxhdGVSZW5kZXJQYXNzZXMoZnJhbWUpKQorICAgIGlmICgh
Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKGZyYW1lLnJlbmRlclBhc3NlcywgKmZyYW1lLnJlbmRlclN1
cmZhY2VMYXllckxpc3QsIGZyYW1lLndpbGxEcmF3TGF5ZXJzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gSWYgd2UgcmV0dXJuIHRydWUsIHRoZW4gd2UgZXhwZWN0IGRyYXdMYXll
cnMoKSB0byBiZSBjYWxsZWQgYmVmb3JlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFnYWluLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGM5ODhlMDExYWVjNzlmM2Mz
NmQwYTIxYjhmYmQzMjdjNTQ4NDYzZDMuLjYzMGU3OThiMDk4YjljMjk1ZWExOTEyZGU4YjUzNGIy
M2I0YWM5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTg2LDcg
Kzg2LDYgQEAgcHVibGljOgogCiAgICAgc3RydWN0IEZyYW1lRGF0YSB7CiAgICAgICAgIENDUmVu
ZGVyUGFzc0xpc3QgcmVuZGVyUGFzc2VzOwotICAgICAgICBDQ1JlbmRlclBhc3NMaXN0IHNraXBw
ZWRQYXNzZXM7CiAgICAgICAgIENDTGF5ZXJMaXN0KiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0Owog
ICAgICAgICBDQ0xheWVyTGlzdCB3aWxsRHJhd0xheWVyczsKICAgICB9OwpAQCAtMTc1LDkgKzE3
NCw2IEBAIHB1YmxpYzoKICAgICBDQ0ZyYW1lUmF0ZUNvdW50ZXIqIGZwc0NvdW50ZXIoKSBjb25z
dCB7IHJldHVybiBtX2Zwc0NvdW50ZXIuZ2V0KCk7IH0KICAgICBDQ0RlYnVnUmVjdEhpc3Rvcnkq
IGRlYnVnUmVjdEhpc3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnUmVjdEhpc3RvcnkuZ2V0
KCk7IH0KIAotICAgIC8vIFJlbW92ZXMgYWxsIHJlbmRlciBwYXNzZXMgZm9yIHdoaWNoIHdlIGhh
dmUgY2FjaGVkIHRleHR1cmVzLCBhbmQgd2hpY2ggZGlkIG5vdCBjaGFuZ2UgdGhlaXIgY29udGVu
dC4KLSAgICBzdGF0aWMgdm9pZCByZW1vdmVQYXNzZXNXaXRoQ2FjaGVkVGV4dHVyZXMoQ0NSZW5k
ZXJQYXNzTGlzdCYgcGFzc2VzLCBDQ1JlbmRlclBhc3NMaXN0JiBza2lwcGVkUGFzc2VzKTsKLQog
cHJvdGVjdGVkOgogICAgIENDTGF5ZXJUcmVlSG9zdEltcGwoY29uc3QgQ0NMYXllclRyZWVTZXR0
aW5ncyYsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQqKTsKIApAQCAtMjA5LDEzICsyMDUsMTAg
QEAgcHJpdmF0ZToKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZSBmcmFtZSBzaG91bGQgbm90
IGJlIGRpc3BsYXllZC4gVGhpcyBmdW5jdGlvbiBzaG91bGQKICAgICAvLyBvbmx5IGJlIGNhbGxl
ZCBmcm9tIHByZXBhcmVUb0RyYXcsIGFzIGRpZERyYXdBbGxMYXllcnMgbXVzdCBiZSBjYWxsZWQK
ICAgICAvLyBpZiB0aGlzIGhlbHBlciBmdW5jdGlvbiBpcyBjYWxsZWQuCi0gICAgYm9vbCBjYWxj
dWxhdGVSZW5kZXJQYXNzZXMoRnJhbWVEYXRhJik7CisgICAgYm9vbCBjYWxjdWxhdGVSZW5kZXJQ
YXNzZXMoQ0NSZW5kZXJQYXNzTGlzdCYsIENDTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBDQ0xheWVyTGlzdCYgd2lsbERyYXdMYXllcnMpOwogICAgIHZvaWQgYW5pbWF0ZUxheWVy
c1JlY3Vyc2l2ZShDQ0xheWVySW1wbCosIGRvdWJsZSBtb25vdG9uaWNUaW1lLCBkb3VibGUgd2Fs
bENsb2NrVGltZSwgQ0NBbmltYXRpb25FdmVudHNWZWN0b3IqLCBib29sJiBkaWRBbmltYXRlLCBi
b29sJiBuZWVkc0FuaW1hdGVMYXllcnMpOwogICAgIHZvaWQgc2V0QmFja2dyb3VuZFRpY2tpbmdF
bmFibGVkKGJvb2wpOwogICAgIEludFNpemUgY29udGVudFNpemUoKSBjb25zdDsKLQotICAgIHN0
YXRpYyB2b2lkIHJlbW92ZVJlbmRlclBhc3Nlc1JlY3Vyc2l2ZShDQ1JlbmRlclBhc3NMaXN0JiBw
YXNzZXMsIHNpemVfdCBib3R0b21QYXNzLCBjb25zdCBDQ1JlbmRlclBhc3MqIGZpcnN0VG9SZW1v
dmUsIENDUmVuZGVyUGFzc0xpc3QmIHNraXBwZWRQYXNzZXMpOwotCiAgICAgdm9pZCBzZW5kRGlk
TG9zZUNvbnRleHRSZWN1cnNpdmUoQ0NMYXllckltcGwqKTsKICAgICB2b2lkIGNsZWFyUmVuZGVy
U3VyZmFjZXMoKTsKICAgICBib29sIGVuc3VyZVJlbmRlclN1cmZhY2VMYXllckxpc3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyUGFzcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmgKaW5kZXggMmI4YmM3ZTViY2NlYzQ4ODg5NzYzY2JiN2I0OTQwYzM5
OGNiZjIwZS4uYTQ1MTAwNmNlODhiMTJiMDcyMzcwZGZhMjIzOWY4MzgzYmE3MWZjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJQYXNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NSZW5kZXJQYXNzLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFz
VHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3QgeyByZXR1cm4gbV9oYXNUcmFuc3BhcmVudEJh
Y2tncm91bmQ7IH0KICAgICB2b2lkIHNldEhhc1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sIHRy
YW5zcGFyZW50KSB7IG1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kID0gdHJhbnNwYXJlbnQ7IH0K
IAotcHJvdGVjdGVkOgorcHJpdmF0ZToKICAgICBleHBsaWNpdCBDQ1JlbmRlclBhc3MoQ0NSZW5k
ZXJTdXJmYWNlKik7CiAKICAgICBDQ1JlbmRlclN1cmZhY2UqIG1fdGFyZ2V0U3VyZmFjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDMwNmExYzA3NWNiNTc4YjU0YjU0OTI1
NzUwODE2YjA0ZmNlM2JjNWIuLmRkYWJkNTI4YzhmZDFkMGJjZDU2YjIwMzcwZGM1M2RkMDMwMjJl
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtODgsMTggKzg4LDEwIEBA
IEZsb2F0UmVjdCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdAog
CiBib29sIENDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUNvbnRlbnRzVGV4dHVyZShMYXllclJlbmRl
cmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgbWV0aG9k
IHNob3VsZCBiZSBzZXBhcmF0ZWQgaW50byB0d286IG9uZSB0byByZXNlcnZlIGFuCi0gICAgLy8g
ZXhpc3Rpbmcgc3VyZmFjZSwgYW5kIG9uZSB0byBjcmVhdGUgYSBuZXcgb25lLiBUaGF0IHdheSB3
ZSB3aWxsIG5vdAotICAgIC8vIG5lZWQgdG8gcGFzcyBudWxsIGxheWVyUmVuZGVyZXIuCi0gICAg
aWYgKGxheWVyUmVuZGVyZXIpIHsKLSAgICAgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5h
Z2VyID0gbGF5ZXJSZW5kZXJlci0+aW1wbFRleHR1cmVNYW5hZ2VyKCk7Ci0KLSAgICAgICAgaWYg
KCFtX2NvbnRlbnRzVGV4dHVyZSkKLSAgICAgICAgICAgIG1fY29udGVudHNUZXh0dXJlID0gTWFu
YWdlZFRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlTWFuYWdlcik7Ci0gICAgfQorICAgIFRleHR1cmVN
YW5hZ2VyKiB0ZXh0dXJlTWFuYWdlciA9IGxheWVyUmVuZGVyZXItPmltcGxUZXh0dXJlTWFuYWdl
cigpOwogCiAgICAgaWYgKCFtX2NvbnRlbnRzVGV4dHVyZSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBtX2NvbnRlbnRzVGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4
dHVyZU1hbmFnZXIpOwogCiAgICAgaWYgKG1fY29udGVudHNUZXh0dXJlLT5pc1Jlc2VydmVkKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTIyLDExICsxMTQsNiBAQCBib29sIENDUmVuZGVy
U3VyZmFjZTo6aGFzVmFsaWRDb250ZW50c1RleHR1cmUoKSBjb25zdAogICAgIHJldHVybiBtX2Nv
bnRlbnRzVGV4dHVyZSAmJiBtX2NvbnRlbnRzVGV4dHVyZS0+aXNSZXNlcnZlZCgpICYmIG1fY29u
dGVudHNUZXh0dXJlLT5pc1ZhbGlkKG1fY29udGVudFJlY3Quc2l6ZSgpLCBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQSk7CiB9CiAKLWJvb2wgQ0NSZW5kZXJTdXJmYWNlOjpoYXNDYWNoZWRDb250ZW50
c1RleHR1cmUoKSBjb25zdAotewotICAgIHJldHVybiBtX2NvbnRlbnRzVGV4dHVyZSAmJiBtX2Nv
bnRlbnRzVGV4dHVyZS0+aXNWYWxpZChtX2NvbnRlbnRSZWN0LnNpemUoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJHQkEpOwotfQotCiBib29sIENDUmVuZGVyU3VyZmFjZTo6cHJlcGFyZUJhY2tncm91
bmRUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKIHsKICAgICBU
ZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIgPSBsYXllclJlbmRlcmVyLT5pbXBsVGV4dHVy
ZU1hbmFnZXIoKTsKQEAgLTIyMywxMSArMjEwLDYgQEAgdm9pZCBDQ1JlbmRlclN1cmZhY2U6OnNl
dENsaXBSZWN0KGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQogICAgIG1fY2xpcFJlY3QgPSBjbGlw
UmVjdDsKIH0KIAotYm9vbCBDQ1JlbmRlclN1cmZhY2U6OmNvbnRlbnRzQ2hhbmdlZCgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuICFtX2RhbWFnZVRyYWNrZXItPmN1cnJlbnREYW1hZ2VSZWN0KCkuaXNF
bXB0eSgpOwotfQotCiB2b2lkIENDUmVuZGVyU3VyZmFjZTo6c2V0Q29udGVudFJlY3QoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QpCiB7CiAgICAgaWYgKG1fY29udGVudFJlY3QgPT0gY29udGVu
dFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4IDg2Y2E2OTZkMGVkNzRmYjQw
MmE0ZjcxMTU4NTNkZWM5ZTkzZGFkYWYuLjYyNTIzYjgyMTJiN2UzNmQ2NWQ4MmRjNmQxYzY5Yjkx
Yzg3NGM2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCkBAIC01MywxMCArNTMsOSBA
QCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQ0NSZW5kZXJTdXJmYWNlKENDTGF5ZXJJbXBsKik7CiAg
ICAgfkNDUmVuZGVyU3VyZmFjZSgpOwogCi0gICAgdmlydHVhbCBib29sIHByZXBhcmVDb250ZW50
c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgYm9vbCBwcmVwYXJlQ29udGVu
dHNUZXh0dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogICAgIHZvaWQgcmVsZWFzZUNvbnRl
bnRzVGV4dHVyZSgpOwogICAgIGJvb2wgaGFzVmFsaWRDb250ZW50c1RleHR1cmUoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzQ2FjaGVkQ29udGVudHNUZXh0dXJlKCkgY29uc3Q7CiAKICAg
ICBib29sIHByZXBhcmVCYWNrZ3JvdW5kVGV4dHVyZShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsK
ICAgICB2b2lkIHJlbGVhc2VCYWNrZ3JvdW5kVGV4dHVyZSgpOwpAQCAtMTE1LDggKzExNCw2IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNjaXNzb3JSZWN0KGNvbnN0IEludFJlY3QmIHNjaXNzb3JS
ZWN0KSB7IG1fc2Npc3NvclJlY3QgPSBzY2lzc29yUmVjdDsgfQogICAgIGNvbnN0IEludFJlY3Qm
IHNjaXNzb3JSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zY2lzc29yUmVjdDsgfQogCi0gICAgdmly
dHVhbCBib29sIGNvbnRlbnRzQ2hhbmdlZCgpIGNvbnN0OwotCiAgICAgdm9pZCBzZXRDb250ZW50
UmVjdChjb25zdCBJbnRSZWN0Jik7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCmluZGV4IGY0OTgwNjlmMGVl
YTc5ZjMyODlmZDY0YjQwNWFkOTc2YTkxYTg2OTAuLjhjOWI1NDNiMmNmNGViOTYyYjg4NjI3ZmVm
NjM0N2M4ZDAwMGY1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcApAQCAtOTM0LDggKzkzNCw3IEBAIFRFU1RfRihDQ0Rh
bWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNYXNrKQogCiAgICAgLy8gVGhlbiB0ZXN0
IHRoZSBwcm9wZXJ0eSBjaGFuZ2UuCiAgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290
LmdldCgpKTsKLSAgICBtYXNrTGF5ZXItPnNldFN0YWNraW5nT3JkZXJDaGFuZ2VkKHRydWUpOwot
CisgICAgbWFza0xheWVyLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgZW11bGF0ZURyYXdpbmdPbmVG
cmFtZShyb290LmdldCgpKTsKICAgICBjaGlsZERhbWFnZVJlY3QgPSBjaGlsZC0+cmVuZGVyU3Vy
ZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CiAgICAgRVhQRUNU
X0ZMT0FUX1JFQ1RfRVEoRmxvYXRSZWN0KDAsIDAsIDMwLCAzMCksIGNoaWxkRGFtYWdlUmVjdCk7
CkBAIC0xMDAyLDcgKzEwMDEsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5
RGFtYWdlRm9yUmVwbGljYU1hc2spCiAKICAgICAvLyBDQVNFIDE6IGEgcHJvcGVydHkgY2hhbmdl
IG9uIHRoZSBtYXNrIHNob3VsZCBkYW1hZ2Ugb25seSB0aGUgcmVmbGVjdGVkIHJlZ2lvbiBvbiB0
aGUgdGFyZ2V0IHN1cmZhY2UuCiAgICAgY2xlYXJEYW1hZ2VGb3JBbGxTdXJmYWNlcyhyb290Lmdl
dCgpKTsKLSAgICByZXBsaWNhTWFza0xheWVyLT5zZXRTdGFja2luZ09yZGVyQ2hhbmdlZCh0cnVl
KTsKKyAgICByZXBsaWNhTWFza0xheWVyLT5zZXRPcGFjaXR5KDAuNmYpOwogICAgIGVtdWxhdGVE
cmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAKICAgICBGbG9hdFJlY3QgZ3JhbmRDaGlsZERh
bWFnZVJlY3QgPSBncmFuZENoaWxkMS0+cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCkt
PmN1cnJlbnREYW1hZ2VSZWN0KCk7CkBAIC0xMDY2LDggKzEwNjUsNyBAQCBURVNUX0YoQ0NEYW1h
Z2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYU1hc2tXaXRoQW5jaG9yKQogCiAg
ICAgLy8gQSBwcm9wZXJ0eSBjaGFuZ2Ugb24gdGhlIHJlcGxpY2FNYXNrIHNob3VsZCBkYW1hZ2Ug
dGhlIHJlZmxlY3RlZCByZWdpb24gb24gdGhlIHRhcmdldCBzdXJmYWNlLgogICAgIGNsZWFyRGFt
YWdlRm9yQWxsU3VyZmFjZXMocm9vdC5nZXQoKSk7Ci0gICAgcmVwbGljYU1hc2tMYXllci0+c2V0
U3RhY2tpbmdPcmRlckNoYW5nZWQodHJ1ZSk7Ci0KKyAgICByZXBsaWNhTWFza0xheWVyLT5zZXRP
cGFjaXR5KDAuNmYpOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9vdC5nZXQoKSk7CiAK
ICAgICBGbG9hdFJlY3QgY2hpbGREYW1hZ2VSZWN0ID0gY2hpbGQxLT5yZW5kZXJTdXJmYWNlKCkt
PmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJlY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAppbmRleCAwMWY5NDNhNjQwZTZh
ZTljNTlmMWI0NmRjOGRkOGI4MWQ3MTI5YjdjLi44MjdjOWFkYWFlMDc0NDU2YTlkMGMwMmI4NzM4
Mzc0NzlmNjM2NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVySW1wbFRlc3QuY3BwCkBAIC00MiwzMyArNDIsMjEgQEAgbmFtZXNwYWNlIHsKICAgICBjb2Rl
VG9UZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICBFWFBFQ1RfVFJVRShyb290LT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBFWFBFQ1RfVFJVRShjaGlsZC0+bGF5ZXJQ
cm9wZXJ0eUNoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBFWFBFQ1Rf
VFJVRShncmFuZENoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICBFWFBFQ1RfRkFMU0Uocm9vdC0+bGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2Vk
KCkpCi0KKyAgICBFWFBFQ1RfVFJVRShncmFuZENoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgp
KQogCiAjZGVmaW5lIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0RJRF9OT1RfQ0hBTkdFKGNv
ZGVUb1Rlc3QpICAgICAgICAgICBcCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0Zv
clN1YnRyZWUoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY29kZVRvVGVzdDsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CiAgICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOyAgICAgICAg
ICAgICAgICAgICAgICAgICBcCiAgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5sYXllclByb3BlcnR5
Q2hhbmdlZCgpKTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0ZBTFNFKGdy
YW5kQ2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICBcCi0g
ICAgRVhQRUNUX0ZBTFNFKHJvb3QtPmxheWVyU3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgpKQorICAg
IEVYUEVDVF9GQUxTRShncmFuZENoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKQogCiAjZGVm
aW5lIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZX0xBWUVSX0NIQU5HRUQoY29kZVRvVGVzdCkgICAg
ICAgICAgICAgICBcCiAgICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUo
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY29kZVRvVGVzdDsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgRVhQ
RUNUX1RSVUUocm9vdC0+bGF5ZXJQcm9wZXJ0eUNoYW5nZWQoKSk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgp
KTsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0ZBTFNFKGdyYW5kQ2hpbGQt
PmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNU
X0ZBTFNFKHJvb3QtPmxheWVyU3VyZmFjZVByb3BlcnR5Q2hhbmdlZCgpKQotCi0jZGVmaW5lIEVY
RUNVVEVfQU5EX1ZFUklGWV9PTkxZX1NVUkZBQ0VfQ0hBTkdFRChjb2RlVG9UZXN0KSAgICAgICAg
ICAgICBcCi0gICAgcm9vdC0+cmVzZXRBbGxDaGFuZ2VUcmFja2luZ0ZvclN1YnRyZWUoKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY29kZVRvVGVzdDsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0ZB
TFNFKHJvb3QtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgRVhQRUNUX0ZBTFNFKGNoaWxkLT5sYXllclByb3BlcnR5Q2hhbmdlZCgpKTsgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX0ZBTFNFKGdyYW5kQ2hpbGQtPmxheWVy
UHJvcGVydHlDaGFuZ2VkKCkpOyAgICAgICAgICAgICAgICAgICBcCi0gICAgRVhQRUNUX1RSVUUo
cm9vdC0+bGF5ZXJTdXJmYWNlUHJvcGVydHlDaGFuZ2VkKCkpCisgICAgRVhQRUNUX0ZBTFNFKGdy
YW5kQ2hpbGQtPmxheWVyUHJvcGVydHlDaGFuZ2VkKCkpCiAKIFRFU1QoQ0NMYXllckltcGxUZXN0
LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiB7CkBAIC0xMTAsOSArOTgs
MTEgQEAgVEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQ
cm9wZXJseSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNl
dE1hc2tMYXllcihDQ0xheWVySW1wbDo6Y3JlYXRlKDQpKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVS
SUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRNYXNrc1RvQm91bmRzKHRydWUpKTsKICAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldE9wYXF1ZSh0cnVlKSk7
CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NVQlRSRUVfQ0hBTkdFRChyb290LT5zZXRPcGFjaXR5
KGFyYml0cmFyeU51bWJlcikpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVUJUUkVFX0NIQU5H
RUQocm9vdC0+c2V0UmVwbGljYUxheWVyKENDTGF5ZXJJbXBsOjpjcmVhdGUoNSkpKTsKICAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldFBvc2l0aW9uKGFyYml0
cmFyeUZsb2F0UG9pbnQpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VE
KHJvb3QtPnNldFByZXNlcnZlczNEKHRydWUpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VC
VFJFRV9DSEFOR0VEKHJvb3QtPnNldFRyYW5zZm9ybShhcmJpdHJhcnlUcmFuc2Zvcm0pKTsKICAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNldERvdWJsZVNpZGVk
KGZhbHNlKSk7IC8vIGNvbnN0cnVjdG9yIGluaXRpYWxpemVzIGl0IHRvICJ0cnVlIi4KICAgICBF
WEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3QtPnNjcm9sbEJ5KGFyYml0cmFy
eUludFNpemUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU1VCVFJFRV9DSEFOR0VEKHJvb3Qt
PnNldFNjcm9sbERlbHRhKGFyYml0cmFyeUludFNpemUpKTsKQEAgLTEyNywxMCArMTE3LDYgQEAg
VEVTVChDQ0xheWVySW1wbFRlc3QsIHZlcmlmeUxheWVyQ2hhbmdlc0FyZVRyYWNrZWRQcm9wZXJs
eSkKICAgICBFWEVDVVRFX0FORF9WRVJJRllfT05MWV9MQVlFUl9DSEFOR0VEKHJvb3QtPnNldEJh
Y2tncm91bmRDb2xvcihDb2xvcjo6Z3JheSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9PTkxZ
X0xBWUVSX0NIQU5HRUQocm9vdC0+c2V0QmFja2dyb3VuZEZpbHRlcnMoYXJiaXRyYXJ5RmlsdGVy
cykpOwogCi0gICAgLy8gQ2hhbmdpbmcgdGhlc2UgcHJvcGVydGllcyBvbmx5IGFmZmVjdHMgaG93
IHJlbmRlciBzdXJmYWNlIGlzIGRyYXduCi0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX09OTFlfU1VS
RkFDRV9DSEFOR0VEKHJvb3QtPnNldE9wYWNpdHkoYXJiaXRyYXJ5TnVtYmVyKSk7Ci0gICAgRVhF
Q1VURV9BTkRfVkVSSUZZX09OTFlfU1VSRkFDRV9DSEFOR0VEKHJvb3QtPnNldFRyYW5zZm9ybShh
cmJpdHJhcnlUcmFuc2Zvcm0pKTsKLQogICAgIC8vIFNwZWNpYWwgY2FzZTogY2hlY2sgdGhhdCBz
dWJsYXllciB0cmFuc2Zvcm0gY2hhbmdlcyBhbGwgbGF5ZXIncyBkZXNjZW5kYW50cywgYnV0IG5v
dCB0aGUgbGF5ZXIgaXRzZWxmLgogICAgIHJvb3QtPnJlc2V0QWxsQ2hhbmdlVHJhY2tpbmdGb3JT
dWJ0cmVlKCk7CiAgICAgcm9vdC0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oYXJiaXRyYXJ5VHJhbnNm
b3JtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXggNTM4NjNiNjE1OWUwMjNlYzU0MDhhMGQ0Njg1YTEw
OGJmMzU1YmU0ZC4uMzUwOTM3NmFmOGNlZWVlOGJlMzYwZjg4NjJhYzJmYWMxNTVkYTM2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RJbXBsVGVzdC5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUaWxpbmdEYXRhLmgiCiAjaW5jbHVkZSAiY2MvQ0NR
dWFkQ3VsbGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzRHJhd1F1YWQuaCIKICNpbmNs
dWRlICJjYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCkBAIC0yNDA1LDU5NyArMjQw
NCw0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgaGFzVHJhbnNwYXJlbnRCYWNr
Z3JvdW5kKQogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtb2NrQ29udGV4
dCk7CiB9CiAKLVRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc3VyZmFjZVRleHR1cmVD
YWNoaW5nKQotewotICAgIENDU2V0dGluZ3M6OnNldFBhcnRpYWxTd2FwRW5hYmxlZCh0cnVlKTsK
LSAgICAKLSAgICBDQ0xheWVyVHJlZVNldHRpbmdzIHNldHRpbmdzOwotICAgIE93blB0cjxDQ0xh
eWVyVHJlZUhvc3RJbXBsPiBteUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRl
KHNldHRpbmdzLCB0aGlzKTsKLSAgICAKLSAgICBSZWZQdHI8Q0NHcmFwaGljc0NvbnRleHQ+IGNv
bnRleHQgPSBDQ0dyYXBoaWNzQ29udGV4dDo6Y3JlYXRlM0QoR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihuZXcgUGFy
dGlhbFN3YXBDb250ZXh0KCkpLCBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpKTsKLQotICAgIG15SG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNv
bnRleHQucmVsZWFzZSgpLCBVbnRocm90dGxlZFVwbG9hZGVyKTsKLSAgICBteUhvc3RJbXBsLT5z
ZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMDAsIDEwMCkpOwotCi0gICAgT3duUHRyPENDTGF5ZXJJ
bXBsPiByb290ID0gQ0NMYXllckltcGw6OmNyZWF0ZSgxKTsKLSAgICBDQ0xheWVySW1wbCogcm9v
dFB0ciA9IHJvb3QuZ2V0KCk7Ci0KLSAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
KDAsIDApKTsKLSAgICByb290LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKLSAgICBy
b290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHJvb3QtPnNldENvbnRlbnRC
b3VuZHMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIHJvb3QtPnNldFZpc2libGVMYXllclJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwotICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVl
KTsKLSAgICBteUhvc3RJbXBsLT5zZXRSb290TGF5ZXIocm9vdC5yZWxlYXNlKCkpOwotCi0gICAg
Ly8gSW50ZXJtZWRpYXRlIGxheWVyIGRvZXMgbm90IG93biBhIHN1cmZhY2UsIGFuZCBkb2VzIG5v
dCBkcmF3IGNvbnRlbnQuCi0gICAgT3duUHRyPENDTGF5ZXJJbXBsPiBpbnRlcm1lZGlhdGVMYXll
ciA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMik7Ci0gICAgQ0NMYXllckltcGwqIGludGVybWVkaWF0
ZUxheWVyUHRyID0gaW50ZXJtZWRpYXRlTGF5ZXIuZ2V0KCk7Ci0KLSAgICBpbnRlcm1lZGlhdGVM
YXllclB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgaW50ZXJtZWRp
YXRlTGF5ZXJQdHItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMTAsIDEwKSk7Ci0gICAgaW50ZXJt
ZWRpYXRlTGF5ZXJQdHItPnNldEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgaW50ZXJt
ZWRpYXRlTGF5ZXJQdHItPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgxMDAsIDEwMCkpOwotICAg
IGludGVybWVkaWF0ZUxheWVyUHRyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwg
MTAwLCAxMDApKTsKLSAgICBpbnRlcm1lZGlhdGVMYXllclB0ci0+c2V0RHJhd3NDb250ZW50KGZh
bHNlKTsgLy8gb25seSBjaGlsZHJlbiBkcmF3IGNvbnRlbnQKLSAgICByb290UHRyLT5hZGRDaGls
ZChpbnRlcm1lZGlhdGVMYXllci5yZWxlYXNlKCkpOwotCi0gICAgT3duUHRyPENDTGF5ZXJJbXBs
PiBzdXJmYWNlTGF5ZXIgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDMpOwotICAgIENDTGF5ZXJJbXBs
KiBzdXJmYWNlTGF5ZXJQdHIgPSBzdXJmYWNlTGF5ZXIuZ2V0KCk7Ci0KLSAgICAvLyBTdXJmYWNl
IGxheWVyIGlzIHRoZSBsYXllciB0aGF0IGNoYW5nZXMgaXRzIG9wYWNpdHkKLSAgICAvLyBJdCB3
aWxsIGNvbnRhaW4gb3RoZXIgbGF5ZXJzIHRoYXQgZHJhdyBjb250ZW50LgotICAgIHN1cmZhY2VM
YXllclB0ci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgc3VyZmFjZUxh
eWVyUHRyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDEwLCAxMCkpOwotICAgIHN1cmZhY2VMYXll
clB0ci0+c2V0Qm91bmRzKEludFNpemUoNTAsIDUwKSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5z
ZXRDb250ZW50Qm91bmRzKEludFNpemUoNTAsIDUwKSk7Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgNTAsIDUwKSk7Ci0gICAgc3VyZmFjZUxh
eWVyUHRyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOyAvLyBvbmx5IGNoaWxkcmVuIGRyYXcgY29u
dGVudAotICAgIHN1cmZhY2VMYXllclB0ci0+c2V0T3BhY2l0eSgwLjVmKTsgLy8gVGhpcyB3aWxs
IGNhdXNlIGl0IHRvIGhhdmUgYSBzdXJmYWNlCi0gICAgaW50ZXJtZWRpYXRlTGF5ZXJQdHItPmFk
ZENoaWxkKHN1cmZhY2VMYXllci5yZWxlYXNlKCkpOwotCi0gICAgLy8gQ2hpbGQgb2YgdGhlIHN1
cmZhY2UgbGF5ZXIgd2lsbCBwcm9kdWNlIHNvbWUgcXVhZHMKLSAgICBPd25QdHI8RmFrZUxheWVy
V2l0aFF1YWRzPiBjaGlsZCA9IEZha2VMYXllcldpdGhRdWFkczo6Y3JlYXRlKDQpOwotICAgIEZh
a2VMYXllcldpdGhRdWFkcyogY2hpbGRQdHIgPSBjaGlsZC5nZXQoKTsKLQotICAgIGNoaWxkUHRy
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAgICBjaGlsZFB0ci0+c2V0UG9z
aXRpb24oRmxvYXRQb2ludCg1LCA1KSk7Ci0gICAgY2hpbGRQdHItPnNldEJvdW5kcyhJbnRTaXpl
KDEwLCAxMCkpOwotICAgIGNoaWxkUHRyLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEw
KSk7Ci0gICAgY2hpbGRQdHItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCAxMCwg
MTApKTsKLSAgICBjaGlsZFB0ci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotCi0gICAgc3VyZmFj
ZUxheWVyUHRyLT5hZGRDaGlsZChjaGlsZC5yZWxlYXNlKCkpOwotCi0gICAgewotICAgICAgICBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKLQotICAgICAgICAvLyBNdXN0IHJl
Y2VpdmUgdHdvIHJlbmRlciBwYXNzZXMsIGVhY2ggd2l0aCBvbmUgcXVhZAotICAgICAgICBBU1NF
UlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVEo
MVUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKS5zaXplKCkpOwotICAgICAgICBF
WFBFQ1RfRVEoMVUsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKS5zaXplKCkpOwot
Ci0gICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQ
YXNzZXNbMV0tPnF1YWRMaXN0KClbMF0tPm1hdGVyaWFsKCkpOwotICAgICAgICBDQ1JlbmRlclBh
c3NEcmF3UXVhZCogcXVhZCA9IHN0YXRpY19jYXN0PENDUmVuZGVyUGFzc0RyYXdRdWFkKj4oZnJh
bWUucmVuZGVyUGFzc2VzWzFdLT5xdWFkTGlzdCgpWzBdLmdldCgpKTsKLSAgICAgICAgRVhQRUNU
X1RSVUUocXVhZC0+cmVuZGVyUGFzcygpLT50YXJnZXRTdXJmYWNlKCktPmNvbnRlbnRzQ2hhbmdl
ZCgpKTsKLQotICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKLSAgICAgICAg
bXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7Ci0gICAgfQotCi0gICAgLy8gRHJh
dyB3aXRob3V0IGFueSBjaGFuZ2UKLSAgICB7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKLSAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkpOwotCi0gICAgICAgIC8vIE11c3QgcmVjZWl2ZSB0d28gRU1QVFkgcmVu
ZGVyIHBhc3NlcwotICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXpl
KCkpOwotICAgICAgICBFWFBFQ1RfRVEoMFUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMFUsIGZyYW1lLnJlbmRlclBhc3Nlc1sx
XS0+cXVhZExpc3QoKS5zaXplKCkpOwotCi0gICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMo
ZnJhbWUpOwotICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKLSAg
ICB9Ci0KLSAgICAvLyBDaGFuZ2Ugb3BhY2l0eSBhbmQgZHJhdwotICAgIHN1cmZhY2VMYXllclB0
ci0+c2V0T3BhY2l0eSgwLjZmKTsKLSAgICB7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKLSAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkpOwotCi0gICAgICAgIC8vIE11c3QgcmVjZWl2ZSBvbmUgcmVuZGVyIHBh
c3MsIGFzIHRoZSBvdGhlciBvbmUgc2hvdWxkIGJlIGN1bGxlZAotICAgICAgICBBU1NFUlRfRVEo
MVUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOwotCi0gICAgICAgIEVYUEVDVF9FUSgxVSwg
ZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVD
VF9FUShDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRM
aXN0KClbMF0tPm1hdGVyaWFsKCkpOwotICAgICAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVh
ZCA9IHN0YXRpY19jYXN0PENDUmVuZGVyUGFzc0RyYXdRdWFkKj4oZnJhbWUucmVuZGVyUGFzc2Vz
WzBdLT5xdWFkTGlzdCgpWzBdLmdldCgpKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHF1YWQtPnJl
bmRlclBhc3MoKS0+dGFyZ2V0U3VyZmFjZSgpLT5jb250ZW50c0NoYW5nZWQoKSk7Ci0KLSAgICAg
ICAgbXlIb3N0SW1wbC0+ZHJhd0xheWVycyhmcmFtZSk7Ci0gICAgICAgIG15SG9zdEltcGwtPmRp
ZERyYXdBbGxMYXllcnMoZnJhbWUpOwotICAgIH0KLQotICAgIC8vIENoYW5nZSBsZXNzIGJlbmln
biBwcm9wZXJ0eSBhbmQgZHJhdyAtIHNob3VsZCBoYXZlIGNvbnRlbnRzIGNoYW5nZWQgZmxhZwot
ICAgIHN1cmZhY2VMYXllclB0ci0+c2V0U3RhY2tpbmdPcmRlckNoYW5nZWQodHJ1ZSk7Ci0gICAg
ewotICAgICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKLQotICAgICAg
ICAvLyBNdXN0IHJlY2VpdmUgdHdvIHJlbmRlciBwYXNzZXMsIGVhY2ggd2l0aCBvbmUgcXVhZAot
ICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXplKCkpOwotCi0gICAg
ICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNpemUo
KSk7Ci0gICAgICAgIEVYUEVDVF9FUShDQ0RyYXdRdWFkOjpTb2xpZENvbG9yLCBmcmFtZS5yZW5k
ZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbMF0tPm1hdGVyaWFsKCkpOwotCi0gICAgICAgIEVYUEVD
VF9FUShDQ0RyYXdRdWFkOjpSZW5kZXJQYXNzLCBmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRM
aXN0KClbMF0tPm1hdGVyaWFsKCkpOwotICAgICAgICBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVh
ZCA9IHN0YXRpY19jYXN0PENDUmVuZGVyUGFzc0RyYXdRdWFkKj4oZnJhbWUucmVuZGVyUGFzc2Vz
WzFdLT5xdWFkTGlzdCgpWzBdLmdldCgpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUocXVhZC0+cmVu
ZGVyUGFzcygpLT50YXJnZXRTdXJmYWNlKCktPmNvbnRlbnRzQ2hhbmdlZCgpKTsKLQotICAgICAg
ICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsKLSAgICAgICAgbXlIb3N0SW1wbC0+ZGlk
RHJhd0FsbExheWVycyhmcmFtZSk7Ci0gICAgfQotCi0gICAgLy8gQ2hhbmdlIG9wYWNpdHkgYWdh
aW4sIGJ1dCBldmljdCB0aGUgY2FjaGVkIHN1cmZhY2UgdGV4dHVyZQotICAgIHN1cmZhY2VMYXll
clB0ci0+c2V0T3BhY2l0eSgwLjVmKTsKLSAgICBNYW5hZ2VkVGV4dHVyZSogY29udGVudHNUZXh0
dXJlID0gc3VyZmFjZUxheWVyUHRyLT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRzVGV4dHVyZSgp
OwotICAgIEFTU0VSVF9UUlVFKGNvbnRlbnRzVGV4dHVyZS0+aXNWYWxpZChjb250ZW50c1RleHR1
cmUtPnNpemUoKSwgY29udGVudHNUZXh0dXJlLT5mb3JtYXQoKSkpOwotICAgIENDUmVuZGVyZXIq
IHJlbmRlcmVyID0gbXlIb3N0SW1wbC0+bGF5ZXJSZW5kZXJlcigpOwotICAgIFRleHR1cmVNYW5h
Z2VyKiB0ZXh0dXJlTWFuYWdlciA9IHJlbmRlcmVyLT5pbXBsVGV4dHVyZU1hbmFnZXIoKTsKLSAg
ICBzaXplX3QgbWF4TWVtb3J5TGltaXQgPSB0ZXh0dXJlTWFuYWdlci0+bWF4TWVtb3J5TGltaXRC
eXRlcygpOwotCi0gICAgLy8gVGhpcyBzaG91bGQgZXZpY2UgYWxsIGNhY2hlZCBzdXJmYWNlcwot
ICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKDApOwotCi0gICAgLy8g
UmVzdG9yZSBvcmlnaW5hbCBsaW1pdAotICAgIHRleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlM
aW1pdEJ5dGVzKG1heE1lbW9yeUxpbWl0KTsKLQotICAgIC8vIFdhcyBvdXIgc3VyZmFjZSBldmlj
dGVkPwotICAgIEFTU0VSVF9GQUxTRShjb250ZW50c1RleHR1cmUtPmlzVmFsaWQoY29udGVudHNU
ZXh0dXJlLT5zaXplKCksIGNvbnRlbnRzVGV4dHVyZS0+Zm9ybWF0KCkpKTsKLQotICAgIC8vIENo
YW5nZSBvcGFjaXR5IGFuZCBkcmF3Ci0gICAgc3VyZmFjZUxheWVyUHRyLT5zZXRPcGFjaXR5KDAu
NmYpOwotICAgIHsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0SW1wbDo6RnJhbWVEYXRhIGZyYW1l
OwotICAgICAgICBFWFBFQ1RfVFJVRShteUhvc3RJbXBsLT5wcmVwYXJlVG9EcmF3KGZyYW1lKSk7
Ci0KLSAgICAgICAgLy8gTXVzdCByZWNlaXZlIHR3byByZW5kZXIgcGFzc2VzCi0gICAgICAgIEFT
U0VSVF9FUSgyVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7Ci0KLSAgICAgICAgLy8gRXZl
biB0aG91Z2ggbm90IGVub3VnaCBwcm9wZXJ0aWVzIGNoYW5nZWQsIHRoZSBlbnRpcmUgdGhpbmcg
bXVzdCBiZQotICAgICAgICAvLyByZWRyYXduIGFzIHdlIGRvbid0IGhhdmUgY2FjaGVkIHRleHR1
cmVzCi0gICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlz
dCgpLnNpemUoKSk7Ci0gICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzFd
LT5xdWFkTGlzdCgpLnNpemUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX0VRKENDRHJhd1F1YWQ6OlJl
bmRlclBhc3MsIGZyYW1lLnJlbmRlclBhc3Nlc1sxXS0+cXVhZExpc3QoKVswXS0+bWF0ZXJpYWwo
KSk7Ci0gICAgICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NS
ZW5kZXJQYXNzRHJhd1F1YWQqPihmcmFtZS5yZW5kZXJQYXNzZXNbMV0tPnF1YWRMaXN0KClbMF0u
Z2V0KCkpOwotICAgICAgICBFWFBFQ1RfRkFMU0UocXVhZC0+cmVuZGVyUGFzcygpLT50YXJnZXRT
dXJmYWNlKCktPmNvbnRlbnRzQ2hhbmdlZCgpKTsKLQotICAgICAgICBteUhvc3RJbXBsLT5kcmF3
TGF5ZXJzKGZyYW1lKTsKLSAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFt
ZSk7Ci0gICAgfQotCi0gICAgLy8gRHJhdyB3aXRob3V0IGFueSBjaGFuZ2UsIHRvIG1ha2Ugc3Vy
ZSB0aGUgc3RhdGUgaXMgY2xlYXIKLSAgICB7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdEltcGw6
OkZyYW1lRGF0YSBmcmFtZTsKLSAgICAgICAgRVhQRUNUX1RSVUUobXlIb3N0SW1wbC0+cHJlcGFy
ZVRvRHJhdyhmcmFtZSkpOwotCi0gICAgICAgIC8vIE11c3QgcmVjZWl2ZSB0d28gRU1QVFkgcmVu
ZGVyIHBhc3NlcwotICAgICAgICBBU1NFUlRfRVEoMlUsIGZyYW1lLnJlbmRlclBhc3Nlcy5zaXpl
KCkpOwotICAgICAgICBFWFBFQ1RfRVEoMFUsIGZyYW1lLnJlbmRlclBhc3Nlc1swXS0+cXVhZExp
c3QoKS5zaXplKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMFUsIGZyYW1lLnJlbmRlclBhc3Nlc1sx
XS0+cXVhZExpc3QoKS5zaXplKCkpOwotCi0gICAgICAgIG15SG9zdEltcGwtPmRyYXdMYXllcnMo
ZnJhbWUpOwotICAgICAgICBteUhvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKLSAg
ICB9Ci0KLSAgICAvLyBDaGFuZ2Ugb3BhY2l0eSBvbiB0aGUgaW50ZXJtZWRpYXRlIGxheWVyCi0g
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gaW50ZXJtZWRpYXRlTGF5ZXJQ
dHItPnRyYW5zZm9ybSgpOwotICAgIHRyYW5zZm9ybS5zZXRNMTEoMS4wMDAxKTsKLSAgICBpbnRl
cm1lZGlhdGVMYXllclB0ci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7Ci0gICAgewotICAgICAg
ICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpGcmFtZURhdGEgZnJhbWU7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKG15SG9zdEltcGwtPnByZXBhcmVUb0RyYXcoZnJhbWUpKTsKLQotICAgICAgICAvLyBNdXN0
IHJlY2VpdmUgb25lIHJlbmRlciBwYXNzLCBhcyB0aGUgb3RoZXIgb25lIHNob3VsZCBiZSBjdWxs
ZWQuCi0gICAgICAgIEFTU0VSVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzLnNpemUoKSk7Ci0g
ICAgICAgIEVYUEVDVF9FUSgxVSwgZnJhbWUucmVuZGVyUGFzc2VzWzBdLT5xdWFkTGlzdCgpLnNp
emUoKSk7Ci0KLSAgICAgICAgRVhQRUNUX0VRKENDRHJhd1F1YWQ6OlJlbmRlclBhc3MsIGZyYW1l
LnJlbmRlclBhc3Nlc1swXS0+cXVhZExpc3QoKVswXS0+bWF0ZXJpYWwoKSk7Ci0gICAgICAgIEND
UmVuZGVyUGFzc0RyYXdRdWFkKiBxdWFkID0gc3RhdGljX2Nhc3Q8Q0NSZW5kZXJQYXNzRHJhd1F1
YWQqPihmcmFtZS5yZW5kZXJQYXNzZXNbMF0tPnF1YWRMaXN0KClbMF0uZ2V0KCkpOwotICAgICAg
ICBFWFBFQ1RfRkFMU0UocXVhZC0+cmVuZGVyUGFzcygpLT50YXJnZXRTdXJmYWNlKCktPmNvbnRl
bnRzQ2hhbmdlZCgpKTsKLQotICAgICAgICBteUhvc3RJbXBsLT5kcmF3TGF5ZXJzKGZyYW1lKTsK
LSAgICAgICAgbXlIb3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7Ci0gICAgfQotfQot
Ci1zdHJ1Y3QgUmVuZGVyUGFzc0NhY2hlRW50cnkgewotICAgIG11dGFibGUgT3duUHRyPENDUmVu
ZGVyUGFzcz4gcmVuZGVyUGFzc1B0cjsKLSAgICBDQ1JlbmRlclBhc3MqIHJlbmRlclBhc3M7Ci0K
LSAgICBSZW5kZXJQYXNzQ2FjaGVFbnRyeShQYXNzT3duUHRyPENDUmVuZGVyUGFzcz4gcikKLSAg
ICAgICAgOiByZW5kZXJQYXNzUHRyKHIpLAotICAgICAgICAgIHJlbmRlclBhc3MocmVuZGVyUGFz
c1B0ci5nZXQoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgUmVuZGVyUGFzc0NhY2hlRW50cnkoKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBSZW5kZXJQYXNzQ2FjaGVFbnRyeShjb25zdCBSZW5kZXJQYXNz
Q2FjaGVFbnRyeSYgZW50cnkpCi0gICAgICAgIDogcmVuZGVyUGFzc1B0cihlbnRyeS5yZW5kZXJQ
YXNzUHRyLnJlbGVhc2UoKSksCi0gICAgICAgICAgcmVuZGVyUGFzcyhlbnRyeS5yZW5kZXJQYXNz
KQotICAgIHsKLSAgICB9Ci0KLSAgICBSZW5kZXJQYXNzQ2FjaGVFbnRyeSYgb3BlcmF0b3I9KGNv
bnN0IFJlbmRlclBhc3NDYWNoZUVudHJ5JiBlbnRyeSkKLSAgICB7Ci0gICAgICAgIHJlbmRlclBh
c3NQdHIgPSBlbnRyeS5yZW5kZXJQYXNzUHRyLnJlbGVhc2UoKTsKLSAgICAgICAgcmVuZGVyUGFz
cyA9IGVudHJ5LnJlbmRlclBhc3M7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci19Owot
Ci1zdHJ1Y3QgUmVuZGVyUGFzc1JlbW92YWxUZXN0RGF0YSB7Ci0gICAgQ0NSZW5kZXJQYXNzTGlz
dCByZW5kZXJQYXNzTGlzdDsKLSAgICBzdGQ6Om1hcDxjaGFyLCBSZW5kZXJQYXNzQ2FjaGVFbnRy
eT4gcmVuZGVyUGFzc0NhY2hlOwotICAgIHN0ZDo6bWFwPGNvbnN0IENDUmVuZGVyUGFzcyosIGNo
YXI+IHJlbmRlclBhc3NJZDsKLSAgICBWZWN0b3I8T3duUHRyPENDUmVuZGVyU3VyZmFjZT4gPiBy
ZW5kZXJTdXJmYWNlU3RvcmU7Ci0gICAgVmVjdG9yPE93blB0cjxDQ0xheWVySW1wbD4gPiBsYXll
clN0b3JlOwotICAgIE93blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlOwot
fTsKLQotY2xhc3MgRmFrZVJlbmRlclN1cmZhY2UgOiBwdWJsaWMgQ0NSZW5kZXJTdXJmYWNlIHsK
LXByaXZhdGU6Ci0gICAgYm9vbCBtX2hhc0NhY2hlZFRleHR1cmU7Ci0gICAgYm9vbCBtX2NvbnRl
bnRzQ2hhbmdlZDsKLQotcHVibGljOgotICAgIEZha2VSZW5kZXJTdXJmYWNlKENDTGF5ZXJJbXBs
KiBsYXllckltcGwpCi0gICAgICAgIDogQ0NSZW5kZXJTdXJmYWNlKGxheWVySW1wbCksCi0gICAg
ICAgICAgbV9oYXNDYWNoZWRUZXh0dXJlKGZhbHNlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFzQ2FjaGVkQ29udGVudHNUZXh0dXJlKCkgY29uc3QgT1ZFUlJJREUKLSAgICB7
Ci0gICAgICAgIHJldHVybiBtX2hhc0NhY2hlZFRleHR1cmU7Ci0gICAgfQotCi0gICAgdmlydHVh
bCBib29sIHByZXBhcmVDb250ZW50c1RleHR1cmUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBscmMp
IE9WRVJSSURFCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgY29udGVudHNDaGFuZ2VkKCkgY29uc3QgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2NvbnRlbnRzQ2hhbmdlZDsKLSAgICB9Ci0KLSAgICB2b2lkIHNldEhhc0NhY2hl
ZFRleHR1cmUoYm9vbCBoYXNDYWNoZWRUZXh0dXJlKQotICAgIHsKLSAgICAgICAgbV9oYXNDYWNo
ZWRUZXh0dXJlID0gaGFzQ2FjaGVkVGV4dHVyZTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldENvbnRl
bnRzQ2hhbmdlZChib29sIGNvbnRlbnRzQ2hhbmdlZCkKLSAgICB7Ci0gICAgICAgIG1fY29udGVu
dHNDaGFuZ2VkID0gY29udGVudHNDaGFuZ2VkOwotICAgIH0KLX07Ci0KLWNsYXNzIENDVGVzdFJl
bmRlclBhc3M6IHB1YmxpYyBDQ1JlbmRlclBhc3MgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPENDUmVuZGVyUGFzcz4gY3JlYXRlKENDUmVuZGVyU3VyZmFjZSogdGFyZ2V0U3VyZmFj
ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NUZXN0UmVuZGVyUGFzcyh0
YXJnZXRTdXJmYWNlKSk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgQ0NUZXN0UmVuZGVyUGFz
cyhDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpCi0gICAgICAgIDogQ0NSZW5kZXJQYXNzKHN1cmZh
Y2UpCi0gICAgewotICAgIH0KLQotcHVibGljOgotICAgIHZvaWQgYXBwZW5kUXVhZChQYXNzT3du
UHRyPENDRHJhd1F1YWQ+IHF1YWQpCi0gICAgewotICAgICAgICBtX3F1YWRMaXN0LmFwcGVuZChx
dWFkKTsKLSAgICB9Ci19OwotCi1zdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclBhc3M+IGNyZWF0
ZUR1bW15UmVuZGVyUGFzcyhSZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhJiB0ZXN0RGF0YSkKLXsK
LSAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVySW1wbCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
MSk7Ci0gICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJTdXJmYWNlID0gbmV3IEZha2VSZW5kZXJT
dXJmYWNlKGxheWVySW1wbC5nZXQoKSk7Ci0gICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcmVuZGVy
UGFzc1B0ciA9IENDVGVzdFJlbmRlclBhc3M6OmNyZWF0ZShyZW5kZXJTdXJmYWNlKTsKLQotICAg
IHRlc3REYXRhLnJlbmRlclN1cmZhY2VTdG9yZS5hcHBlbmQoYWRvcHRQdHIocmVuZGVyU3VyZmFj
ZSkpOwotICAgIHRlc3REYXRhLmxheWVyU3RvcmUuYXBwZW5kKGxheWVySW1wbC5yZWxlYXNlKCkp
OwotICAgIHJldHVybiByZW5kZXJQYXNzUHRyLnJlbGVhc2UoKTsKLX0KLQotc3RhdGljIHZvaWQg
Y29uZmlndXJlUmVuZGVyUGFzc1Rlc3REYXRhKGNvbnN0IGNoYXIqIHRlc3RTY3JpcHQsIFJlbmRl
clBhc3NSZW1vdmFsVGVzdERhdGEmIHRlc3REYXRhKQotewotICAgIC8vIE9uZSBzaGFyZWQgc3Rh
dGUgZm9yIGFsbCBxdWFkcyAtIHdlIGRvbid0IG5lZWQgdGhlIGNvcnJlY3QgZGV0YWlscwotICAg
IHRlc3REYXRhLnNoYXJlZFF1YWRTdGF0ZSA9IENDU2hhcmVkUXVhZFN0YXRlOjpjcmVhdGUoV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgSW50UmVj
dCgpLCBJbnRSZWN0KCksIDEuMCwgdHJ1ZSk7Ci0KLSAgICBjb25zdCBjaGFyKiBjdXJyZW50Q2hh
ciA9IHRlc3RTY3JpcHQ7Ci0KLSAgICAvLyBQcmUtY3JlYXRlIHJvb3QgcGFzcwotICAgIE93blB0
cjxDQ1JlbmRlclBhc3M+IHJvb3RSZW5kZXJQYXNzID0gY3JlYXRlRHVtbXlSZW5kZXJQYXNzKHRl
c3REYXRhKTsKLSAgICB0ZXN0RGF0YS5yZW5kZXJQYXNzSWQuaW5zZXJ0KHN0ZDo6cGFpcjxDQ1Jl
bmRlclBhc3MqLCBjaGFyPihyb290UmVuZGVyUGFzcy5nZXQoKSwgdGVzdFNjcmlwdFswXSkpOwot
ICAgIHRlc3REYXRhLnJlbmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpwYWlyPGNoYXIsIFJlbmRl
clBhc3NDYWNoZUVudHJ5Pih0ZXN0U2NyaXB0WzBdLCBSZW5kZXJQYXNzQ2FjaGVFbnRyeShyb290
UmVuZGVyUGFzcy5yZWxlYXNlKCkpKSk7Ci0gICAgd2hpbGUgKCpjdXJyZW50Q2hhciAhPSAnXDAn
KSB7Ci0gICAgICAgIGNoYXIgcmVuZGVyUGFzc0lkID0gY3VycmVudENoYXJbMF07Ci0gICAgICAg
IGN1cnJlbnRDaGFyKys7Ci0KLSAgICAgICAgT3duUHRyPENDUmVuZGVyUGFzcz4gcmVuZGVyUGFz
czsKLQotICAgICAgICBib29sIGlzUmVwbGljYSA9IGZhbHNlOwotICAgICAgICBpZiAoIXRlc3RE
YXRhLnJlbmRlclBhc3NDYWNoZVtyZW5kZXJQYXNzSWRdLnJlbmRlclBhc3NQdHIuZ2V0KCkpCi0g
ICAgICAgICAgICBpc1JlcGxpY2EgPSB0cnVlOwotCi0gICAgICAgIHJlbmRlclBhc3MgPSB0ZXN0
RGF0YS5yZW5kZXJQYXNzQ2FjaGVbcmVuZGVyUGFzc0lkXS5yZW5kZXJQYXNzUHRyLnJlbGVhc2Uo
KTsKLQotICAgICAgICAvLyBDeWNsZSB0aHJvdWdoIHF1YWQgZGF0YSBhbmQgY3JlYXRlIGFsbCBx
dWFkcwotICAgICAgICB3aGlsZSAoKmN1cnJlbnRDaGFyICE9ICdcbicgJiYgKmN1cnJlbnRDaGFy
ICE9ICdcMCcpIHsKLSAgICAgICAgICAgIGlmICgqY3VycmVudENoYXIgPT0gJ3MnKSB7Ci0gICAg
ICAgICAgICAgICAgLy8gU29saWQgY29sb3IgZHJhdyBxdWFkCi0gICAgICAgICAgICAgICAgT3du
UHRyPENDRHJhd1F1YWQ+IHF1YWQgPSBDQ1NvbGlkQ29sb3JEcmF3UXVhZDo6Y3JlYXRlKHRlc3RE
YXRhLnNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgSW50UmVjdCgwLCAwLCAxMCwgMTApLCBDb2xvcjo6
d2hpdGUpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEND
VGVzdFJlbmRlclBhc3MqPihyZW5kZXJQYXNzLmdldCgpKS0+YXBwZW5kUXVhZChxdWFkLnJlbGVh
c2UoKSk7Ci0gICAgICAgICAgICAgICAgY3VycmVudENoYXIrKzsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoKCpjdXJyZW50Q2hhciA+PSAnQScpICYmICgqY3VycmVudENoYXIgPD0gJ1onKSkgewot
ICAgICAgICAgICAgICAgIC8vIFJlbmRlclBhc3MgZHJhdyBxdWFkCi0gICAgICAgICAgICAgICAg
Y2hhciBuZXdSZW5kZXJQYXNzSWQgPSAqY3VycmVudENoYXI7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudENoYXIrKzsKLSAgICAgICAgICAgICAgICBib29sIGhhc1RleHR1cmUgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICBib29sIGNvbnRlbnRzQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgaWYgKCpjdXJyZW50Q2hhciA9PSAnWycpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY3VycmVudENoYXIrKzsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCgq
Y3VycmVudENoYXIgIT0gJ10nKSAmJiAoKmN1cnJlbnRDaGFyICE9ICdcMCcpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKCpjdXJyZW50Q2hhcikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHND
aGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlICd0JzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoYXNUZXh0dXJlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRDaGFyKys7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KCpjdXJyZW50Q2hhciA9PSAnXScpCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2hh
cisrOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIENDUmVuZGVyUGFzcyog
cmVmUmVuZGVyUGFzc1B0cjsKLQotICAgICAgICAgICAgICAgIGlmICh0ZXN0RGF0YS5yZW5kZXJQ
YXNzQ2FjaGUuZmluZChuZXdSZW5kZXJQYXNzSWQpID09IHRlc3REYXRhLnJlbmRlclBhc3NDYWNo
ZS5lbmQoKSkgewotICAgICAgICAgICAgICAgICAgICBPd25QdHI8Q0NSZW5kZXJQYXNzPiByZWZS
ZW5kZXJQYXNzID0gY3JlYXRlRHVtbXlSZW5kZXJQYXNzKHRlc3REYXRhKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVmUmVuZGVyUGFzc1B0ciA9IHJlZlJlbmRlclBhc3MuZ2V0KCk7Ci0gICAgICAg
ICAgICAgICAgICAgIEZha2VSZW5kZXJTdXJmYWNlKiByZWZSZW5kZXJTdXJmYWNlID0gc3RhdGlj
X2Nhc3Q8RmFrZVJlbmRlclN1cmZhY2UqPihyZWZSZW5kZXJQYXNzLT50YXJnZXRTdXJmYWNlKCkp
OwotICAgICAgICAgICAgICAgICAgICByZWZSZW5kZXJTdXJmYWNlLT5zZXRIYXNDYWNoZWRUZXh0
dXJlKGhhc1RleHR1cmUpOwotICAgICAgICAgICAgICAgICAgICByZWZSZW5kZXJTdXJmYWNlLT5z
ZXRDb250ZW50c0NoYW5nZWQoY29udGVudHNDaGFuZ2VkKTsKLSAgICAgICAgICAgICAgICAgICAg
dGVzdERhdGEucmVuZGVyUGFzc0lkLmluc2VydChzdGQ6OnBhaXI8Q0NSZW5kZXJQYXNzKiwgY2hh
cj4ocmVmUmVuZGVyUGFzcy5nZXQoKSwgbmV3UmVuZGVyUGFzc0lkKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRlc3REYXRhLnJlbmRlclBhc3NDYWNoZS5pbnNlcnQoc3RkOjpwYWlyPGNoYXIsIFJl
bmRlclBhc3NDYWNoZUVudHJ5PihuZXdSZW5kZXJQYXNzSWQsIFJlbmRlclBhc3NDYWNoZUVudHJ5
KHJlZlJlbmRlclBhc3MucmVsZWFzZSgpKSkpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgICAgICByZWZSZW5kZXJQYXNzUHRyID0gdGVzdERhdGEucmVuZGVyUGFzc0Nh
Y2hlW25ld1JlbmRlclBhc3NJZF0ucmVuZGVyUGFzczsKLQotICAgICAgICAgICAgICAgIE93blB0
cjxDQ1JlbmRlclBhc3NEcmF3UXVhZD4gcXVhZCA9IENDUmVuZGVyUGFzc0RyYXdRdWFkOjpjcmVh
dGUodGVzdERhdGEuc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBJbnRSZWN0KCksIHJlZlJlbmRlclBh
c3NQdHIsIGlzUmVwbGljYSwgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zKCksIFdlYktpdDo6
V2ViRmlsdGVyT3BlcmF0aW9ucygpLCAxKTsKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxD
Q1Rlc3RSZW5kZXJQYXNzKj4ocmVuZGVyUGFzcy5nZXQoKSktPmFwcGVuZFF1YWQocXVhZC5yZWxl
YXNlKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHRlc3REYXRhLnJlbmRl
clBhc3NMaXN0Lmluc2VydCgwLCByZW5kZXJQYXNzLnJlbGVhc2UoKSk7Ci0gICAgICAgIGlmICgq
Y3VycmVudENoYXIgIT0gJ1wwJykKLSAgICAgICAgICAgIGN1cnJlbnRDaGFyKys7Ci0gICAgfQot
fQotCi12b2lkIGR1bXBSZW5kZXJQYXNzVGVzdERhdGEoY29uc3QgUmVuZGVyUGFzc1JlbW92YWxU
ZXN0RGF0YSYgdGVzdERhdGEsIGNoYXIqIGJ1ZmZlcikKLXsKLSAgICBjaGFyKiBwb3MgPSBidWZm
ZXI7Ci0gICAgQ0NSZW5kZXJQYXNzTGlzdDo6Y29uc3RfcmV2ZXJzZV9pdGVyYXRvciBpdCA9IHRl
c3REYXRhLnJlbmRlclBhc3NMaXN0LnJiZWdpbigpOwotICAgIHdoaWxlIChpdCAhPSB0ZXN0RGF0
YS5yZW5kZXJQYXNzTGlzdC5yZW5kKCkpIHsKLSAgICAgICAgQ0NSZW5kZXJQYXNzKiBjdXJyZW50
UGFzcyA9IGl0LT5nZXQoKTsKLSAgICAgICAgY2hhciBwYXNzSWQgPSB0ZXN0RGF0YS5yZW5kZXJQ
YXNzSWQuZmluZChjdXJyZW50UGFzcyktPnNlY29uZDsKLSAgICAgICAgKnBvcyA9IHBhc3NJZDsK
LSAgICAgICAgcG9zKys7Ci0KLSAgICAgICAgQ0NRdWFkTGlzdDo6Y29uc3RfaXRlcmF0b3IgcXVh
ZExpc3RJdGVyYXRvciA9IGN1cnJlbnRQYXNzLT5xdWFkTGlzdCgpLmJlZ2luKCk7Ci0gICAgICAg
IHdoaWxlIChxdWFkTGlzdEl0ZXJhdG9yICE9IGN1cnJlbnRQYXNzLT5xdWFkTGlzdCgpLmVuZCgp
KSB7Ci0gICAgICAgICAgICBDQ0RyYXdRdWFkKiBjdXJyZW50UXVhZCA9ICgqcXVhZExpc3RJdGVy
YXRvcikuZ2V0KCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGN1cnJlbnRRdWFkLT5tYXRlcmlhbCgp
KSB7Ci0gICAgICAgICAgICBjYXNlIENDRHJhd1F1YWQ6OlNvbGlkQ29sb3I6Ci0gICAgICAgICAg
ICAgICAgKnBvcyA9ICdzJzsKLSAgICAgICAgICAgICAgICBwb3MrKzsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ0NEcmF3UXVhZDo6UmVuZGVyUGFzczoKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIENDUmVuZGVyUGFzc0RyYXdRdWFkKiBy
ZW5kZXJQYXNzRHJhd1F1YWQgPSBzdGF0aWNfY2FzdDxDQ1JlbmRlclBhc3NEcmF3UXVhZCo+KGN1
cnJlbnRRdWFkKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgQ0NSZW5kZXJQYXNzKiByZWZQ
YXNzID0gcmVuZGVyUGFzc0RyYXdRdWFkLT5yZW5kZXJQYXNzKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGNoYXIgcmVmUGFzc0lkID0gdGVzdERhdGEucmVuZGVyUGFzc0lkLmZpbmQocmVmUGFzcykt
PnNlY29uZDsKLSAgICAgICAgICAgICAgICAgICAgKnBvcyA9IHJlZlBhc3NJZDsKLSAgICAgICAg
ICAgICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAqcG9zID0gJ3gnOwot
ICAgICAgICAgICAgICAgIHBvcysrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBxdWFkTGlzdEl0ZXJhdG9yKys7Ci0gICAg
ICAgIH0KLSAgICAgICAgKnBvcyA9ICdcbic7Ci0gICAgICAgIHBvcysrOwotICAgICAgICBpdCsr
OwotICAgIH0KLSAgICAqcG9zID0gJ1wwJzsKLX0KLQotLy8gRWFjaCBDQ1JlbmRlclBhc3NMaXN0
IGlzIHJlcHJlc2VudGVkIGJ5IGEgc3RyaW5nIHdoaWNoIGRlc2NyaWJlcyB0aGUgY29uZmlndXJh
dGlvbi4KLS8vIFRoZSBzeW50YXggb2YgdGhlIHN0cmluZyBpcyBhcyBmb2xsb3dzOgotLy8KLS8v
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnNz
c3NzWFtjXXNzWXNzc1pbdF1zc1dbY3RdCi0vLyBJZGVudGlmaWVzIHRoZSByZW5kZXIgcGFzcy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLV4gXl5eIF4gXiAgIF4gICAgIF4gICAgIF4KLS8vIFRo
ZXNlIGFyZSBzb2xpZCBjb2xvciBxdWFkcy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAg
fCB8ICAgfCAgICAgfCAgICAgfAotLy8gSWRlbnRpZmllcyBSZW5kZXJQYXNzRHJhd1F1YWQncyBS
ZW5kZXJQYXNzLS0tLS0tLS0tLS0tLS0tLS0rIHwgICB8ICAgICB8ICAgICB8Ci0vLyBUaGlzIHF1
YWQncyBjb250ZW50cyBkaWRuJ3QgY2hhbmdlLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAg
IHwgICAgIHwgICAgIHwKLS8vIFRoaXMgcXVhZCdzIGNvbnRlbnRzIGNoYW5nZWQgYW5kIGl0IGhh
cyBubyB0ZXh0dXJlLS0tLS0tLS0tLS0tLS0tKyAgICAgfCAgICAgfAotLy8gVGhpcyBxdWFkIGhh
cyB0ZXh0dXJlIGJ1dCBpdHMgY29udGVudHMgY2hhbmdlZC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rICAgICB8Ci0vLyBUaGlzIHF1YWQncyBjb250ZW50cyBkaWRuJ3QgY2hhbmdlIGFuZCBpdCBo
YXMgdGV4dHVyZSAtIHdpbGwgYmUgcmVtb3ZlZC0tLS0tLSsKLS8vCi0vLyBFeHBlY3RlZCByZXN1
bHRzIGhhdmUgZXhhY3RseSB0aGUgc2FtZSBzeW50YXgsIGV4Y2VwdCB0aGV5IGRvIG5vdCB1c2Ug
c3F1YXJlIGJyYWNrZXRzLAotLy8gc2luY2Ugd2Ugb25seSBjaGVjayB0aGUgc3RydWN0dXJlLCBu
b3QgYXR0cmlidXRlcy4KLS8vCi0vLyBUZXN0IGNhc2UgY29uZmlndXJhdGlvbiBjb25zaXN0cyBv
ZiBpbml0aWFsaXphdGlvbiBzY3JpcHQgYW5kIGV4cGVjdGVkIHJlc3VsdHMsCi0vLyBhbGwgaW4g
dGhlIHNhbWUgZm9ybWF0Lgotc3RydWN0IFRlc3RDYXNlIHsKLSAgICBjb25zdCBjaGFyKiBuYW1l
OwotICAgIGNvbnN0IGNoYXIqIGluaXRTY3JpcHQ7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWRS
ZXN1bHQ7Ci19OwotCi1UZXN0Q2FzZSByZW1vdmVSZW5kZXJQYXNzZXNDYXNlc1tdID0KLSAgICB7
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICJTaW5nbGUgcm9vdCBwYXNzIiwKLSAgICAgICAgICAg
ICJSc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc1xuIgotICAgICAgICB9LCB7Ci0gICAgICAg
ICAgICAiU2luZ2xlIHBhc3MgLSBubyBxdWFkcyIsCi0gICAgICAgICAgICAiUlxuIiwKLSAgICAg
ICAgICAgICJSXG4iCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJUd28gcGFzc2VzLCBubyBy
ZW1vdmFsIiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xu
IiwKLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIgotICAg
ICAgICB9LCB7Ci0gICAgICAgICAgICAiVHdvIHBhc3NlcywgcmVtb3ZlIGxhc3QiLAotICAgICAg
ICAgICAgIlJzc3NzQVtjdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3Nzc1xuIiwKLSAgICAgICAg
ICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgfSwgewotICAgICAgICAgICAgIkhhdmUgdGV4dHVy
ZSBidXQgY29udGVudHMgY2hhbmdlZCAtIGxlYXZlIHBhc3MiLAotICAgICAgICAgICAgIlJzc3Nz
QVt0XXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iLAotICAgICAgICAgICAgIlJzc3NzQXNz
c1xuIgotICAgICAgICAgICAgIkFzc3NzXG4iCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJD
b250ZW50cyBkaWRuJ3QgY2hhbmdlIGJ1dCBubyB0ZXh0dXJlIC0gbGVhdmUgcGFzcyIsCi0gICAg
ICAgICAgICAiUnNzc3NBW2Ndc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIsCi0gICAgICAg
ICAgICAiUnNzc3NBc3NzXG4iCi0gICAgICAgICAgICAiQXNzc3NcbiIKLSAgICAgICAgfSwgewot
ICAgICAgICAgICAgIlJlcGxpY2E6IHR3byBxdWFkcyByZWZlcmVuY2UgdGhlIHNhbWUgcGFzczsg
cmVtb3ZlIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY3RdQVtjdF1zc3NcbiIKLSAgICAgICAgICAg
ICJBc3Nzc1xuIiwKLSAgICAgICAgICAgICJSc3Nzc0FBc3NzXG4iCi0gICAgICAgIH0sIHsKLSAg
ICAgICAgICAgICJSZXBsaWNhOiB0d28gcXVhZHMgcmVmZXJlbmNlIHRoZSBzYW1lIHBhc3M7IGxl
YXZlIiwKLSAgICAgICAgICAgICJSc3Nzc0FbY11BW2Ndc3NzXG4iCi0gICAgICAgICAgICAiQXNz
c3NcbiIsCi0gICAgICAgICAgICAiUnNzc3NBQXNzc1xuIgotICAgICAgICAgICAgIkFzc3NzXG4i
LAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiTWFueSBwYXNzZXMsIHJlbW92ZSBhbGwiLAot
ICAgICAgICAgICAgIlJzc3NzQVtjdF1zc3NcbiIKLSAgICAgICAgICAgICJBc3NzQltjdF1DW2N0
XXNcbiIKLSAgICAgICAgICAgICJCc3NzRFtjdF1zc0VbY3RdRltjdF1cbiIKLSAgICAgICAgICAg
ICJFc3Nzc3NzXG4iCi0gICAgICAgICAgICAiQ0dbY3RdXG4iCi0gICAgICAgICAgICAiRHNzc3Nz
c3NcbiIKLSAgICAgICAgICAgICJGc3Nzc3Nzc1xuIgotICAgICAgICAgICAgIkdzc3NcbiIsCi0K
LSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgfSwgewotICAgICAgICAgICAgIkRl
ZXAgcmVjdXJzaW9uLCByZW1vdmUgYWxsIiwKLQotICAgICAgICAgICAgIlJzc3Nzc0FbY3Rdc3Nz
c1xuIgotICAgICAgICAgICAgIkFzc3NzQnNzc1xuIgotICAgICAgICAgICAgIkJDXG4iCi0gICAg
ICAgICAgICAiQ0RcbiIKLSAgICAgICAgICAgICJERVxuIgotICAgICAgICAgICAgIkVGXG4iCi0g
ICAgICAgICAgICAiRkdcbiIKLSAgICAgICAgICAgICJHSFxuIgotICAgICAgICAgICAgIkhzc3NJ
c3NzXG4iCi0gICAgICAgICAgICAiSUpcbiIKLSAgICAgICAgICAgICJKc3Nzc1xuIiwKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgIlJzc3Nzc0Fzc3NzXG4iCi0gICAgICAgIH0sIHsKLSAgICAg
ICAgICAgICJXaWRlIHJlY3Vyc2lvbiwgcmVtb3ZlIGFsbCIsCi0gICAgICAgICAgICAiUkFbY3Rd
QltjdF1DW2N0XURbY3RdRVtjdF1GW2N0XUdbY3RdSFtjdF1JW2N0XUpbY3RdXG4iCi0gICAgICAg
ICAgICAiQXNcbiIKLSAgICAgICAgICAgICJCc1xuIgotICAgICAgICAgICAgIkNzc3NzXG4iCi0g
ICAgICAgICAgICAiRHNzc3NcbiIKLSAgICAgICAgICAgICJFc1xuIgotICAgICAgICAgICAgIkZc
biIKLSAgICAgICAgICAgICJHc1xuIgotICAgICAgICAgICAgIkhzXG4iCi0gICAgICAgICAgICAi
SXNcbiIKLSAgICAgICAgICAgICJKc3Nzc1xuIiwKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
IlJBQkNERUZHSElKXG4iCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICJSZW1vdmUgcGFzc2Vz
IHJlZ2FyZGxlc3Mgb2YgY2FjaGUgc3RhdGUiLAotICAgICAgICAgICAgIlJzc3NzQVtjdF1zc3Nc
biIKLSAgICAgICAgICAgICJBc3NzQkNzXG4iCi0gICAgICAgICAgICAiQnNzc0RbY11zc0VbdF1G
XG4iCi0gICAgICAgICAgICAiRXNzc3Nzc1xuIgotICAgICAgICAgICAgIkNHXG4iCi0gICAgICAg
ICAgICAiRHNzc3Nzc3NcbiIKLSAgICAgICAgICAgICJGc3Nzc3Nzc1xuIgotICAgICAgICAgICAg
Ikdzc3NcbiIsCi0KLSAgICAgICAgICAgICJSc3Nzc0Fzc3NcbiIKLSAgICAgICAgfSwgewotICAg
ICAgICAgICAgIkxlYXZlIHNvbWUgcGFzc2VzLCByZW1vdmUgb3RoZXJzIiwKLQotICAgICAgICAg
ICAgIlJzc3NzQVtjXXNzc1xuIgotICAgICAgICAgICAgIkFzc3NCW3RdQ1tjdF1zXG4iCi0gICAg
ICAgICAgICAiQnNzc0RbY11zc1xuIgotICAgICAgICAgICAgIkNHXG4iCi0gICAgICAgICAgICAi
RHNzc3Nzc3NcbiIKLSAgICAgICAgICAgICJHc3NzXG4iLAotCi0gICAgICAgICAgICAiUnNzc3NB
c3NzXG4iCi0gICAgICAgICAgICAiQXNzc0JDc1xuIgotICAgICAgICAgICAgIkJzc3NEc3NcbiIK
LSAgICAgICAgICAgICJEc3Nzc3Nzc1xuIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAwLCAw
LCAwCi0gICAgICAgIH0KLSAgICB9OwotCi1zdGF0aWMgdm9pZCB2ZXJpZnlSZW5kZXJQYXNzVGVz
dERhdGEoVGVzdENhc2UmIHRlc3RDYXNlLCBSZW5kZXJQYXNzUmVtb3ZhbFRlc3REYXRhJiB0ZXN0
RGF0YSkKLXsKLSAgICBjaGFyIGFjdHVhbFJlc3VsdFsxMDI0XTsKLSAgICBkdW1wUmVuZGVyUGFz
c1Rlc3REYXRhKHRlc3REYXRhLCBhY3R1YWxSZXN1bHQpOwotICAgIEVYUEVDVF9TVFJFUSh0ZXN0
Q2FzZS5leHBlY3RlZFJlc3VsdCwgYWN0dWFsUmVzdWx0KSA8PCAiSW4gdGVzdCBjYXNlOiAiIDw8
IHRlc3RDYXNlLm5hbWU7Ci19Ci0KLVRFU1QoUmVuZGVyUGFzc1JlbW92YWxUZXN0LCB0ZXN0UmVt
b3ZlUmVuZGVyUGFzc2VzKQotewotICAgIGludCB0ZXN0Q2FzZUluZGV4ID0gMDsKLSAgICB3aGls
ZSAocmVtb3ZlUmVuZGVyUGFzc2VzQ2FzZXNbdGVzdENhc2VJbmRleF0ubmFtZSkgewotICAgICAg
ICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbFRocmVhZDsKLSAgICAgICAgUmVuZGVyUGFz
c1JlbW92YWxUZXN0RGF0YSB0ZXN0RGF0YTsKLSAgICAgICAgQ0NSZW5kZXJQYXNzTGlzdCBza2lw
cGVkUGFzc2VzOwotICAgICAgICBjb25maWd1cmVSZW5kZXJQYXNzVGVzdERhdGEocmVtb3ZlUmVu
ZGVyUGFzc2VzQ2FzZXNbdGVzdENhc2VJbmRleF0uaW5pdFNjcmlwdCwgdGVzdERhdGEpOwotICAg
ICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsOjpyZW1vdmVQYXNzZXNXaXRoQ2FjaGVkVGV4dHVyZXMo
dGVzdERhdGEucmVuZGVyUGFzc0xpc3QsIHNraXBwZWRQYXNzZXMpOwotICAgICAgICB2ZXJpZnlS
ZW5kZXJQYXNzVGVzdERhdGEocmVtb3ZlUmVuZGVyUGFzc2VzQ2FzZXNbdGVzdENhc2VJbmRleF0s
IHRlc3REYXRhKTsKLSAgICAgICAgdGVzdENhc2VJbmRleCsrOwotICAgIH0KLX0KLQogfSAvLyBu
YW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>