<?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>47406</bug_id>
          
          <creation_ts>2010-10-08 03:49:25 -0700</creation_ts>
          <short_desc>Web Inspector: save InspectorController in instrumentation cookie</short_desc>
          <delta_ts>2010-10-08 09:41:20 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>291545</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-08 03:49:25 -0700</bug_when>
    <thetext>Web Inspector: save InspectorController in instrumentation cookie</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291547</commentid>
    <comment_count>1</comment_count>
      <attachid>70222</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-08 03:50:52 -0700</bug_when>
    <thetext>Created attachment 70222
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291549</commentid>
    <comment_count>2</comment_count>
      <attachid>70223</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-08 03:59:33 -0700</bug_when>
    <thetext>Created attachment 70223
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291550</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-08 04:00:01 -0700</bug_when>
    <thetext>Attachment 70222 did not build on qt:
Build output: http://queues.webkit.org/results/4271001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291551</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-08 04:00:24 -0700</bug_when>
    <thetext>Attachment 70222 did not build on gtk:
Build output: http://queues.webkit.org/results/4184144</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291552</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-08 04:04:45 -0700</bug_when>
    <thetext>Attachment 70222 did not build on mac:
Build output: http://queues.webkit.org/results/4269013</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291553</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-08 04:07:15 -0700</bug_when>
    <thetext>Attachment 70223 did not build on gtk:
Build output: http://queues.webkit.org/results/4171127</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291554</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-08 04:07:52 -0700</bug_when>
    <thetext>Attachment 70223 did not build on qt:
Build output: http://queues.webkit.org/results/4166134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291555</commentid>
    <comment_count>8</comment_count>
      <attachid>70224</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-08 04:10:24 -0700</bug_when>
    <thetext>Created attachment 70224
Fix build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291556</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-08 04:12:28 -0700</bug_when>
    <thetext>Attachment 70223 did not build on mac:
Build output: http://queues.webkit.org/results/4220141</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291665</commentid>
    <comment_count>10</comment_count>
      <attachid>70224</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-08 08:26:52 -0700</bug_when>
    <thetext>Comment on attachment 70224
Fix build.

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

&gt; WebCore/bindings/v8/V8Proxy.cpp:502
&gt; +        InspectorInstrumentationCookie cookie = InspectorInstrumentationCookie();

InspectorInstrumentationCookie cookie;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291709</commentid>
    <comment_count>11</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2010-10-08 09:41:20 -0700</bug_when>
    <thetext>Committed r69406: &lt;http://trac.webkit.org/changeset/69406&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70222</attachid>
            <date>2010-10-08 03:50:52 -0700</date>
            <delta_ts>2010-10-08 03:59:33 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>44794</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDc4M2IxMy4uMjczNzYwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0xMC0wOCAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzYXZlIEluc3BlY3RvckNvbnRy
