<?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>61347</bug_id>
          
          <creation_ts>2011-05-23 23:35:11 -0700</creation_ts>
          <short_desc>REGRESSION(r87118): patch breaks layout tests (https://bugs.webkit.org/show_bug.cgi?id=61342), and chromium tests (browser_test MacTestCmdUp and ui_test Scrollbar) (Requested by ukai_ on #webkit).</short_desc>
          <delta_ts>2011-05-23 23:39:45 -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>59753</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>jamesr</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>408684</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-23 23:35:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/87118 broke the build:
patch breaks layout tests (https://bugs.webkit.org/show_bug.cgi?id=61342), and chromium tests (browser_test MacTestCmdUp and ui_test Scrollbar) (Requested by ukai_ 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>408685</commentid>
    <comment_count>1</comment_count>
      <attachid>94574</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-23 23:35:36 -0700</bug_when>
    <thetext>Created attachment 94574
ROLLOUT of r87118

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 --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408686</commentid>
    <comment_count>2</comment_count>
      <attachid>94574</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2011-05-23 23:39:38 -0700</bug_when>
    <thetext>Comment on attachment 94574
ROLLOUT of r87118

Clearing flags on attachment: 94574

Committed r87130: &lt;http://trac.webkit.org/changeset/87130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408687</commentid>
    <comment_count>3</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2011-05-23 23:39:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94574</attachid>
            <date>2011-05-23 23:35:36 -0700</date>
            <delta_ts>2011-05-23 23:39:38 -0700</delta_ts>
            <desc>ROLLOUT of r87118</desc>
            <filename>bug-61347-20110524063448.patch</filename>
            <type>text/plain</type>
            <size>56623</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODcxMjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjN2Y0NTU4ZjU4OTg1ZmFi
NmI5ZDViNDdmMGYwMjU0ZDU1Y2UwZjA0Li5hOWI3MTFjNmI4YzQ4OWY3NTdiZTMxODI5Zjk0NTRi
NTZkZDZlMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDUtMjMgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHI4NzExOC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvODcxMTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYxMzQ3CisKKyAgICAgICAgcGF0Y2ggYnJlYWtzIGxheW91dCB0ZXN0cworICAgICAg
ICAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzQyKSwgYW5kIGNo
cm9taXVtCisgICAgICAgIHRlc3RzIChicm93c2VyX3Rlc3QgTWFjVGVzdENtZFVwIGFuZCB1aV90
ZXN0IFNjcm9sbGJhcikKKyAgICAgICAgKFJlcXVlc3RlZCBieSB1a2FpXyBvbiAjd2Via2l0KS4K
KworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW06
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaDoKKwogMjAx
MS0wNS0yMyAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAY29kZWF1cm9yYS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKaW5kZXggODMzNmE4M2IwZDVhOTQ4MGIxY2Y5OGZkMGI3OGFiN2M1Yzc1YTU2
Zi4uOGVlMWFlMGY3NjcxODEzMDA5MDMwN2NhNWIxYWRjMWMyYTBhYjg3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTExNDYsMTAgKzExNDYsNiBAQAogICAgICAg
ICAgICAgICAnU2Nyb2xsYmFyUHJlZnNPYnNlcnZlcj1DaHJvbWl1bVdlYkNvcmVPYmpDU2Nyb2xs
YmFyUHJlZnNPYnNlcnZlcicsCiAgICAgICAgICAgICAgICdXZWJDb3JlUmVuZGVyVGhlbWVOb3Rp
ZmljYXRpb25PYnNlcnZlcj1DaHJvbWl1bVdlYkNvcmVPYmpDV2ViQ29yZVJlbmRlclRoZW1lTm90
aWZpY2F0aW9uT2JzZXJ2ZXInLAogICAgICAgICAgICAgICAnV2ViRm9udENhY2hlPUNocm9taXVt
V2ViQ29yZU9iakNXZWJGb250Q2FjaGUnLAotICAgICAgICAgICAgICAnU2Nyb2xsQW5pbWF0aW9u
SGVscGVyRGVsZWdhdGU9Q2hyb21pdW1XZWJDb3JlT2JqQ1Njcm9sbEFuaW1hdGlvbkhlbHBlckRl
bGVnYXRlJywKLSAgICAgICAgICAgICAgJ1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdh
dGU9Q2hyb21pdW1XZWJDb3JlT2JqQ1Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGUn
LAotICAgICAgICAgICAgICAnU2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlPUNocm9taXVtV2ViQ29y
ZU9iakNTY3JvbGxiYXJQYWludGVyRGVsZWdhdGUnLAotICAgICAgICAgICAgICAnU2Nyb2xsYmFy
UGFydEFuaW1hdGlvbj1DaHJvbWl1bVdlYkNvcmVPYmpDU2Nyb2xsYmFyUGFydEFuaW1hdGlvbics
CiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6IFsKICAgICAgICAg
ICAgICAgJy4uLy4uLy4uL1dlYktpdExpYnJhcmllcycsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzkz
MDg3YjlhYzBkYWE2MjI4NWMwOGIwNGZlOTQzNDIyM2ZhMTg4OS4uMDEzZTU4NDRjMjE5OWVkZjZh
MzhjZjRiN2FjMWNmYWI3ZTAxMjFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzgwNCw4ICszODA0
LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3Qu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3Qu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU1NMS2V5R2VuZXJhdG9yQ2hyb21p
dW0uY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhck92ZXJsYXlVdGlsaXRpZXNNYWMuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyT3ZlcmxheVV0aWxpdGllc01hYy5tbScsCiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IGI3YjBhNDFhNTcyYWU5NjEyZDJiMDc1
YzhlZTlmODI4N2ZjZTMwOWUuLmM0MzRlMDUwZTU1NDkyZWYzYWY5ZTE3MmUwYjM0Zjc3ODliYTUw
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0jaWYgIUVOQUJMRShTTU9PVEhfU0NST0xMSU5HKSAmJiAhKFBMQVRGT1JNKENIUk9NSVVNKSAm
JiBPUyhEQVJXSU4pKQorI2lmICFFTkFCTEUoU01PT1RIX1NDUk9MTElORykKIFBhc3NPd25QdHI8
U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Nyb2xsYWJsZUFyZWEqIHNj
cm9sbGFibGVBcmVhKQogewogICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsQW5pbWF0b3Io
c2Nyb2xsYWJsZUFyZWEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggOTQ5ZjQ2ZDI5MDFlZDhhMjI2MmU1OTdiZmViZGFkODdjMGUwMDZmMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxBbmltYXRvckNocm9taXVtTWFjLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgU2Ny
b2xsQW5pbWF0b3JDaHJvbWl1bU1hY19oCi0jZGVmaW5lIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1N
YWNfaAotCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgot
I2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgotI2luY2x1
ZGUgIlNjcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNNYWMuaCIKLSNpbmNsdWRlICJUaW1lci5oIgot
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLQotI2lmZGVmIF9fT0JKQ19fCi1AY2xhc3MgU2Ny
b2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGU7Ci1AY2xhc3MgU2Nyb2xsYmFyUGFpbnRlckRlbGVn
YXRlOwotQGNsYXNzIFNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGU7Ci1AY2xhc3Mg
U2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlOwotI2Vsc2UKLWNsYXNzIFNjcm9sbEFuaW1hdGlvbkhl
bHBlckRlbGVnYXRlOwotY2xhc3MgU2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlOwotY2xhc3MgU2Ny
b2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZTsKLWNsYXNzIFNjcm9sbGJhclBhaW50ZXJE
ZWxlZ2F0ZTsKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNjcm9sbGJh
cjsKLQotY2xhc3MgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYyA6IHB1YmxpYyBTY3JvbGxBbmlt
YXRvciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYyhT
Y3JvbGxhYmxlQXJlYSopOwotICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMo
KTsKLQotICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9s
bEdyYW51bGFyaXR5LCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVyKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2Nyb2xsVG9PZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsK
LQotI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hl
ZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKLSNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMp
Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1
cmVFdmVudCYpOwotI2VuZGlmCi0jZW5kaWYKLQotICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxBbmlt
YXRpb25zKCk7Ci0KLSAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbFRvUG9pbnQoY29uc3QgRmxvYXRQ
b2ludCYgbmV3UG9zaXRpb24pOwotICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnlEZWx0YVgoZmxv
YXQgZGVsdGFYKTsKLSAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5RGVsdGFZKGZsb2F0IGRlbHRh
WSk7Ci0KLSAgICB2b2lkIHNldElzRHJhd2luZ0ludG9MYXllcihib29sIGIpIHsgbV9kcmF3aW5n
SW50b0xheWVyID0gYjsgfQotICAgIGJvb2wgaXNEcmF3aW5nSW50b0xheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kcmF3aW5nSW50b0xheWVyOyB9Ci0KLSAgICBib29sIGhhdmVTY3JvbGxlZFNpbmNl
UGFnZUxvYWQoKSBjb25zdCB7IHJldHVybiBtX2hhdmVTY3JvbGxlZFNpbmNlUGFnZUxvYWQ7IH0K
LQotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICBib29sIHNjcm9sbGJhclBhaW50
VGltZXJJc0FjdGl2ZSgpIGNvbnN0OwotICAgIHZvaWQgc3RhcnRTY3JvbGxiYXJQYWludFRpbWVy
KCk7Ci0gICAgdm9pZCBzdG9wU2Nyb2xsYmFyUGFpbnRUaW1lcigpOwotI2VuZGlmCi0KLSAgICB2
b2lkIHNldFZpc2libGVTY3JvbGxlclRodW1iUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0KLXByaXZh
dGU6Ci0gICAgUmV0YWluUHRyPGlkPiBtX3Njcm9sbEFuaW1hdGlvbkhlbHBlcjsKLSAgICBSZXRh
aW5QdHI8U2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGU+IG1fc2Nyb2xsQW5pbWF0aW9uSGVs
cGVyRGVsZWdhdGU7Ci0KLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgUmV0YWlu
UHRyPFdLU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJSZWY+IG1fc2Nyb2xsYmFyUGFpbnRlckNv
bnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdh
dGU+IG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZTsKLSAgICBSZXRhaW5QdHI8
aWQ+IG1fc2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlOwotCi0gICAgdm9pZCBpbml0aWFsU2Nyb2xs
YmFyUGFpbnRUaW1lckZpcmVkKFRpbWVyPFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM+Kik7Ci0g
ICAgVGltZXI8U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYz4gbV9pbml0aWFsU2Nyb2xsYmFyUGFp
bnRUaW1lcjsKLSNlbmRpZgotICAgIAotICAgIHZpcnR1YWwgdm9pZCBub3RpdHlQb3NpdGlvbkNo
YW5nZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIHZvaWQgbW91c2VFbnRlcmVkQ29udGVudEFyZWEoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgbW91c2VFeGl0ZWRDb250ZW50QXJlYSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBtb3VzZU1vdmVkSW5Db250ZW50QXJlYSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB3
aWxsU3RhcnRMaXZlUmVzaXplKCk7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzUmVzaXplZCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTGl2ZVJlc2l6ZSgpOwotICAgIHZpcnR1
YWwgdm9pZCBjb250ZW50QXJlYURpZFNob3coKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29u
dGVudEFyZWFEaWRIaWRlKCkgY29uc3Q7Ci0gICAgdm9pZCBkaWRCZWdpblNjcm9sbEdlc3R1cmUo
KSBjb25zdDsKLSAgICB2b2lkIGRpZEVuZFNjcm9sbEdlc3R1cmUoKSBjb25zdDsKLQotICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgd2lsbFJlbW92ZVZlcnRpY2FsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRBZGRIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciopOwotICAgIHZp
cnR1YWwgdm9pZCB3aWxsUmVtb3ZlSG9yaXpvbnRhbFNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLQot
ICAgIGZsb2F0IGFkanVzdFNjcm9sbFhQb3NpdGlvbklmTmVjZXNzYXJ5KGZsb2F0KSBjb25zdDsK
LSAgICBmbG9hdCBhZGp1c3RTY3JvbGxZUG9zaXRpb25JZk5lY2Vzc2FyeShmbG9hdCkgY29uc3Q7
Ci0gICAgRmxvYXRQb2ludCBhZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5KGNvbnN0IEZs
b2F0UG9pbnQmKSBjb25zdDsKLQotI2lmIEVOQUJMRShSVUJCRVJfQkFORElORykKLSAgICBib29s
IGFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZygpIGNvbnN0OwotICAgIGJvb2wgYWxsb3dzSG9yaXpv
bnRhbFN0cmV0Y2hpbmcoKSBjb25zdDsKLSAgICBib29sIHBpbm5lZEluRGlyZWN0aW9uKGZsb2F0
IGRlbHRhWCwgZmxvYXQgZGVsdGFZKTsKLSAgICB2b2lkIHNuYXBSdWJiZXJCYW5kKCk7Ci0gICAg
dm9pZCBzbmFwUnViYmVyQmFuZFRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JDaHJvbWl1
bU1hYz4qKTsKLSAgICB2b2lkIHNtb290aFNjcm9sbFdpdGhFdmVudChQbGF0Zm9ybVdoZWVsRXZl
bnQmKTsKLSAgICB2b2lkIGJlZ2luU2Nyb2xsR2VzdHVyZSgpOwotICAgIHZvaWQgZW5kU2Nyb2xs
R2VzdHVyZSgpOwotCi0gICAgYm9vbCBtX2luU2Nyb2xsR2VzdHVyZTsKLSAgICBib29sIG1fbW9t
ZW50dW1TY3JvbGxJblByb2dyZXNzOwotICAgIGJvb2wgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHM7
Ci0gICAgCi0gICAgQ0ZUaW1lSW50ZXJ2YWwgbV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXA7
Ci0gICAgRmxvYXRTaXplIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YTsKLSAgICBGbG9hdFNpemUgbV9z
dHJldGNoU2Nyb2xsRm9yY2U7Ci0gICAgRmxvYXRTaXplIG1fbW9tZW50dW1WZWxvY2l0eTsKLQot
ICAgIC8vIFJ1YmJlciBiYW5kIHN0YXRlLgotICAgIENGVGltZUludGVydmFsIG1fc3RhcnRUaW1l
OwotICAgIEZsb2F0U2l6ZSBtX3N0YXJ0U3RyZXRjaDsKLSAgICBGbG9hdFBvaW50IG1fb3JpZ09y
aWdpbjsKLSAgICBGbG9hdFNpemUgbV9vcmlnVmVsb2NpdHk7Ci0gICAgVGltZXI8U2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYz4gbV9zbmFwUnViYmVyQmFuZFRpbWVyOwotI2VuZGlmCi0gICAgYm9v
bCBtX2RyYXdpbmdJbnRvTGF5ZXI7Ci0gICAgYm9vbCBtX2hhdmVTY3JvbGxlZFNpbmNlUGFnZUxv
YWQ7Ci0gICAgSW50UmVjdCBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdDsKLX07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDFmYzI2ODRiMGY2ZTQ4YWJmMzZjNTA3ZTc2YjcwOTQwYTBmOWQ1ZmMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0x
LDEyNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQot
I2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMuaCIKLQotI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUdlc3R1cmVFdmVudC5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKLSNpbmNsdWRlICJT
Y3JvbGxhYmxlQXJlYS5oIgotI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCi0jaW5jbHVkZSAi
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oIgotI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRl
cmZhY2UuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9VbnVz
ZWRQYXJhbS5oPgotI2luY2x1ZGUgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLSNpZiAhZGVmaW5lZChN
QUNfT1NfWF9WRVJTSU9OXzEwXzYpIHx8IE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCBN
QUNfT1NfWF9WRVJTSU9OXzEwXzYKLUBwcm90b2NvbCBOU0FuaW1hdGlvbkRlbGVnYXRlCi1AZW5k
Ci0KLUBpbnRlcmZhY2UgTlNQcm9jZXNzSW5mbyAoTlNPYmplY3QpCi0tIChOU1RpbWVJbnRlcnZh
bClzeXN0ZW1VcHRpbWU7Ci1AZW5kCi0jZW5kaWYKLQotQGludGVyZmFjZSBOU09iamVjdCAoU2Ny
b2xsQW5pbWF0aW9uSGVscGVyRGV0YWlscykKLS0gKGlkKWluaXRXaXRoRGVsZWdhdGU6KGlkKWRl
bGVnYXRlOwotLSAodm9pZClfc3RvcFJ1bjsKLS0gKEJPT0wpX2lzQW5pbWF0aW5nOwotLSAoTlNQ
b2ludCl0YXJnZXRPcmlnaW47Ci1AZW5kCi0KLUBpbnRlcmZhY2UgU2Nyb2xsQW5pbWF0aW9uSGVs
cGVyRGVsZWdhdGUgOiBOU09iamVjdAotewotICAgIFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWMqIF9hbmltYXRvcjsKLX0KLS0gKGlkKWluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6KFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMqKXNjcm9sbEFuaW1hdG9yOwotQGVuZAot
Ci1zdGF0aWMgTlNTaXplIGFicyhOU1NpemUgc2l6ZSkKLXsKLSAgICBOU1NpemUgZmluYWxTaXpl
ID0gc2l6ZTsKLSAgICBpZiAoZmluYWxTaXplLndpZHRoIDwgMCkKLSAgICAgICAgZmluYWxTaXpl
LndpZHRoID0gLWZpbmFsU2l6ZS53aWR0aDsKLSAgICBpZiAoZmluYWxTaXplLmhlaWdodCA8IDAp
Ci0gICAgICAgIGZpbmFsU2l6ZS5oZWlnaHQgPSAtZmluYWxTaXplLmhlaWdodDsKLSAgICByZXR1
cm4gZmluYWxTaXplOyAgICAKLX0KLQotQGltcGxlbWVudGF0aW9uIFNjcm9sbEFuaW1hdGlvbkhl
bHBlckRlbGVnYXRlCi0KLS0gKGlkKWluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6KFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMqKXNjcm9sbEFuaW1hdG9yCi17Ci0gICAgc2VsZiA9IFtz
dXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBf
YW5pbWF0b3IgPSBzY3JvbGxBbmltYXRvcjsKLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9p
ZClzY3JvbGxBbmltYXRvckRlc3Ryb3llZAotewotICAgIF9hbmltYXRvciA9IDA7Ci19Ci0KLS0g
KE5TUmVjdClib3VuZHMKLXsKLSAgICBpZiAoIV9hbmltYXRvcikKLSAgICAgICAgcmV0dXJuIE5T
WmVyb1JlY3Q7Ci0KLSAgICBXZWJDb3JlOjpGbG9hdFBvaW50IGN1cnJlbnRQb3NpdGlvbiA9IF9h
bmltYXRvci0+Y3VycmVudFBvc2l0aW9uKCk7Ci0gICAgcmV0dXJuIE5TTWFrZVJlY3QoY3VycmVu
dFBvc2l0aW9uLngoKSwgY3VycmVudFBvc2l0aW9uLnkoKSwgMCwgMCk7Ci19Ci0KLS0gKHZvaWQp
X2ltbWVkaWF0ZVNjcm9sbFRvUG9pbnQ6KE5TUG9pbnQpbmV3UG9zaXRpb24KLXsKLSAgICBpZiAo
IV9hbmltYXRvcikKLSAgICAgICAgcmV0dXJuOwotICAgIF9hbmltYXRvci0+aW1tZWRpYXRlU2Ny
b2xsVG9Qb2ludChuZXdQb3NpdGlvbik7Ci19Ci0KLS0gKE5TUG9pbnQpX3BpeGVsQWxpZ25Qcm9w
b3NlZFNjcm9sbFBvc2l0aW9uOihOU1BvaW50KW5ld09yaWdpbgotewotICAgIHJldHVybiBuZXdP
cmlnaW47Ci19Ci0KLS0gKE5TU2l6ZSljb252ZXJ0U2l6ZVRvQmFzZTooTlNTaXplKXNpemUKLXsK
LSAgICByZXR1cm4gYWJzKHNpemUpOwotfQotCi0tIChOU1NpemUpY29udmVydFNpemVGcm9tQmFz
ZTooTlNTaXplKXNpemUKLXsKLSAgICByZXR1cm4gYWJzKHNpemUpOwotfQotCi0tIChOU1NpemUp
Y29udmVydFNpemVUb0JhY2tpbmc6KE5TU2l6ZSlzaXplCi17Ci0gICAgcmV0dXJuIGFicyhzaXpl
KTsKLX0KLQotLSAoTlNTaXplKWNvbnZlcnRTaXplRnJvbUJhY2tpbmc6KE5TU2l6ZSlzaXplCi17
Ci0gICAgcmV0dXJuIGFicyhzaXplKTsKLX0KLQotLSAoaWQpc3VwZXJ2aWV3Ci17Ci0gICAgcmV0
dXJuIG5pbDsKLX0KLQotLSAoaWQpZG9jdW1lbnRWaWV3Ci17Ci0gICAgcmV0dXJuIG5pbDsKLX0K
LQotLSAoaWQpd2luZG93Ci17Ci0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAodm9pZClfcmVjdXJz
aXZlUmVjb21wdXRlVG9vbFRpcHMKLXsKLX0KLQotQGVuZAotCi0jaWYgVVNFKFdLX1NDUk9MTEJB
Ul9QQUlOVEVSKQotCi1AaW50ZXJmYWNlIFNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdh
dGUgOiBOU09iamVjdAotewotICAgIFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMq
IF9hbmltYXRvcjsKLX0KLS0gKGlkKWluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6KFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMqKXNjcm9sbEFuaW1hdG9yOwotQGVuZAotCi1AaW1wbGVt
ZW50YXRpb24gU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZQotCi0tIChpZClpbml0
V2l0aFNjcm9sbEFuaW1hdG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKilz
Y3JvbGxBbmltYXRvcgotewotICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07Ci0gICAgaWYgKCFzZWxm
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIF9hbmltYXRvciA9IHNjcm9sbEFuaW1h
dG9yOwotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2b2lkKXNjcm9sbEFuaW1hdG9yRGVzdHJv
eWVkCi17Ci0gICAgX2FuaW1hdG9yID0gMDsKLX0KLQotLSAoTlNSZWN0KWNvbnRlbnRBcmVhUmVj
dEZvclNjcm9sbGVySW1wUGFpcjooaWQpc2Nyb2xsZXJJbXBQYWlyCi17Ci0gICAgVU5VU0VEX1BB
UkFNKHNjcm9sbGVySW1wUGFpcik7Ci0gICAgaWYgKCFfYW5pbWF0b3IpCi0gICAgICAgIHJldHVy
biBOU1plcm9SZWN0OwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBjb250ZW50c1NpemUgPSBfYW5p
bWF0b3ItPnNjcm9sbGFibGVBcmVhKCktPmNvbnRlbnRzU2l6ZSgpOwotICAgIHJldHVybiBOU01h
a2VSZWN0KDAsIDAsIGNvbnRlbnRzU2l6ZS53aWR0aCgpLCBjb250ZW50c1NpemUuaGVpZ2h0KCkp
OwotfQotCi0tIChCT09MKWluTGl2ZVJlc2l6ZUZvclNjcm9sbGVySW1wUGFpcjooaWQpc2Nyb2xs
ZXJJbXBQYWlyCi17Ci0gICAgVU5VU0VEX1BBUkFNKHNjcm9sbGVySW1wUGFpcik7Ci0gICAgaWYg
KCFfYW5pbWF0b3IpCi0gICAgICAgIHJldHVybiBOTzsKLQotICAgIHJldHVybiBfYW5pbWF0b3It
PnNjcm9sbGFibGVBcmVhKCktPmluTGl2ZVJlc2l6ZSgpOwotfQotCi0tIChOU1BvaW50KW1vdXNl
TG9jYXRpb25JbkNvbnRlbnRBcmVhRm9yU2Nyb2xsZXJJbXBQYWlyOihpZClzY3JvbGxlckltcFBh
aXIKLXsKLSAgICBVTlVTRURfUEFSQU0oc2Nyb2xsZXJJbXBQYWlyKTsKLSAgICBpZiAoIV9hbmlt
YXRvcikKLSAgICAgICAgcmV0dXJuIE5TWmVyb1BvaW50OwotCi0gICAgcmV0dXJuIF9hbmltYXRv
ci0+c2Nyb2xsYWJsZUFyZWEoKS0+Y3VycmVudE1vdXNlUG9zaXRpb24oKTsKLX0KLQotLSAoTlNQ
b2ludClzY3JvbGxlckltcFBhaXI6KGlkKXNjcm9sbGVySW1wUGFpciBjb252ZXJ0Q29udGVudFBv
aW50OihOU1BvaW50KXBvaW50SW5Db250ZW50QXJlYSB0b1Njcm9sbGVySW1wOihpZClzY3JvbGxl
ckltcAotewotICAgIFVOVVNFRF9QQVJBTShzY3JvbGxlckltcFBhaXIpOwotICAgIGlmICghX2Fu
aW1hdG9yKQotICAgICAgICByZXR1cm4gTlNaZXJvUG9pbnQ7Ci0KLSAgICBXZWJDb3JlOjpTY3Jv
bGxiYXIqIHNjcm9sbGJhciA9IDA7Ci0gICAgaWYgKHdrU2Nyb2xsYmFyUGFpbnRlcklzSG9yaXpv
bnRhbCgoV0tTY3JvbGxiYXJQYWludGVyUmVmKXNjcm9sbGVySW1wKSkKLSAgICAgICAgc2Nyb2xs
YmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7
Ci0gICAgZWxzZSAKLSAgICAgICAgc2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJl
YSgpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOwotCi0gICAgLy8gSXQgaXMgcG9zc2libGUgdG8gaGF2
ZSBhIG51bGwgc2Nyb2xsYmFyIGhlcmUgc2luY2UgaXQgaXMgcG9zc2libGUgZm9yIHRoaXMgZGVs
ZWdhdGUKLSAgICAvLyBtZXRob2QgdG8gYmUgY2FsbGVkIGJldHdlZW4gdGhlIG1vbWVudCB3aGVu
IGEgc2Nyb2xsYmFyIGhhcyBiZWVuIHNldCB0byAwIGFuZCB0aGUKLSAgICAvLyBtb21lbnQgd2hl
biBpdHMgZGVzdHJ1Y3RvciBoYXMgYmVlbiBjYWxsZWQuIFdlIHNob3VsZCBwcm9iYWJseSBkZS1j
b3VwbGUgc29tZQotICAgIC8vIG9mIHRoZSBjbGVhbi11cCB3b3JrIGluIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWM6OnVucmVnaXN0ZXJTY3JvbGxiYXIoKSB0byBhdm9pZCB0aGlzCi0gICAgLy8g
aXNzdWUuCi0gICAgaWYgKCFzY3JvbGxiYXIpCi0gICAgICAgIHJldHVybiBXZWJDb3JlOjpJbnRQ
b2ludCgpOwotICAgIAotICAgIHJldHVybiBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXcoV2ViQ29yZTo6SW50UG9pbnQocG9pbnRJbkNvbnRlbnRBcmVhKSk7Ci19Ci0KLS0gKHZv
aWQpc2Nyb2xsZXJJbXBQYWlyOihpZClzY3JvbGxlckltcFBhaXIgc2V0Q29udGVudEFyZWFOZWVk
c0Rpc3BsYXlJblJlY3Q6KE5TUmVjdClyZWN0Ci17Ci0gICAgVU5VU0VEX1BBUkFNKHNjcm9sbGVy
SW1wUGFpcik7Ci0gICAgVU5VU0VEX1BBUkFNKHJlY3QpOwotfQotCi0tICh2b2lkKXNjcm9sbGVy
SW1wUGFpcjooaWQpc2Nyb2xsZXJJbXBQYWlyIHVwZGF0ZVNjcm9sbGVyU3R5bGVGb3JOZXdSZWNv
bW1lbmRlZFNjcm9sbGVyU3R5bGU6KE5TU2Nyb2xsZXJTdHlsZSluZXdSZWNvbW1lbmRlZFNjcm9s
bGVyU3R5bGUKLXsKLSAgICBpZiAoIV9hbmltYXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
V0tTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclJlZiBwYWludGVyQ29udHJvbGxlciA9IChXS1Nj
cm9sbGJhclBhaW50ZXJDb250cm9sbGVyUmVmKXNjcm9sbGVySW1wUGFpcjsKLSAgICBXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKiBtYWNUaGVtZSA9IChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjKilXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUo
KTsKLQotICAgIFdLU2Nyb2xsYmFyUGFpbnRlclJlZiBvbGRWZXJ0aWNhbFBhaW50ZXIgPSB3a1Zl
cnRpY2FsU2Nyb2xsYmFyUGFpbnRlckZvckNvbnRyb2xsZXIocGFpbnRlckNvbnRyb2xsZXIpOwot
ICAgIGlmIChvbGRWZXJ0aWNhbFBhaW50ZXIpIHsKLSAgICAgICAgV2ViQ29yZTo6U2Nyb2xsYmFy
KiB2ZXJ0aWNhbFNjcm9sbGJhciA9IF9hbmltYXRvci0+c2Nyb2xsYWJsZUFyZWEoKS0+dmVydGlj
YWxTY3JvbGxiYXIoKTsKLSAgICAgICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIG5ld1ZlcnRpY2Fs
UGFpbnRlciA9IHdrTWFrZVNjcm9sbGJhclJlcGxhY2VtZW50UGFpbnRlcihvbGRWZXJ0aWNhbFBh
aW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3UmVjb21tZW5kZWRTY3JvbGxl
clN0eWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyLT5j
b250cm9sU2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKLSAgICAg
ICAgbWFjVGhlbWUtPnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIodmVydGljYWxTY3JvbGxiYXIs
IG5ld1ZlcnRpY2FsUGFpbnRlcik7Ci0gICAgICAgIHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250
cm9sbGVyKHBhaW50ZXJDb250cm9sbGVyLCBuZXdWZXJ0aWNhbFBhaW50ZXIsIGZhbHNlKTsKLQot
ICAgICAgICAvLyBUaGUgZGlmZmVyZW50IHNjcm9sbGJhciBzdHlsZXMgaGF2ZSBkaWZmZXJlbnQg
dGhpY2tuZXNzZXMsIHNvIHdlIG11c3QgcmUtc2V0IHRoZSAKLSAgICAgICAgLy8gZnJhbWVSZWN0
IHRvIHRoZSBuZXcgdGhpY2tuZXNzLCBhbmQgdGhlIHJlLWxheW91dCBiZWxvdyB3aWxsIGVuc3Vy
ZSB0aGUgcG9zaXRpb24KLSAgICAgICAgLy8gYW5kIGxlbmd0aCBhcmUgcHJvcGVybHkgdXBkYXRl
ZC4KLSAgICAgICAgaW50IHRoaWNrbmVzcyA9IG1hY1RoZW1lLT5zY3JvbGxiYXJUaGlja25lc3Mo
dmVydGljYWxTY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwotICAgICAgICB2ZXJ0aWNhbFNjcm9s
bGJhci0+c2V0RnJhbWVSZWN0KFdlYkNvcmU6OkludFJlY3QoMCwgMCwgdGhpY2tuZXNzLCB0aGlj
a25lc3MpKTsKLSAgICB9Ci0KLSAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgb2xkSG9yaXpvbnRh
bFBhaW50ZXIgPSB3a0hvcml6b250YWxTY3JvbGxiYXJQYWludGVyRm9yQ29udHJvbGxlcihwYWlu
dGVyQ29udHJvbGxlcik7Ci0gICAgaWYgKG9sZEhvcml6b250YWxQYWludGVyKSB7Ci0gICAgICAg
IFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhciA9IF9hbmltYXRvci0+c2Ny
b2xsYWJsZUFyZWEoKS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpOwotICAgICAgICBXS1Njcm9sbGJh
clBhaW50ZXJSZWYgbmV3SG9yaXpvbnRhbFBhaW50ZXIgPSB3a01ha2VTY3JvbGxiYXJSZXBsYWNl
bWVudFBhaW50ZXIob2xkSG9yaXpvbnRhbFBhaW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuZXdSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7Ci0gICAgICAgIG1hY1RoZW1lLT5zZXROZXdQYWlu
dGVyRm9yU2Nyb2xsYmFyKGhvcml6b250YWxTY3JvbGxiYXIsIG5ld0hvcml6b250YWxQYWludGVy
KTsKLSAgICAgICAgd2tTZXRQYWludGVyRm9yUGFpbnRlckNvbnRyb2xsZXIocGFpbnRlckNvbnRy
b2xsZXIsIG5ld0hvcml6b250YWxQYWludGVyLCB0cnVlKTsKLQotICAgICAgICAvLyBUaGUgZGlm
ZmVyZW50IHNjcm9sbGJhciBzdHlsZXMgaGF2ZSBkaWZmZXJlbnQgdGhpY2tuZXNzZXMsIHNvIHdl
IG11c3QgcmUtc2V0IHRoZSAKLSAgICAgICAgLy8gZnJhbWVSZWN0IHRvIHRoZSBuZXcgdGhpY2tu
ZXNzLCBhbmQgdGhlIHJlLWxheW91dCBiZWxvdyB3aWxsIGVuc3VyZSB0aGUgcG9zaXRpb24KLSAg
ICAgICAgLy8gYW5kIGxlbmd0aCBhcmUgcHJvcGVybHkgdXBkYXRlZC4KLSAgICAgICAgaW50IHRo
aWNrbmVzcyA9IG1hY1RoZW1lLT5zY3JvbGxiYXJUaGlja25lc3MoaG9yaXpvbnRhbFNjcm9sbGJh
ci0+Y29udHJvbFNpemUoKSk7Ci0gICAgICAgIGhvcml6b250YWxTY3JvbGxiYXItPnNldEZyYW1l
UmVjdChXZWJDb3JlOjpJbnRSZWN0KDAsIDAsIHRoaWNrbmVzcywgdGhpY2tuZXNzKSk7Ci0gICAg
fQotCi0gICAgd2tTZXRTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlclN0eWxlKHBhaW50ZXJDb250
cm9sbGVyLCBuZXdSZWNvbW1lbmRlZFNjcm9sbGVyU3R5bGUpOwotCi0gICAgLy8gVGhlIGRpZmZl
cmVudCBzY3JvbGxiYXIgc3R5bGVzIGFmZmVjdCBsYXlvdXQsIHNvIHdlIG11c3QgcmUtbGF5b3V0
IGV2ZXJ5dGhpbmcuCi0gICAgX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJT
dHlsZUNoYW5nZWQoKTsKLX0KLQotQGVuZAotCi1AaW50ZXJmYWNlIFNjcm9sbGJhclBhcnRBbmlt
YXRpb24gOiBOU0FuaW1hdGlvbgotewotICAgIFJldGFpblB0cjxXS1Njcm9sbGJhclBhaW50ZXJS
ZWY+IF9zY3JvbGxlclBhaW50ZXI7Ci0gICAgV2ViQ29yZTo6U2Nyb2xsYmFyUGFydCBfcGFydDsK
LSAgICBXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKiBfYW5pbWF0b3I7Ci0gICAg
Q0dGbG9hdCBfaW5pdGlhbEFscGhhOwotICAgIENHRmxvYXQgX25ld0FscGhhOwotfQotLSAoaWQp
aW5pdFdpdGhTY3JvbGxiYXJQYWludGVyOihXS1Njcm9sbGJhclBhaW50ZXJSZWYpc2Nyb2xsZXJQ
YWludGVyIHBhcnQ6KFdlYkNvcmU6OlNjcm9sbGJhclBhcnQpcGFydCBzY3JvbGxBbmltYXRvcjoo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYyopc2Nyb2xsQW5pbWF0b3IgYW5pbWF0
ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0
aW9uOwotQGVuZAotCi1AaW1wbGVtZW50YXRpb24gU2Nyb2xsYmFyUGFydEFuaW1hdGlvbgotCi0t
IChpZClpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6KFdLU2Nyb2xsYmFyUGFpbnRlclJlZilzY3Jv
bGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFyUGFydClwYXJ0IHNjcm9sbEFuaW1h
dG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKilzY3JvbGxBbmltYXRvciBh
bmltYXRlQWxwaGFUbzooQ0dGbG9hdCluZXdBbHBoYSBkdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwp
ZHVyYXRpb24KLXsKLSAgICBzZWxmID0gW3N1cGVyIGluaXRXaXRoRHVyYXRpb246ZHVyYXRpb24g
YW5pbWF0aW9uQ3VydmU6TlNBbmltYXRpb25FYXNlSW5PdXRdOwotICAgIGlmICghc2VsZikKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBfc2Nyb2xsZXJQYWludGVyID0gc2Nyb2xsZXJQ
YWludGVyOwotICAgIF9wYXJ0ID0gcGFydDsKLSAgICBfYW5pbWF0b3IgPSBzY3JvbGxBbmltYXRv
cjsKLSAgICBfaW5pdGlhbEFscGhhID0gX3BhcnQgPT0gV2ViQ29yZTo6VGh1bWJQYXJ0ID8gd2tT
Y3JvbGxiYXJQYWludGVyS25vYkFscGhhKF9zY3JvbGxlclBhaW50ZXIuZ2V0KCkpIDogd2tTY3Jv
bGxiYXJQYWludGVyVHJhY2tBbHBoYShfc2Nyb2xsZXJQYWludGVyLmdldCgpKTsKLSAgICBfbmV3
QWxwaGEgPSBuZXdBbHBoYTsKLSAgICAKLSAgICByZXR1cm4gc2VsZjsgICAgCi19Ci0KLS0gKHZv
aWQpc2V0Q3VycmVudFByb2dyZXNzOihOU0FuaW1hdGlvblByb2dyZXNzKXByb2dyZXNzCi17Ci0g
ICAgW3N1cGVyIHNldEN1cnJlbnRQcm9ncmVzczpwcm9ncmVzc107Ci0KLSAgICBpZiAoIV9hbmlt
YXRvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0dGbG9hdCBjdXJyZW50QWxwaGE7Ci0gICAg
aWYgKF9pbml0aWFsQWxwaGEgPiBfbmV3QWxwaGEpCi0gICAgICAgIGN1cnJlbnRBbHBoYSA9IDEg
LSBwcm9ncmVzczsKLSAgICBlbHNlCi0gICAgICAgIGN1cnJlbnRBbHBoYSA9IHByb2dyZXNzOwot
ICAgIAotICAgIGlmIChfcGFydCA9PSBXZWJDb3JlOjpUaHVtYlBhcnQpCi0gICAgICAgIHdrU2V0
U2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYShfc2Nyb2xsZXJQYWludGVyLmdldCgpLCBjdXJyZW50
QWxwaGEpOwotICAgIGVsc2UKLSAgICAgICAgd2tTZXRTY3JvbGxiYXJQYWludGVyVHJhY2tBbHBo
YShfc2Nyb2xsZXJQYWludGVyLmdldCgpLCBjdXJyZW50QWxwaGEpOwotCi0gICAgLy8gSW52YWxp
ZGF0ZSB0aGUgc2Nyb2xsYmFycyBzbyB0aGF0IHRoZXkgcGFpbnQgdGhlIGFuaW1hdGlvbgotICAg
IGlmIChXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyID0gX2FuaW1hdG9yLT5z
Y3JvbGxhYmxlQXJlYSgpLT52ZXJ0aWNhbFNjcm9sbGJhcigpKQotICAgICAgICB2ZXJ0aWNhbFNj
cm9sbGJhci0+aW52YWxpZGF0ZVJlY3QoV2ViQ29yZTo6SW50UmVjdCgwLCAwLCB2ZXJ0aWNhbFNj
cm9sbGJhci0+d2lkdGgoKSwgdmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpKSk7Ci0gICAgaWYg
KFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhciA9IF9hbmltYXRvci0+c2Ny
b2xsYWJsZUFyZWEoKS0+aG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAgICAgICBob3Jpem9udGFs
U2Nyb2xsYmFyLT5pbnZhbGlkYXRlUmVjdChXZWJDb3JlOjpJbnRSZWN0KDAsIDAsIGhvcml6b250
YWxTY3JvbGxiYXItPndpZHRoKCksIGhvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpKSk7Ci19
Ci0KLS0gKHZvaWQpc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWQKLXsKLSAgICBbc2VsZiBzdG9wQW5p
bWF0aW9uXTsKLSAgICBfYW5pbWF0b3IgPSAwOwotfQotCi1AZW5kCi0KLUBpbnRlcmZhY2UgU2Ny
b2xsYmFyUGFpbnRlckRlbGVnYXRlIDogTlNPYmplY3Q8TlNBbmltYXRpb25EZWxlZ2F0ZT4KLXsK
LSAgICBXZWJDb3JlOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKiBfYW5pbWF0b3I7Ci0KLSAg
ICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4gX3ZlcnRpY2FsS25vYkFuaW1hdGlv
bjsKLSAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4gX2hvcml6b250YWxLbm9i
QW5pbWF0aW9uOwotCi0gICAgUmV0YWluUHRyPFNjcm9sbGJhclBhcnRBbmltYXRpb24+IF92ZXJ0
aWNhbFRyYWNrQW5pbWF0aW9uOwotICAgIFJldGFpblB0cjxTY3JvbGxiYXJQYXJ0QW5pbWF0aW9u
PiBfaG9yaXpvbnRhbFRyYWNrQW5pbWF0aW9uOwotfQotLSAoaWQpaW5pdFdpdGhTY3JvbGxBbmlt
YXRvcjooV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYyopc2Nyb2xsQW5pbWF0b3I7
Ci0tICh2b2lkKWNhbmNlbEFuaW1hdGlvbnM7Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBTY3Jv
bGxiYXJQYWludGVyRGVsZWdhdGUKLQotLSAoaWQpaW5pdFdpdGhTY3JvbGxBbmltYXRvcjooV2Vi
Q29yZTo6U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYyopc2Nyb2xsQW5pbWF0b3IKLXsKLSAgICBz
ZWxmID0gW3N1cGVyIGluaXRdOwotICAgIGlmICghc2VsZikKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICAKLSAgICBfYW5pbWF0b3IgPSBzY3JvbGxBbmltYXRvcjsKLSAgICByZXR1cm4gc2VsZjsK
LX0KLQotLSAodm9pZCljYW5jZWxBbmltYXRpb25zCi17Ci0gICAgW192ZXJ0aWNhbEtub2JBbmlt
YXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07Ci0gICAgW19ob3Jpem9udGFsS25vYkFuaW1hdGlv
bi5nZXQoKSBzdG9wQW5pbWF0aW9uXTsKLSAgICBbX3ZlcnRpY2FsVHJhY2tBbmltYXRpb24uZ2V0
KCkgc3RvcEFuaW1hdGlvbl07Ci0gICAgW19ob3Jpem9udGFsVHJhY2tBbmltYXRpb24uZ2V0KCkg
c3RvcEFuaW1hdGlvbl07Ci19Ci0KLS0gKE5TUmVjdCljb252ZXJ0UmVjdFRvQmFja2luZzooTlNS
ZWN0KWFSZWN0Ci17Ci0gICAgcmV0dXJuIGFSZWN0OwotfQotCi0tIChOU1JlY3QpY29udmVydFJl
Y3RGcm9tQmFja2luZzooTlNSZWN0KWFSZWN0Ci17Ci0gICAgcmV0dXJuIGFSZWN0OwotfQotCi0t
IChDQUxheWVyICopbGF5ZXIKLXsKLSAgICBpZiAoIV9hbmltYXRvcikKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICBpZiAoIV9hbmltYXRvci0+aXNEcmF3aW5nSW50b0xheWVyKCkpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYXR0ZW1wdCB0byByZXR1
cm4gYW4gYWN0dWFsIGxheWVyLgotICAgIHN0YXRpYyBDQUxheWVyICpkdW1teUxheWVyID0gW1tD
QUxheWVyIGFsbG9jXSBpbml0XTsKLSAgICByZXR1cm4gZHVtbXlMYXllcjsKLX0KLQotLSAodm9p
ZClzZXRVcEFuaW1hdGlvbjooUmV0YWluUHRyPFNjcm9sbGJhclBhcnRBbmltYXRpb24+JilzY3Jv
bGxiYXJQYXJ0QW5pbWF0aW9uIHNjcm9sbGVyUGFpbnRlcjooV0tTY3JvbGxiYXJQYWludGVyUmVm
KXNjcm9sbGVyUGFpbnRlciBwYXJ0OihXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0KXBhcnQgYW5pbWF0
ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVydmFsKWR1cmF0
aW9uCi17Ci0gICAgLy8gSWYgdGhlIHVzZXIgaGFzIHNjcm9sbGVkIHRoZSBwYWdlLCB0aGVuIHRo
ZSBzY3JvbGxiYXJzIG11c3QgYmUgYW5pbWF0ZWQgaGVyZS4gCi0gICAgLy8gVGhpcyBvdmVycmlk
ZXMgdGhlIGVhcmx5IHJldHVybnMuCi0gICAgYm9vbCBtdXN0QW5pbWF0ZSA9IF9hbmltYXRvci0+
aGF2ZVNjcm9sbGVkU2luY2VQYWdlTG9hZCgpOwotCi0gICAgaWYgKF9hbmltYXRvci0+c2Nyb2xs
YmFyUGFpbnRUaW1lcklzQWN0aXZlKCkgJiYgIW11c3RBbmltYXRlKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAoX2FuaW1hdG9yLT5zY3JvbGxhYmxlQXJlYSgpLT5zaG91bGRTdXNwZW5kU2Ny
b2xsQW5pbWF0aW9ucygpICYmICFtdXN0QW5pbWF0ZSkgewotICAgICAgICBfYW5pbWF0b3ItPnN0
YXJ0U2Nyb2xsYmFyUGFpbnRUaW1lcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Ly8gQXQgdGhpcyBwb2ludCwgd2UgYXJlIGRlZmluaXRlbHkgZ29pbmcgdG8gYW5pbWF0ZSBub3cs
IHNvIHN0b3AgdGhlIHRpbWVyLgotICAgIF9hbmltYXRvci0+c3RvcFNjcm9sbGJhclBhaW50VGlt
ZXIoKTsKLQotICAgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgYW5pbWF0aW5nLCBzdG9wCi0gICAg
aWYgKHNjcm9sbGJhclBhcnRBbmltYXRpb24pIHsKLSAgICAgICAgW3Njcm9sbGJhclBhcnRBbmlt
YXRpb24uZ2V0KCkgc3RvcEFuaW1hdGlvbl07Ci0gICAgICAgIHNjcm9sbGJhclBhcnRBbmltYXRp
b24gPSBuaWw7Ci0gICAgfQotCi0gICAgaWYgKHBhcnQgPT0gV2ViQ29yZTo6VGh1bWJQYXJ0ICYm
ICF3a1Njcm9sbGJhclBhaW50ZXJJc0hvcml6b250YWwoc2Nyb2xsZXJQYWludGVyKSkgewotICAg
ICAgICBpZiAobmV3QWxwaGEgPT0gMSkgewotICAgICAgICAgICAgSW50UmVjdCB0aHVtYlJlY3Qg
PSBJbnRSZWN0KHdrU2Nyb2xsYmFyUGFpbnRlcktub2JSZWN0KHNjcm9sbGVyUGFpbnRlcikpOwot
ICAgICAgICAgICAgX2FuaW1hdG9yLT5zZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3QodGh1bWJS
ZWN0KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBfYW5pbWF0b3ItPnNldFZpc2libGVT
Y3JvbGxlclRodW1iUmVjdChJbnRSZWN0KCkpOwotICAgIH0KLQotICAgIFtOU0FuaW1hdGlvbkNv
bnRleHQgYmVnaW5Hcm91cGluZ107Ci0gICAgW1tOU0FuaW1hdGlvbkNvbnRleHQgY3VycmVudENv
bnRleHRdIHNldER1cmF0aW9uOmR1cmF0aW9uXTsKLSAgICBzY3JvbGxiYXJQYXJ0QW5pbWF0aW9u
LmFkb3B0TlMoW1tTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aFNjcm9sbGJh
clBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0OnBhcnQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2Nyb2xsQW5pbWF0b3I6X2FuaW1hdG9yIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlQWxwaGFUbzpu
ZXdBbHBoYSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246ZHVyYXRpb25dKTsKLSAgICBbc2Nyb2xsYmFy
UGFydEFuaW1hdGlvbi5nZXQoKSBzZXRBbmltYXRpb25CbG9ja2luZ01vZGU6TlNBbmltYXRpb25O
b25ibG9ja2luZ107Ci0gICAgW3Njcm9sbGJhclBhcnRBbmltYXRpb24uZ2V0KCkgc3RhcnRBbmlt
YXRpb25dOwotICAgIFtOU0FuaW1hdGlvbkNvbnRleHQgZW5kR3JvdXBpbmddOwotfQotCi0tICh2
b2lkKXNjcm9sbGVySW1wOihpZClzY3JvbGxlckltcCBhbmltYXRlS25vYkFscGhhVG86KENHRmxv
YXQpbmV3S25vYkFscGhhIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgotewotICAg
IGlmICghX2FuaW1hdG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXS1Njcm9sbGJhclBhaW50
ZXJSZWYgc2Nyb2xsZXJQYWludGVyID0gKFdLU2Nyb2xsYmFyUGFpbnRlclJlZilzY3JvbGxlcklt
cDsKLSAgICBpZiAod2tTY3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFsKHNjcm9sbGVyUGFpbnRl
cikpCi0gICAgICAgIFtzZWxmIHNldFVwQW5pbWF0aW9uOl9ob3Jpem9udGFsS25vYkFuaW1hdGlv
biBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBhcnQ6V2ViQ29yZTo6VGh1bWJQYXJ0
IGFuaW1hdGVBbHBoYVRvOm5ld0tub2JBbHBoYSBkdXJhdGlvbjpkdXJhdGlvbl07Ci0gICAgZWxz
ZQotICAgICAgICBbc2VsZiBzZXRVcEFuaW1hdGlvbjpfdmVydGljYWxLbm9iQW5pbWF0aW9uIHNj
cm9sbGVyUGFpbnRlcjpzY3JvbGxlclBhaW50ZXIgcGFydDpXZWJDb3JlOjpUaHVtYlBhcnQgYW5p
bWF0ZUFscGhhVG86bmV3S25vYkFscGhhIGR1cmF0aW9uOmR1cmF0aW9uXTsKLX0KLQotLSAodm9p
ZClzY3JvbGxlckltcDooaWQpc2Nyb2xsZXJJbXAgYW5pbWF0ZVRyYWNrQWxwaGFUbzooQ0dGbG9h
dCluZXdUcmFja0FscGhhIGR1cmF0aW9uOihOU1RpbWVJbnRlcnZhbClkdXJhdGlvbgotewotICAg
IGlmICghX2FuaW1hdG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXS1Njcm9sbGJhclBhaW50
ZXJSZWYgc2Nyb2xsZXJQYWludGVyID0gKFdLU2Nyb2xsYmFyUGFpbnRlclJlZilzY3JvbGxlcklt
cDsKLSAgICBpZiAod2tTY3JvbGxiYXJQYWludGVySXNIb3Jpem9udGFsKHNjcm9sbGVyUGFpbnRl
cikpCi0gICAgICAgIFtzZWxmIHNldFVwQW5pbWF0aW9uOl9ob3Jpem9udGFsVHJhY2tBbmltYXRp
b24gc2Nyb2xsZXJQYWludGVyOnNjcm9sbGVyUGFpbnRlciBwYXJ0OldlYkNvcmU6OkJhY2tUcmFj
a1BhcnQgYW5pbWF0ZUFscGhhVG86bmV3VHJhY2tBbHBoYSBkdXJhdGlvbjpkdXJhdGlvbl07Ci0g
ICAgZWxzZQotICAgICAgICBbc2VsZiBzZXRVcEFuaW1hdGlvbjpfdmVydGljYWxUcmFja0FuaW1h
dGlvbiBzY3JvbGxlclBhaW50ZXI6c2Nyb2xsZXJQYWludGVyIHBhcnQ6V2ViQ29yZTo6QmFja1Ry
YWNrUGFydCBhbmltYXRlQWxwaGFUbzpuZXdUcmFja0FscGhhIGR1cmF0aW9uOmR1cmF0aW9uXTsK
LX0KLQotLSAodm9pZClzY3JvbGxlckltcDooaWQpc2Nyb2xsZXJJbXAgb3ZlcmxheVNjcm9sbGVy
U3RhdGVDaGFuZ2VkVG86KE5TVUludGVnZXIpbmV3T3ZlcmxheVNjcm9sbGVyU3RhdGUKLXsKLSAg
ICBVTlVTRURfUEFSQU0oc2Nyb2xsZXJJbXApOwotICAgIFVOVVNFRF9QQVJBTShuZXdPdmVybGF5
U2Nyb2xsZXJTdGF0ZSk7Ci19Ci0KLS0gKHZvaWQpc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWQKLXsK
LSAgICBfYW5pbWF0b3IgPSAwOwotICAgIFtfdmVydGljYWxLbm9iQW5pbWF0aW9uLmdldCgpIHNj
cm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKLSAgICBbX2hvcml6b250YWxLbm9iQW5pbWF0aW9uLmdl
dCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKLSAgICBbX3ZlcnRpY2FsVHJhY2tBbmltYXRp
b24uZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOwotICAgIFtfaG9yaXpvbnRhbFRyYWNr
QW5pbWF0aW9uLmdldCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKLX0KLQotQGVuZAotCi0j
ZW5kaWYgLy8gVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLVBhc3NPd25QdHI8U2Nyb2xsQW5pbWF0b3I+IFNjcm9sbEFuaW1hdG9yOjpjcmVhdGUoU2Ny
b2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcg
U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYyhzY3JvbGxhYmxlQXJlYSkpOwotfQotCi1TY3JvbGxB
bmltYXRvckNocm9taXVtTWFjOjpTY3JvbGxBbmltYXRvckNocm9taXVtTWFjKFNjcm9sbGFibGVB
cmVhKiBzY3JvbGxhYmxlQXJlYSkKLSAgICA6IFNjcm9sbEFuaW1hdG9yKHNjcm9sbGFibGVBcmVh
KQotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICAsIG1faW5pdGlhbFNjcm9sbGJh
clBhaW50VGltZXIodGhpcywgJlNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmluaXRpYWxTY3Jv
bGxiYXJQYWludFRpbWVyRmlyZWQpCi0jZW5kaWYKLSNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
Ci0gICAgLCBtX2luU2Nyb2xsR2VzdHVyZShmYWxzZSkKLSAgICAsIG1fbW9tZW50dW1TY3JvbGxJ
blByb2dyZXNzKGZhbHNlKQotICAgICwgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMoZmFsc2UpCi0g
ICAgLCBtX2xhc3RNb21lbXR1bVNjcm9sbFRpbWVzdGFtcCgwKQotICAgICwgbV9zdGFydFRpbWUo
MCkKLSAgICAsIG1fc25hcFJ1YmJlckJhbmRUaW1lcih0aGlzLCAmU2Nyb2xsQW5pbWF0b3JDaHJv
bWl1bU1hYzo6c25hcFJ1YmJlckJhbmRUaW1lckZpcmVkKQotI2VuZGlmCi0gICAgLCBtX2RyYXdp
bmdJbnRvTGF5ZXIoZmFsc2UpCi0gICAgLCBtX2hhdmVTY3JvbGxlZFNpbmNlUGFnZUxvYWQoZmFs
c2UpCi17Ci0gICAgbV9zY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZS5hZG9wdE5TKFtbU2Ny
b2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6
dGhpc10pOwotICAgIG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyLmFkb3B0TlMoW1tOU0NsYXNzRnJv
bVN0cmluZyhAIk5TU2Nyb2xsQW5pbWF0aW9uSGVscGVyIikgYWxsb2NdIGluaXRXaXRoRGVsZWdh
dGU6bV9zY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZS5nZXQoKV0pOwotCi0jaWYgVVNFKFdL
X1NDUk9MTEJBUl9QQUlOVEVSKQotICAgIG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxl
Z2F0ZS5hZG9wdE5TKFtbU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhTY3JvbGxBbmltYXRvcjp0aGlzXSk7Ci0gICAgbV9zY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlciA9IHdrTWFrZVNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFp
bnRlckNvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKSk7Ci0gICAgbV9zY3JvbGxiYXJQYWludGVyRGVs
ZWdhdGUuYWRvcHROUyhbW1Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhT
Y3JvbGxBbmltYXRvcjp0aGlzXSk7Ci0jZW5kaWYKLX0KLQotU2Nyb2xsQW5pbWF0b3JDaHJvbWl1
bU1hYzo6flNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWMoKQotewotI2lmIFVTRShXS19TQ1JPTExC
QVJfUEFJTlRFUikKLSAgICBbbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRlbGVnYXRlLmdl
dCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJveWVkXTsKLSAgICBbKGlkKW1fc2Nyb2xsYmFyUGFpbnRl
ckNvbnRyb2xsZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbbV9zY3JvbGxiYXJQYWlu
dGVyRGVsZWdhdGUuZ2V0KCkgc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWRdOwotICAgIFttX3Njcm9s
bEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlLmdldCgpIHNjcm9sbEFuaW1hdG9yRGVzdHJveWVkXTsK
LSNlbmRpZgotfQotCi1ib29sIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNjcm9sbChTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJp
dHksIGZsb2F0IHN0ZXAsIGZsb2F0IG11bHRpcGxpZXIpCi17Ci0gICAgbV9oYXZlU2Nyb2xsZWRT
aW5jZVBhZ2VMb2FkID0gdHJ1ZTsKLQotICAgIGlmICghW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gYm9vbEZvcktleTpAIkFwcGxlU2Nyb2xsQW5pbWF0aW9uRW5hYmxlZCJd
KQotICAgICAgICByZXR1cm4gU2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChvcmllbnRhdGlvbiwgZ3Jh
bnVsYXJpdHksIHN0ZXAsIG11bHRpcGxpZXIpOwotCi0gICAgaWYgKGdyYW51bGFyaXR5ID09IFNj
cm9sbEJ5UGl4ZWwpCi0gICAgICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6c2Nyb2xsKG9yaWVu
dGF0aW9uLCBncmFudWxhcml0eSwgc3RlcCwgbXVsdGlwbGllcik7Ci0KLSAgICBmbG9hdCBjdXJy
ZW50UG9zID0gb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IG1fY3VycmVudFBv
c1ggOiBtX2N1cnJlbnRQb3NZOwotICAgIGZsb2F0IG5ld1BvcyA9IHN0ZDo6bWF4PGZsb2F0Pihz
dGQ6Om1pbjxmbG9hdD4oY3VycmVudFBvcyArIChzdGVwICogbXVsdGlwbGllciksIHN0YXRpY19j
YXN0PGZsb2F0PihtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxTaXplKG9yaWVudGF0aW9uKSkpLCAw
KTsKLSAgICBpZiAoY3VycmVudFBvcyA9PSBuZXdQb3MpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIE5TUG9pbnQgbmV3UG9pbnQ7Ci0gICAgaWYgKFttX3Njcm9sbEFuaW1hdGlvbkhlbHBl
ci5nZXQoKSBfaXNBbmltYXRpbmddKSB7Ci0gICAgICAgIE5TUG9pbnQgdGFyZ2V0T3JpZ2luID0g
W21fc2Nyb2xsQW5pbWF0aW9uSGVscGVyLmdldCgpIHRhcmdldE9yaWdpbl07Ci0gICAgICAgIG5l
d1BvaW50ID0gb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IE5TTWFrZVBvaW50
KG5ld1BvcywgdGFyZ2V0T3JpZ2luLnkpIDogTlNNYWtlUG9pbnQodGFyZ2V0T3JpZ2luLngsIG5l
d1Bvcyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIG5ld1BvaW50ID0gb3JpZW50YXRpb24gPT0gSG9y
aXpvbnRhbFNjcm9sbGJhciA/IE5TTWFrZVBvaW50KG5ld1BvcywgbV9jdXJyZW50UG9zWSkgOiBO
U01ha2VQb2ludChtX2N1cnJlbnRQb3NYLCBuZXdQb3MpOwotCi0gICAgW21fc2Nyb2xsQW5pbWF0
aW9uSGVscGVyLmdldCgpIHNjcm9sbFRvUG9pbnQ6bmV3UG9pbnRdOwotICAgIHJldHVybiB0cnVl
OwotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnNjcm9sbFRvT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50JiBvZmZzZXQpCi17Ci0gICAgW21fc2Nyb2xs
QW5pbWF0aW9uSGVscGVyLmdldCgpIF9zdG9wUnVuXTsKLSAgICBpbW1lZGlhdGVTY3JvbGxUb1Bv
aW50KG9mZnNldCk7Ci19Ci0KLWZsb2F0IFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmFkanVz
dFNjcm9sbFhQb3NpdGlvbklmTmVjZXNzYXJ5KGZsb2F0IHBvc2l0aW9uKSBjb25zdAotewotICAg
IGlmICghbV9zY3JvbGxhYmxlQXJlYS0+Y29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2Uo
KSkKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwotCi0gICAgcmV0dXJuIG1heDxmbG9hdD4obWlu
PGZsb2F0Pihwb3NpdGlvbiwgbV9zY3JvbGxhYmxlQXJlYS0+Y29udGVudHNTaXplKCkud2lkdGgo
KSAtIG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVXaWR0aCgpKSwgMCk7Ci19Ci0KLWZsb2F0IFNj
cm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmFkanVzdFNjcm9sbFlQb3NpdGlvbklmTmVjZXNzYXJ5
KGZsb2F0IHBvc2l0aW9uKSBjb25zdAotewotICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYS0+Y29u
c3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9u
OwotCi0gICAgcmV0dXJuIG1heDxmbG9hdD4obWluPGZsb2F0Pihwb3NpdGlvbiwgbV9zY3JvbGxh
YmxlQXJlYS0+Y29udGVudHNTaXplKCkuaGVpZ2h0KCkgLSBtX3Njcm9sbGFibGVBcmVhLT52aXNp
YmxlSGVpZ2h0KCkpLCAwKTsKLX0KLQotRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjphZGp1c3RTY3JvbGxQb3NpdGlvbklmTmVjZXNzYXJ5KGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0aW9uKSBjb25zdAotewotICAgIGlmICghbV9zY3JvbGxhYmxlQXJlYS0+Y29uc3RyYWluc1Nj
cm9sbGluZ1RvQ29udGVudEVkZ2UoKSkKLSAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwotCi0gICAg
ZmxvYXQgbmV3WCA9IG1heDxmbG9hdD4obWluPGZsb2F0Pihwb3NpdGlvbi54KCksIG1fc2Nyb2xs
YWJsZUFyZWEtPmNvbnRlbnRzU2l6ZSgpLndpZHRoKCkgLSBtX3Njcm9sbGFibGVBcmVhLT52aXNp
YmxlV2lkdGgoKSksIDApOwotICAgIGZsb2F0IG5ld1kgPSBtYXg8ZmxvYXQ+KG1pbjxmbG9hdD4o
cG9zaXRpb24ueSgpLCBtX3Njcm9sbGFibGVBcmVhLT5jb250ZW50c1NpemUoKS5oZWlnaHQoKSAt
IG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVIZWlnaHQoKSksIDApOwotCi0gICAgcmV0dXJuIEZs
b2F0UG9pbnQobmV3WCwgbmV3WSk7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1h
Yzo6aW1tZWRpYXRlU2Nyb2xsVG9Qb2ludChjb25zdCBGbG9hdFBvaW50JiBuZXdQb3NpdGlvbikK
LXsKLSAgICBGbG9hdFBvaW50IGFkanVzdGVkUG9zaXRpb24gPSBhZGp1c3RTY3JvbGxQb3NpdGlv
bklmTmVjZXNzYXJ5KG5ld1Bvc2l0aW9uKTsKLSAKLSAgICBpZiAoYWRqdXN0ZWRQb3NpdGlvbi54
KCkgPT0gbV9jdXJyZW50UG9zWCAmJiBhZGp1c3RlZFBvc2l0aW9uLnkoKSA9PSBtX2N1cnJlbnRQ
b3NZKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgbV9jdXJyZW50UG9zWCA9IGFkanVzdGVk
UG9zaXRpb24ueCgpOwotICAgIG1fY3VycmVudFBvc1kgPSBhZGp1c3RlZFBvc2l0aW9uLnkoKTsK
LSAgICBub3RpdHlQb3NpdGlvbkNoYW5nZWQoKTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvckNo
cm9taXVtTWFjOjppbW1lZGlhdGVTY3JvbGxCeURlbHRhWChmbG9hdCBkZWx0YVgpCi17Ci0gICAg
ZmxvYXQgbmV3UG9zWCA9IGFkanVzdFNjcm9sbFhQb3NpdGlvbklmTmVjZXNzYXJ5KG1fY3VycmVu
dFBvc1ggKyBkZWx0YVgpOwotICAgIAotICAgIGlmIChuZXdQb3NYID09IG1fY3VycmVudFBvc1gp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2N1cnJlbnRQb3NYID0gbmV3UG9zWDsKLSAg
ICBub3RpdHlQb3NpdGlvbkNoYW5nZWQoKTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvckNocm9t
aXVtTWFjOjppbW1lZGlhdGVTY3JvbGxCeURlbHRhWShmbG9hdCBkZWx0YVkpCi17Ci0gICAgZmxv
YXQgbmV3UG9zWSA9IGFkanVzdFNjcm9sbFlQb3NpdGlvbklmTmVjZXNzYXJ5KG1fY3VycmVudFBv
c1kgKyBkZWx0YVkpOwotICAgIAotICAgIGlmIChuZXdQb3NZID09IG1fY3VycmVudFBvc1kpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2N1cnJlbnRQb3NZID0gbmV3UG9zWTsKLSAgICBu
b3RpdHlQb3NpdGlvbkNoYW5nZWQoKTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjpub3RpdHlQb3NpdGlvbkNoYW5nZWQoKQotewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJ
TlRFUikKLSAgICB3a0NvbnRlbnRBcmVhU2Nyb2xsZWQobV9zY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlci5nZXQoKSk7Ci0jZW5kaWYKLSAgICBTY3JvbGxBbmltYXRvcjo6bm90aXR5UG9zaXRpb25D
aGFuZ2VkKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6Y29udGVudEFy
ZWFXaWxsUGFpbnQoKSBjb25zdAotewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRFUikKLSAg
ICB3a0NvbnRlbnRBcmVhV2lsbFBhaW50KG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0
KCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6bW91c2VF
bnRlcmVkQ29udGVudEFyZWEoKSBjb25zdAotewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJTlRF
UikKLSAgICB3a01vdXNlRW50ZXJlZENvbnRlbnRBcmVhKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRy
b2xsZXIuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1h
Yzo6bW91c2VFeGl0ZWRDb250ZW50QXJlYSgpIGNvbnN0Ci17Ci0jaWYgVVNFKFdLX1NDUk9MTEJB
Ul9QQUlOVEVSKQotICAgIHdrTW91c2VFeGl0ZWRDb250ZW50QXJlYShtX3Njcm9sbGJhclBhaW50
ZXJDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWM6Om1vdXNlTW92ZWRJbkNvbnRlbnRBcmVhKCkgY29uc3QKLXsKLSNpZiBVU0UoV0tf
U0NST0xMQkFSX1BBSU5URVIpCi0gICAgd2tNb3VzZU1vdmVkSW5Db250ZW50QXJlYShtX3Njcm9s
bGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotfQotCi12b2lkIFNjcm9sbEFu
aW1hdG9yQ2hyb21pdW1NYWM6OndpbGxTdGFydExpdmVSZXNpemUoKQotewotI2lmIFVTRShXS19T
Q1JPTExCQVJfUEFJTlRFUikKLSAgICB3a1dpbGxTdGFydExpdmVSZXNpemUobV9zY3JvbGxiYXJQ
YWludGVyQ29udHJvbGxlci5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRv
ckNocm9taXVtTWFjOjpjb250ZW50c1Jlc2l6ZWQoKSBjb25zdAotewotI2lmIFVTRShXS19TQ1JP
TExCQVJfUEFJTlRFUikKLSAgICB3a0NvbnRlbnRBcmVhUmVzaXplZChtX3Njcm9sbGJhclBhaW50
ZXJDb250cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yQ2hy
b21pdW1NYWM6OndpbGxFbmRMaXZlUmVzaXplKCkKLXsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BB
SU5URVIpCi0gICAgd2tXaWxsRW5kTGl2ZVJlc2l6ZShtX3Njcm9sbGJhclBhaW50ZXJDb250cm9s
bGVyLmdldCgpKTsKLSNlbmRpZgotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6
OmNvbnRlbnRBcmVhRGlkU2hvdygpIGNvbnN0Ci17Ci0jaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlO
VEVSKQotICAgIHdrQ29udGVudEFyZWFEaWRTaG93KG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xs
ZXIuZ2V0KCkpOwotI2VuZGlmCi19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6
Y29udGVudEFyZWFEaWRIaWRlKCkgY29uc3QKLXsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5U
RVIpCi0gICAgd2tDb250ZW50QXJlYURpZEhpZGUobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
ci5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpk
aWRCZWdpblNjcm9sbEdlc3R1cmUoKSBjb25zdAotewotI2lmIFVTRShXS19TQ1JPTExCQVJfUEFJ
TlRFUikKLSAgICB3a0RpZEJlZ2luU2Nyb2xsR2VzdHVyZShtX3Njcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyLmdldCgpKTsKLSNlbmRpZgotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1N
YWM6OmRpZEVuZFNjcm9sbEdlc3R1cmUoKSBjb25zdAotewotI2lmIFVTRShXS19TQ1JPTExCQVJf
UEFJTlRFUikKLSAgICB3a0RpZEVuZFNjcm9sbEdlc3R1cmUobV9zY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlci5nZXQoKSk7Ci0jZW5kaWYKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVt
TWFjOjpkaWRBZGRWZXJ0aWNhbFNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKLXsKLSNp
ZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHBh
aW50ZXIgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKj4o
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkpLT5wYWludGVyRm9yU2Nyb2xs
YmFyKHNjcm9sbGJhcik7Ci0gICAgd2tTY3JvbGxiYXJQYWludGVyU2V0RGVsZWdhdGUocGFpbnRl
ciwgbV9zY3JvbGxiYXJQYWludGVyRGVsZWdhdGUuZ2V0KCkpOwotICAgIHdrU2V0UGFpbnRlckZv
clBhaW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIuZ2V0KCksIHBh
aW50ZXIsIGZhbHNlKTsKLSAgICBpZiAoc2Nyb2xsYWJsZUFyZWEoKS0+aW5MaXZlUmVzaXplKCkp
Ci0gICAgICAgIHdrU2V0U2Nyb2xsYmFyUGFpbnRlcktub2JBbHBoYShwYWludGVyLCAxKTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHNjcm9sbGJhcik7Ci0jZW5kaWYKLX0KLQotdm9pZCBTY3Jv
bGxBbmltYXRvckNocm9taXVtTWFjOjp3aWxsUmVtb3ZlVmVydGljYWxTY3JvbGxiYXIoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCi17Ci0jaWYgVVNFKFdLX1NDUk9MTEJBUl9QQUlOVEVSKQotICAgIFdL
U2Nyb2xsYmFyUGFpbnRlclJlZiBwYWludGVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYyo+KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVt
ZSgpKS0+cGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIpOwotICAgIHdrU2Nyb2xsYmFyUGFp
bnRlclNldERlbGVnYXRlKHBhaW50ZXIsIG5pbCk7Ci0gICAgd2tTZXRQYWludGVyRm9yUGFpbnRl
ckNvbnRyb2xsZXIobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSwgbmlsLCBmYWxz
ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShzY3JvbGxiYXIpOwotI2VuZGlmCi19Ci0KLXZv
aWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6ZGlkQWRkSG9yaXpvbnRhbFNjcm9sbGJhcihT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKLXsKLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0g
ICAgV0tTY3JvbGxiYXJQYWludGVyUmVmIHBhaW50ZXIgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKj4oV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6Om5hdGl2
ZVRoZW1lKCkpLT5wYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7Ci0gICAgd2tTY3JvbGxi
YXJQYWludGVyU2V0RGVsZWdhdGUocGFpbnRlciwgbV9zY3JvbGxiYXJQYWludGVyRGVsZWdhdGUu
Z2V0KCkpOwotICAgIHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFy
UGFpbnRlckNvbnRyb2xsZXIuZ2V0KCksIHBhaW50ZXIsIHRydWUpOwotICAgIGlmIChzY3JvbGxh
YmxlQXJlYSgpLT5pbkxpdmVSZXNpemUoKSkKLSAgICAgICAgd2tTZXRTY3JvbGxiYXJQYWludGVy
S25vYkFscGhhKHBhaW50ZXIsIDEpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2Nyb2xsYmFy
KTsKLSNlbmRpZgotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OndpbGxSZW1v
dmVIb3Jpem9udGFsU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotI2lmIFVTRShX
S19TQ1JPTExCQVJfUEFJTlRFUikKLSAgICBXS1Njcm9sbGJhclBhaW50ZXJSZWYgcGFpbnRlciA9
IHN0YXRpY19jYXN0PFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMqPihXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKSktPnBhaW50ZXJGb3JTY3JvbGxiYXIoc2Ny
b2xsYmFyKTsKLSAgICB3a1Njcm9sbGJhclBhaW50ZXJTZXREZWxlZ2F0ZShwYWludGVyLCBuaWwp
OwotICAgIHdrU2V0UGFpbnRlckZvclBhaW50ZXJDb250cm9sbGVyKG1fc2Nyb2xsYmFyUGFpbnRl
ckNvbnRyb2xsZXIuZ2V0KCksIG5pbCwgdHJ1ZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShz
Y3JvbGxiYXIpOwotI2VuZGlmCi19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYzo6
Y2FuY2VsQW5pbWF0aW9ucygpCi17Ci0gICAgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkID0g
ZmFsc2U7Ci0KLSNpZiBVU0UoV0tfU0NST0xMQkFSX1BBSU5URVIpCi0gICAgaWYgKHNjcm9sbGJh
clBhaW50VGltZXJJc0FjdGl2ZSgpKQotICAgICAgICBzdG9wU2Nyb2xsYmFyUGFpbnRUaW1lcigp
OwotICAgIFttX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5nZXQoKSBjYW5jZWxBbmltYXRpb25z
XTsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQotCi1zdGF0aWMgY29u
c3QgZmxvYXQgc2Nyb2xsVmVsb2NpdHlaZXJvaW5nVGltZW91dCA9IDAuMTBmOwotc3RhdGljIGNv
bnN0IGZsb2F0IHJ1YmJlcmJhbmRTdGlmZm5lc3MgPSAyMDsKLXN0YXRpYyBjb25zdCBmbG9hdCBy
dWJiZXJiYW5kRGlyZWN0aW9uTG9ja1N0cmV0Y2hSYXRpbyA9IDE7Ci1zdGF0aWMgY29uc3QgZmxv
YXQgcnViYmVyYmFuZE1pbmltdW1SZXF1aXJlZERlbHRhQmVmb3JlU3RyZXRjaCA9IDEwOwotc3Rh
dGljIGNvbnN0IGZsb2F0IHJ1YmJlcmJhbmRBbXBsaXR1ZGUgPSAwLjMxZjsKLXN0YXRpYyBjb25z
dCBmbG9hdCBydWJiZXJiYW5kUGVyaW9kID0gMS42ZjsKLQotc3RhdGljIGZsb2F0IGVsYXN0aWNE
ZWx0YUZvclRpbWVEZWx0YShmbG9hdCBpbml0aWFsUG9zaXRpb24sIGZsb2F0IGluaXRpYWxWZWxv
Y2l0eSwgZmxvYXQgZWxhcHNlZFRpbWUpCi17Ci0gICAgZmxvYXQgYW1wbGl0dWRlID0gcnViYmVy
YmFuZEFtcGxpdHVkZTsKLSAgICBmbG9hdCBwZXJpb2QgPSBydWJiZXJiYW5kUGVyaW9kOwotICAg
IGZsb2F0IGNyaXRpY2FsRGFtcGVuaW5nRmFjdG9yID0gZXhwZigoLWVsYXBzZWRUaW1lICogcnVi
YmVyYmFuZFN0aWZmbmVzcykgLyBwZXJpb2QpOwotICAgICAgICAgICAgIAotICAgIHJldHVybiAo
aW5pdGlhbFBvc2l0aW9uICsgKC1pbml0aWFsVmVsb2NpdHkgKiBlbGFwc2VkVGltZSAqIGFtcGxp
dHVkZSkpICogY3JpdGljYWxEYW1wZW5pbmdGYWN0b3I7Ci19Ci0KLXN0YXRpYyBmbG9hdCBlbGFz
dGljRGVsdGFGb3JSZWJvdW5kRGVsdGEoZmxvYXQgZGVsdGEpCi17Ci0gICAgZmxvYXQgc3RpZmZu
ZXNzID0gc3RkOjptYXgocnViYmVyYmFuZFN0aWZmbmVzcywgMS4wZik7Ci0gICAgcmV0dXJuIGRl
bHRhIC8gc3RpZmZuZXNzOwotfQotCi1zdGF0aWMgZmxvYXQgcmVib3VuZERlbHRhRm9yRWxhc3Rp
Y0RlbHRhKGZsb2F0IGRlbHRhKQotewotICAgIHJldHVybiBkZWx0YSAqIHJ1YmJlcmJhbmRTdGlm
Zm5lc3M7Ci19Ci0KLXN0YXRpYyBmbG9hdCBzY3JvbGxXaGVlbE11bHRpcGxpZXIoKQotewotICAg
IHN0YXRpYyBmbG9hdCBtdWx0aXBsaWVyID0gLTE7Ci0gICAgaWYgKG11bHRpcGxpZXIgPCAwKSB7
Ci0gICAgICAgIG11bHRpcGxpZXIgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBmbG9hdEZvcktleTpAIk5TU2Nyb2xsV2hlZWxNdWx0aXBsaWVyIl07Ci0gICAgICAgIGlm
IChtdWx0aXBsaWVyIDw9IDApCi0gICAgICAgICAgICBtdWx0aXBsaWVyID0gMTsKLSAgICB9Ci0g
ICAgcmV0dXJuIG11bHRpcGxpZXI7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1h
Yzo6aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCi17Ci0g
ICAgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkID0gdHJ1ZTsKLQotICAgIGlmICghd2hlZWxF
dmVudC5oYXNQcmVjaXNlU2Nyb2xsaW5nRGVsdGFzKCkpIHsKLSAgICAgICAgU2Nyb2xsQW5pbWF0
b3I6OmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBpcyBzb21ld2hhdCByb3VuZGFib3V0IGhhY2sgdG8gYWxs
b3cgZm9yd2FyZGluZyB3aGVlbCBldmVudHMKLSAgICAvLyB1cCB0byB0aGUgcGFyZW50IHNjcm9s
bGFibGUgYXJlYS4gSXQgdGFrZXMgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQKLSAgICAvLyB0
aGUgYmFzZSBjbGFzcyBpbXBsZW1lbmF0YXRpb24gb2YgaGFuZGxlV2hlZWxFdmVudCB3aWxsIG5v
dCBhY2NlcHQgdGhlCi0gICAgLy8gd2hlZWwgZXZlbnQgaWYgdGhlcmUgaXMgbm93aGVyZSB0byBz
Y3JvbGwuCi0gICAgaWYgKGZhYnNmKHdoZWVsRXZlbnQuZGVsdGFZKCkpID49IGZhYnNmKHdoZWVs
RXZlbnQuZGVsdGFYKCkpKSB7Ci0gICAgICAgIGlmICghYWxsb3dzVmVydGljYWxTdHJldGNoaW5n
KCkpIHsKLSAgICAgICAgICAgIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KHdoZWVs
RXZlbnQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgaWYgKCFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZygpKSB7Ci0gICAgICAgICAgICBT
Y3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHdoZWVsRXZlbnQuYWNjZXB0KCk7Ci0K
LSAgICBib29sIGlzTW9tZXR1bVNjcm9sbEV2ZW50ID0gKHdoZWVsRXZlbnQubW9tZW50dW1QaGFz
ZSgpICE9IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSk7Ci0gICAgaWYgKG1faWdub3JlTW9t
ZW50dW1TY3JvbGxzICYmIChpc01vbWV0dW1TY3JvbGxFdmVudCB8fCBtX3NuYXBSdWJiZXJCYW5k
VGltZXIuaXNBY3RpdmUoKSkpIHsKLSAgICAgICAgaWYgKHdoZWVsRXZlbnQubW9tZW50dW1QaGFz
ZSgpID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlRW5kZWQpCi0gICAgICAgICAgICBtX2lnbm9y
ZU1vbWVudHVtU2Nyb2xscyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
c21vb3RoU2Nyb2xsV2l0aEV2ZW50KHdoZWVsRXZlbnQpOwotfQotCi12b2lkIFNjcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWM6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2ZW50KQotewotICAgIGlmIChnZXN0dXJlRXZlbnQudHlwZSgpID09IFBs
YXRmb3JtR2VzdHVyZUV2ZW50OjpTY3JvbGxCZWdpblR5cGUpCi0gICAgICAgIGJlZ2luU2Nyb2xs
R2VzdHVyZSgpOwotICAgIGVsc2UKLSAgICAgICAgZW5kU2Nyb2xsR2VzdHVyZSgpOwotfQotCi1i
b29sIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnBpbm5lZEluRGlyZWN0aW9uKGZsb2F0IGRl
bHRhWCwgZmxvYXQgZGVsdGFZKQotewotICAgIEZsb2F0U2l6ZSBsaW1pdERlbHRhOwotICAgIGlm
IChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkpIHsKLSAgICAgICAgaWYgKGRlbHRhWSA8
IDApIHsKLSAgICAgICAgICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gc2Nyb2xsIHVwLiAgTWFrZSBz
dXJlIHdlIGFyZSBub3QgcGlubmVkIHRvIHRoZSB0b3AKLSAgICAgICAgICAgIGxpbWl0RGVsdGEu
c2V0SGVpZ2h0KG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2libGVDb250ZW50UmVjdCgpLnkoKSArICsg
bV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsT3JpZ2luKCkueSgpKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIC8vIFdlIGFyZSB0cnlpbmcgdG8gc2Nyb2xsIGRvd24uICBNYWtlIHN1cmUg
d2UgYXJlIG5vdCBwaW5uZWQgdG8gdGhlIGJvdHRvbQotICAgICAgICAgICAgbGltaXREZWx0YS5z
ZXRIZWlnaHQobV9zY3JvbGxhYmxlQXJlYS0+Y29udGVudHNTaXplKCkuaGVpZ2h0KCkgLSAobV9z
Y3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRSZWN0KCkubWF4WSgpICsgbV9zY3JvbGxhYmxl
QXJlYS0+c2Nyb2xsT3JpZ2luKCkueSgpKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGRl
bHRhWCAhPSAwKSB7Ci0gICAgICAgIGlmIChkZWx0YVggPCAwKSB7Ci0gICAgICAgICAgICAvLyBX
ZSBhcmUgdHJ5aW5nIHRvIHNjcm9sbCBsZWZ0LiAgTWFrZSBzdXJlIHdlIGFyZSBub3QgcGlubmVk
IHRvIHRoZSBsZWZ0Ci0gICAgICAgICAgICBsaW1pdERlbHRhLnNldFdpZHRoKG1fc2Nyb2xsYWJs
ZUFyZWEtPnZpc2libGVDb250ZW50UmVjdCgpLngoKSArIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9s
bE9yaWdpbigpLngoKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBXZSBhcmUg
dHJ5aW5nIHRvIHNjcm9sbCByaWdodC4gIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IHBpbm5lZCB0byB0
aGUgcmlnaHQKLSAgICAgICAgICAgIGxpbWl0RGVsdGEuc2V0V2lkdGgobV9zY3JvbGxhYmxlQXJl
YS0+Y29udGVudHNTaXplKCkud2lkdGgoKSAtIChtX3Njcm9sbGFibGVBcmVhLT52aXNpYmxlQ29u
dGVudFJlY3QoKS5tYXhYKCkgKyBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxPcmlnaW4oKS54KCkp
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAoKGRlbHRhWCAhPSAwIHx8IGRlbHRh
WSAhPSAwKSAmJiAobGltaXREZWx0YS53aWR0aCgpIDwgMSAmJiBsaW1pdERlbHRhLmhlaWdodCgp
IDwgMSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9v
bCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjphbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoKSBj
b25zdAotewotICAgIHN3aXRjaCAobV9zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxFbGFz
dGljaXR5KCkpIHsKLSAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlBdXRvbWF0aWM6IHsKLSAgICAg
ICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLT5ob3Jpem9udGFsU2Ny
b2xsYmFyKCk7Ci0gICAgICAgIFNjcm9sbGJhciogdlNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJl
YS0+dmVydGljYWxTY3JvbGxiYXIoKTsKLSAgICAgICAgcmV0dXJuICgoKHZTY3JvbGxlciAmJiB2
U2Nyb2xsZXItPmVuYWJsZWQoKSkgfHwgKCFoU2Nyb2xsZXIgfHwgIWhTY3JvbGxlci0+ZW5hYmxl
ZCgpKSkpOwotICAgIH0KLSAgICBjYXNlIFNjcm9sbEVsYXN0aWNpdHlOb25lOgotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBTY3JvbGxFbGFzdGljaXR5QWxsb3dlZDoKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OmFsbG93c0hv
cml6b250YWxTdHJldGNoaW5nKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1fc2Nyb2xsYWJsZUFy
ZWEtPmhvcml6b250YWxTY3JvbGxFbGFzdGljaXR5KCkpIHsKLSAgICBjYXNlIFNjcm9sbEVsYXN0
aWNpdHlBdXRvbWF0aWM6IHsKLSAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9s
bGFibGVBcmVhLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7Ci0gICAgICAgIFNjcm9sbGJhciogdlNj
cm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXIoKTsKLSAgICAgICAg
cmV0dXJuICgoKGhTY3JvbGxlciAmJiBoU2Nyb2xsZXItPmVuYWJsZWQoKSkgfHwgKCF2U2Nyb2xs
ZXIgfHwgIXZTY3JvbGxlci0+ZW5hYmxlZCgpKSkpOwotICAgIH0KLSAgICBjYXNlIFNjcm9sbEVs
YXN0aWNpdHlOb25lOgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgY2FzZSBTY3JvbGxFbGFz
dGljaXR5QWxsb3dlZDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIFNjcm9sbEFuaW1h
dG9yQ2hyb21pdW1NYWM6OnNtb290aFNjcm9sbFdpdGhFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQm
IHdoZWVsRXZlbnQpCi17Ci0gICAgbV9oYXZlU2Nyb2xsZWRTaW5jZVBhZ2VMb2FkID0gdHJ1ZTsK
LQotICAgIGZsb2F0IGRlbHRhWCA9IG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpOwotICAg
IGZsb2F0IGRlbHRhWSA9IG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS5oZWlnaHQoKTsKLQotICAgIC8v
IFJlc2V0IG92ZXJmbG93IHZhbHVlcyBiZWNhdXNlIHdlIG1heSBkZWNpZGUgdG8gcmVtb3ZlIGRl
bHRhIGF0IHZhcmlvdXMgcG9pbnRzIGFuZCBwdXQgaXQgaW50byBvdmVyZmxvdy4KLSAgICBtX292
ZXJmbG93U2Nyb2xsRGVsdGEgPSBGbG9hdFNpemUoKTsKLQotICAgIGZsb2F0IGV2ZW50Q29hbGxl
c2NlZERlbHRhWCA9IC13aGVlbEV2ZW50LmRlbHRhWCgpOwotICAgIGZsb2F0IGV2ZW50Q29hbGxl
c2NlZERlbHRhWSA9IC13aGVlbEV2ZW50LmRlbHRhWSgpOwotCi0gICAgZGVsdGFYICs9IGV2ZW50
Q29hbGxlc2NlZERlbHRhWDsKLSAgICBkZWx0YVkgKz0gZXZlbnRDb2FsbGVzY2VkRGVsdGFZOwot
Ci0gICAgLy8gU2xpZ2h0bHkgcHJlZmVyIHNjcm9sbGluZyB2ZXJ0aWNhbGx5IGJ5IGFwcGx5aW5n
IHRoZSA9IGNhc2UgdG8gZGVsdGFZCi0gICAgaWYgKGZhYnNmKGRlbHRhWSkgPj0gZmFic2YoZGVs
dGFYKSkKLSAgICAgICAgZGVsdGFYID0gMDsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRhWSA9IDA7
Ci0KLSAgICBib29sIGlzVmVydGljYWxseVN0cmV0Y2hlZCA9IGZhbHNlOwotICAgIGJvb2wgaXNI
b3Jpem9udGFsbHlTdHJldGNoZWQgPSBmYWxzZTsKLSAgICBib29sIHNob3VsZFN0cmV0Y2ggPSBm
YWxzZTsKLSAgICAKLSAgICBJbnRTaXplIHN0cmV0Y2hBbW91bnQgPSBtX3Njcm9sbGFibGVBcmVh
LT5vdmVyaGFuZ0Ftb3VudCgpOwotCi0gICAgaXNIb3Jpem9udGFsbHlTdHJldGNoZWQgPSBzdHJl
dGNoQW1vdW50LndpZHRoKCk7Ci0gICAgaXNWZXJ0aWNhbGx5U3RyZXRjaGVkID0gc3RyZXRjaEFt
b3VudC5oZWlnaHQoKTsKLQotICAgIFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlID0gd2hl
ZWxFdmVudC5tb21lbnR1bVBoYXNlKCk7Ci0KLSAgICAvLyBJZiB3ZSBhcmUgc3RhcnRpbmcgbW9t
ZW50dW0gc2Nyb2xsaW5nIHRoZW4gZG8gc29tZSBzZXR1cC4KLSAgICBpZiAoIW1fbW9tZW50dW1T
Y3JvbGxJblByb2dyZXNzICYmIChwaGFzZSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZUJlZ2Fu
IHx8IHBoYXNlID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQ2hhbmdlZCkpCi0gICAgICAgIG1f
bW9tZW50dW1TY3JvbGxJblByb2dyZXNzID0gdHJ1ZTsKLQotICAgIENGVGltZUludGVydmFsIHRp
bWVEZWx0YSA9IHdoZWVsRXZlbnQudGltZXN0YW1wKCkgLSBtX2xhc3RNb21lbXR1bVNjcm9sbFRp
bWVzdGFtcDsKLSAgICBpZiAobV9pblNjcm9sbEdlc3R1cmUgfHwgbV9tb21lbnR1bVNjcm9sbElu
UHJvZ3Jlc3MpIHsKLSAgICAgICAgaWYgKG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGltZXN0YW1wICYm
IHRpbWVEZWx0YSA+IDAgJiYgdGltZURlbHRhIDwgc2Nyb2xsVmVsb2NpdHlaZXJvaW5nVGltZW91
dCkgewotICAgICAgICAgICAgbV9tb21lbnR1bVZlbG9jaXR5LnNldFdpZHRoKGV2ZW50Q29hbGxl
c2NlZERlbHRhWCAvIChmbG9hdCl0aW1lRGVsdGEpOwotICAgICAgICAgICAgbV9tb21lbnR1bVZl
bG9jaXR5LnNldEhlaWdodChldmVudENvYWxsZXNjZWREZWx0YVkgLyAoZmxvYXQpdGltZURlbHRh
KTsKLSAgICAgICAgICAgIG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGltZXN0YW1wID0gd2hlZWxFdmVu
dC50aW1lc3RhbXAoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1fbGFzdE1vbWVt
dHVtU2Nyb2xsVGltZXN0YW1wID0gd2hlZWxFdmVudC50aW1lc3RhbXAoKTsKLSAgICAgICAgICAg
IG1fbW9tZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKGlzVmVydGljYWxseVN0cmV0Y2hlZCkgewotICAgICAgICAgICAgaWYgKCFpc0hvcml6b250
YWxseVN0cmV0Y2hlZCAmJiBwaW5uZWRJbkRpcmVjdGlvbihkZWx0YVgsIDApKSB7ICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIC8vIFN0cmV0Y2hpbmcgb25seSBpbiB0aGUgdmVydGlj
YWwuCi0gICAgICAgICAgICAgICAgaWYgKGRlbHRhWSAhPSAwICYmIChmYWJzZihkZWx0YVggLyBk
ZWx0YVkpIDwgcnViYmVyYmFuZERpcmVjdGlvbkxvY2tTdHJldGNoUmF0aW8pKQotICAgICAgICAg
ICAgICAgICAgICBkZWx0YVggPSAwOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZhYnNmKGRl
bHRhWCkgPCBydWJiZXJiYW5kTWluaW11bVJlcXVpcmVkRGVsdGFCZWZvcmVTdHJldGNoKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS5zZXRXaWR0aChtX292ZXJm
bG93U2Nyb2xsRGVsdGEud2lkdGgoKSArIGRlbHRhWCk7Ci0gICAgICAgICAgICAgICAgICAgIGRl
bHRhWCA9IDA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIG1f
b3ZlcmZsb3dTY3JvbGxEZWx0YS5zZXRXaWR0aChtX292ZXJmbG93U2Nyb2xsRGVsdGEud2lkdGgo
KSArIGRlbHRhWCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNIb3Jpem9u
dGFsbHlTdHJldGNoZWQpIHsKLSAgICAgICAgICAgIC8vIFN0cmV0Y2hpbmcgb25seSBpbiB0aGUg
aG9yaXpvbnRhbC4KLSAgICAgICAgICAgIGlmIChwaW5uZWRJbkRpcmVjdGlvbigwLCBkZWx0YVkp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRlbHRhWCAhPSAwICYmIChmYWJzZihkZWx0YVkgLyBk
ZWx0YVgpIDwgcnViYmVyYmFuZERpcmVjdGlvbkxvY2tTdHJldGNoUmF0aW8pKQotICAgICAgICAg
ICAgICAgICAgICBkZWx0YVkgPSAwOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZhYnNmKGRl
bHRhWSkgPCBydWJiZXJiYW5kTWluaW11bVJlcXVpcmVkRGVsdGFCZWZvcmVTdHJldGNoKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS5zZXRIZWlnaHQobV9vdmVy
Zmxvd1Njcm9sbERlbHRhLmhlaWdodCgpICsgZGVsdGFZKTsKLSAgICAgICAgICAgICAgICAgICAg
ZGVsdGFZID0gMDsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
bV9vdmVyZmxvd1Njcm9sbERlbHRhLnNldEhlaWdodChtX292ZXJmbG93U2Nyb2xsRGVsdGEuaGVp
Z2h0KCkgKyBkZWx0YVkpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgLy8gTm90IHN0cmV0Y2hpbmcgYXQgYWxsIHlldC4KLSAgICAgICAgICAgIGlmIChwaW5u
ZWRJbkRpcmVjdGlvbihkZWx0YVgsIGRlbHRhWSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZmFi
c2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChm
YWJzZihkZWx0YVgpIDwgcnViYmVyYmFuZE1pbmltdW1SZXF1aXJlZERlbHRhQmVmb3JlU3RyZXRj
aCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRhLnNldFdp
ZHRoKG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVsdGFYKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRlbHRhWCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRhLnNldFdpZHRoKG1fb3Zl
cmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVsdGFYKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkU3RyZXRjaCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoZGVsdGFYICE9IDAgfHwgZGVsdGFZICE9IDApIHsKLSAg
ICAgICAgaWYgKCEoc2hvdWxkU3RyZXRjaCB8fCBpc1ZlcnRpY2FsbHlTdHJldGNoZWQgfHwgaXNI
b3Jpem9udGFsbHlTdHJldGNoZWQpKSB7Ci0gICAgICAgICAgICBpZiAoZGVsdGFZICE9IDApIHsK
LSAgICAgICAgICAgICAgICBkZWx0YVkgKj0gc2Nyb2xsV2hlZWxNdWx0aXBsaWVyKCk7Ci0gICAg
ICAgICAgICAgICAgaW1tZWRpYXRlU2Nyb2xsQnlEZWx0YVkoZGVsdGFZKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChkZWx0YVggIT0gMCkgewotICAgICAgICAgICAgICAgIGRlbHRh
WCAqPSBzY3JvbGxXaGVlbE11bHRpcGxpZXIoKTsKLSAgICAgICAgICAgICAgICBpbW1lZGlhdGVT
Y3JvbGxCeURlbHRhWChkZWx0YVgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgaWYgKCFhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZygpKSB7Ci0gICAgICAg
ICAgICAgICAgZGVsdGFYID0gMDsKLSAgICAgICAgICAgICAgICBldmVudENvYWxsZXNjZWREZWx0
YVggPSAwOwotICAgICAgICAgICAgfSBlbHNlIGlmICgoZGVsdGFYICE9IDApICYmICFpc0hvcml6
b250YWxseVN0cmV0Y2hlZCAmJiAhcGlubmVkSW5EaXJlY3Rpb24oZGVsdGFYLCAwKSkgewotICAg
ICAgICAgICAgICAgIGRlbHRhWCAqPSBzY3JvbGxXaGVlbE11bHRpcGxpZXIoKTsKLQotICAgICAg
ICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRl
bnRFZGdlKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBpbW1lZGlhdGVTY3JvbGxCeURlbHRhWChk
ZWx0YVgpOwotICAgICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldENvbnN0cmFpbnNT
Y3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUpOwotCi0gICAgICAgICAgICAgICAgZGVsdGFYID0g
MDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFhbGxvd3NW
ZXJ0aWNhbFN0cmV0Y2hpbmcoKSkgewotICAgICAgICAgICAgICAgIGRlbHRhWSA9IDA7Ci0gICAg
ICAgICAgICAgICAgZXZlbnRDb2FsbGVzY2VkRGVsdGFZID0gMDsKLSAgICAgICAgICAgIH0gZWxz
ZSBpZiAoKGRlbHRhWSAhPSAwKSAmJiAhaXNWZXJ0aWNhbGx5U3RyZXRjaGVkICYmICFwaW5uZWRJ
bkRpcmVjdGlvbigwLCBkZWx0YVkpKSB7Ci0gICAgICAgICAgICAgICAgZGVsdGFZICo9IHNjcm9s
bFdoZWVsTXVsdGlwbGllcigpOwotCi0gICAgICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+
c2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOwotICAgICAgICAgICAg
ICAgIGltbWVkaWF0ZVNjcm9sbEJ5RGVsdGFZKGRlbHRhWSk7Ci0gICAgICAgICAgICAgICAgbV9z
Y3JvbGxhYmxlQXJlYS0+c2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7
Ci0KLSAgICAgICAgICAgICAgICBkZWx0YVkgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBJbnRTaXplIHN0cmV0Y2hBbW91bnQgPSBtX3Njcm9sbGFibGVBcmVh
LT5vdmVyaGFuZ0Ftb3VudCgpOwotICAgICAgICAKLSAgICAgICAgICAgIGlmIChtX21vbWVudHVt
U2Nyb2xsSW5Qcm9ncmVzcykgewotICAgICAgICAgICAgICAgIGlmICgocGlubmVkSW5EaXJlY3Rp
b24oZXZlbnRDb2FsbGVzY2VkRGVsdGFYLCBldmVudENvYWxsZXNjZWREZWx0YVkpIHx8IChmYWJz
ZihldmVudENvYWxsZXNjZWREZWx0YVgpICsgZmFic2YoZXZlbnRDb2FsbGVzY2VkRGVsdGFZKSA8
PSAwKSkgJiYgbV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXApIHsKLSAgICAgICAgICAgICAg
ICAgICAgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAg
ICBzbmFwUnViYmVyQmFuZCgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2Uuc2V0V2lkdGgobV9zdHJldGNoU2Nyb2xs
Rm9yY2Uud2lkdGgoKSArIGRlbHRhWCk7Ci0gICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3Jj
ZS5zZXRIZWlnaHQobV9zdHJldGNoU2Nyb2xsRm9yY2UuaGVpZ2h0KCkgKyBkZWx0YVkpOwotCi0g
ICAgICAgICAgICBGbG9hdFNpemUgZGFtcGVkRGVsdGEoY2VpbGYoZWxhc3RpY0RlbHRhRm9yUmVi
b3VuZERlbHRhKG1fc3RyZXRjaFNjcm9sbEZvcmNlLndpZHRoKCkpKSwgY2VpbGYoZWxhc3RpY0Rl
bHRhRm9yUmVib3VuZERlbHRhKG1fc3RyZXRjaFNjcm9sbEZvcmNlLmhlaWdodCgpKSkpOwotICAg
ICAgICAgICAgRmxvYXRQb2ludCBvcmlnT3JpZ2luID0gKG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2li
bGVDb250ZW50UmVjdCgpLmxvY2F0aW9uKCkgKyBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxPcmln
aW4oKSkgLSBzdHJldGNoQW1vdW50OwotICAgICAgICAgICAgRmxvYXRQb2ludCBuZXdPcmlnaW4g
PSBvcmlnT3JpZ2luICsgZGFtcGVkRGVsdGE7Ci0KLSAgICAgICAgICAgIGlmIChvcmlnT3JpZ2lu
ICE9IG5ld09yaWdpbikgewotICAgICAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldENv
bnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGZhbHNlKTsKLSAgICAgICAgICAgICAgICBp
bW1lZGlhdGVTY3JvbGxUb1BvaW50KG5ld09yaWdpbik7Ci0gICAgICAgICAgICAgICAgbV9zY3Jv
bGxhYmxlQXJlYS0+c2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobV9tb21lbnR1bVNjcm9s
bEluUHJvZ3Jlc3MgJiYgcGhhc2UgPT0gUGxhdGZvcm1XaGVlbEV2ZW50UGhhc2VFbmRlZCkgewot
ICAgICAgICBtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNlOwotICAgICAgICBtX2ln
bm9yZU1vbWVudHVtU2Nyb2xscyA9IGZhbHNlOwotICAgICAgICBtX2xhc3RNb21lbXR1bVNjcm9s
bFRpbWVzdGFtcCA9IDA7Ci0gICAgfQotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1N
YWM6OmJlZ2luU2Nyb2xsR2VzdHVyZSgpCi17Ci0gICAgZGlkQmVnaW5TY3JvbGxHZXN0dXJlKCk7
Ci0KLSAgICBtX2hhdmVTY3JvbGxlZFNpbmNlUGFnZUxvYWQgPSB0cnVlOwotICAgIG1faW5TY3Jv
bGxHZXN0dXJlID0gdHJ1ZTsKLSAgICBtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyA9IGZhbHNl
OwotICAgIG1faWdub3JlTW9tZW50dW1TY3JvbGxzID0gZmFsc2U7Ci0gICAgbV9sYXN0TW9tZW10
dW1TY3JvbGxUaW1lc3RhbXAgPSAwOwotICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6
ZSgpOwotCi0gICAgSW50U2l6ZSBzdHJldGNoQW1vdW50ID0gbV9zY3JvbGxhYmxlQXJlYS0+b3Zl
cmhhbmdBbW91bnQoKTsKLSAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRXaWR0aChyZWJvdW5k
RGVsdGFGb3JFbGFzdGljRGVsdGEoc3RyZXRjaEFtb3VudC53aWR0aCgpKSk7Ci0gICAgbV9zdHJl
dGNoU2Nyb2xsRm9yY2Uuc2V0SGVpZ2h0KHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YShzdHJl
dGNoQW1vdW50LmhlaWdodCgpKSk7Ci0KLSAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEgPSBGbG9h
dFNpemUoKTsKLSAgICAKLSAgICBpZiAobV9zbmFwUnViYmVyQmFuZFRpbWVyLmlzQWN0aXZlKCkp
Ci0gICAgICAgIG1fc25hcFJ1YmJlckJhbmRUaW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgU2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYzo6ZW5kU2Nyb2xsR2VzdHVyZSgpCi17Ci0gICAgZGlkRW5kU2Ny
b2xsR2VzdHVyZSgpOwotCi0gICAgc25hcFJ1YmJlckJhbmQoKTsKLX0KLQotdm9pZCBTY3JvbGxB
bmltYXRvckNocm9taXVtTWFjOjpzbmFwUnViYmVyQmFuZCgpCi17Ci0gICAgQ0ZUaW1lSW50ZXJ2
YWwgdGltZURlbHRhID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVd
IC0gbV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXA7Ci0gICAgaWYgKG1fbGFzdE1vbWVtdHVt
U2Nyb2xsVGltZXN0YW1wICYmIHRpbWVEZWx0YSA+PSBzY3JvbGxWZWxvY2l0eVplcm9pbmdUaW1l
b3V0KQotICAgICAgICBtX21vbWVudHVtVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKLQotICAgIG1f
aW5TY3JvbGxHZXN0dXJlID0gZmFsc2U7Ci0KLSAgICBpZiAobV9zbmFwUnViYmVyQmFuZFRpbWVy
LmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RhcnRUaW1lID0gW05TRGF0
ZSB0aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdOwotICAgIG1fc3RhcnRTdHJldGNoID0g
RmxvYXRTaXplKCk7Ci0gICAgbV9vcmlnT3JpZ2luID0gRmxvYXRQb2ludCgpOwotICAgIG1fb3Jp
Z1ZlbG9jaXR5ID0gRmxvYXRTaXplKCk7Ci0KLSAgICBtX3NuYXBSdWJiZXJCYW5kVGltZXIuc3Rh
cnRSZXBlYXRpbmcoMS4wLzYwLjApOwotfQotCi1zdGF0aWMgaW5saW5lIGZsb2F0IHJvdW5kVG93
YXJkWmVybyhmbG9hdCBudW0pCi17Ci0gICAgcmV0dXJuIG51bSA+IDAgPyBjZWlsZihudW0gLSAw
LjVmKSA6IGZsb29yZihudW0gKyAwLjVmKTsKLX0KLQotc3RhdGljIGlubGluZSBmbG9hdCByb3Vu
ZFRvRGV2aWNlUGl4ZWxUb3dhcmRaZXJvKGZsb2F0IG51bSkKLXsKLSAgICBmbG9hdCByb3VuZGVk
TnVtID0gcm91bmRmKG51bSk7Ci0gICAgaWYgKGZhYnMobnVtIC0gcm91bmRlZE51bSkgPCAwLjEy
NSkKLSAgICAgICAgbnVtID0gcm91bmRlZE51bTsKLQotICAgIHJldHVybiByb3VuZFRvd2FyZFpl
cm8obnVtKTsKLX0KLQotdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpzbmFwUnViYmVy
QmFuZFRpbWVyRmlyZWQoVGltZXI8U2Nyb2xsQW5pbWF0b3JDaHJvbWl1bU1hYz4qKQotewotICAg
IGlmICghbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgfHwgbV9pZ25vcmVNb21lbnR1bVNjcm9s
bHMpIHsKLSAgICAgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZURlbHRhID0gW05TRGF0ZSB0aW1lSW50
ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdIC0gbV9zdGFydFRpbWU7Ci0KLSAgICAgICAgaWYgKG1f
c3RhcnRTdHJldGNoID09IEZsb2F0U2l6ZSgpKSB7Ci0gICAgICAgICAgICBtX3N0YXJ0U3RyZXRj
aCA9IG1fc2Nyb2xsYWJsZUFyZWEtPm92ZXJoYW5nQW1vdW50KCk7Ci0gICAgICAgICAgICBpZiAo
bV9zdGFydFN0cmV0Y2ggPT0gRmxvYXRTaXplKCkpIHsgICAgCi0gICAgICAgICAgICAgICAgbV9z
bmFwUnViYmVyQmFuZFRpbWVyLnN0b3AoKTsKLSAgICAgICAgICAgICAgICBtX3N0cmV0Y2hTY3Jv
bGxGb3JjZSA9IEZsb2F0U2l6ZSgpOwotICAgICAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gMDsK
LSAgICAgICAgICAgICAgICBtX3N0YXJ0U3RyZXRjaCA9IEZsb2F0U2l6ZSgpOwotICAgICAgICAg
ICAgICAgIG1fb3JpZ09yaWdpbiA9IEZsb2F0UG9pbnQoKTsKLSAgICAgICAgICAgICAgICBtX29y
aWdWZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBtX29yaWdPcmlnaW4gPSAobV9zY3JvbGxhYmxlQXJl
YS0+dmlzaWJsZUNvbnRlbnRSZWN0KCkubG9jYXRpb24oKSArIG1fc2Nyb2xsYWJsZUFyZWEtPnNj
cm9sbE9yaWdpbigpKSAtIG1fc3RhcnRTdHJldGNoOwotICAgICAgICAgICAgbV9vcmlnVmVsb2Np
dHkgPSBtX21vbWVudHVtVmVsb2NpdHk7Ci0KLSAgICAgICAgICAgIC8vIEp1c3QgbGlrZSBub3Jt
YWwgc2Nyb2xsaW5nLCBwcmVmZXIgdmVydGljYWwgcnViYmVyYmFuZGluZwotICAgICAgICAgICAg
aWYgKGZhYnNmKG1fb3JpZ1ZlbG9jaXR5LmhlaWdodCgpKSA+PSBmYWJzZihtX29yaWdWZWxvY2l0
eS53aWR0aCgpKSkKLSAgICAgICAgICAgICAgICBtX29yaWdWZWxvY2l0eS5zZXRXaWR0aCgwKTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRG9uJ3QgcnViYmVyLWJhbmQgaG9yaXpvbnRh
bGx5IGlmIGl0J3Mgbm90IHBvc3NpYmxlIHRvIHNjcm9sbCBob3Jpem9udGFsbHkKLSAgICAgICAg
ICAgIFNjcm9sbGJhciogaFNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS0+aG9yaXpvbnRhbFNj
cm9sbGJhcigpOwotICAgICAgICAgICAgaWYgKCFoU2Nyb2xsZXIgfHwgIWhTY3JvbGxlci0+ZW5h
YmxlZCgpKQotICAgICAgICAgICAgICAgIG1fb3JpZ1ZlbG9jaXR5LnNldFdpZHRoKDApOwotICAg
ICAgICAgICAgCi0gICAgICAgICAgICAvLyBEb24ndCBydWJiZXItYmFuZCB2ZXJ0aWNhbGx5IGlm
IGl0J3Mgbm90IHBvc3NpYmxlIHRvIHNjcm9sbCBob3Jpem9udGFsbHkKLSAgICAgICAgICAgIFNj
cm9sbGJhciogdlNjcm9sbGVyID0gbV9zY3JvbGxhYmxlQXJlYS0+dmVydGljYWxTY3JvbGxiYXIo
KTsKLSAgICAgICAgICAgIGlmICghdlNjcm9sbGVyIHx8ICF2U2Nyb2xsZXItPmVuYWJsZWQoKSkK
LSAgICAgICAgICAgICAgICBtX29yaWdWZWxvY2l0eS5zZXRIZWlnaHQoMCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBGbG9hdFBvaW50IGRlbHRhKHJvdW5kVG9EZXZpY2VQaXhlbFRvd2FyZFplcm8o
ZWxhc3RpY0RlbHRhRm9yVGltZURlbHRhKG1fc3RhcnRTdHJldGNoLndpZHRoKCksIC1tX29yaWdW
ZWxvY2l0eS53aWR0aCgpLCAoZmxvYXQpdGltZURlbHRhKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcm91bmRUb0RldmljZVBpeGVsVG93YXJkWmVybyhlbGFzdGljRGVsdGFGb3JUaW1lRGVs
dGEobV9zdGFydFN0cmV0Y2guaGVpZ2h0KCksIC1tX29yaWdWZWxvY2l0eS5oZWlnaHQoKSwgKGZs
b2F0KXRpbWVEZWx0YSkpKTsKLQotICAgICAgICBpZiAoZmFicyhkZWx0YS54KCkpID49IDEgfHwg
ZmFicyhkZWx0YS55KCkpID49IDEpIHsKLSAgICAgICAgICAgIEZsb2F0UG9pbnQgbmV3T3JpZ2lu
ID0gbV9vcmlnT3JpZ2luICsgZGVsdGE7Ci0KLSAgICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEt
PnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGZhbHNlKTsKLSAgICAgICAgICAg
IGltbWVkaWF0ZVNjcm9sbFRvUG9pbnQobmV3T3JpZ2luKTsKLSAgICAgICAgICAgIG1fc2Nyb2xs
YWJsZUFyZWEtPnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUpOwotCi0g
ICAgICAgICAgICBGbG9hdFNpemUgbmV3U3RyZXRjaCA9IG1fc2Nyb2xsYWJsZUFyZWEtPm92ZXJo
YW5nQW1vdW50KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZv
cmNlLnNldFdpZHRoKHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YShuZXdTdHJldGNoLndpZHRo
KCkpKTsKLSAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldEhlaWdodChyZWJvdW5k
RGVsdGFGb3JFbGFzdGljRGVsdGEobmV3U3RyZXRjaC5oZWlnaHQoKSkpOwotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgaW1tZWRpYXRlU2Nyb2xsVG9Qb2ludChtX29yaWdPcmlnaW4pOwot
Ci0gICAgICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5kaWRDb21wbGV0ZVJ1YmJlckJhbmQocm91
bmRlZEludFNpemUobV9zdGFydFN0cmV0Y2gpKTsKLQotICAgICAgICAgICAgbV9zbmFwUnViYmVy
QmFuZFRpbWVyLnN0b3AoKTsKLSAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0gRmxv
YXRTaXplKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gMDsKLSAg
ICAgICAgICAgIG1fc3RhcnRTdHJldGNoID0gRmxvYXRTaXplKCk7Ci0gICAgICAgICAgICBtX29y
aWdPcmlnaW4gPSBGbG9hdFBvaW50KCk7Ci0gICAgICAgICAgICBtX29yaWdWZWxvY2l0eSA9IEZs
b2F0U2l6ZSgpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9zdGFydFRpbWUg
PSBbTlNEYXRlIHRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV07Ci0gICAgICAgIG1fc3Rh
cnRTdHJldGNoID0gRmxvYXRTaXplKCk7Ci0gICAgfQotfQotI2VuZGlmCi0KLSNpZiBVU0UoV0tf
U0NST0xMQkFSX1BBSU5URVIpCi12b2lkIFNjcm9sbEFuaW1hdG9yQ2hyb21pdW1NYWM6OnN0YXJ0
U2Nyb2xsYmFyUGFpbnRUaW1lcigpCi17Ci0gICAgbV9pbml0aWFsU2Nyb2xsYmFyUGFpbnRUaW1l
ci5zdGFydE9uZVNob3QoMC4xKTsKLX0KLQotYm9vbCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFj
OjpzY3JvbGxiYXJQYWludFRpbWVySXNBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX2lu
aXRpYWxTY3JvbGxiYXJQYWludFRpbWVyLmlzQWN0aXZlKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsQW5p
bWF0b3JDaHJvbWl1bU1hYzo6c3RvcFNjcm9sbGJhclBhaW50VGltZXIoKQotewotICAgIG1faW5p
dGlhbFNjcm9sbGJhclBhaW50VGltZXIuc3RvcCgpOwotfQotCi12b2lkIFNjcm9sbEFuaW1hdG9y
Q2hyb21pdW1NYWM6OmluaXRpYWxTY3JvbGxiYXJQYWludFRpbWVyRmlyZWQoVGltZXI8U2Nyb2xs
QW5pbWF0b3JDaHJvbWl1bU1hYz4qKQotewotICAgIHdrU2Nyb2xsYmFyUGFpbnRlckZvcmNlRmxh
c2hTY3JvbGxlcnMobV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSk7Ci19Ci0jZW5k
aWYKLQotdm9pZCBTY3JvbGxBbmltYXRvckNocm9taXVtTWFjOjpzZXRWaXNpYmxlU2Nyb2xsZXJU
aHVtYlJlY3QoY29uc3QgSW50UmVjdCYgc2Nyb2xsZXJUaHVtYikKLXsKLSAgICBJbnRSZWN0IHJl
Y3RJblZpZXdDb29yZGluYXRlcyA9IHNjcm9sbGVyVGh1bWI7Ci0gICAgaWYgKFNjcm9sbGJhciog
dmVydGljYWxTY3JvbGxiYXIgPSBtX3Njcm9sbGFibGVBcmVhLT52ZXJ0aWNhbFNjcm9sbGJhcigp
KQotICAgICAgICByZWN0SW5WaWV3Q29vcmRpbmF0ZXMgPSB2ZXJ0aWNhbFNjcm9sbGJhci0+Y29u
dmVydFRvQ29udGFpbmluZ1ZpZXcoc2Nyb2xsZXJUaHVtYik7Ci0KLSAgICBpZiAocmVjdEluVmll
d0Nvb3JkaW5hdGVzID09IG1fdmlzaWJsZVNjcm9sbGVyVGh1bWJSZWN0KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX3Njcm9sbGFibGVBcmVhLT5zZXRWaXNpYmxlU2Nyb2xsZXJUaHVtYlJlY3Qo
cmVjdEluVmlld0Nvb3JkaW5hdGVzKTsKLSAgICBtX3Zpc2libGVTY3JvbGxlclRodW1iUmVjdCA9
IHJlY3RJblZpZXdDb29yZGluYXRlczsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKaW5kZXggYTMzZmE3N2Q3
MWQ0ZTJhOTE2YWQ4NjVmZWYyZGM0Y2JjMGVkNGM3Yi4uOGIwMjYzNGYwZWU5NGZhZDczZTI2M2U1
MmZiZjFjMzM5NTFjZGQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRQb2ludC5oCkBAIC0zNyw3ICszNyw3IEBAIHR5cGVkZWYgc3RydWN0IENHUG9pbnQgQ0dQb2lu
dDsKICNlbmRpZgogCiAKLSNpZiBPUyhEQVJXSU4pCisjaWYgUExBVEZPUk0oTUFDKQogI2lmZGVm
IE5TR0VPTUVUUllfVFlQRVNfU0FNRV9BU19DR0dFT01FVFJZX1RZUEVTCiB0eXBlZGVmIHN0cnVj
dCBDR1BvaW50IE5TUG9pbnQ7CiAjZWxzZQpAQCAtMTE5LDcgKzExOSw3IEBAIHB1YmxpYzoKICAg
ICBvcGVyYXRvciBDR1BvaW50KCkgY29uc3Q7CiAjZW5kaWYKIAotI2lmIE9TKERBUldJTikgJiYg
IWRlZmluZWQoTlNHRU9NRVRSWV9UWVBFU19TQU1FX0FTX0NHR0VPTUVUUllfVFlQRVMpCisjaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChOU0dFT01FVFJZX1RZUEVTX1NBTUVfQVNfQ0dHRU9N
RVRSWV9UWVBFUykKICAgICBleHBsaWNpdCBJbnRQb2ludChjb25zdCBOU1BvaW50Jik7IC8vIGRv
bid0IGRvIHRoaXMgaW1wbGljaXRseSBzaW5jZSBpdCdzIGxvc3N5CiAgICAgb3BlcmF0b3IgTlNQ
b2ludCgpIGNvbnN0OwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>