b2xsZXIgaW4gaW5zdHJ1bWVudGF0aW9uIGNvb2tpZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0MDYKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6ZXZhbHVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhQcm94eTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEdlbmVy
aWNFdmVudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYWxsUmVhZHlT
dGF0ZUNoYW5nZUxpc3RlbmVyKToKKwogMjAxMC0xMC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggZWY3MmI3Ny4uNzUzYzY1NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCkBAIC00MTEsNyArNDExLDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQ
cm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QK
ICAgICBQbGF0Zm9ybUJyaWRnZTo6dHJhY2VFdmVudEVuZCgidjgucnVuIiwgbm9kZSwgIiIpOwog
I2VuZGlmCiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0
KG1fZnJhbWUsIGNvb2tpZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFs
dWF0ZVNjcmlwdChjb29raWUpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQ5OSw3ICs0
OTksNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFByb3h5OjpjYWxsRnVuY3Rpb24odjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCB2OAogICAgICAgICAvLyBleGVjdXRpb24gZmlu
aXNocyBiZWZvcmUgZmlyaW5nIHRoZSB0aW1lci4KICAgICAgICAgbV9mcmFtZS0+a2VlcEFsaXZl
KCk7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IDA7
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKICAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKICAgICAgICAgICAgIHY4OjpTY3JpcHRPcmlnaW4g
b3JpZ2luID0gZnVuY3Rpb24tPkdldFNjcmlwdE9yaWdpbigpOwogICAgICAgICAgICAgU3RyaW5n
IHJlc291cmNlTmFtZSgidW5kZWZpbmVkIik7CkBAIC01MTUsNyArNTE1LDcgQEAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2FsbEZ1bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiBmdW5jdGlvbiwgdjgKICAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwocmVjZWl2ZXIs
IGFyZ2MsIGFyZ3MpOwogICAgICAgICBtX3JlY3Vyc2lvbi0tOwogCi0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKG1fZnJhbWUsIGNvb2tpZSk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSk7CiAg
ICAgfQogCiAgICAgLy8gUmVsZWFzZSB0aGUgc3RvcmFnZSBtdXRleCBpZiBhcHBsaWNhYmxlLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGMzMTFjYTIuLjkxYmUyODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1MTUsNyArMTUx
NSw3IEBAIGJhaWxfb3V0OgogICAgICAgICBpbXBsaWNpdENsb3NlKCk7CiAgICAgfQogCi0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKHRoaXMsIGNvb2tp
ZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKGNv
b2tpZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBl
OTVmNjIwLi5mNTRmZWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjY4NSw3ICsyNjg1LDcgQEAgZG9uZURpc3BhdGNoaW5n
OgogCiBkb25lV2l0aERlZmF1bHQ6CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZERpc3BhdGNoRXZlbnQoZG9jdW1lbnQoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnQoY29va2llKTsKIAogICAgIHJldHVybiAhZXZlbnQt
PmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCBkNjY4ZDVlLi45NGNjMmFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgICAg
IG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFdyaXRlSFRNTChkb2N1bWVudCgpLCBtX3Rva2VuaXplci0+bGluZU51bWJl
cigpLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1M
KGNvb2tpZSwgbV90b2tlbml6ZXItPmxpbmVOdW1iZXIoKSk7CiB9CiAKIGJvb2wgSFRNTERvY3Vt
ZW50UGFyc2VyOjpoYXNJbnNlcnRpb25Qb2ludCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA3NTJmMWVkLi40ZWZjZWVlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTE3Miwz
MiArMTcyLDM1IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1l
ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yCiAKIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb25J
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9y
Q29udHJvbGxlcikpIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGlu
c3BlY3RvckNvbnRyb2xsZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0TmFtZSwgc2NyaXB0TGluZSk7Ci0g
ICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGluZUFnZW50
SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xsZXIsIHRp
bWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
YWxsRnVuY3Rpb25JbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9s
bGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZENhbGxGdW5jdGlvbigpOwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgWE1MSHR0cFJlcXVlc3Qq
IHJlcXVlc3QpCiB7CisgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CiAgICAgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNw
ZWN0b3JDb250cm9sbGVyKTsKICAgICBpZiAodGltZWxpbmVBZ2VudCAmJiByZXF1ZXN0LT5oYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50KSkgewogICAg
ICAgICB0aW1lbGluZUFnZW50LT53aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZShyZXF1ZXN0LT51cmwo
KS5zdHJpbmcoKSwgcmVxdWVzdC0+cmVhZHlTdGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIHRpbWVs
aW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQt
PmlkKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29udHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwg
Y29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRDaGFuZ2VYSFJSZWFkeVN0YXRlKCk7CiB9CiAKQEAgLTIxNiwxNzggKzIxOSwxOTYgQEAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERpc3BhdGNoRXZlbnRJbXBsKEkKICAgICB9CiAjZW5kaWYKIAorICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBy
ZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CiAgICAgaWYgKHRpbWVs
aW5lQWdlbnQgJiYgZXZlbnRIYXNMaXN0ZW5lcnMoZXZlbnQudHlwZSgpLCB3aW5kb3csIG5vZGUs
IGFuY2VzdG9ycykpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQo
ZXZlbnQpOwotICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250
cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50SW1wbChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJB
Z2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKSkKKyAgICBp
ZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGNvb2tpZS5maXJzdC0+
bV9kZWJ1Z2dlckFnZW50LmdldCgpKQogICAgICAgICBkZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVz
ZU9uTmV4dFN0YXRlbWVudCgpOwogI2VuZGlmCiAKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250
cm9sbGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRv
d0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgRXZl
bnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdykKIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElk
ID0gMDsKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmll
dmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpOwogICAgIGlmICh0aW1lbGluZUFn
ZW50ICYmIHdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnQudHlwZSgpKSkgewogICAgICAg
ICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCk7Ci0gICAgICAgIHJldHVy
biB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGlu
ZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJ
ZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JD
b250cm9sbGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVs
aW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0SW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcm
IHVybCwgaW50IGxpbmVOdW1iZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxl
cikpIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNv
bnRyb2xsZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPndpbGxFdmFsdWF0ZVNjcmlwdCh1cmwsIGxpbmVOdW1iZXIpOwotICAgICAgICByZXR1cm4g
dGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVB
Z2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1lbGluZUFnZW50SWQp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYgY29va2llKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tp
ZSkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRy
aWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZh
bHVhdGVTY3JpcHQoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgaW50IHRpbWVySWQpCiB7Ci0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlcikpIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFn
ZW50KGluc3BlY3RvckNvbnRyb2xsZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPndpbGxGaXJlVGltZXIodGltZXJJZCk7Ci0gICAgICAgIHJldHVy
biB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGlu
ZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJ
ZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZVRpbWVySW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNv
b2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQorICAg
IGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1l
bGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVUaW1lcigp
OwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsTGF5b3V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKSB7CisgICAgaW50
IHRpbWVsaW5lQWdlbnRJZCA9IDA7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyAg
ICBpZiAodGltZWxpbmVBZ2VudCkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTGF5b3V0
KCk7Ci0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGlu
ZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xs
ZXIsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBj
b29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZExheW91dCgpOwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpCiB7CisgICAgaW50IHRp
bWVsaW5lQWdlbnRJZCA9IDA7CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBp
ZiAodGltZWxpbmVBZ2VudCAmJiByZXF1ZXN0LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkubG9hZEV2ZW50KSkgewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTG9hZFhIUihyZXF1
ZXN0LT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgp
OworICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTG9hZFhIUihyZXF1ZXN0LT51cmwoKSk7Cisg
ICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAg
IHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5z
cGVjdG9yQ29udHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUkltcGwoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVj
dG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRMb2FkWEhSKCk7CiB9CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludEltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
LSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZl
VGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkgeworICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBy
ZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgaWYgKHRpbWVs
aW5lQWdlbnQpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFBhaW50KHJlY3QpOwotICAg
ICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudElk
ID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1l
bGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFp
bnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUGFpbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYg
Y29va2llKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRp
bWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUGFpbnQoKTsK
IH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcikpIHsK
KyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xs
ZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndp
bGxSZWNhbGN1bGF0ZVN0eWxlKCk7Ci0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgp
OworICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0K
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRl
U3R5bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQog
ewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmll
dmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdl
bnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjYWxjdWxhdGVTdHlsZSgp
OwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGlu
ZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKSB7CisgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9
IDA7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZl
VGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBpZiAodGltZWxpbmVBZ2Vu
dCkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjZWl2ZVJlc291cmNlRGF0YShpZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHRp
bWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAgIHJldHVybiAw
OworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29u
dHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUp
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlRGF0YUlt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAg
aWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVs
aW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29r
aWUpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VEYXRhKCk7CiB9
CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9s
bGVyKSkgeworICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOworICAgIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9y
Q29udHJvbGxlcik7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpIHsKICAgICAgICAgdGltZWxpbmVB
Z2VudC0+d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsK
LSAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHRpbWVsaW5lQWdl
bnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29udHJvbGxlciwg
dGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1w
bChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxp
bmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tp
ZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKCk7
CiB9CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIsIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpCiB7
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2
ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcikpIHsKKyAgICBpbnQgdGltZWxpbmVB
Z2VudElkID0gMDsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpOworICAgIGlmICh0aW1l
bGluZUFnZW50KSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxXcml0ZUhUTUwobGVuZ3Ro
LCBzdGFydExpbmUpOwotICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAg
ICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0
b3JDb250cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0
ZUhUTUxJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCB1
bnNpZ25lZCBpbnQgZW5kTGluZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVy
LCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZFdyaXRlSFRNTChlbmRMaW5lKTsKIH0KIAotCiBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aGFzRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
cikKIHsKICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKTsKQEAg
LTM5OCwxMCArNDE5LDEwIEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KEluc3BlY3RvCiAgICAgcmV0dXJuIGlu
c3BlY3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKTsKIH0KIAotSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVRpbWVsaW5l
QWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQqIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewotICAgIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9y
Q29udHJvbGxlcik7Ci0gICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgdGltZWxpbmVBZ2VudC0+aWQo
KSA9PSBjb29raWUpCisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUuZmlyc3QpOworICAgIGlmICh0aW1lbGluZUFn
ZW50ICYmIHRpbWVsaW5lQWdlbnQtPmlkKCkgPT0gY29va2llLnNlY29uZCkKICAgICAgICAgcmV0
dXJuIHRpbWVsaW5lQWdlbnQ7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDA3MjEwMWYuLjNmZDJiOWYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBYTUxIdHRwUmVxdWVzdDsKIAotdHlwZWRlZiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llOwordHlwZWRlZiBwYWlyPEluc3BlY3RvckNvbnRyb2xsZXIqLCBpbnQ+IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZTsKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHsKIHB1YmxpYzoKQEAgLTY0LDMxICs2NCwzMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgZGlkUmVtb3ZlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCB0aW1lcklkKTsK
IAogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENhbGxGdW5j
dGlvbihGcmFtZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihGcmFtZSosIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgc3RhdGljIHZv
aWQgZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hh
bmdlWEhSUmVhZHlTdGF0ZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsK
ICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2
ZW50KERvY3VtZW50KiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9k
ZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMp
OwotICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRj
aEV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRv
dyhGcmFtZSosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpOwotICAgIHN0
YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZl
bnRPbldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdChG
cmFtZSosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRXZhbHVhdGVTY3JpcHQoRnJhbWUqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGlu
dCB0aW1lcklkKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0
YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxMYXlv
dXQoRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoRnJhbWUqLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBYTUxI
dHRwUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkTG9hZFhIUihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7
CisgICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0Kik7CisgICAg
c3RhdGljIHZvaWQgZGlkTG9hZFhIUihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxQYWlu
dChGcmFtZSosIGNvbnN0IEludFJlY3QmIHJlY3QpOwotICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50
KEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3Rh
dGljIHZvaWQgZGlkUGFpbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7
CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxh
dGVTdHlsZShEb2N1bWVudCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUo
RG9jdW1lbnQqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
OwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VEYXRhKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291
cmNlUmVzcG9uc2UoRnJhbWUqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxXcml0ZUhUTUwoRG9jdW1lbnQqLCB1bnNpZ25lZCBpbnQgbGVu
Z3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhU
TUwoRG9jdW1lbnQqLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgc3RhdGljIHZvaWQgZnJvbnRlbmRDcmVhdGVkKCkg
eyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CkBAIC0xMTQsMzEgKzExNCwzMSBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgaW50IHRpbWVySWQpOwogCiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSB3aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2Fs
bEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgc3RhdGljIHZvaWQgZGlk
Q2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlWEhSUmVhZHlT
dGF0ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5k
b3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5j
ZXN0b3JzKTsKLSAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWREaXNwYXRjaEV2ZW50SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxE
aXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVu
dCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93KTsKLSAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRj
aEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRv
d0ltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0SW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRF
dmFsdWF0ZVNjcmlwdEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7
CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVy
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgaW50IHRpbWVySWQpOwotICAgIHN0YXRpYyB2b2lk
IGRpZEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVySW1wbChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIHdpbGxMYXlvdXRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqKTsK
LSAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZExheW91dElt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTG9hZFhIUkltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciosIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRM
b2FkWEhSSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMb2FkWEhSSW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxQYWludEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEludFJl
Y3QmIHJlY3QpOwotICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50SW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRQYWludEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHls
ZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3Vs
YXRlU3R5bGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZURhdGFJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAg
IHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
KTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxXcml0ZUhU
TUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25l
ZCBpbnQgc3RhcnRMaW5lKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKIAog
ICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCopOwpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZChJbnNw
ZWN0b3JDb250cm9sbGVyKik7CiAgICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHJl
dHJpZXZlVGltZWxpbmVBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKik7Ci0gICAgc3RhdGljIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChJbnNwZWN0b3JDb250
cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogCiAgICAgc3RhdGljIGludCBzX2Zyb250ZW5kQ291
bnRlcjsKICNlbmRpZgpAQCAtMjQzLDE0ICsyNDMsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rp
b24KICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsQ2Fs
bEZ1bmN0aW9uSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBzY3JpcHROYW1lLCBzY3JpcHRMaW5l
KTsKICNlbmRpZgotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDYWxsRnVuY3Rpb24oRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
YWxsRnVuY3Rpb24oY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
Ci0gICAgICAgIGRpZENhbGxGdW5jdGlvbkltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2ll
KTsKKyAgICBpZiAoY29va2llLmZpcnN0KQorICAgICAgICBkaWRDYWxsRnVuY3Rpb25JbXBsKGNv
b2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMjYwLDE0ICsyNjAsMTQgQEAgaW5saW5lIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDaGFu
Z2VYSFJSZWEKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICByZXR1
cm4gd2lsbENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHJlcXVl
c3QpOwogI2VuZGlmCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVD
VE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
aW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZENoYW5n
ZVhIUlJlYWR5U3RhdGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYg
KGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoY29va2ll
KTsKICNlbmRpZgogfQogCkBAIC0yNzcsMTQgKzI3NywxNCBAQCBpbmxpbmUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNo
RXZlbgogICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0g
aW5zcGVjdG9yQ29udHJvbGxlckZvckRvY3VtZW50KGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJu
IHdpbGxEaXNwYXRjaEV2ZW50SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBldmVudCwgd2luZG93
LCBub2RlLCBhbmNlc3RvcnMpOwogI2VuZGlmCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWREaXNwYXRjaEV2ZW50
SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpOworICAgIGlmIChjb29raWUuZmlyc3Qp
CisgICAgICAgIGRpZERpc3BhdGNoRXZlbnRJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAt
Mjk0LDE0ICsyOTQsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW4KICAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJG
b3JGcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93
SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBldmVudCwgd2luZG93KTsKICNlbmRpZgotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
T25XaW5kb3coRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2
ZW50T25XaW5kb3coY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
Ci0gICAgICAgIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgY29va2llKTsKKyAgICBpZiAoY29va2llLmZpcnN0KQorICAgICAgICBkaWREaXNwYXRjaEV2
ZW50T25XaW5kb3dJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMzExLDE0ICszMTEsMTQg
QEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmkKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
CiAgICAgICAgIHJldHVybiB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKGluc3BlY3RvckNvbnRyb2xs
ZXIsIHVybCwgbGluZU51bWJlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoRnJhbWUqIGZyYW1lLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlm
IChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29u
dHJvbGxlckZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGlu
c3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYgKGNvb2tpZS5maXJzdCkKKyAgICAg
ICAgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMzI4LDE0
ICszMjgsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoU2MKICAgICBpZiAoSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250
ZXh0KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gd2lsbEZpcmVUaW1lckltcGwoaW5zcGVjdG9y
Q29udHJvbGxlciwgdGltZXJJZCk7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5z
cGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZEZpcmVUaW1l
ckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyAgICBpZiAoY29va2llLmZpcnN0
KQorICAgICAgICBkaWRGaXJlVGltZXJJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMzQ1
LDE0ICszNDUsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoRnJhbWUKICAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JG
cmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsTGF5b3V0SW1wbChpbnNwZWN0b3JDb250
cm9sbGVyKTsKICNlbmRpZgotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRMYXlvdXQoRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRM
YXlvdXQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCi0gICAg
ICAgIGRpZExheW91dEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyAgICBpZiAo
Y29va2llLmZpcnN0KQorICAgICAgICBkaWRMYXlvdXRJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0K
IApAQCAtMzYyLDE0ICszNjIsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKFNjcmkKICAgICBpZiAo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRy
b2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gd2lsbExvYWRYSFJJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIHJlcXVlc3QpOwogI2VuZGlmCi0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQogCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRYSFIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkK
K2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUihjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZExv
YWRYSFJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYgKGNvb2tpZS5m
aXJzdCkKKyAgICAgICAgZGlkTG9hZFhIUkltcGwoY29va2llKTsKICNlbmRpZgogfQogCkBAIC0z
NzksMTQgKzM3OSwxNCBAQCBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBhaW50KEZyYW1lKgogICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZv
ckZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuIHdpbGxQYWludEltcGwoaW5zcGVjdG9yQ29u
dHJvbGxlciwgcmVjdCk7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRQYWludChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkK
IHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkK
LSAgICAgICAgZGlkUGFpbnRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAg
aWYgKGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkUGFpbnRJbXBsKGNvb2tpZSk7CiAjZW5kaWYK
IH0KIApAQCAtMzk2LDE0ICszOTYsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVMKICAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNv
bnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIHJldHVybiB3aWxsUmVjYWxj
dWxhdGVTdHlsZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlcik7CiAjZW5kaWYKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZShE
b2N1bWVudCogZG9jdW1lbnQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUp
CitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5
bGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCi0g
ICAgICAgIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tp
ZSk7CisgICAgaWYgKGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkUmVjYWxjdWxhdGVTdHlsZUlt
cGwoY29va2llKTsKICNlbmRpZgogfQogCkBAIC00MTMsMTQgKzQxMywxNCBAQCBpbmxpbmUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFJlY2VpdmVSZXNvdQogICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0
dXJuIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZGVu
dGlmaWVyKTsKICNlbmRpZgotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJ
bnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJv
bGxlckZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlRGF0YUltcGwo
aW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyAgICBpZiAoY29va2llLmZpcnN0KQorICAg
ICAgICBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChjb29raWUpOwogI2VuZGlmCiB9CiAKQEAg
LTQzMCwxNCArNDMwLDE0IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291CiAgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVy
Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3Bv
bnNlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBpZGVudGlmaWVyLCByZXNwb25zZSk7CiAjZW5k
aWYKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZv
ckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGlu
c3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYgKGNvb2tpZS5maXJzdCkKKyAgICAg
ICAgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApA
QCAtNDQ3LDE0ICs0NDcsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwoRG8KICAgICBpZiAoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xs
ZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIHJldHVybiB3aWxsV3JpdGVIVE1MSW1w
bChpbnNwZWN0b3JDb250cm9sbGVyLCBsZW5ndGgsIHN0YXJ0TGluZSk7CiAjZW5kaWYKLSAgICBy
ZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKERv
Y3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgaW50IGVuZExpbmUsIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFdyaXRlSFRNTChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNv
b2tpZSwgdW5zaWduZWQgaW50IGVuZExpbmUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3Rv
ckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFdyaXRlSFRNTElt
cGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZW5kTGluZSwgY29va2llKTsKKyAgICBpZiAoY29va2ll
LmZpcnN0KQorICAgICAgICBkaWRXcml0ZUhUTUxJbXBsKGNvb2tpZSwgZW5kTGluZSk7CiAjZW5k
aWYKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU0OTZkOWUuLjM3NjQ3OTgg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwMCwyMCArNDAwLDIwIEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzU2VudCwKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3Bv
bnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUuZ2V0KCks
IGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNB
VElPTlMpCiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkt
Pm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpKQogICAgICAgICBy
ZXR1cm47CiAjZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
bV9mcmFtZS5nZXQoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiAgICAgZGlkUmVjZWl2ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2Vp
dmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUpOwogfQog
CiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRsZSosIGNv
bnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkKIHsKICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YShtX2ZyYW1lLmdldCgpLCBpZGVudGlmaWVy
KCkpOwogICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgbGVuZ3RoUmVjZWl2ZWQsIGZh
bHNlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURh
dGEobV9mcmFtZS5nZXQoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlY2VpdmVSZXNvdXJjZURhdGEoY29va2llKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hUaW1lKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5jcHAKaW5kZXggMTQwMmRkYS4uNTdlNjUxMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdl
L0RPTVRpbWVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0xMTcsNyAr
MTE3LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogICAgICAgICAvLyBObyBhY2Nlc3MgdG8g
bWVtYmVyIHZhcmlhYmxlcyBhZnRlciB0aGlzIHBvaW50LCBpdCBjYW4gZGVsZXRlIHRoZSB0aW1l
ci4KICAgICAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29udGV4dCwgY29va2llKTsKKyAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29va2llKTsKIAogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgRE9NVGltZXI6OmZp
cmVkKCkKIAogICAgIGFjdGlvbi0+ZXhlY3V0ZShjb250ZXh0KTsKIAotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnRleHQsIGNvb2tpZSk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29va2llKTsKIAogICAgIHRpbWVyTmVz
dGluZ0xldmVsID0gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
IGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYTVkZmI0ZC4uNDA4YmE2YSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKQEAgLTE1MzUsNyArMTUzNSw3IEBAIGJvb2wgRE9NV2luZG93OjpkaXNwYXRj
aEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50LCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0
CiAKICAgICBib29sIHJlc3VsdCA9IGZpcmVFdmVudExpc3RlbmVycyhldmVudC5nZXQoKSk7CiAK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhm
cmFtZSgpLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0
Y2hFdmVudE9uV2luZG93KGNvb2tpZSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAppbmRleCAyOTQxZjIzLi4wOTI1NWYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtODM3LDcgKzgz
Nyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgICAg
IEFTU0VSVChtX2VucXVldWVFdmVudHMpOwogICAgIH0KIAotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkTGF5b3V0KG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXQoY29va2llKTsKIAogICAgIG1fbmVzdGVkTGF5b3V0
Q291bnQtLTsKIH0KQEAgLTIwMDAsNyArMjAwMCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAgICBpZiAo
aXNUb3BMZXZlbFBhaW50ZXIpCiAgICAgICAgIHNDdXJyZW50UGFpbnRUaW1lU3RhbXAgPSAwOwog
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChtX2ZyYW1lLmdldCgpLCBj
b29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoY29va2llKTsK
IH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlvciBiZWhh
dmlvcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5j
cHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGYyMWI2
NzAuLmQzN2MwODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMTA4Miw3ICsxMDgyLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50Q29udGVu
dHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY28KIAogICAgIHBhaW50
SW50b0xheWVyKG1fb3duaW5nTGF5ZXIsICZjb250ZXh0LCBkaXJ0eVJlY3QsIFBhaW50QmVoYXZp
b3JOb3JtYWwsIHBhaW50aW5nUGhhc2UsIHJlbmRlcmVyKCkpOwogCi0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRQYWludChtX293bmluZ0xheWVyLT5yZW5kZXJlcigpLT5mcmFtZSgp
LCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoY29va2ll
KTsKIH0KIAogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnNob3dEZWJ1Z0JvcmRlcnMoKSBjb25z
dApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGVmYmUwN2EuLjhjODJmMTAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKQEAgLTMwOCwxMiArMzA4LDEyIEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNh
bGxSZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKQogICAgIGlmIChtX2FzeW5jIHx8IChtX3N0YXRl
IDw9IE9QRU5FRCB8fCBtX3N0YXRlID09IERPTkUpKQogICAgICAgICBtX3Byb2dyZXNzRXZlbnRU
aHJvdHRsZS5kaXNwYXRjaEV2ZW50KFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5yZWFkeXN0YXRlY2hhbmdlRXZlbnQpLCBtX3N0YXRlID09IERPTkUgPyBG
bHVzaFByb2dyZXNzRXZlbnQgOiBEb05vdEZsdXNoUHJvZ3Jlc3NFdmVudCk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q2hhbmdlWEhSUmVhZHlTdGF0ZShjb29raWUpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0gRE9ORSAm
JiAhbV9lcnJvcikgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUihzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIHRoaXMpOwogICAgICAgICBtX3Byb2dyZXNzRXZlbnRUaHJvdHRsZS5kaXNw
YXRjaEV2ZW50KFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5sb2FkRXZlbnQpKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2Fk
WEhSKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29va2llKTsKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSKGNvb2tpZSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70223</attachid>
            <date>2010-10-08 03:59:33 -0700</date>
            <delta_ts>2010-10-08 04:10:24 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>45028</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDc4M2IxMy4uMjczNzYwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0xMC0wOCAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzYXZlIEluc3BlY3RvckNvbnRy
b2xsZXIgaW4gaW5zdHJ1bWVudGF0aW9uIGNvb2tpZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0MDYKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6ZXZhbHVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhQcm94eTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEdlbmVy
aWNFdmVudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYWxsUmVhZHlT
dGF0ZUNoYW5nZUxpc3RlbmVyKToKKwogMjAxMC0xMC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggZWY3MmI3Ny4uNzUzYzY1NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UHJveHkuY3BwCkBAIC00MTEsNyArNDExLDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQ
cm94eTo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlLCBOb2RlKiBub2QK
ICAgICBQbGF0Zm9ybUJyaWRnZTo6dHJhY2VFdmVudEVuZCgidjgucnVuIiwgbm9kZSwgIiIpOwog
I2VuZGlmCiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0
KG1fZnJhbWUsIGNvb2tpZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFs
dWF0ZVNjcmlwdChjb29raWUpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTQ5OSw3ICs0
OTksNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBWOFByb3h5OjpjYWxsRnVuY3Rpb24odjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmN0aW9uLCB2OAogICAgICAgICAvLyBleGVjdXRpb24gZmlu
aXNocyBiZWZvcmUgZmlyaW5nIHRoZSB0aW1lci4KICAgICAgICAgbV9mcmFtZS0+a2VlcEFsaXZl
KCk7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IDA7
CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKICAgICAgICAgaWYgKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6aGFzRnJvbnRlbmRzKCkpIHsKICAgICAgICAgICAgIHY4OjpTY3JpcHRPcmlnaW4g
b3JpZ2luID0gZnVuY3Rpb24tPkdldFNjcmlwdE9yaWdpbigpOwogICAgICAgICAgICAgU3RyaW5n
IHJlc291cmNlTmFtZSgidW5kZWZpbmVkIik7CkBAIC01MTUsNyArNTE1LDcgQEAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2FsbEZ1bmN0aW9uKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiBmdW5jdGlvbiwgdjgKICAgICAgICAgcmVzdWx0ID0gZnVuY3Rpb24tPkNhbGwocmVjZWl2ZXIs
IGFyZ2MsIGFyZ3MpOwogICAgICAgICBtX3JlY3Vyc2lvbi0tOwogCi0gICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKG1fZnJhbWUsIGNvb2tpZSk7CisgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSk7CiAg
ICAgfQogCiAgICAgLy8gUmVsZWFzZSB0aGUgc3RvcmFnZSBtdXRleCBpZiBhcHBsaWNhYmxlLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGMzMTFjYTIuLjkxYmUyODIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1MTUsNyArMTUx
NSw3IEBAIGJhaWxfb3V0OgogICAgICAgICBpbXBsaWNpdENsb3NlKCk7CiAgICAgfQogCi0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKHRoaXMsIGNvb2tp
ZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKGNv
b2tpZSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBl
OTVmNjIwLi5mNTRmZWM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjY4NSw3ICsyNjg1LDcgQEAgZG9uZURpc3BhdGNoaW5n
OgogCiBkb25lV2l0aERlZmF1bHQ6CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZERpc3BhdGNoRXZlbnQoZG9jdW1lbnQoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnQoY29va2llKTsKIAogICAgIHJldHVybiAhZXZlbnQt
PmRlZmF1bHRQcmV2ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcAppbmRleCBkNjY4ZDVlLi45NGNjMmFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0yNTYsNyArMjU2LDcgQEAgdm9pZCBIVE1MRG9j
dW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIoU3luY2hyb25vdXNNb2RlIG1vZGUpCiAgICAgICAg
IG1fcHJlbG9hZFNjYW5uZXItPnNjYW4oKTsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFdyaXRlSFRNTChkb2N1bWVudCgpLCBtX3Rva2VuaXplci0+bGluZU51bWJl
cigpLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1M
KGNvb2tpZSwgbV90b2tlbml6ZXItPmxpbmVOdW1iZXIoKSk7CiB9CiAKIGJvb2wgSFRNTERvY3Vt
ZW50UGFyc2VyOjpoYXNJbnNlcnRpb25Qb2ludCgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA3NTJmMWVkLi40ZWZjZWVlIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTE3Miwz
MiArMTcyLDM1IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVUaW1l
ckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yCiAKIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb25J
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9y
Q29udHJvbGxlcikpIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJbnNwZWN0
b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGlu
c3BlY3RvckNvbnRyb2xsZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxDYWxsRnVuY3Rpb24oc2NyaXB0TmFtZSwgc2NyaXB0TGluZSk7Ci0g
ICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGluZUFnZW50
SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xsZXIsIHRp
bWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
YWxsRnVuY3Rpb25JbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9s
bGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZENhbGxGdW5jdGlvbigpOwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgWE1MSHR0cFJlcXVlc3Qq
IHJlcXVlc3QpCiB7CisgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CiAgICAgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNw
ZWN0b3JDb250cm9sbGVyKTsKICAgICBpZiAodGltZWxpbmVBZ2VudCAmJiByZXF1ZXN0LT5oYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50KSkgewogICAg
ICAgICB0aW1lbGluZUFnZW50LT53aWxsQ2hhbmdlWEhSUmVhZHlTdGF0ZShyZXF1ZXN0LT51cmwo
KS5zdHJpbmcoKSwgcmVxdWVzdC0+cmVhZHlTdGF0ZSgpKTsKLSAgICAgICAgcmV0dXJuIHRpbWVs
aW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQt
PmlkKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29udHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRp
bWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwg
Y29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRDaGFuZ2VYSFJSZWFkeVN0YXRlKCk7CiB9CiAKQEAgLTIxNiwxNzggKzIxOSwxOTYgQEAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bERpc3BhdGNoRXZlbnRJbXBsKEkKICAgICB9CiAjZW5kaWYKIAorICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBy
ZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CiAgICAgaWYgKHRpbWVs
aW5lQWdlbnQgJiYgZXZlbnRIYXNMaXN0ZW5lcnMoZXZlbnQudHlwZSgpLCB3aW5kb3csIG5vZGUs
IGFuY2VzdG9ycykpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQo
ZXZlbnQpOwotICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250
cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK3ZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50SW1wbChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKLSAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJB
Z2VudCA9IGluc3BlY3RvckNvbnRyb2xsZXItPm1fZGVidWdnZXJBZ2VudC5nZXQoKSkKKyAgICBp
ZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGNvb2tpZS5maXJzdC0+
bV9kZWJ1Z2dlckFnZW50LmdldCgpKQogICAgICAgICBkZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVz
ZU9uTmV4dFN0YXRlbWVudCgpOwogI2VuZGlmCiAKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250
cm9sbGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5l
QWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRv
d0ltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgRXZl
bnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdykKIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElk
ID0gMDsKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmll
dmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpOwogICAgIGlmICh0aW1lbGluZUFn
ZW50ICYmIHdpbmRvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnQudHlwZSgpKSkgewogICAgICAg
ICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCk7Ci0gICAgICAgIHJldHVy
biB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGlu
ZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJ
ZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JD
b250cm9sbGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVs
aW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0SW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBjb25zdCBTdHJpbmcm
IHVybCwgaW50IGxpbmVOdW1iZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxl
cikpIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNv
bnRyb2xsZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPndpbGxFdmFsdWF0ZVNjcmlwdCh1cmwsIGxpbmVOdW1iZXIpOwotICAgICAgICByZXR1cm4g
dGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVB
Z2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1lbGluZUFnZW50SWQp
OwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJ
bXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYgY29va2llKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tp
ZSkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRy
aWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZh
bHVhdGVTY3JpcHQoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgaW50IHRpbWVySWQpCiB7Ci0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlcikpIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFn
ZW50KGluc3BlY3RvckNvbnRyb2xsZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPndpbGxGaXJlVGltZXIodGltZXJJZCk7Ci0gICAgICAgIHJldHVy
biB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGlu
ZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJ
ZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZVRpbWVySW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNv
b2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQorICAg
IGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1l
bGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVUaW1lcigp
OwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsTGF5b3V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKSB7CisgICAgaW50
IHRpbWVsaW5lQWdlbnRJZCA9IDA7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyAg
ICBpZiAodGltZWxpbmVBZ2VudCkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTGF5b3V0
KCk7Ci0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGlu
ZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xs
ZXIsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBj
b29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZExheW91dCgpOwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUkltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpCiB7CisgICAgaW50IHRp
bWVsaW5lQWdlbnRJZCA9IDA7CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBp
ZiAodGltZWxpbmVBZ2VudCAmJiByZXF1ZXN0LT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkubG9hZEV2ZW50KSkgewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTG9hZFhIUihyZXF1
ZXN0LT51cmwoKS5zdHJpbmcoKSk7Ci0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgp
OworICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTG9hZFhIUihyZXF1ZXN0LT51cmwoKSk7Cisg
ICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAg
IHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5z
cGVjdG9yQ29udHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUkltcGwoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVj
dG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRMb2FkWEhSKCk7CiB9CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludEltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
LSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZl
VGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkgeworICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBy
ZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgaWYgKHRpbWVs
aW5lQWdlbnQpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFBhaW50KHJlY3QpOwotICAg
ICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudElk
ID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1l
bGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFp
bnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUGFpbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYg
Y29va2llKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRp
bWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUGFpbnQoKTsK
IH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcikpIHsK
KyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50
KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xs
ZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndp
bGxSZWNhbGN1bGF0ZVN0eWxlKCk7Ci0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgp
OworICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0K
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRl
U3R5bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQog
ewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmll
dmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgaWYgKElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdl
bnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjYWxjdWxhdGVTdHlsZSgp
OwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogewotICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGlu
ZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKSB7CisgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9
IDA7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZl
VGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBpZiAodGltZWxpbmVBZ2Vu
dCkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsUmVjZWl2ZVJlc291cmNlRGF0YShpZGVu
dGlmaWVyKTsKLSAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHRp
bWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAgIHJldHVybiAw
OworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29u
dHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUp
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlRGF0YUlt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAg
aWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVs
aW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29r
aWUpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VEYXRhKCk7CiB9
CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9s
bGVyKSkgeworICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOworICAgIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9y
Q29udHJvbGxlcik7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpIHsKICAgICAgICAgdGltZWxpbmVB
Z2VudC0+d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsK
LSAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHRpbWVsaW5lQWdl
bnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29udHJvbGxlciwg
dGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1w
bChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxp
bmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JU
aW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tp
ZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKCk7
CiB9CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxXcml0ZUhUTUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIsIHVuc2lnbmVkIGludCBsZW5ndGgsIHVuc2lnbmVkIGludCBzdGFydExpbmUpCiB7
Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2
ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcikpIHsKKyAgICBpbnQgdGltZWxpbmVB
Z2VudElkID0gMDsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpOworICAgIGlmICh0aW1l
bGluZUFnZW50KSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxXcml0ZUhUTUwobGVuZ3Ro
LCBzdGFydExpbmUpOwotICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAg
ICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0
b3JDb250cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0
ZUhUTUxJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCB1
bnNpZ25lZCBpbnQgZW5kTGluZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVy
LCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZFdyaXRlSFRNTChlbmRMaW5lKTsKIH0KIAotCiBib29sIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6aGFzRnJvbnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
cikKIHsKICAgICByZXR1cm4gaW5zcGVjdG9yQ29udHJvbGxlci0+aGFzRnJvbnRlbmQoKTsKQEAg
LTM5OCwxMCArNDE5LDEwIEBAIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KEluc3BlY3RvCiAgICAgcmV0dXJuIGlu
c3BlY3RvckNvbnRyb2xsZXItPm1fdGltZWxpbmVBZ2VudC5nZXQoKTsKIH0KIAotSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVRpbWVsaW5l
QWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK0luc3BlY3RvclRpbWVsaW5lQWdlbnQqIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewotICAgIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9y
Q29udHJvbGxlcik7Ci0gICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgdGltZWxpbmVBZ2VudC0+aWQo
KSA9PSBjb29raWUpCisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9
IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUuZmlyc3QpOworICAgIGlmICh0aW1lbGluZUFn
ZW50ICYmIHRpbWVsaW5lQWdlbnQtPmlkKCkgPT0gY29va2llLnNlY29uZCkKICAgICAgICAgcmV0
dXJuIHRpbWVsaW5lQWdlbnQ7CiAgICAgcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDA3MjEwMWYuLjdkNWE1MjcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC00Nyw3ICs0
Nyw3IEBAIGNsYXNzIFJlc291cmNlUmVxdWVzdDsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiBj
bGFzcyBYTUxIdHRwUmVxdWVzdDsKIAotdHlwZWRlZiBpbnQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llOwordHlwZWRlZiBwYWlyPEluc3BlY3RvckNvbnRyb2xsZXIqLCBpbnQ+IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZTsKIAogY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIHsKIHB1YmxpYzoKQEAgLTY0LDMxICs2NCwzMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZv
aWQgZGlkUmVtb3ZlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGludCB0aW1lcklkKTsK
IAogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENhbGxGdW5j
dGlvbihGcmFtZSosIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihGcmFtZSosIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgc3RhdGljIHZv
aWQgZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hh
bmdlWEhSUmVhZHlTdGF0ZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsK
ICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2
ZW50KERvY3VtZW50KiwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdywgTm9k
ZSogbm9kZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxDb250YWluZXJOb2RlPiA+JiBhbmNlc3RvcnMp
OwotICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRj
aEV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRv
dyhGcmFtZSosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpOwotICAgIHN0
YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZl
bnRPbldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdChG
cmFtZSosIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRXZhbHVhdGVTY3JpcHQoRnJhbWUqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGlu
dCB0aW1lcklkKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0
YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxMYXlv
dXQoRnJhbWUqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoRnJhbWUqLCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBYTUxI
dHRwUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkTG9hZFhIUihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7
CisgICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOworICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bExvYWRYSFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFhNTEh0dHBSZXF1ZXN0Kik7CisgICAg
c3RhdGljIHZvaWQgZGlkTG9hZFhIUihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxQYWlu
dChGcmFtZSosIGNvbnN0IEludFJlY3QmIHJlY3QpOwotICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50
KEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3Rh
dGljIHZvaWQgZGlkUGFpbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7
CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxh
dGVTdHlsZShEb2N1bWVudCopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUo
RG9jdW1lbnQqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIp
OwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZURhdGEoRnJhbWUqLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzb3VyY2VEYXRhKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNv
dXJjZVJlc3BvbnNlKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291
cmNlUmVzcG9uc2UoRnJhbWUqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIHdpbGxXcml0ZUhUTUwoRG9jdW1lbnQqLCB1bnNpZ25lZCBpbnQgbGVu
Z3RoLCB1bnNpZ25lZCBpbnQgc3RhcnRMaW5lKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhU
TUwoRG9jdW1lbnQqLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKIAog
I2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgc3RhdGljIHZvaWQgZnJvbnRlbmRDcmVhdGVkKCkg
eyBzX2Zyb250ZW5kQ291bnRlciArPSAxOyB9CkBAIC0xMTQsMzEgKzExNCwzMSBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgaW50IHRpbWVySWQpOwogCiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSB3aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3Ry
aW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ2Fs
bEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgc3RhdGljIHZvaWQgZGlk
Q2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlWEhSUmVhZHlT
dGF0ZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5k
b3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYgYW5j
ZXN0b3JzKTsKLSAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50SW1wbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWREaXNwYXRjaEV2ZW50SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxE
aXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVu
dCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93KTsKLSAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRj
aEV2ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRv
d0ltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGlj
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0SW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRF
dmFsdWF0ZVNjcmlwdEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7
CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVy
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgaW50IHRpbWVySWQpOwotICAgIHN0YXRpYyB2b2lk
IGRpZEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVySW1wbChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIHdpbGxMYXlvdXRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqKTsK
LSAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZExheW91dElt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTG9hZFhIUkltcGwoSW5zcGVjdG9yQ29u
dHJvbGxlciosIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRM
b2FkWEhSSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRMb2FkWEhSSW1wbChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxQYWludEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGNvbnN0IEludFJl
Y3QmIHJlY3QpOwotICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50SW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRQYWludEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHls
ZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciopOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3Vs
YXRlU3R5bGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpOwotICAgIHN0YXRpYyB2b2lk
IGRpZFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNv
dXJjZURhdGFJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAg
IHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlm
aWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
KTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxXcml0ZUhU
TUxJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25l
ZCBpbnQgc3RhcnRMaW5lKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKEluc3Bl
Y3RvckNvbnRyb2xsZXIqLCB1bnNpZ25lZCBpbnQgZW5kTGluZSwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRXcml0ZUhUTUxJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIHVuc2lnbmVkIGludCBlbmRMaW5lKTsKIAog
ICAgIHN0YXRpYyBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29u
dGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAgICAgc3RhdGljIEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChEb2N1bWVudCopOwpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNGcm9udGVuZChJbnNw
ZWN0b3JDb250cm9sbGVyKik7CiAgICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHJl
dHJpZXZlVGltZWxpbmVBZ2VudChJbnNwZWN0b3JDb250cm9sbGVyKik7Ci0gICAgc3RhdGljIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChJbnNwZWN0b3JDb250
cm9sbGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogcmV0cmlldmVUaW1lbGluZUFnZW50KGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogCiAgICAgc3RhdGljIGludCBzX2Zyb250ZW5kQ291
bnRlcjsKICNlbmRpZgpAQCAtMjQzLDE0ICsyNDMsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rp
b24KICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsQ2Fs
bEZ1bmN0aW9uSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBzY3JpcHROYW1lLCBzY3JpcHRMaW5l
KTsKICNlbmRpZgotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDYWxsRnVuY3Rpb24oRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
YWxsRnVuY3Rpb24oY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUp
CiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkp
Ci0gICAgICAgIGRpZENhbGxGdW5jdGlvbkltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2ll
KTsKKyAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYgY29va2llLmZpcnN0KQorICAgICAgICBkaWRD
YWxsRnVuY3Rpb25JbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMjYwLDE0ICsyNjAsMTQg
QEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxDaGFuZ2VYSFJSZWEKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRl
eHQpKQogICAgICAgICByZXR1cm4gd2lsbENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIHJlcXVlc3QpOwogI2VuZGlmCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlWEhSUmVh
ZHlTdGF0ZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkp
Ci0gICAgICAgIGRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIs
IGNvb2tpZSk7CisgICAgaWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAgICAg
ICAgZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZUltcGwoY29va2llKTsKICNlbmRpZgogfQogCkBAIC0y
NzcsMTQgKzI3NywxNCBAQCBpbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbgogICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZv
ckRvY3VtZW50KGRvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIHdpbGxEaXNwYXRjaEV2ZW50SW1w
bChpbnNwZWN0b3JDb250cm9sbGVyLCBldmVudCwgd2luZG93LCBub2RlLCBhbmNlc3RvcnMpOwog
I2VuZGlmCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZERpc3BhdGNoRXZlbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWREaXNwYXRjaEV2ZW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29v
a2llKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQo
ZG9jdW1lbnQpKQotICAgICAgICBkaWREaXNwYXRjaEV2ZW50SW1wbChpbnNwZWN0b3JDb250cm9s
bGVyLCBjb29raWUpOworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb29raWUuZmlyc3QpCisg
ICAgICAgIGRpZERpc3BhdGNoRXZlbnRJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMjk0
LDE0ICsyOTQsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW4KICAgICBpZiAoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JG
cmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1w
bChpbnNwZWN0b3JDb250cm9sbGVyLCBldmVudCwgd2luZG93KTsKICNlbmRpZgotICAgIHJldHVy
biAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50T25X
aW5kb3coRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50
T25XaW5kb3coY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCi0g
ICAgICAgIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwg
Y29va2llKTsKKyAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYgY29va2llLmZpcnN0KQorICAgICAg
ICBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAt
MzExLDE0ICszMTEsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmkKICAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJG
b3JGcmFtZShmcmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKGlu
c3BlY3RvckNvbnRyb2xsZXIsIHVybCwgbGluZU51bWJlcik7CiAjZW5kaWYKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoRnJh
bWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
ID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkRXZhbHVh
dGVTY3JpcHRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYgKGhhc0Zy
b250ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkRXZhbHVhdGVTY3JpcHRJbXBs
KGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMzI4LDE0ICszMjgsMTQgQEAgaW5saW5lIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxG
aXJlVGltZXIoU2MKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICBy
ZXR1cm4gd2lsbEZpcmVUaW1lckltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgdGltZXJJZCk7CiAj
ZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpcmVUaW1lcihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
IGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRl
eHQoY29udGV4dCkpCi0gICAgICAgIGRpZEZpcmVUaW1lckltcGwoaW5zcGVjdG9yQ29udHJvbGxl
ciwgY29va2llKTsKKyAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYgY29va2llLmZpcnN0KQorICAg
ICAgICBkaWRGaXJlVGltZXJJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMzQ1LDE0ICsz
NDUsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoRnJhbWUKICAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShm
cmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsTGF5b3V0SW1wbChpbnNwZWN0b3JDb250cm9sbGVy
KTsKICNlbmRpZgotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRMYXlvdXQoRnJhbWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXQo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAjaWYgRU5B
QkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29u
dHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGRp
ZExheW91dEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyAgICBpZiAoaGFzRnJv
bnRlbmRzKCkgJiYgY29va2llLmZpcnN0KQorICAgICAgICBkaWRMYXlvdXRJbXBsKGNvb2tpZSk7
CiAjZW5kaWYKIH0KIApAQCAtMzYyLDE0ICszNjIsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMb2FkWEhSKFNj
cmkKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGlu
c3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNvbnRleHQpKQogICAgICAgICByZXR1cm4gd2ls
bExvYWRYSFJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHJlcXVlc3QpOwogI2VuZGlmCi0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwog
fQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRYSFIoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9h
ZFhIUihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckNvbnRleHQoY29udGV4dCkpCi0g
ICAgICAgIGRpZExvYWRYSFJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAg
aWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkTG9hZFhIUklt
cGwoY29va2llKTsKICNlbmRpZgogfQogCkBAIC0zNzksMTQgKzM3OSwxNCBAQCBpbmxpbmUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFBhaW50KEZyYW1lKgogICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0
dXJuIHdpbGxQYWludEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgcmVjdCk7CiAjZW5kaWYKLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7
CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoRnJh
bWUqIGZyYW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVj
dG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkUGFpbnRJbXBsKGluc3Bl
Y3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tp
ZS5maXJzdCkKKyAgICAgICAgZGlkUGFpbnRJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAt
Mzk2LDE0ICszOTYsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVMKICAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJG
b3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIHJldHVybiB3aWxsUmVjYWxjdWxhdGVTdHls
ZUltcGwoaW5zcGVjdG9yQ29udHJvbGxlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCog
ZG9jdW1lbnQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRp
ZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAg
aWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkUmVjYWxjdWxh
dGVTdHlsZUltcGwoY29va2llKTsKICNlbmRpZgogfQogCkBAIC00MTMsMTQgKzQxMywxNCBAQCBp
bmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlY2VpdmVSZXNvdQogICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChpbnNwZWN0b3JDb250cm9s
bGVyLCBpZGVudGlmaWVyKTsKICNlbmRpZgotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiBmcmFtZSwgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQot
ICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVj
dG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkUmVjZWl2ZVJlc291cmNl
RGF0YUltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKTsKKyAgICBpZiAoaGFzRnJvbnRl
bmRzKCkgJiYgY29va2llLmZpcnN0KQorICAgICAgICBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1w
bChjb29raWUpOwogI2VuZGlmCiB9CiAKQEAgLTQzMCwxNCArNDMwLDE0IEBAIGlubGluZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
UmVjZWl2ZVJlc291CiAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1
cm4gd2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBp
ZGVudGlmaWVyLCByZXNwb25zZSk7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoRnJhbWUqIGZy
YW1lLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoraW5saW5lIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9s
bGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgZGlkUmVj
ZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7Cisg
ICAgaWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkUmVjZWl2
ZVJlc291cmNlUmVzcG9uc2VJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtNDQ3LDE0ICs0
NDcsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxXcml0ZUhUTUwoRG8KICAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JEb2N1bWVu
dChkb2N1bWVudCkpCiAgICAgICAgIHJldHVybiB3aWxsV3JpdGVIVE1MSW1wbChpbnNwZWN0b3JD
b250cm9sbGVyLCBsZW5ndGgsIHN0YXJ0TGluZSk7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MKERvY3VtZW50KiBkb2N1
bWVudCwgdW5zaWduZWQgaW50IGVuZExpbmUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRl
SFRNTChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgdW5zaWdu
ZWQgaW50IGVuZExpbmUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJG
b3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFdyaXRlSFRNTEltcGwoaW5zcGVjdG9y
Q29udHJvbGxlciwgZW5kTGluZSwgY29va2llKTsKKyAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYg
Y29va2llLmZpcnN0KQorICAgICAgICBkaWRXcml0ZUhUTUxJbXBsKGNvb2tpZSwgZW5kTGluZSk7
CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDU0OTZkOWUuLjM3
NjQ3OTggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysg
Yi9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQwMCwyMCArNDAwLDIwIEBA
IHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKFJlc291cmNlSGFuZGxlKiwgdW5zaWdu
ZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUu
Z2V0KCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9B
UFBMSUNBVElPTlMpCiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCktPm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpKQogICAg
ICAgICByZXR1cm47CiAjZW5kaWYKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UobV9mcmFtZS5nZXQoKSwgaWRlbnRpZmllcigpLCByZXNwb25zZSk7CiAgICAgZGlkUmVj
ZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShjb29raWUp
OwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShSZXNvdXJjZUhhbmRs
ZSosIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIGludCBsZW5ndGhSZWNlaXZlZCkKIHsK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlRGF0YShtX2ZyYW1lLmdldCgpLCBpZGVu
dGlmaWVyKCkpOwogICAgIGRpZFJlY2VpdmVEYXRhKGRhdGEsIGxlbmd0aCwgbGVuZ3RoUmVjZWl2
ZWQsIGZhbHNlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNv
dXJjZURhdGEobV9mcmFtZS5nZXQoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGEoY29va2llKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhSZXNvdXJjZUhhbmRsZSosIGRvdWJsZSBmaW5pc2hU
aW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1dlYkNvcmUvcGFn
ZS9ET01UaW1lci5jcHAKaW5kZXggMTQwMmRkYS4uNTdlNjUxMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wYWdlL0RPTVRpbWVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0x
MTcsNyArMTE3LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogICAgICAgICAvLyBObyBhY2Nl
c3MgdG8gbWVtYmVyIHZhcmlhYmxlcyBhZnRlciB0aGlzIHBvaW50LCBpdCBjYW4gZGVsZXRlIHRo
ZSB0aW1lci4KICAgICAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29udGV4dCwgY29va2llKTsK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29va2llKTsK
IAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgRE9NVGlt
ZXI6OmZpcmVkKCkKIAogICAgIGFjdGlvbi0+ZXhlY3V0ZShjb250ZXh0KTsKIAotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnRleHQsIGNvb2tpZSk7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29va2llKTsKIAogICAgIHRp
bWVyTmVzdGluZ0xldmVsID0gMDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYTVkZmI0ZC4uNDA4YmE2
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE1MzUsNyArMTUzNSw3IEBAIGJvb2wgRE9NV2luZG93Ojpk
aXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IHBycEV2ZW50LCBQYXNzUmVmUHRyPEV2ZW50
VGFyZ2V0CiAKICAgICBib29sIHJlc3VsdCA9IGZpcmVFdmVudExpc3RlbmVycyhldmVudC5nZXQo
KSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldp
bmRvdyhmcmFtZSgpLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RGlzcGF0Y2hFdmVudE9uV2luZG93KGNvb2tpZSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAppbmRleCAyOTQxZjIzLi4wOTI1NWYxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtODM3
LDcgKzgzNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAg
ICAgICAgIEFTU0VSVChtX2VucXVldWVFdmVudHMpOwogICAgIH0KIAotICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXQoY29va2llKTsKIAogICAgIG1fbmVzdGVk
TGF5b3V0Q291bnQtLTsKIH0KQEAgLTIwMDAsNyArMjAwMCw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpw
YWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogcCwgY29uc3QgSW50UmVjdCYgcmVjdCkKICAg
ICBpZiAoaXNUb3BMZXZlbFBhaW50ZXIpCiAgICAgICAgIHNDdXJyZW50UGFpbnRUaW1lU3RhbXAg
PSAwOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChtX2ZyYW1lLmdl
dCgpLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoY29v
a2llKTsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OnNldFBhaW50QmVoYXZpb3IoUGFpbnRCZWhhdmlv
ciBiZWhhdmlvcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4
IGYyMWI2NzAuLmQzN2MwODAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcApAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnBhaW50
Q29udGVudHMoY29uc3QgR3JhcGhpY3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYgY28KIAogICAg
IHBhaW50SW50b0xheWVyKG1fb3duaW5nTGF5ZXIsICZjb250ZXh0LCBkaXJ0eVJlY3QsIFBhaW50
QmVoYXZpb3JOb3JtYWwsIHBhaW50aW5nUGhhc2UsIHJlbmRlcmVyKCkpOwogCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChtX293bmluZ0xheWVyLT5yZW5kZXJlcigpLT5m
cmFtZSgpLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQo
Y29va2llKTsKIH0KIAogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnNob3dEZWJ1Z0JvcmRlcnMo
KSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGVmYmUwN2EuLjhjODJmMTAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKQEAgLTMwOCwxMiArMzA4LDEyIEBAIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmNhbGxSZWFkeVN0YXRlQ2hhbmdlTGlzdGVuZXIoKQogICAgIGlmIChtX2FzeW5jIHx8ICht
X3N0YXRlIDw9IE9QRU5FRCB8fCBtX3N0YXRlID09IERPTkUpKQogICAgICAgICBtX3Byb2dyZXNz
RXZlbnRUaHJvdHRsZS5kaXNwYXRjaEV2ZW50KFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZWFkeXN0YXRlY2hhbmdlRXZlbnQpLCBtX3N0YXRlID09IERP
TkUgPyBGbHVzaFByb2dyZXNzRXZlbnQgOiBEb05vdEZsdXNoUHJvZ3Jlc3NFdmVudCk7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZShjb29raWUpOwogCiAgICAgaWYgKG1fc3RhdGUgPT0g
RE9ORSAmJiAhbV9lcnJvcikgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTG9hZFhIUihzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHRoaXMpOwogICAgICAgICBtX3Byb2dyZXNzRXZlbnRUaHJvdHRs
ZS5kaXNwYXRjaEV2ZW50KFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5sb2FkRXZlbnQpKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRMb2FkWEhSKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29va2llKTsKKyAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSKGNvb2tpZSk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70224</attachid>
            <date>2010-10-08 04:10:24 -0700</date>
            <delta_ts>2010-10-08 08:26:52 -0700</delta_ts>
            <desc>Fix build.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>45779</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDc4M2IxMy4uMjczNzYwZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMC0xMC0wOCAgUGF2ZWwgUG9kaXZp
bG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzYXZlIEluc3BlY3RvckNvbnRy
b2xsZXIgaW4gaW5zdHJ1bWVudGF0aW9uIGNvb2tpZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc0MDYKKworICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6ZXZhbHVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhQcm94eTo6Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAg
ICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEdlbmVy
aWNFdmVudCk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXplcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YSk6CisgICAgICAgICogcGFnZS9ET01UaW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICog
cGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpsYXlvdXQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogeG1sL1hNTEh0dHBS
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpjYWxsUmVhZHlT
dGF0ZUNoYW5nZUxpc3RlbmVyKToKKwogMjAxMC0xMC0wOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTJjMGMwNy4uOTdm
MjMxMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xNDgs
NyArMTQ4LDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxk
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUKICAgICBDb21wbGV0aW9uIGNvbXAg
PSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmV2YWx1YXRlKGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9i
YWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFpbigpLCBqc1NvdXJjZUNvZGUsIHNoZWxsKTsKICAg
ICBleGVjLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBjb29raWUpOwor
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29va2llKTsK
IAogICAgIC8vIEV2YWx1YXRpbmcgdGhlIEphdmFTY3JpcHQgY291bGQgY2F1c2UgdGhlIGZyYW1l
IHRvIGJlIGRlYWxsb2NhdGVkCiAgICAgLy8gc28gd2Ugc3RhcnQgdGhlIGtlZXAgYWxpdmUgdGlt
ZXIgaGVyZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IGVmNzJiNzcuLjc1M2M2NTYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHY4OjpMb2NhbDx2ODo6
VmFsdWU+IFY4UHJveHk6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZSwg
Tm9kZSogbm9kCiAgICAgUGxhdGZvcm1CcmlkZ2U6OnRyYWNlRXZlbnRFbmQoInY4LnJ1biIsIG5v
ZGUsICIiKTsKICNlbmRpZgogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFs
dWF0ZVNjcmlwdChtX2ZyYW1lLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29va2llKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBA
IC00OTksNyArNDk5LDcgQEAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2FsbEZ1bmN0
aW9uKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiwgdjgKICAgICAgICAgLy8gZXhl
Y3V0aW9uIGZpbmlzaHMgYmVmb3JlIGZpcmluZyB0aGUgdGltZXIuCiAgICAgICAgIG1fZnJhbWUt
PmtlZXBBbGl2ZSgpOwogCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBj
b29raWUgPSAwOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiAgICAgICAgIGlmIChJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSB7CiAgICAgICAgICAgICB2ODo6U2Ny
aXB0T3JpZ2luIG9yaWdpbiA9IGZ1bmN0aW9uLT5HZXRTY3JpcHRPcmlnaW4oKTsKICAgICAgICAg
ICAgIFN0cmluZyByZXNvdXJjZU5hbWUoInVuZGVmaW5lZCIpOwpAQCAtNTE1LDcgKzUxNSw3IEBA
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4UHJveHk6OmNhbGxGdW5jdGlvbih2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4gZnVuY3Rpb24sIHY4CiAgICAgICAgIHJlc3VsdCA9IGZ1bmN0aW9uLT5DYWxs
KHJlY2VpdmVyLCBhcmdjLCBhcmdzKTsKICAgICAgICAgbV9yZWN1cnNpb24tLTsKIAotICAgICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihtX2ZyYW1lLCBjb29r
aWUpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihj
b29raWUpOwogICAgIH0KIAogICAgIC8vIFJlbGVhc2UgdGhlIHN0b3JhZ2UgbXV0ZXggaWYgYXBw
bGljYWJsZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCBjMzExY2EyLi45MWJlMjgyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0x
NTE1LDcgKzE1MTUsNyBAQCBiYWlsX291dDoKICAgICAgICAgaW1wbGljaXRDbG9zZSgpOwogICAg
IH0KIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZSh0
aGlzLCBjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxh
dGVTdHlsZShjb29raWUpOwogfQogCiB2b2lkIERvY3VtZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVk
KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5j
cHAKaW5kZXggZTk1ZjYyMC4uZjU0ZmVjNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5j
cHAKKysrIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI2ODUsNyArMjY4NSw3IEBAIGRvbmVE
aXNwYXRjaGluZzoKIAogZG9uZVdpdGhEZWZhdWx0OgogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KGRvY3VtZW50KCksIGNvb2tpZSk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KGNvb2tpZSk7CiAKICAgICByZXR1
cm4gIWV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggZDY2OGQ1ZS4uOTRjYzJhYSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHZv
aWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9ub3VzTW9kZSBtb2Rl
KQogICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCk7CiAgICAgfQogCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRXcml0ZUhUTUwoZG9jdW1lbnQoKSwgbV90b2tlbml6ZXIt
PmxpbmVOdW1iZXIoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFdyaXRlSFRNTChjb29raWUsIG1fdG9rZW5pemVyLT5saW5lTnVtYmVyKCkpOwogfQogCiBib29s
IEhUTUxEb2N1bWVudFBhcnNlcjo6aGFzSW5zZXJ0aW9uUG9pbnQoKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNzUyZjFlZC4uNGVmY2Vl
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC0xNzIsMzIgKzE3MiwzNSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVtb3ZlVGltZXJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvcgogCiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2Fs
bEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBj
b25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lKQogewotICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50
KGluc3BlY3RvckNvbnRyb2xsZXIpKSB7CisgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Cisg
ICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxp
bmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCkgewog
ICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsQ2FsbEZ1bmN0aW9uKHNjcmlwdE5hbWUsIHNjcmlw
dExpbmUpOwotICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGlt
ZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250
cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbkltcGwoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVj
dG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCog
dGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0
aW1lbGluZUFnZW50LT5kaWRDYWxsRnVuY3Rpb24oKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENoYW5nZVhIUlJlYWR5
U3RhdGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFhNTEh0
dHBSZXF1ZXN0KiByZXF1ZXN0KQogeworICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwogICAg
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5l
QWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CiAgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgcmVx
dWVzdC0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnJlYWR5c3RhdGVjaGFuZ2VFdmVu
dCkpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbENoYW5nZVhIUlJlYWR5U3RhdGUocmVx
dWVzdC0+dXJsKCkuc3RyaW5nKCksIHJlcXVlc3QtPnJlYWR5U3RhdGUoKSk7Ci0gICAgICAgIHJl
dHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1l
bGluZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdl
bnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJS
ZWFkeVN0YXRlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNv
bnRyb2xsZXIsIGNvb2tpZSkpCisgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxp
bmVBZ2VudC0+ZGlkQ2hhbmdlWEhSUmVhZHlTdGF0ZSgpOwogfQogCkBAIC0yMTYsMTc4ICsyMTks
MTk2IEBAIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxEaXNwYXRjaEV2ZW50SW1wbChJCiAgICAgfQogI2VuZGlmCiAKKyAgICBpbnQg
dGltZWxpbmVBZ2VudElkID0gMDsKICAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpOwogICAg
IGlmICh0aW1lbGluZUFnZW50ICYmIGV2ZW50SGFzTGlzdGVuZXJzKGV2ZW50LnR5cGUoKSwgd2lu
ZG93LCBub2RlLCBhbmNlc3RvcnMpKSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxEaXNw
YXRjaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7Cisg
ICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAg
IHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5z
cGVjdG9yQ29udHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQq
IGRlYnVnZ2VyQWdlbnQgPSBpbnNwZWN0b3JDb250cm9sbGVyLT5tX2RlYnVnZ2VyQWdlbnQuZ2V0
KCkpCisgICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBjb29r
aWUuZmlyc3QtPm1fZGVidWdnZXJBZ2VudC5nZXQoKSkKICAgICAgICAgZGVidWdnZXJBZ2VudC0+
Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKICNlbmRpZgogCi0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5z
cGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KCk7CiB9CiAKIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2
ZW50T25XaW5kb3dJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3aW5kb3cpCiB7CisgICAgaW50IHRpbWVs
aW5lQWdlbnRJZCA9IDA7CiAgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2Vu
dCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKICAgICBpZiAo
dGltZWxpbmVBZ2VudCAmJiB3aW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50LnR5cGUoKSkp
IHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbERpc3BhdGNoRXZlbnQoZXZlbnQpOwotICAg
ICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudElk
ID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1l
bGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250
cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAgaWYgKEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQo
aW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KCk7CiB9CiAKIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0
ZVNjcmlwdEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgY29u
c3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3Rv
ckNvbnRyb2xsZXIpKSB7CisgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CisgICAgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChp
bnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCkgewogICAgICAgICB0
aW1lbGluZUFnZW50LT53aWxsRXZhbHVhdGVTY3JpcHQodXJsLCBsaW5lTnVtYmVyKTsKLSAgICAg
ICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9
IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29udHJvbGxlciwgdGltZWxp
bmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1
YXRlU2NyaXB0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9s
bGVyLCBjb29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZEV2YWx1YXRlU2NyaXB0KCk7CiB9CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXJJbXBsKEluc3BlY3Rv
ckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGludCB0aW1lcklkKQogewotICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGlu
ZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKSB7CisgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9
IDA7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZl
VGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyAgICBpZiAodGltZWxpbmVBZ2Vu
dCkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZVRpbWVyKHRpbWVySWQpOwotICAg
ICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudElk
ID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1l
bGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmly
ZVRpbWVySW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJiBjb29raWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwgY29v
a2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJl
dHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRG
aXJlVGltZXIoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dEltcGwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlcikKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkg
eworICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJv
bGxlcik7CisgICAgaWYgKHRpbWVsaW5lQWdlbnQpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+
d2lsbExheW91dCgpOwotICAgICAgICByZXR1cm4gdGltZWxpbmVBZ2VudC0+aWQoKTsKKyAgICAg
ICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKICAgICB9Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnNwZWN0
b3JDb250cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTGF5b3V0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JD
b250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dEltcGwoY29uc3QgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29u
dHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0aW1lbGlu
ZUFnZW50LT5kaWRMYXlvdXQoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRYSFJJbXBsKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFhNTEh0dHBSZXF1ZXN0KiByZXF1ZXN0KQogewor
ICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwogICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQq
IHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxl
cik7CiAgICAgaWYgKHRpbWVsaW5lQWdlbnQgJiYgcmVxdWVzdC0+aGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLmxvYWRFdmVudCkpIHsKLSAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbExv
YWRYSFIocmVxdWVzdC0+dXJsKCkuc3RyaW5nKCkpOwotICAgICAgICByZXR1cm4gdGltZWxpbmVB
Z2VudC0+aWQoKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbExvYWRYSFIocmVxdWVzdC0+
dXJsKCkpOworICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwog
ICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llKGluc3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkWEhSSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExvYWRYSFJJbXBsKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewotICAgIGlmIChJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFn
ZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkK
ICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkTG9hZFhIUigpOwogfQogCiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUGFpbnRJbXBs
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcikpIHsKKyAgICBpbnQg
dGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpOworICAg
IGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxQYWludChy
ZWN0KTsKLSAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlkKCk7CisgICAgICAgIHRpbWVs
aW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zcGVjdG9yQ29udHJv
bGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFBhaW50SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVy
LCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQordm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBj
b29raWUpKQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRp
ZFBhaW50KCk7CiB9CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiBpbnNwZWN0b3JDb250cm9sbGVyKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRy
b2xsZXIpKSB7CisgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7CisgICAgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0
b3JDb250cm9sbGVyKTsKKyAgICBpZiAodGltZWxpbmVBZ2VudCkgewogICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwotICAgICAgICByZXR1cm4gdGltZWxpbmVB
Z2VudC0+aWQoKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQo
KTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZShpbnNwZWN0b3JDb250cm9sbGVyLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNhbGN1bGF0ZVN0eWxlSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
IGNvb2tpZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2Vu
dCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpKQor
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVU
aW1lbGluZUFnZW50KGNvb2tpZSkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZFJlY2FsY3Vs
YXRlU3R5bGUoKTsKIH0KIAogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGFJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikK
IHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJp
ZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKSkgeworICAgIGludCB0aW1lbGlu
ZUFnZW50SWQgPSAwOworICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQg
PSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlcik7CisgICAgaWYgKHRp
bWVsaW5lQWdlbnQpIHsKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFJlY2VpdmVSZXNvdXJj
ZURhdGEoaWRlbnRpZmllcik7Ci0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOwor
ICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGlu
c3BlY3RvckNvbnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNv
dXJjZURhdGFJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2ll
KQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0
cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSkpCisgICAgaWYg
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5l
QWdlbnQoY29va2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNl
RGF0YSgpOwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVj
dG9yQ29udHJvbGxlcikpIHsKKyAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKKyAgICBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50
KGluc3BlY3RvckNvbnRyb2xsZXIpOworICAgIGlmICh0aW1lbGluZUFnZW50KSB7CiAgICAgICAg
IHRpbWVsaW5lQWdlbnQtPndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShpZGVudGlmaWVyLCBy
ZXNwb25zZSk7Ci0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50LT5pZCgpOworICAgICAgICB0
aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3BlY3RvckNv
bnRyb2xsZXIsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNv
b2tpZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUp
CiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRy
aWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9yQ29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVB
Z2VudChjb29raWUpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRSZWNlaXZlUmVzb3VyY2VS
ZXNwb25zZSgpOwogfQogCiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyLCB1bnNpZ25lZCBpbnQgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgc3Rh
cnRMaW5lKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGluc3BlY3RvckNvbnRyb2xsZXIpKSB7CisgICAgaW50
IHRpbWVsaW5lQWdlbnRJZCA9IDA7CisgICAgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChpbnNwZWN0b3JDb250cm9sbGVyKTsKKyAg
ICBpZiAodGltZWxpbmVBZ2VudCkgewogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsV3JpdGVI
VE1MKGxlbmd0aCwgc3RhcnRMaW5lKTsKLSAgICAgICAgcmV0dXJuIHRpbWVsaW5lQWdlbnQtPmlk
KCk7CisgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAg
fQotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUoaW5zcGVjdG9yQ29udHJvbGxlciwgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTEltcGwoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciwgdW5zaWduZWQgaW50IGVuZExpbmUsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
IGNvb2tpZSwgdW5zaWduZWQgaW50IGVuZExpbmUpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVs
aW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoaW5zcGVjdG9y
Q29udHJvbGxlciwgY29va2llKSkKKyAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGlt
ZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQogICAgICAgICB0aW1l
bGluZUFnZW50LT5kaWRXcml0ZUhUTUwoZW5kTGluZSk7CiB9CiAKLQogYm9vbCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIpCiB7CiAgICAgcmV0dXJuIGluc3BlY3RvckNvbnRyb2xsZXItPmhhc0Zyb250
ZW5kKCk7CkBAIC0zOTgsMTAgKzQxOSwxMCBAQCBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChJbnNwZWN0bwogICAg
IHJldHVybiBpbnNwZWN0b3JDb250cm9sbGVyLT5tX3RpbWVsaW5lQWdlbnQuZ2V0KCk7CiB9CiAK
LUluc3BlY3RvclRpbWVsaW5lQWdlbnQqIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmll
dmVUaW1lbGluZUFnZW50KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCitJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJldHJpZXZlVGltZWxpbmVBZ2VudChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKIHsKLSAgICBJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50
KGluc3BlY3RvckNvbnRyb2xsZXIpOwotICAgIGlmICh0aW1lbGluZUFnZW50ICYmIHRpbWVsaW5l
QWdlbnQtPmlkKCkgPT0gY29va2llKQorICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llLmZpcnN0KTsKKyAgICBpZiAo
dGltZWxpbmVBZ2VudCAmJiB0aW1lbGluZUFnZW50LT5pZCgpID09IGNvb2tpZS5zZWNvbmQpCiAg
ICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50OwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAwNzIxMDFmLi43ZDVh
NTI3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApA
QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBjbGFzcyBSZXNvdXJjZVJl
c3BvbnNlOwogY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAKLXR5cGVkZWYgaW50IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZTsKK3R5cGVkZWYgcGFpcjxJbnNwZWN0b3JDb250cm9sbGVyKiwg
aW50PiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU7CiAKIGNsYXNzIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbiB7CiBwdWJsaWM6CkBAIC02NCwzMSArNjQsMzEgQEAgcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIGRpZFJlbW92ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBpbnQg
dGltZXJJZCk7CiAKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxDYWxsRnVuY3Rpb24oRnJhbWUqLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3Jp
cHRMaW5lKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb24oRnJhbWUqLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDYWxs
RnVuY3Rpb24oY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3Rh
dGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsQ2hhbmdlWEhSUmVhZHlTdGF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOwotICAg
IHN0YXRpYyB2b2lkIGRpZENoYW5nZVhIUlJlYWR5U3RhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyB2
b2lkIGRpZENoYW5nZVhIUlJlYWR5U3RhdGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxs
RGlzcGF0Y2hFdmVudChEb2N1bWVudCosIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93KiB3
aW5kb3csIE5vZGUqIG5vZGUsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q29udGFpbmVyTm9kZT4gPiYg
YW5jZXN0b3JzKTsKLSAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50KERvY3VtZW50Kiwg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQg
ZGlkRGlzcGF0Y2hFdmVudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsK
ICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2
ZW50T25XaW5kb3coRnJhbWUqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyogd2luZG93
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRE
aXNwYXRjaEV2ZW50T25XaW5kb3coY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
Jik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRXZhbHVh
dGVTY3JpcHQoRnJhbWUqLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIpOwotICAg
IHN0YXRpYyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0KEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHQo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBpbnQgdGltZXJJZCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVyKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXIoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsTGF5b3V0KEZyYW1lKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0KEZyYW1lKiwg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7Ci0gICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTG9hZFhIUihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOwotICAgIHN0YXRpYyB2b2lkIGRpZExvYWRY
SFIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZExheW91dChjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxMb2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBYTUxIdHRwUmVxdWVz
dCopOworICAgIHN0YXRpYyB2b2lkIGRpZExvYWRYSFIoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSB3aWxsUGFpbnQoRnJhbWUqLCBjb25zdCBJbnRSZWN0JiByZWN0KTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRQYWludChGcmFtZSosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUp
OworICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bFJlY2FsY3VsYXRlU3R5bGUoRG9jdW1lbnQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1
bGF0ZVN0eWxlKERvY3VtZW50KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjYWxjdWxhdGVTdHlsZShjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1lKiwgdW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKEZyYW1l
KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSk7CisgICAgc3RhdGljIHZv
aWQgZGlkUmVjZWl2ZVJlc291cmNlRGF0YShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZShGcmFtZSosIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVSZXNvdXJjZVJlc3BvbnNlKEZyYW1lKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsV3JpdGVIVE1MKERvY3VtZW50KiwgdW5zaWdu
ZWQgaW50IGxlbmd0aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkV3JpdGVIVE1MKERvY3VtZW50KiwgdW5zaWduZWQgaW50IGVuZExpbmUsIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZFdyaXRlSFRN
TChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBpbnQgZW5k
TGluZSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIHN0YXRpYyB2b2lkIGZyb250ZW5k
Q3JlYXRlZCgpIHsgc19mcm9udGVuZENvdW50ZXIgKz0gMTsgfQpAQCAtMTE0LDMxICsxMTQsMzEg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRSZW1vdmVUaW1lckltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciosIGludCB0aW1lcklkKTsKIAogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbENhbGxGdW5jdGlvbkltcGwoSW5zcGVjdG9yQ29udHJvbGxlcios
IGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUpOwotICAgIHN0YXRpYyB2
b2lkIGRpZENhbGxGdW5jdGlvbkltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uSW1w
bChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChJ
bnNwZWN0b3JDb250cm9sbGVyKiwgWE1MSHR0cFJlcXVlc3QqIHJlcXVlc3QpOwotICAgIHN0YXRp
YyB2b2lkIGRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5n
ZVhIUlJlYWR5U3RhdGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYp
OwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNo
RXZlbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdp
bmRvdyogd2luZG93LCBOb2RlKiBub2RlLCBjb25zdCBWZWN0b3I8UmVmUHRyPENvbnRhaW5lck5v
ZGU+ID4mIGFuY2VzdG9ycyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwo
SW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwg
Y29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cqIHdpbmRvdyk7Ci0gICAgc3RhdGljIHZvaWQg
ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2
ZW50T25XaW5kb3dJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwog
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2Ny
aXB0SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5l
TnVtYmVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoSW5zcGVjdG9y
Q29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGlj
IHZvaWQgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bEZpcmVUaW1lckltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIGludCB0aW1lcklkKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lcklt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5b3V0SW1wbChJbnNwZWN0b3JDb250
cm9sbGVyKik7Ci0gICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0SW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRMYXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwogICAg
IHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbExvYWRYSFJJbXBsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBYTUxIdHRwUmVxdWVzdCogcmVxdWVzdCk7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkTG9hZFhIUkltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkTG9hZFhIUkltcGwoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUGFpbnRJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBj
b25zdCBJbnRSZWN0JiByZWN0KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRQYWludEltcGwoSW5zcGVj
dG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3Rh
dGljIHZvaWQgZGlkUGFpbnRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSYpOwogICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2Fs
Y3VsYXRlU3R5bGVJbXBsKEluc3BlY3RvckNvbnRyb2xsZXIqKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxl
SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKICAgICBzdGF0aWMg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1w
bChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnNwZWN0b3JDb250cm9sbGVy
KiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUmKTsKICAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwoSW5zcGVjdG9yQ29udHJvbGxlciosIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpOwotICAgIHN0
YXRpYyB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKTsKKyAgICBzdGF0aWMgdm9pZCBk
aWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llJik7CiAgICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3
aWxsV3JpdGVIVE1MSW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgaW50IGxlbmd0
aCwgdW5zaWduZWQgaW50IHN0YXJ0TGluZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1M
SW1wbChJbnNwZWN0b3JDb250cm9sbGVyKiwgdW5zaWduZWQgaW50IGVuZExpbmUsIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAgc3RhdGljIHZvaWQgZGlkV3JpdGVIVE1MSW1w
bChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCB1bnNpZ25lZCBpbnQgZW5k
TGluZSk7CiAKICAgICBzdGF0aWMgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJv
bGxlckZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0YXRpYyBJbnNw
ZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoRG9jdW1lbnQq
KTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIGJvb2wgaGFzRnJv
bnRlbmQoSW5zcGVjdG9yQ29udHJvbGxlciopOwogICAgIHN0YXRpYyBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoSW5zcGVjdG9yQ29udHJvbGxlciopOwotICAg
IHN0YXRpYyBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoSW5z
cGVjdG9yQ29udHJvbGxlciosIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSk7CisgICAg
c3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChjb25z
dCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKIAogICAgIHN0YXRpYyBpbnQgc19m
cm9udGVuZENvdW50ZXI7CiAjZW5kaWYKQEAgLTI0MywxNCArMjQzLDE0IEBAIGlubGluZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
Q2FsbEZ1bmN0aW9uCiAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1
cm4gd2lsbENhbGxGdW5jdGlvbkltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgc2NyaXB0TmFtZSwg
c2NyaXB0TGluZSk7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSYgY29va2llKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJh
bWUoZnJhbWUpKQotICAgICAgICBkaWRDYWxsRnVuY3Rpb25JbXBsKGluc3BlY3RvckNvbnRyb2xs
ZXIsIGNvb2tpZSk7CisgICAgaWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAg
ICAgICAgZGlkQ2FsbEZ1bmN0aW9uSW1wbChjb29raWUpOwogI2VuZGlmCiB9CiAKQEAgLTI2MCwx
NCArMjYwLDE0IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2hhbmdlWEhSUmVhCiAgICAgaWYgKEluc3BlY3RvckNv
bnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29u
dGV4dChjb250ZXh0KSkKICAgICAgICAgcmV0dXJuIHdpbGxDaGFuZ2VYSFJSZWFkeVN0YXRlSW1w
bChpbnNwZWN0b3JDb250cm9sbGVyLCByZXF1ZXN0KTsKICNlbmRpZgotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBjb29raWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENo
YW5nZVhIUlJlYWR5U3RhdGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBj
b29raWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0
KGNvbnRleHQpKQotICAgICAgICBkaWRDaGFuZ2VYSFJSZWFkeVN0YXRlSW1wbChpbnNwZWN0b3JD
b250cm9sbGVyLCBjb29raWUpOworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb29raWUuZmly
c3QpCisgICAgICAgIGRpZENoYW5nZVhIUlJlYWR5U3RhdGVJbXBsKGNvb2tpZSk7CiAjZW5kaWYK
IH0KIApAQCAtMjc3LDE0ICsyNzcsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW4KICAgICBp
ZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNv
bnRyb2xsZXJGb3JEb2N1bWVudChkb2N1bWVudCkpCiAgICAgICAgIHJldHVybiB3aWxsRGlzcGF0
Y2hFdmVudEltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZXZlbnQsIHdpbmRvdywgbm9kZSwgYW5j
ZXN0b3JzKTsKICNlbmRpZgotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KERvY3VtZW50KiBkb2N1bWVudCwgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUmIGNvb2tpZSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQotICAgIGlmIChJbnNwZWN0
b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZv
ckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkRGlzcGF0Y2hFdmVudEltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgY29va2llKTsKKyAgICBpZiAoaGFzRnJvbnRlbmRzKCkgJiYgY29va2ll
LmZpcnN0KQorICAgICAgICBkaWREaXNwYXRjaEV2ZW50SW1wbChjb29raWUpOwogI2VuZGlmCiB9
CiAKQEAgLTI5NCwxNCArMjk0LDE0IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVuCiAgICAgaWYg
KEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250
cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbERpc3BhdGNoRXZlbnRP
bldpbmRvd0ltcGwoaW5zcGVjdG9yQ29udHJvbGxlciwgZXZlbnQsIHdpbmRvdyk7CiAjZW5kaWYK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0
Y2hFdmVudE9uV2luZG93KEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hFdmVudE9uV2luZG93KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYg
Y29va2llKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRy
b2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUo
ZnJhbWUpKQotICAgICAgICBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKGluc3BlY3RvckNv
bnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJz
dCkKKyAgICAgICAgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChjb29raWUpOwogI2VuZGlm
CiB9CiAKQEAgLTMxMSwxNCArMzExLDE0IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpCiAgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbEV2YWx1YXRlU2Ny
aXB0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCB1cmwsIGxpbmVOdW1iZXIpOwogI2VuZGlmCi0g
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgp
OwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRl
U2NyaXB0KEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3Jp
cHQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9y
Q29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCi0gICAgICAg
IGRpZEV2YWx1YXRlU2NyaXB0SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpOworICAg
IGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb29raWUuZmlyc3QpCisgICAgICAgIGRpZEV2YWx1YXRl
U2NyaXB0SW1wbChjb29raWUpOwogI2VuZGlmCiB9CiAKQEAgLTMyOCwxNCArMzI4LDE0IEBAIGlu
bGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRmlyZVRpbWVyKFNjCiAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkK
ICAgICAgICAgcmV0dXJuIHdpbGxGaXJlVGltZXJJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHRp
bWVySWQpOwogI2VuZGlmCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llJiBjb29raWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xs
ZXJGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRGaXJlVGltZXJJbXBsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5m
aXJzdCkKKyAgICAgICAgZGlkRmlyZVRpbWVySW1wbChjb29raWUpOwogI2VuZGlmCiB9CiAKQEAg
LTM0NSwxNCArMzQ1LDE0IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0KEZyYW1lCiAgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVy
Rm9yRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1cm4gd2lsbExheW91dEltcGwoaW5zcGVjdG9y
Q29udHJvbGxlcik7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkTGF5b3V0KEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRnJhbWUoZnJhbWUpKQot
ICAgICAgICBkaWRMYXlvdXRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAg
aWYgKGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkTGF5b3V0SW1w
bChjb29raWUpOwogI2VuZGlmCiB9CiAKQEAgLTM2MiwxNCArMzYyLDE0IEBAIGlubGluZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
TG9hZFhIUihTY3JpCiAgICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yQ29udGV4dChjb250ZXh0KSkKICAgICAgICAg
cmV0dXJuIHdpbGxMb2FkWEhSSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCByZXF1ZXN0KTsKICNl
bmRpZgotICAgIHJldHVybiAwOworICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRM
b2FkWEhSKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZExvYWRYSFIoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29r
aWUpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxl
ciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JDb250ZXh0KGNv
bnRleHQpKQotICAgICAgICBkaWRMb2FkWEhSSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29r
aWUpOworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb29raWUuZmlyc3QpCisgICAgICAgIGRp
ZExvYWRYSFJJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtMzc5LDE0ICszNzksMTQgQEAg
aW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxQYWludChGcmFtZSoKICAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5z
cGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCiAg
ICAgICAgIHJldHVybiB3aWxsUGFpbnRJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIHJlY3QpOwog
I2VuZGlmCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSgpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFBhaW50KEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tp
ZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGRpZFBhaW50
SW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29raWUpOworICAgIGlmIChoYXNGcm9udGVuZHMo
KSAmJiBjb29raWUuZmlyc3QpCisgICAgICAgIGRpZFBhaW50SW1wbChjb29raWUpOwogI2VuZGlm
CiB9CiAKQEAgLTM5NiwxNCArMzk2LDE0IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTCiAgICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gd2lsbFJlY2Fs
Y3VsYXRlU3R5bGVJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIpOwogI2VuZGlmCi0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQogCi1p
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGUo
RG9jdW1lbnQqIGRvY3VtZW50LCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0
eWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQogewogI2lm
IEVOQUJMRShJTlNQRUNUT1IpCi0gICAgaWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3Rv
ckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQot
ICAgICAgICBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBjb29r
aWUpOworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb29raWUuZmlyc3QpCisgICAgICAgIGRp
ZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvb2tpZSk7CiAjZW5kaWYKIH0KIApAQCAtNDEzLDE0ICs0
MTMsMTQgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3UKICAgICBpZiAoSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShm
cmFtZSkpCiAgICAgICAgIHJldHVybiB3aWxsUmVjZWl2ZVJlc291cmNlRGF0YUltcGwoaW5zcGVj
dG9yQ29udHJvbGxlciwgaWRlbnRpZmllcik7CiAjZW5kaWYKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7CiB9CiAKLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlRGF0YShGcmFtZSog
ZnJhbWUsIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZURhdGEoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxl
ciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIGRpZFJlY2Vp
dmVSZXNvdXJjZURhdGFJbXBsKGluc3BlY3RvckNvbnRyb2xsZXIsIGNvb2tpZSk7CisgICAgaWYg
KGhhc0Zyb250ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkUmVjZWl2ZVJlc291
cmNlRGF0YUltcGwoY29va2llKTsKICNlbmRpZgogfQogCkBAIC00MzAsMTQgKzQzMCwxNCBAQCBp
bmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlY2VpdmVSZXNvdQogICAgIGlmIChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyID0gaW5zcGVjdG9yQ29udHJvbGxlckZvckZyYW1lKGZyYW1lKSkKICAg
ICAgICAgcmV0dXJuIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUltcGwoaW5zcGVjdG9yQ29u
dHJvbGxlciwgaWRlbnRpZmllciwgcmVzcG9uc2UpOwogI2VuZGlmCi0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQogCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNl
KEZyYW1lKiBmcmFtZSwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSkKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVz
cG9uc2UoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCiB7CiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKLSAgICBpZiAoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciA9IGluc3BlY3RvckNvbnRyb2xsZXJGb3JGcmFtZShmcmFtZSkpCi0gICAg
ICAgIGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChpbnNwZWN0b3JDb250cm9sbGVyLCBj
b29raWUpOworICAgIGlmIChoYXNGcm9udGVuZHMoKSAmJiBjb29raWUuZmlyc3QpCisgICAgICAg
IGRpZFJlY2VpdmVSZXNvdXJjZVJlc3BvbnNlSW1wbChjb29raWUpOwogI2VuZGlmCiB9CiAKQEAg
LTQ0NywxNCArNDQ3LDE0IEBAIGlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsV3JpdGVIVE1MKERvCiAgICAgaWYgKEluc3Bl
Y3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JDb250cm9sbGVy
Rm9yRG9jdW1lbnQoZG9jdW1lbnQpKQogICAgICAgICByZXR1cm4gd2lsbFdyaXRlSFRNTEltcGwo
aW5zcGVjdG9yQ29udHJvbGxlciwgbGVuZ3RoLCBzdGFydExpbmUpOwogI2VuZGlmCi0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwogfQog
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFdyaXRlSFRNTChEb2N1
bWVudCogZG9jdW1lbnQsIHVuc2lnbmVkIGludCBlbmRMaW5lLCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUgY29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRXcml0ZUhUTUwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29r
aWUsIHVuc2lnbmVkIGludCBlbmRMaW5lKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCi0gICAg
aWYgKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIgPSBpbnNwZWN0b3JD
b250cm9sbGVyRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRXcml0ZUhUTUxJbXBs
KGluc3BlY3RvckNvbnRyb2xsZXIsIGVuZExpbmUsIGNvb2tpZSk7CisgICAgaWYgKGhhc0Zyb250
ZW5kcygpICYmIGNvb2tpZS5maXJzdCkKKyAgICAgICAgZGlkV3JpdGVIVE1MSW1wbChjb29raWUs
IGVuZExpbmUpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1Jlc291
cmNlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA1
NDk2ZDllLi4zNzY0Nzk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00MDAsMjAg
KzQwMCwyMCBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YShSZXNvdXJjZUhhbmRs
ZSosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25z
ZShtX2ZyYW1lLmdldCgpLCBpZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKICNpZiBFTkFCTEUoT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKQogICAgIGlmIChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKHRoaXMsIHJlc3Bv
bnNlKSkKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVS
ZXNvdXJjZVJlc3BvbnNlKG1fZnJhbWUuZ2V0KCksIGlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwog
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZShtX2ZyYW1lLmdldCgpLCBjb29raWUp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9u
c2UoY29va2llKTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBpbnQgbGVuZ3RoUmVj
ZWl2ZWQpCiB7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2VpdmVSZXNvdXJjZURhdGEobV9mcmFtZS5n
ZXQoKSwgaWRlbnRpZmllcigpKTsKICAgICBkaWRSZWNlaXZlRGF0YShkYXRhLCBsZW5ndGgsIGxl
bmd0aFJlY2VpdmVkLCBmYWxzZSk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZWNlaXZlUmVzb3VyY2VEYXRhKG1fZnJhbWUuZ2V0KCksIGNvb2tpZSk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VEYXRhKGNvb2tpZSk7CiB9CiAKIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqLCBkb3Vi
bGUgZmluaXNoVGltZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAgYi9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IDE0MDJkZGEuLjU3ZTY1MTIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0RPTVRpbWVy
LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKICAgICAgICAg
Ly8gTm8gYWNjZXNzIHRvIG1lbWJlciB2YXJpYWJsZXMgYWZ0ZXIgdGhpcyBwb2ludCwgaXQgY2Fu
IGRlbGV0ZSB0aGUgdGltZXIuCiAgICAgICAgIG1fYWN0aW9uLT5leGVjdXRlKGNvbnRleHQpOwog
Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnRleHQs
IGNvb2tpZSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVy
KGNvb2tpZSk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMCw3ICsxMzAsNyBAQCB2
b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAKICAgICBhY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb250ZXh0LCBjb29r
aWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvb2tpZSk7
CiAKICAgICB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGE1ZGZi
NGQuLjQwOGJhNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBi
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xNTM1LDcgKzE1MzUsNyBAQCBib29sIERP
TVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCwgUGFzc1Jl
ZlB0cjxFdmVudFRhcmdldAogCiAgICAgYm9vbCByZXN1bHQgPSBmaXJlRXZlbnRMaXN0ZW5lcnMo
ZXZlbnQuZ2V0KCkpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRj
aEV2ZW50T25XaW5kb3coZnJhbWUoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhjb29raWUpOwogCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMjk0MWYyMy4uMDkyNTVmMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dT
dWJ0cmVlKQogICAgICAgICBBU1NFUlQobV9lbnF1ZXVlRXZlbnRzKTsKICAgICB9CiAKLSAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dChtX2ZyYW1lLmdldCgpLCBjb29raWUp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvb2tpZSk7CiAKICAg
ICBtX25lc3RlZExheW91dENvdW50LS07CiB9CkBAIC0yMDAwLDcgKzIwMDAsNyBAQCB2b2lkIEZy
YW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiAgICAgaWYgKGlzVG9wTGV2ZWxQYWludGVyKQogICAgICAgICBzQ3VycmVudFBhaW50
VGltZVN0YW1wID0gMDsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQo
bV9mcmFtZS5nZXQoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZFBhaW50KGNvb2tpZSk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRQYWludEJlaGF2aW9yKFBh
aW50QmVoYXZpb3IgYmVoYXZpb3IpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckJhY2tpbmcuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAppbmRleCBmMjFiNjcwLi5kMzdjMDgwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKQEAgLTEwODIsNyArMTA4Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQm
IGNvCiAKICAgICBwYWludEludG9MYXllcihtX293bmluZ0xheWVyLCAmY29udGV4dCwgZGlydHlS
ZWN0LCBQYWludEJlaGF2aW9yTm9ybWFsLCBwYWludGluZ1BoYXNlLCByZW5kZXJlcigpKTsKIAot
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUGFpbnQobV9vd25pbmdMYXllci0+cmVu
ZGVyZXIoKS0+ZnJhbWUoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFBhaW50KGNvb2tpZSk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzaG93RGVi
dWdCb3JkZXJzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBlZmJlMDdhLi44Yzgy
ZjEwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0zMDgsMTIgKzMwOCwxMiBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0OjpjYWxsUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyKCkKICAgICBpZiAobV9h
c3luYyB8fCAobV9zdGF0ZSA8PSBPUEVORUQgfHwgbV9zdGF0ZSA9PSBET05FKSkKICAgICAgICAg
bV9wcm9ncmVzc0V2ZW50VGhyb3R0bGUuZGlzcGF0Y2hFdmVudChYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVhZHlzdGF0ZWNoYW5nZUV2ZW50KSwgbV9z
dGF0ZSA9PSBET05FID8gRmx1c2hQcm9ncmVzc0V2ZW50IDogRG9Ob3RGbHVzaFByb2dyZXNzRXZl
bnQpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VYSFJSZWFkeVN0
YXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENoYW5nZVhIUlJlYWR5U3RhdGUoY29va2llKTsKIAogICAgIGlmICht
X3N0YXRlID09IERPTkUgJiYgIW1fZXJyb3IpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExvYWRY
SFIoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCB0aGlzKTsKICAgICAgICAgbV9wcm9ncmVzc0V2
ZW50VGhyb3R0bGUuZGlzcGF0Y2hFdmVudChYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQ6OmNy
ZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50KSk7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkTG9hZFhIUihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNvb2tpZSk7Cisg
ICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTG9hZFhIUihjb29raWUpOwogICAg
IH0KIH0KIAo=
</data>
<flag name="review"
          id="60039"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>