<?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>58347</bug_id>
          
          <creation_ts>2011-04-12 10:37:04 -0700</creation_ts>
          <short_desc>Move MediaControlElements to html/shadow.</short_desc>
          <delta_ts>2011-04-12 13:59:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          <dependson>53020</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384122</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-12 10:37:04 -0700</bug_when>
    <thetext>Move MediaControlElements to html/shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384126</commentid>
    <comment_count>1</comment_count>
      <attachid>89222</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-12 10:39:43 -0700</bug_when>
    <thetext>Created attachment 89222
Needs full bake on EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384142</commentid>
    <comment_count>2</comment_count>
      <attachid>89222</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-12 10:48:42 -0700</bug_when>
    <thetext>Comment on attachment 89222
Needs full bake on EWS.

Interesting.  Assuming you&apos;re just moving code, rs=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384349</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-12 13:59:41 -0700</bug_when>
    <thetext>Committed r83636: &lt;http://trac.webkit.org/changeset/83636&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89222</attachid>
            <date>2011-04-12 10:39:43 -0700</date>
            <delta_ts>2011-04-12 10:48:42 -0700</delta_ts>
            <desc>Needs full bake on EWS.</desc>
            <filename>bug-58347-20110412103942.patch</filename>
            <type>text/plain</type>
            <size>115893</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDQtMTIgIERpbWl0cmkg
R2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1lZGlhQ29udHJvbEVsZW1lbnRzIHRvIGh0
bWwvc2hhZG93LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTgzNDcKKworICAgICAgICBNZWNoYW5pY2FsIG1vdmUgb2YgdGhlIGZpbGVzLgorCisgICAg
ICAgICogQW5kcm9pZC5tazogVXBkYXRlZCB0aGUgYnVpbGQgZmlsZS4KKyAgICAgICAgKiBDTWFr
ZUxpc3RzLnR4dDogRGl0dG8uCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogRGl0dG8u
CisgICAgICAgICogV2ViQ29yZS5neXBpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnBybzog
RGl0dG8uCisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IERpdHRvLgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8sIGFsc28g
cmFuIHNvcnQtWENvZGUtcHJvamVjdC1maWxlcy4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmguCisgICAgICAgICogcmVu
ZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwOiBSZW1vdmVkIHRoZSBmaWxlcyB0aGF0IHdlcmUgbW92
ZWQuCisKIDIwMTEtMDQtMTIgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgpJbmRleDogU291cmNl
L1dlYkNvcmUvQW5kcm9pZC5tawo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9BbmRyb2lk
Lm1rCShyZXZpc2lvbiA4MzU5MykKKysrIFNvdXJjZS9XZWJDb3JlL0FuZHJvaWQubWsJKHdvcmtp
bmcgY29weSkKQEAgLTM1NSw2ICszNTUsNyBAQCBMT0NBTF9TUkNfRklMRVMgOj0gJChMT0NBTF9T
UkNfRklMRVMpIFwKIAlodG1sL3BhcnNlci9UZXh0Vmlld1NvdXJjZVBhcnNlci5jcHAgXAogCWh0
bWwvcGFyc2VyL1hTU0ZpbHRlci5jcHAgXAogCVwKKwlodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAgXAogCWh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBc
CiAJaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBcCiAJaHRtbC9zaGFkb3cvUHJv
Z3Jlc3NTaGFkb3dFbGVtZW50LmNwcCBcCkBAIC02NzcsNyArNjc4LDYgQEAgTE9DQUxfU1JDX0ZJ
TEVTIDo9ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3Bw
IFwKIAlyZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAgXAogCXJlbmRlcmluZy9MYXlvdXRTdGF0
ZS5jcHAgXAotCXJlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgXAogCXJlbmRlcmlu
Zy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwIFwKIAlyZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNw
cCBcCiAJcmVuZGVyaW5nL1JlbmRlckFyZW5hLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gODM1OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMTg5NSw5ICsxODk1LDkgQEAgSUYgKEVOQUJMRV9WSURFTykKICAgICAg
ICAgaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAogICAgICAgICBodG1sL0hUTUxTb3VyY2VFbGVt
ZW50LmNwcAogICAgICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCisgICAgICAgIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAogICAgICAgICBodG1sL1RpbWVSYW5nZXMu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAotICAgICAgICBy
ZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCiAgICAgICAgIHJlbmRlcmluZy9SZW5k
ZXJNZWRpYS5jcHAKICAgICAgICAgcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAogICAgICkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gODM1OTMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xODQwLDYg
KzE4NDAsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0ZpbHRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0ZpbHRlci5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggXAog
CVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBcCkBA
IC0yNzIzLDggKzI3MjUsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRTdGF0ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwK
LQlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuaCBcCiAJU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL092ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludFBoYXNlLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gODM1OTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMxNjMs
NiArMzE2Myw4IEBACiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJz
ZXIuaCcsCiAgICAgICAgICAgICAnaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9wYXJzZXIvWFNTRmlsdGVyLmgnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCcsCisgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xSb290RWxlbWVudC5oJywKICAgICAgICAgICAgICdodG1sL3NoYWRvdy9NZXRlclNoYWRvd0Vs
ZW1lbnQuY3BwJywKQEAgLTUxMTgsOCArNTEyMCw2IEBACiAgICAgICAgICAgICAncmVuZGVyaW5n
L0lubGluZUl0ZXJhdG9yLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94
LmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL0xheW91dFN0YXRlLmNwcCcsCi0gICAgICAg
ICAgICAncmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCcsCi0gICAgICAgICAgICAn
cmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmlu
Zy9Qb2ludGVyRXZlbnRzSGl0UnVsZXMuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUG9p
bnRlckV2ZW50c0hpdFJ1bGVzLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJBcHBs
ZXQuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA4MzU5MykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yOTM0LDkgKzI5MzQsOSBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgICAgICBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIFwKICAgICAgICAgaHRtbC9IVE1MU291cmNlRWxlbWVudC5jcHAgXAogICAg
ICAgICBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwIFwKKyAgICAgICAgaHRtbC9zaGFkb3cvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwIFwKICAgICAgICAgaHRtbC9UaW1lUmFuZ2VzLmNwcCBcCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcCBcCi0gICAgICAgIHJlbmRl
cmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgXAogICAgICAgICByZW5kZXJpbmcvUmVuZGVy
VmlkZW8uY3BwIFwKICAgICAgICAgcmVuZGVyaW5nL1JlbmRlck1lZGlhLmNwcAogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24g
ODM1OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMzI5MjIsNjIgKzMyOTIyLDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCIKLQkJCQk+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8
VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKLQkJCQkJPgotCQkJCQk8VG9v
bAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJLz4KLQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b19DRkxpdGV8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgotCQkJCQk+Ci0J
CQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkvPgotCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
LQkJCQkJPgotCQkJCQk8VG9vbAotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJCQkJ
Lz4KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgotCQkJCTxGaWxlQ29uZmlndXJhdGlvbgotCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgot
CQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkv
PgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQkJPEZpbGVDb25maWd1cmF0aW9uCi0JCQkJ
CU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgot
CQkJCQk+Ci0JCQkJCTxUb29sCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQkJCQkv
PgotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQotCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccmVuZGVyaW5nXE1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCi0JCQkJPgot
CQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHJlbmRlcmluZ1xQYWlu
dEluZm8uaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC01NjY4NSw2ICs1NjYyOSwxNCBAQAogCQkJ
CU5hbWU9InNoYWRvdyIKIAkJCQk+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxo
dG1sXHNoYWRvd1xNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+
CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxodG1sXHNoYWRvd1xNZWRpYUNvbnRy
b2xFbGVtZW50cy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwIgogCQkJ
CQk+CiAJCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODM1OTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTkw
Myw2ICs5MDMsOCBAQAogCQk0MTZFNzVCRjBFREY4RkQ3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbFN0
YWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQx
NkU3NUJEMEVERjhGRDcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsU3RhY2suY3BwICovOyB9OwogCQk0
MTZFNzVDQjBFREY5MEM3MDAzNjBFMUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFNzVDOTBFREY5MEM3MDAzNjBF
MUQgLyogU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCTQxNkU3NUNDMEVERjkwQzcwMDM2MEUx
RCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDE2RTc1Q0EwRURGOTBDNzAwMzYwRTFEIC8qIFNjcmlwdENhbGxGcmFt
ZS5jcHAgKi87IH07CisJCTQxNzI1M0FBMTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MTcyNTNBODEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwICov
OyB9OworCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxNzI1M0E5
MTM1NEJCQkMwMDM2MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9OwogCQk0MTg4
NUI5MzExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAv
KiBGb3JtU3VibWlzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTQxODg1Qjk0MTFCNkZEQTYwMDMzODNCQiAvKiBGb3JtU3VibWlzc2lvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTg4NUI5
MjExQjZGREE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3BwICovOyB9OwogCQk0MThBMDZE
MDEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MThBMDZDRTEzM0MwNEQ1MDBDRDM3OUMgLyog
RXZlbnREaXNwYXRjaGVyLmggKi87IH07CkBAIC00MDk0LDggKzQwOTYsNiBAQAogCQlBQkMxMjg3
NzBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQkMxMjg3NjBCMzNBQTZEMDBDNjkzRDUgLyog
UG9wdXBNZW51Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQUJEREZFNzkwQTVDNkU3MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFCRERGRTcz
MEE1QzZFNkYwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi87IH07CiAJCUFCRERGRTdB
MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJEREZFNzQwQTVDNkU3MDAwQTNFMTFEIC8qIFJl
bmRlck1lbnVMaXN0LmggKi87IH07Ci0JCUFCRkU3RTEyMEQzMkZBRjYwMDY2RjREMiAvKiBNZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBQkZFN0UxMDBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwICovOyB9OwotCQlBQkZFN0UxMzBEMzJGQUY2MDA2NkY0RDIgLyogTWVkaWFDb250cm9s
RWxlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEFCRkU3RTExMEQzMkZBRjUwMDY2RjREMiAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5oICovOyB9
OwogCQlBRERGMUFENzEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0aC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQURERjFBRDUxMjU3Q0Q5QTAw
MDNBNzU5IC8qIFJlbmRlclNWR1BhdGguaCAqLzsgfTsKIAkJQjAxNDlFN0QxMUE0QjIxNTAwMTk2
QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5jcHAgKi87IH07CiAJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0lt
YWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi87IH07
CkBAIC03Mzc2LDYgKzczNzYsOCBAQAogCQk0MTZFNzVCRDBFREY4RkQ3MDAzNjBFMUQgLyogU2Ny
aXB0Q2FsbFN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
cmlwdENhbGxTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxNkU3NUM5
MEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTQxNkU3NUNBMEVERjkwQzcwMDM2MEUxRCAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0Q2FsbEZyYW1lLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE3MjUzQTgxMzU0QkJCQzAwMzYwRjJBIC8q
IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDE3MjUzQTkxMzU0QkJCQzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxODg1QjkxMTFCNkZEQTYwMDMzODNCQiAv
KiBGb3JtU3VibWlzc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3Jt
U3VibWlzc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTg4NUI5MjExQjZG
REE2MDAzMzgzQkIgLyogRm9ybVN1Ym1pc3Npb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9ybVN1Ym1pc3Npb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MThBMDZDRTEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAzODUsOCArMTAzODcsNiBAQAogCQlBQkMxMjg3NjBC
MzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQb3B1cE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQUJEREZFNzMwQTVDNkU2RjAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJNZW51TGlzdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBS
ZW5kZXJNZW51TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVy
TWVudUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQUJGRTdFMTAwRDMyRkFG
NTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJQUJGRTdFMTEwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJv
bEVsZW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJv
bEVsZW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUFEREYxQUQ0MTI1N0NE
OUEwMDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlbmRlclNWR1BhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBRERGMUFENTEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0aC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdQYXRoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIwMTQ5RTc5MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVz
aXplci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBc3luY0ltYWdl
UmVzaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ3Miw2ICsxMzQ3
Miw4IEBACiAJCTQxNTBGOUVEMTJCNkUwOTkwMDA4Qzg2MCAvKiBzaGFkb3cgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQxNzI1M0E4MTM1NEJCQkMwMDM2
MEYyQSAvKiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgKi8sCisJCQkJNDE3MjUzQTkxMzU0QkJC
QzAwMzYwRjJBIC8qIE1lZGlhQ29udHJvbEVsZW1lbnRzLmggKi8sCiAJCQkJNDE1N0FGN0YxMkYx
RkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcCAqLywKIAkJCQk0MTU3
QUY3RTEyRjFGQjA0MDBBOEM2RjUgLyogTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuaCAqLywKIAkJ
CQlBNzhFNTI2RDEzNDZCRDE3MDBBRDlDMzEgLyogTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCAqLywK
QEAgLTE5MDYyLDggKzE5MDY0LDYgQEAKIAkJCQlCQ0VBNDgxQjA5N0Q5MzAyMDA5NEM5RTQgLyog
SW5saW5lVGV4dEJveC5oICovLAogCQkJCTJEOTA2NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlv
dXRTdGF0ZS5jcHAgKi8sCiAJCQkJMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0
YXRlLmggKi8sCi0JCQkJQUJGRTdFMTAwRDMyRkFGNTAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcCAqLywKLQkJCQlBQkZFN0UxMTBEMzJGQUY1MDA2NkY0RDIgLyogTWVkaWFDb250
cm9sRWxlbWVudHMuaCAqLywKIAkJCQkzNzc0QUJBMzBGQTIxRUI0MDBBRDdERTkgLyogT3Zlcmxh
cFRlc3RSZXF1ZXN0Q2xpZW50LmggKi8sCiAJCQkJMDg4NTA2N0QxMURBMDQ1QjAwMTgyQjk4IC8q
IFBhaW50SW5mby5oICovLAogCQkJCTA4ODUwNjdFMTFEQTA0NUIwMDE4MkI5OCAvKiBQYWludFBo
YXNlLmggKi8sCkBAIC0yMTYxOCw2ICsyMTYxOCw5IEBACiAJCQkJNjVERjMxRkMwOUQxQ0M2MDAw
MEJFMzI1IC8qIEpTTXV0YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEOUMyQzEw
QzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OUQyNDdGODBENzU3RTM0MDBGREY5NTkgLyogSlNOYXZpZ2F0b3IuaCBpbiBIZWFkZXJzICovLAor
CQkJCUIxRTU0NUUwMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUU1NDVFMjEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUU1NDVF
NDEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTQzOUMzMTE2Q0Y0OTQwMDQ4Qzc1MCAvKiBKU05vZGVD
dXN0b20uaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MTE1QjczMDlGODRDRDYwMENBNEZDMSAvKiBK
U05vZGVGaWx0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjc3MzYyMEMxNzg1M0QwMDEzMkJB
NCAvKiBKU05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMjE5MDUsNyAr
MjE5MDgsNyBAQAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTExQzcwRUY4NkQ0NzAwOUQw
Q0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMx
QkNDNjExMTI0REZDQjAwQkU3MEREIC8qIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQUJGRTdFMTMwRDMyRkFGNjAwNjZGNEQyIC8qIE1lZGlhQ29udHJvbEVsZW1l
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTcyNTNBQjEzNTRCQkJDMDAzNjBGMkEgLyogTWVk
aWFDb250cm9sRWxlbWVudHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNTdBRjgwMTJGMUZCMDQw
MEE4QzZGNSAvKiBNZWRpYUNvbnRyb2xSb290RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyMDVBQjgxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0NDYxM0FEMENENjMzMTAwMEZBREE3NSAvKiBNZWRpYUVycm9yLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIxOTQ3LDYgKzIxOTUwLDkgQEAKIAkJCQk5NzlGNDNENDEwNzVFNDRBMDAwMEY4
M0IgLyogTmF2aWdhdGlvblNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTlDNkU1QTYw
RDc0NjQ1ODAwNjQ0MkU5IC8qIE5hdmlnYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTEyNzE5
QzcwRUVFQzE2ODAwRjYxMjEzIC8qIE5hdmlnYXRvckJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUIxRTU0NTk5MTM0NjI5QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQjFFNTQ1OUIxMzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVz
ZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUIxRTU0NTlEMTM0NjI5
QzEwMDkyQTU0NSAvKiBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCThBMzA5QzlGMTIzOTUwQkUwMENCOTIwNCAvKiBOZXN0aW5nTGV2ZWxJbmNy
ZW1lbnRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2RDM3NDMwQURCQTVERTAwQTQ1NTREIC8q
IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk2MjhEMjE0
QzEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLApA
QCAtMjI4ODgsMTIgKzIyODk0LDYgQEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyog
WFNMVFByb2Nlc3Nvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVB
OTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYw
RkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjFFNTQ1OTkx
MzQ2MjlDMTAwOTJBNTQ1IC8qIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCMUU1NDU5QjEzNDYyOUMxMDA5MkE1NDUgLyogTmF2aWdhdG9yVXNlck1lZGlhRXJy
b3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQjFFNTQ1OUQxMzQ2MjlDMTAwOTJBNTQ1
IC8qIE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJQjFFNTQ1RTAxMzQ2MkIwQjAwOTJBNTQ1IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3Iu
aCBpbiBIZWFkZXJzICovLAotCQkJCUIxRTU0NUUyMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAotCQkJCUIxRTU0NUU0
MTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yNDQ5NCw2ICsyNDQ5NCw5IEBACiAJCQkJQkNEOUMyNjMwQzE3
QUE2NzAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE5RDI0N0Y3MEQ3NTdFMzQwMEZERjk1OSAvKiBKU05hdmlnYXRvci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOUM2RTY0OTBENzQ2NUQ4MDA2NDQyRTkgLyogSlNOYXZpZ2F0b3JDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFFNTQ1REYxMzQ2MkIwQjAwOTJBNTQ1IC8qIEpTTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQjFFNTQ1RTExMzQ2
MkIwQjAwOTJBNTQ1IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlCMUU1NDVFMzEzNDYyQjBCMDA5MkE1NDUgLyogSlNOYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTREQzBEMzcw
OUZFRDA3MzAwN0IwMjM1IC8qIEpTTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQ0Q5QzI2
NDBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0MTE1QjcyMDlGODRDRDYwMENBNEZDMSAvKiBKU05vZGVGaWx0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC0yNDgxNCw3ICsyNDgxNyw3IEBACiAJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYxNUUw
IC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RDVEQzJCMEY0
MjNBNzMwMDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0OUU5MTFDNjBFRjg2RDQ3MDA5RDBDQUYgLyogTWF0cml4VHJhbnNmb3JtT3Bl
cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUFCRkU3RTEyMEQzMkZBRjYwMDY2RjREMiAv
KiBNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MTcyNTNBQTEz
NTRCQkJDMDAzNjBGMkEgLyogTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDE1N0FGODExMkYxRkIwNDAwQThDNkY1IC8qIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MjA1QUI3MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRp
YURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRFMTk1OTIxMEEzOURBQkEwMDIyMEZF
NSAvKiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1NTg5LDkgKzI1
NTkyLDYgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvckxp
YnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8q
IFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5NzdFMkUwRTEyRjBGQzlD
MDBDMTMzNzkgLyogWFNTRmlsdGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIxRTU0NURGMTM0
NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUIxRTU0NUUxMTM0NjJCMEIwMDkyQTU0NSAvKiBKU05hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjFFNTQ1RTMxMzQ2MkIwQjAw
OTJBNTQ1IC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gODM1OTMpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6ODM1OTMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw5NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVsZW1lbnRzLmgiCisKKyNp
bmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2lu
Y2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgorI2luY2x1ZGUgIk1l
ZGlhQ29udHJvbFJvb3RFbGVtZW50LmgiCisjaW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1
ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJveC5oIgorI2luY2x1ZGUgIlJl
bmRlck1lZGlhLmgiCisjaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCisjaW5jbHVkZSAiUmVuZGVy
VGhlbWUuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitI
VE1MTWVkaWFFbGVtZW50KiB0b1BhcmVudE1lZGlhRWxlbWVudChSZW5kZXJPYmplY3QqIG8pCit7
CisgICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKKyAgICBOb2RlKiBtZWRpYU5vZGUgPSBub2Rl
ID8gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCkgOiAwOworICAgIGlmICghbWVkaWFOb2RlIHx8
ICghbWVkaWFOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpICYmICFtZWRpYU5v
ZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphdWRpb1RhZykpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obWVkaWFOb2RlKTsK
K30KKworLy8gRklYTUU6IFRoZXNlIGNvbnN0YW50cyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIHRv
IGJldHRlciBtYXRjaCB0aGUgc2Vla2luZyBpbiB0aGUgUXVpY2tUaW1lIHBsdWctaW4uCitzdGF0
aWMgY29uc3QgZmxvYXQgY1NlZWtSZXBlYXREZWxheSA9IDAuMWY7CitzdGF0aWMgY29uc3QgZmxv
YXQgY1N0ZXBUaW1lID0gMC4wN2Y7CitzdGF0aWMgY29uc3QgZmxvYXQgY1NlZWtUaW1lID0gMC4y
ZjsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitNZWRpYUNvbnRyb2xFbGVt
ZW50OjpNZWRpYUNvbnRyb2xFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
KyAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgbWVkaWFFbGVtZW50LT5kb2N1bWVudCgpKQor
ICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQoreworfQorCitzdGF0aWMgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5U3RyaW5nKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmlu
ZywgcywgKCJkaXNwbGF5IikpOworICAgIHJldHVybiBzOworfQorCit2b2lkIE1lZGlhQ29udHJv
bEVsZW1lbnQ6OnNob3coKQoreworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgLy8gRklYTUU6
IE1ha2UgbW9yZSBlZmZpY2llbnQgPGh0dHA6Ly93ZWJraXQub3JnL2IvNTgxNTc+CisgICAgc3R5
bGUoKS0+cmVtb3ZlUHJvcGVydHkoZGlzcGxheVN0cmluZygpLCBlYyk7Cit9CisKK3ZvaWQgTWVk
aWFDb250cm9sRWxlbWVudDo6aGlkZSgpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAv
LyBGSVhNRTogTWFrZSBtb3JlIGVmZmljaWVudCA8aHR0cDovL3dlYmtpdC5vcmcvYi81ODE1Nz4K
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbm9uZSwgKCJub25lIikpOworICAgIHN0
eWxlKCktPnNldFByb3BlcnR5KGRpc3BsYXlTdHJpbmcoKSwgbm9uZSwgZWMpOworfQorCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2lubGluZSBNZWRpYUNvbnRyb2xQYW5lbEVs
ZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KG1lZGlhRWxlbWVudCkKK3sKK30KKwor
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IE1lZGlhQ29udHJvbFBhbmVsRWxl
bWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICByZXR1
cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChtZWRpYUVsZW1lbnQpKTsK
K30KKworTWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50Ojpk
aXNwbGF5VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhQ29udHJvbHNQYW5lbDsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
aWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCIpKTsKKyAgICByZXR1cm4gaWQ7Cit9
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW5saW5lIE1lZGlhQ29udHJv
bFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKKyAgICA6IE1lZGlhQ29udHJv
bEVsZW1lbnQobWVkaWFFbGVtZW50KQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVt
ZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJl
ZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KG1lZGlhRWxlbWVudCkp
OworICAgIGVsZW1lbnQtPmhpZGUoKTsKKyAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7Cit9
CisKK01lZGlhQ29udHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVy
RWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBNZWRpYVRpbWVsaW5l
Q29udGFpbmVyOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXRp
bWVsaW5lLWNvbnRhaW5lciIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWlu
ZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgeworcHVibGljOgorICAgIFJlbmRlck1lZGlhVm9sdW1l
U2xpZGVyQ29udGFpbmVyKE5vZGUqKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIHZvaWQgbGF5
b3V0KCk7Cit9OworCitSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcjo6UmVuZGVyTWVk
aWFWb2x1bWVTbGlkZXJDb250YWluZXIoTm9kZSogbm9kZSkKKyAgICA6IFJlbmRlckJsb2NrKG5v
ZGUpCit7Cit9CisKK3ZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXI6OmxheW91
dCgpCit7CisgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworICAgIGlmIChzdHlsZSgpLT5kaXNw
bGF5KCkgPT0gTk9ORSB8fCAhcHJldmlvdXNTaWJsaW5nKCkgfHwgIXByZXZpb3VzU2libGluZygp
LT5pc0JveCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZW5kZXJCb3gqIGJ1dHRvbkJveCA9
IHRvUmVuZGVyQm94KHByZXZpb3VzU2libGluZygpKTsKKworICAgIGlmICh2aWV3KCkpCisgICAg
ICAgIHZpZXcoKS0+ZGlzYWJsZUxheW91dFN0YXRlKCk7CisKKyAgICBJbnRQb2ludCBvZmZzZXQg
PSB0aGVtZSgpLT52b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRvbihidXR0b25Cb3gsIElu
dFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpKTsKKyAgICBzZXRYKG9mZnNldC54KCkgKyBidXR0b25C
b3gtPm9mZnNldExlZnQoKSk7CisgICAgc2V0WShvZmZzZXQueSgpICsgYnV0dG9uQm94LT5vZmZz
ZXRUb3AoKSk7CisKKyAgICBpZiAodmlldygpKQorICAgICAgICB2aWV3KCktPmVuYWJsZUxheW91
dFN0YXRlKCk7Cit9CisKK2lubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKKyAgICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVkaWFF
bGVtZW50KQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRh
aW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OmNy
ZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihu
ZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudChtZWRpYUVsZW1lbnQp
KTsKKyAgICBlbGVtZW50LT5oaWRlKCk7CisgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOwor
fQorCitSZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1l
bnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqKQorewor
ICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcih0
aGlzKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWV2ZW50LT5p
c01vdXNlRXZlbnQoKSB8fCBldmVudC0+dHlwZSgpICE9IGV2ZW50TmFtZXMoKS5tb3VzZW91dEV2
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBQb29yIG1hbidzIG1vdXNlbGVhdmUgZXZl
bnQgZGV0ZWN0aW9uLgorICAgIE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxN
b3VzZUV2ZW50Kj4oZXZlbnQpOworICAgIGlmICghbW91c2VFdmVudC0+cmVsYXRlZFRhcmdldCgp
IHx8ICFtb3VzZUV2ZW50LT5yZWxhdGVkVGFyZ2V0KCktPnRvTm9kZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAodGhpcy0+Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00obW91c2VFdmVu
dC0+cmVsYXRlZFRhcmdldCgpLT50b05vZGUoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIGhp
ZGUoKTsKK30KKworCitNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdl
YmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5lciIpKTsKKyAgICByZXR1
cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW5saW5lIE1l
ZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCisgICAgOiBNZWRpYUNvbnRy
b2xFbGVtZW50KG1lZGlhRWxlbWVudCkKKyAgICAsIG1fc3RhdGVCZWluZ0Rpc3BsYXllZChOb3Ro
aW5nKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50
PiBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1l
bnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sU3RhdHVzRGlzcGxh
eUVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxh
eUVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgZWxlbWVudC0+aGlkZSgpOworICAgIHJldHVy
biBlbGVtZW50LnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5
RWxlbWVudDo6dXBkYXRlKCkKK3sKKyAgICAvLyBHZXQgdGhlIG5ldyBzdGF0ZSB0aGF0IHdlJ2xs
IGhhdmUgdG8gZGlzcGxheS4KKyAgICBTdGF0ZUJlaW5nRGlzcGxheWVkIG5ld1N0YXRlVG9EaXNw
bGF5ID0gTm90aGluZzsKKworICAgIGlmIChtZWRpYUVsZW1lbnQoKS0+cmVhZHlTdGF0ZSgpICE9
IEhUTUxNZWRpYUVsZW1lbnQ6OkhBVkVfRU5PVUdIX0RBVEEgJiYgIW1lZGlhRWxlbWVudCgpLT5j
dXJyZW50U3JjKCkuaXNFbXB0eSgpKQorICAgICAgICBuZXdTdGF0ZVRvRGlzcGxheSA9IExvYWRp
bmc7CisgICAgZWxzZSBpZiAobWVkaWFFbGVtZW50KCktPm1vdmllTG9hZFR5cGUoKSA9PSBNZWRp
YVBsYXllcjo6TGl2ZVN0cmVhbSkKKyAgICAgICAgbmV3U3RhdGVUb0Rpc3BsYXkgPSBMaXZlQnJv
YWRjYXN0OworCisgICAgaWYgKG5ld1N0YXRlVG9EaXNwbGF5ID09IG1fc3RhdGVCZWluZ0Rpc3Bs
YXllZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhjZXB0aW9uQ29kZSBlOworCisgICAgaWYg
KG1fc3RhdGVCZWluZ0Rpc3BsYXllZCA9PSBOb3RoaW5nKQorICAgICAgICBzaG93KCk7CisgICAg
ZWxzZSBpZiAobmV3U3RhdGVUb0Rpc3BsYXkgPT0gTm90aGluZykKKyAgICAgICAgaGlkZSgpOwor
CisgICAgbV9zdGF0ZUJlaW5nRGlzcGxheWVkID0gbmV3U3RhdGVUb0Rpc3BsYXk7CisKKyAgICBz
d2l0Y2ggKG1fc3RhdGVCZWluZ0Rpc3BsYXllZCkgeworICAgIGNhc2UgTm90aGluZzoKKyAgICAg
ICAgc2V0SW5uZXJUZXh0KCIiLCBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMb2FkaW5n
OgorICAgICAgICBzZXRJbm5lclRleHQobWVkaWFFbGVtZW50TG9hZGluZ1N0YXRlVGV4dCgpLCBl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMaXZlQnJvYWRjYXN0OgorICAgICAgICBzZXRJ
bm5lclRleHQobWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4dCgpLCBlKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorfQorCitNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRy
b2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAoreworICAgIHJldHVy
biBNZWRpYVN0YXR1c0Rpc3BsYXk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250
cm9scy1zdGF0dXMtZGlzcGxheSIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKK01lZGlhQ29udHJvbElucHV0RWxlbWVudDo6TWVk
aWFDb250cm9sSW5wdXRFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgTWVk
aWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCisgICAgOiBIVE1MSW5wdXRFbGVtZW50
KGlucHV0VGFnLCBtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCksIDAsIGZhbHNlKQorICAgICwgbV9t
ZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQorICAgICwgbV9kaXNwbGF5VHlwZShkaXNwbGF5VHlw
ZSkKK3sKK30KKwordm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNob3coKQoreworICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgc3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkoZGlzcGxheVN0
cmluZygpLCBlYyk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpoaWRlKCkK
K3sKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5n
LCBub25lLCAoIm5vbmUiKSk7CisgICAgc3R5bGUoKS0+c2V0UHJvcGVydHkoZGlzcGxheVN0cmlu
ZygpLCBub25lLCBlYyk7Cit9CisKKwordm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnNl
dERpc3BsYXlUeXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQoreworICAg
IGlmIChkaXNwbGF5VHlwZSA9PSBtX2Rpc3BsYXlUeXBlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBtX2Rpc3BsYXlUeXBlID0gZGlzcGxheVR5cGU7CisgICAgaWYgKFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gcmVuZGVyZXIoKSkKKyAgICAgICAgb2JqZWN0LT5yZXBhaW50KCk7Cit9CisKKy8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW5saW5lIE1lZGlhQ29udHJvbE11dGVCdXR0
b25FbGVtZW50OjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQorICAg
IDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgZGlzcGxheVR5cGUpCit7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50KSB7CisgICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRNdXRlZCghbWVk
aWFFbGVtZW50KCktPm11dGVkKCkpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKKyAgICB9CisKKyAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDo6Y2hhbmdlZE11
dGUoKQoreworICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9s
TXV0ZUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKK3sKKyAgICBzZXREaXNwbGF5
VHlwZShtZWRpYUVsZW1lbnQoKS0+bXV0ZWQoKSA/IE1lZGlhVW5NdXRlQnV0dG9uIDogTWVkaWFN
dXRlQnV0dG9uKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbmxp
bmUgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUGFuZWxN
dXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50KiBjb250cm9scykKKyAgICA6IE1lZGlhQ29udHJvbE11dGVCdXR0b25F
bGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFNdXRlQnV0dG9uKQorICAgICwgbV9jb250cm9scyhj
b250cm9scykKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25F
bGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCogY29udHJv
bHMpCit7CisgICAgQVNTRVJUKGNvbnRyb2xzKTsKKworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xQ
YW5lbE11dGVCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9s
UGFuZWxNdXRlQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQsIGNvbnRyb2xzKSk7CisgICAgYnV0
dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30K
Kwordm9pZCBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2VvdmVyRXZlbnQpCisgICAgICAgIG1fY29udHJvbHMtPnNob3dWb2x1bWVTbGlk
ZXIoKTsKKworICAgIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQYW5l
bE11dGVCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMt
bXV0ZS1idXR0b24iKSk7CisgICAgcmV0dXJuIGlkOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK2lubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9u
RWxlbWVudDo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorICAgIDogTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVs
ZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYU11dGVCdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQdHI8
TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0
dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ck11dGVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIGJ1dHRvbi0+c2V0VHlwZSgi
YnV0dG9uIik7CisgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Cit9CisKK2NvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLW11dGUtYnV0dG9u
IikpOworICAgIHJldHVybiBpZDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCitpbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBs
YXlCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKKyAgICA6IE1l
ZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhUGxheUJ1dHRvbikKK3sK
K30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudD4gTWVkaWFDb250
cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1l
bnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50PiBidXR0b24g
PSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50
KSk7CisgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9uLnJl
bGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgbWVkaWFFbGVtZW50KCktPnRvZ2ds
ZVBsYXlTdGF0ZSgpOworICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgpOworICAgICAgICBldmVu
dC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sUGxheUJ1dHRv
bkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKK3sKKyAgICBzZXREaXNwbGF5VHlwZShtZWRp
YUVsZW1lbnQoKS0+Y2FuUGxheSgpID8gTWVkaWFQbGF5QnV0dG9uIDogTWVkaWFQYXVzZUJ1dHRv
bik7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1dHRvbiIpKTsK
KyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
aW5saW5lIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrQnV0
dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1l
ZGlhRWxlbWVudCwgZGlzcGxheVR5cGUpCisgICAgLCBtX3NlZWtpbmcoZmFsc2UpCisgICAgLCBt
X2NhcHR1cmluZyhmYWxzZSkKKyAgICAsIG1fc2Vla1RpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xT
ZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQpCit7Cit9CisKK3ZvaWQgTWVkaWFDb250
cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQor
eworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkg
eworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKSkgeworICAg
ICAgICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOworICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7CisgICAgICAgIH0KKyAg
ICAgICAgbWVkaWFFbGVtZW50KCktPnBhdXNlKGV2ZW50LT5mcm9tVXNlckdlc3R1cmUoKSk7Cisg
ICAgICAgIG1fc2Vla1RpbWVyLnN0YXJ0UmVwZWF0aW5nKGNTZWVrUmVwZWF0RGVsYXkpOworICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9IGVsc2UgaWYgKGV2ZW50LT50
eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkgeworICAgICAgICBpZiAobV9jYXB0
dXJpbmcpCisgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUo
KSkgeworICAgICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gZmFsc2U7CisgICAgICAgICAgICAg
ICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUoMCk7
CisgICAgICAgICAgICB9CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgICAgIGlmICht
X3NlZWtpbmcgfHwgbV9zZWVrVGltZXIuaXNBY3RpdmUoKSkgeworICAgICAgICAgICAgaWYgKCFt
X3NlZWtpbmcpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCBzdGVwVGltZSA9IGlzRm9yd2FyZEJ1
dHRvbigpID8gY1N0ZXBUaW1lIDogLWNTdGVwVGltZTsKKyAgICAgICAgICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+c2V0Q3VycmVudFRpbWUobWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkgKyBz
dGVwVGltZSwgZWMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zZWVrVGltZXIuc3Rv
cCgpOworICAgICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7CisgICAgICAgICAgICBldmVudC0+
c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xT
ZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVkaWFDb250cm9sU2Vla0J1
dHRvbkVsZW1lbnQ+KikKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIG1fc2Vla2luZyA9
IHRydWU7CisgICAgZmxvYXQgc2Vla1RpbWUgPSBpc0ZvcndhcmRCdXR0b24oKSA/IGNTZWVrVGlt
ZSA6IC1jU2Vla1RpbWU7CisgICAgbWVkaWFFbGVtZW50KCktPnNldEN1cnJlbnRUaW1lKG1lZGlh
RWxlbWVudCgpLT5jdXJyZW50VGltZSgpICsgc2Vla1RpbWUsIGVjKTsKK30KKwordm9pZCBNZWRp
YUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKK3sKKyAgICBpZiAobV9jYXB0dXJp
bmcpIHsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCkpCisg
ICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1cmluZ01vdXNlRXZlbnRz
Tm9kZSgwKTsgICAgICAKKyAgICB9CisgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpkZXRh
Y2goKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbmxpbmUgTWVk
aWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xTZWVrRm9yd2Fy
ZEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorICAgIDogTWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYVNlZWtGb3J3YXJk
QnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9u
RWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xT
ZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRy
b2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgYnV0dG9uLT5z
ZXRUeXBlKCJidXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKworY29u
c3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZvcndhcmQtYnV0dG9uIikp
OworICAgIHJldHVybiBpZDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitpbmxpbmUgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xT
ZWVrQmFja0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorICAg
IDogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYVNlZWtC
YWNrQnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9u
RWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xTZWVr
QmFja0J1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xTZWVr
QmFja0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgYnV0dG9uLT5zZXRUeXBlKCJi
dXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKworY29uc3QgQXRvbWlj
U3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgi
LXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uIikpOworICAgIHJldHVybiBp
ZDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbmxpbmUgTWVkaWFD
b250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVu
dChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVt
ZW50KGVsZW1lbnQsIE1lZGlhUmV3aW5kQnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlh
Q29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1l
bnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCit7CisgICAgUmVmUHRy
PE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOworICAgIGJ1dHRv
bi0+c2V0VHlwZSgiYnV0dG9uIik7CisgICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Cit9CisK
K3ZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpIHsKKyAgICAgICAgbWVkaWFFbGVtZW50KCktPnJld2luZCgzMCk7CisgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOworICAgIH0gICAgCisgICAgSFRNTElucHV0
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK2NvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBj
b25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXJld2luZC1idXR0b24iKSk7CisgICAgcmV0dXJuIGlkOworfQor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2lubGluZSBNZWRpYUNvbnRyb2xS
ZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGlt
ZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQorICAgIDogTWVk
aWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uKQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBSZWZQdHI8TWVk
aWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChtZWRpYUVsZW1l
bnQpKTsKKyAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOworICAgIGJ1dHRvbi0+aGlkZSgp
OworICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbFJl
dHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBl
dmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVu
dCkgeworICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmV0dXJuVG9SZWFsdGltZSgpOworICAgICAg
ICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9CisgICAgSFRNTElucHV0RWxlbWVu
dDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYg
TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgi
LXdlYmtpdC1tZWRpYS1jb250cm9scy1yZXR1cm4tdG8tcmVhbHRpbWUtYnV0dG9uIikpOworICAg
IHJldHVybiBpZDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbmxp
bmUgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpNZWRpYUNv
bnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KQorICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVu
dCwgTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24pCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVk
aWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xU
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBidXR0
b24tPnNldFR5cGUoImJ1dHRvbiIpOworICAgIGJ1dHRvbi0+aGlkZSgpOworICAgIHJldHVybiBi
dXR0b24ucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRp
b25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7Cisg
ICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAg
ICAgbWVkaWFFbGVtZW50KCktPnNldENsb3NlZENhcHRpb25zVmlzaWJsZSghbWVkaWFFbGVtZW50
KCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKKyAgICAgICAgc2V0Q2hlY2tlZChtZWRpYUVs
ZW1lbnQoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOworICAgICAgICB1cGRhdGVEaXNwbGF5
VHlwZSgpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKKyAgICB9CisKKyAg
ICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnVwZGF0ZURp
c3BsYXlUeXBlKCkKK3sKKyAgICBzZXREaXNwbGF5VHlwZShtZWRpYUVsZW1lbnQoKS0+Y2xvc2Vk
Q2FwdGlvbnNWaXNpYmxlKCkgPyBNZWRpYUhpZGVDbG9zZWRDYXB0aW9uc0J1dHRvbiA6IE1lZGlh
U2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRp
YUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lk
KCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgi
LXdlYmtpdC1tZWRpYS1jb250cm9scy10b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbiIpKTsK
KyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwor
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCog
Y29udHJvbHMpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBN
ZWRpYVNsaWRlcikKKyAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCit7Cit9CisKK1Bhc3NSZWZQ
dHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1l
bnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50KiBjb250cm9scykKK3sKKyAgICBBU1NFUlQoY29udHJvbHMpOworCisgICAgUmVm
UHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUgPSBhZG9wdFJlZihuZXcg
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KG1lZGlhRWxlbWVudCwgY29udHJvbHMpKTsKKyAg
ICB0aW1lbGluZS0+c2V0VHlwZSgicmFuZ2UiKTsKKyAgICB0aW1lbGluZS0+c2V0QXR0cmlidXRl
KHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOworICAgIHJldHVybiB0aW1lbGluZS5yZWxlYXNlKCk7
Cit9CisKK3ZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBMZWZ0IGJ1dHRvbiBpcyAwLiBSZWplY3RzIG1v
dXNlIGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1dHRvbi4KKyAgICBpZiAoZXZlbnQtPmlzTW91c2VF
dmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCktPmJ1dHRvbigpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIWF0dGFjaGVkKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZWRvd25FdmVudCkKKyAg
ICAgICAgbWVkaWFFbGVtZW50KCktPmJlZ2luU2NydWJiaW5nKCk7CisKKyAgICBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworCisgICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50IHx8IGV2ZW50LT50eXBl
KCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQtPnR5cGUoKSA9PSBldmVu
dE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGZsb2F0IHRp
bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7CisgICAgaWYg
KHRpbWUgIT0gbWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkpIHsKKyAgICAgICAgLy8gRklY
TUU6IFRoaXMgaXMgZmlyZWQgMyB0aW1lcyBvbiBldmVyeSBjbGljay4gV2Ugc2hvdWxkIG5vdCBi
ZSBkb2luZyB0aGF0IDxodHRwOi93ZWJraXQub3JnL2IvNTgxNjA+LgorICAgICAgICBFeGNlcHRp
b25Db2RlIGVjOworICAgICAgICBtZWRpYUVsZW1lbnQoKS0+c2V0Q3VycmVudFRpbWUodGltZSwg
ZWMpOworICAgIH0KKworICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0gdG9SZW5kZXJTbGlkZXIo
cmVuZGVyZXIoKSk7CisgICAgaWYgKHNsaWRlciAmJiBzbGlkZXItPmluRHJhZ01vZGUoKSkKKyAg
ICAgICAgbV9jb250cm9scy0+dXBkYXRlVGltZURpc3BsYXkoKTsKKworICAgIGlmIChldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCisgICAgICAgIG1lZGlhRWxlbWVu
dCgpLT5lbmRTY3J1YmJpbmcoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1l
bnQ6OnNldFBvc2l0aW9uKGZsb2F0IGN1cnJlbnRUaW1lKSAKK3sKKyAgICBzZXRWYWx1ZShTdHJp
bmc6Om51bWJlcihjdXJyZW50VGltZSkpOworfQorCit2b2lkIE1lZGlhQ29udHJvbFRpbWVsaW5l
RWxlbWVudDo6c2V0RHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCit7CisgICAgc2V0QXR0cmlidXRl
KG1heEF0dHIsIFN0cmluZzo6bnVtYmVyKGlzZmluaXRlKGR1cmF0aW9uKSA/IGR1cmF0aW9uIDog
MCkpOworfQorCisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGltZWxpbmVFbGVt
ZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUiKSk7Cisg
ICAgcmV0dXJuIGlkOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2lu
bGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKKyAgICA6IE1lZGlh
Q29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhVm9sdW1lU2xpZGVyKQorewor
fQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IHNs
aWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KG1lZGlh
RWxlbWVudCkpOworICAgIHNsaWRlci0+c2V0VHlwZSgicmFuZ2UiKTsKKyAgICBzbGlkZXItPnNl
dEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKKyAgICBzbGlkZXItPnNldEF0dHJp
YnV0ZShtYXhBdHRyLCAiMSIpOworICAgIHNsaWRlci0+c2V0QXR0cmlidXRlKHZhbHVlQXR0ciwg
U3RyaW5nOjpudW1iZXIobWVkaWFFbGVtZW50LT52b2x1bWUoKSkpOworICAgIHJldHVybiBzbGlk
ZXIucmVsZWFzZSgpOworfQorCit2b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQoreworICAgIC8vIExlZnQgYnV0dG9u
IGlzIDAuIFJlamVjdHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQgYnV0dG9uLgorICAgIGlm
IChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGV2ZW50
KS0+YnV0dG9uKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghYXR0YWNoZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKKworICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZW91
dEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50KQor
ICAgICAgICByZXR1cm47CisKKyAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7CisgICAgaWYgKHZvbHVtZSAhPSBtZWRpYUVsZW1lbnQo
KS0+dm9sdW1lKCkpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIG1l
ZGlhRWxlbWVudCgpLT5zZXRWb2x1bWUodm9sdW1lLCBlYyk7CisgICAgICAgIEFTU0VSVCghZWMp
OworICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpzZXRW
b2x1bWUoZmxvYXQgdm9sdW1lKQoreworICAgIGlmICh2YWx1ZSgpLnRvRmxvYXQoKSAhPSB2b2x1
bWUpCisgICAgICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZvbHVtZSkpOworfQorCitjb25z
dCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
aWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyIikpOworICAgIHJldHVy
biBpZDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbmxpbmUgTWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
KyAgICA6IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQobWVkaWFFbGVtZW50KQorewor
fQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50
PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6Y3JlYXRlKEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBz
bGlkZXItPnNldFR5cGUoInJhbmdlIik7CisgICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGUocHJlY2lz
aW9uQXR0ciwgImZsb2F0Iik7CisgICAgc2xpZGVyLT5zZXRBdHRyaWJ1dGUobWF4QXR0ciwgIjEi
KTsKKyAgICBzbGlkZXItPnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIFN0cmluZzo6bnVtYmVyKG1l
ZGlhRWxlbWVudC0+dm9sdW1lKCkpKTsKKyAgICByZXR1cm4gc2xpZGVyLnJlbGVhc2UoKTsKK30K
KworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVy
RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4t
dm9sdW1lLXNsaWRlciIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVt
ZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50KiBjb250cm9scykKKyAgICA6
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhRnVsbHNjcmVlbkJ1
dHRvbikKKyAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCit7Cit9CisKK1Bhc3NSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRp
YUNvbnRyb2xSb290RWxlbWVudCogY29udHJvbHMpCit7CisgICAgQVNTRVJUKGNvbnRyb2xzKTsK
KworICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudD4gYnV0dG9u
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50KG1lZGlh
RWxlbWVudCwgY29udHJvbHMpKTsKKyAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOworICAg
IGJ1dHRvbi0+aGlkZSgpOworICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOworfQorCit2b2lk
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2xpY2tFdmVudCkgeworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgLy8gT25s
eSB1c2UgdGhlIG5ldyBmdWxsIHNjcmVlbiBBUEkgaWYgdGhlIGZ1bGxTY3JlZW5FbmFibGVkIHNl
dHRpbmcgaGFzIAorICAgICAgICAvLyBiZWVuIGV4cGxpY2l0bHkgZW5hYmxlZC4gIE90aGVyd2lz
ZSwgdXNlIHRoZSBvbGQgZnVsbHNjcmVlbiBBUEkuICBUaGlzCisgICAgICAgIC8vIGFsbG93cyBh
cHBzIHdoaWNoIGVtYmVkIGEgV2ViVmlldyB0byByZXRhaW4gdGhlIGV4aXN0aW5nIGZ1bGwgc2Ny
ZWVuCisgICAgICAgIC8vIHZpZGVvIGltcGxlbWVudGF0aW9uIHdpdGhvdXQgcmVxdWlyaW5nIHRo
ZW0gdG8gaW1wbGVtZW50IHRoZWlyIG93biBmdWxsIAorICAgICAgICAvLyBzY3JlZW4gYmVoYXZp
b3IuCisgICAgICAgIGlmIChkb2N1bWVudCgpLT5zZXR0aW5ncygpICYmIGRvY3VtZW50KCktPnNl
dHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChkb2N1bWVu
dCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVs
bFNjcmVlbkVsZW1lbnQoKSA9PSBtZWRpYUVsZW1lbnQoKSkgeworICAgICAgICAgICAgICAgIGRv
Y3VtZW50KCktPndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgICAgICAgICBtX2Nv
bnRyb2xzLT5leGl0ZWRGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigwKTsKKyAg
ICAgICAgICAgICAgICBtX2NvbnRyb2xzLT5lbnRlcmVkRnVsbHNjcmVlbigpOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgbWVkaWFFbGVtZW50KCkt
PmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsK
KyAgICB9CisgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7
Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVs
ZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLWJ1
dHRvbiIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVt
ZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQo
bWVkaWFFbGVtZW50LCBNZWRpYVVuTXV0ZUJ1dHRvbikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVs
bHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpYUVsZW1lbnQpCit7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVN
aW5CdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgYnV0dG9uLT5z
ZXRUeXBlKCJidXR0b24iKTsKKyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKwordm9p
ZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBjb2RlID0gMDsK
KyAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldFZvbHVtZSgwLCBjb2RlKTsKKyAgICAgICAgZXZl
bnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAgfQorICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRl
ZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13
ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtbWluLWJ1dHRvbiIpKTsKKyAg
ICByZXR1cm4gaWQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW5s
aW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBt
ZWRpYUVsZW1lbnQpCis6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1l
ZGlhTXV0ZUJ1dHRvbikKK3sKK30KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
Vm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1
dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCit7Cisg
ICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBi
dXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRv
bkVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsK
KyAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKK30KKwordm9pZCBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCog
ZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBjb2RlID0gMDsKKyAgICAgICAgbWVkaWFFbGVt
ZW50KCktPnNldFZvbHVtZSgxLCBjb2RlKTsKKyAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5k
bGVkKCk7CisgICAgfQorICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
ZXZlbnQpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5W
b2x1bWVNYXhCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJv
bHMtZnVsbHNjcmVlbi12b2x1bWUtbWF4LWJ1dHRvbiIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgUmVuZGVyTWVkaWFDb250
cm9sVGltZURpc3BsYXkgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3ggeworcHVibGljOgorICAg
IFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5KE5vZGUqKTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Cit9OworCitSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxh
eTo6UmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXkoTm9kZSogbm9kZSkKKyAgICA6IFJlbmRl
ckZsZXhpYmxlQm94KG5vZGUpCit7Cit9CisKKy8vIFdlIHdhbnQgdGhlIHRpbWVsaW5lIHNsaWRl
ciB0byBiZSBhdCBsZWFzdCAxMDAgcGl4ZWxzIHdpZGUuCisvLyBGSVhNRTogRWxpbWluYXRlIGhh
cmQtY29kZWQgd2lkdGhzIGFsdG9nZXRoZXIuCitzdGF0aWMgY29uc3QgaW50IG1pbldpZHRoVG9E
aXNwbGF5VGltZURpc3BsYXlzID0gNDUgKyAxMDAgKyA0NTsKKwordm9pZCBSZW5kZXJNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheTo6bGF5b3V0KCkKK3sKKyAgICBSZW5kZXJGbGV4aWJsZUJveDo6bGF5
b3V0KCk7CisgICAgUmVuZGVyQm94KiB0aW1lbGluZUNvbnRhaW5lckJveCA9IHBhcmVudEJveCgp
OworICAgIHdoaWxlICh0aW1lbGluZUNvbnRhaW5lckJveCAmJiB0aW1lbGluZUNvbnRhaW5lckJv
eC0+aXNBbm9ueW1vdXMoKSkKKyAgICAgICAgdGltZWxpbmVDb250YWluZXJCb3ggPSB0aW1lbGlu
ZUNvbnRhaW5lckJveC0+cGFyZW50Qm94KCk7CisKKyAgICBpZiAodGltZWxpbmVDb250YWluZXJC
b3ggJiYgdGltZWxpbmVDb250YWluZXJCb3gtPndpZHRoKCkgPCBtaW5XaWR0aFRvRGlzcGxheVRp
bWVEaXNwbGF5cykKKyAgICAgICAgc2V0V2lkdGgoMCk7Cit9CisKK2lubGluZSBNZWRpYUNvbnRy
b2xUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KG1l
ZGlhRWxlbWVudCkKKyAgICAsIG1fY3VycmVudFZhbHVlKDApCit7Cit9CisKK3ZvaWQgTWVkaWFD
b250cm9sVGltZURpc3BsYXlFbGVtZW50OjpzZXRDdXJyZW50VmFsdWUoZmxvYXQgdGltZSkKK3sK
KyAgICBtX2N1cnJlbnRWYWx1ZSA9IHRpbWU7Cit9CisKK1JlbmRlck9iamVjdCogTWVkaWFDb250
cm9sVGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSogYXJlbmEs
IFJlbmRlclN0eWxlKikKK3sKKyAgICByZXR1cm4gbmV3IChhcmVuYSkgUmVuZGVyTWVkaWFDb250
cm9sVGltZURpc3BsYXkodGhpcyk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQ+
IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlh
Q29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKK30KKwor
TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRyb2xUaW1l
UmVtYWluaW5nRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQor
ICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KG1lZGlhRWxlbWVudCkKK3sKK30K
KworTWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3Bs
YXlFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIE1lZGlhVGltZVJl
bWFpbmluZ0Rpc3BsYXk7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVGlt
ZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Cit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29u
dHJvbHMtdGltZS1yZW1haW5pbmctZGlzcGxheSIpKTsKKyAgICByZXR1cm4gaWQ7Cit9CisKKy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlF
bGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudCht
ZWRpYUVsZW1lbnQpKTsKK30KKworTWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVu
dDo6TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50
KiBtZWRpYUVsZW1lbnQpCisgICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQobWVk
aWFFbGVtZW50KQoreworfQorCitNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5OworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1l
ZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29u
c3QKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtp
dC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIpKTsKKyAgICByZXR1cm4gaWQ7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShWSURFTykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAJKHJldmlzaW9uIDgzNTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODgsNyArNzg4
LDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudAogICAgIGlmIChl
dmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgICAgICAvLyBPbmx5IHVzZSB0aGUgbmV3IGZ1bGwgc2NyZWVuIEFQ
SSBpZiB0aGUgZnVsbFNjcmVlbkVuYWJsZWQgc2V0dGluZyBoYXMgCi0gICAgICAgIC8vIGJlZW4g
ZXhwbGljaXRseSBlbmFibGVkLiAgT3RoZXJ3aXNlLCB1c2UgdGhlIG9sZCBmdWxsc2NyZWVuIEFQ
SS4gIFRoaXMKKyAgICAgICAgLy8gYmVlbiBleHBsaWNpdGx5IGVuYWJsZWQuIE90aGVyd2lzZSwg
dXNlIHRoZSBvbGQgZnVsbHNjcmVlbiBBUEkuIFRoaXMKICAgICAgICAgLy8gYWxsb3dzIGFwcHMg
d2hpY2ggZW1iZWQgYSBXZWJWaWV3IHRvIHJldGFpbiB0aGUgZXhpc3RpbmcgZnVsbCBzY3JlZW4K
ICAgICAgICAgLy8gdmlkZW8gaW1wbGVtZW50YXRpb24gd2l0aG91dCByZXF1aXJpbmcgdGhlbSB0
byBpbXBsZW1lbnQgdGhlaXIgb3duIGZ1bGwgCiAgICAgICAgIC8vIHNjcmVlbiBiZWhhdmlvci4K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaAkocmV2aXNpb24gODM1OTMpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oOjgzNTkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBNZWRpYUNvbnRyb2xFbGVtZW50c19oCisjZGVmaW5lIE1l
ZGlhQ29udHJvbEVsZW1lbnRzX2gKKworI2lmIEVOQUJMRShWSURFTykKKworI2luY2x1ZGUgIkhU
TUxEaXZFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgorCisvLyBUaGVz
ZSBhcmUgdGhlIHNoYWRvdyBlbGVtZW50cyB1c2VkIGluIFJlbmRlck1lZGlhCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRXZlbnQ7CitjbGFzcyBGcmFtZTsKK2NsYXNzIE1lZGlhQ29u
dHJvbFJvb3RFbGVtZW50OworCisvLyBNdXN0IG1hdGNoIFdlYktpdFN5c3RlbUludGVyZmFjZS5o
CitlbnVtIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIHsKKyAgICBNZWRpYUZ1bGxzY3JlZW5CdXR0
b24gPSAwLAorICAgIE1lZGlhTXV0ZUJ1dHRvbiwKKyAgICBNZWRpYVBsYXlCdXR0b24sCisgICAg
TWVkaWFTZWVrQmFja0J1dHRvbiwKKyAgICBNZWRpYVNlZWtGb3J3YXJkQnV0dG9uLAorICAgIE1l
ZGlhU2xpZGVyLAorICAgIE1lZGlhU2xpZGVyVGh1bWIsCisgICAgTWVkaWFSZXdpbmRCdXR0b24s
CisgICAgTWVkaWFSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uLAorICAgIE1lZGlhU2hvd0Nsb3NlZENh
cHRpb25zQnV0dG9uLAorICAgIE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uLAorICAgIE1l
ZGlhVW5NdXRlQnV0dG9uLAorICAgIE1lZGlhUGF1c2VCdXR0b24sCisgICAgTWVkaWFUaW1lbGlu
ZUNvbnRhaW5lciwKKyAgICBNZWRpYUN1cnJlbnRUaW1lRGlzcGxheSwKKyAgICBNZWRpYVRpbWVS
ZW1haW5pbmdEaXNwbGF5LAorICAgIE1lZGlhU3RhdHVzRGlzcGxheSwKKyAgICBNZWRpYUNvbnRy
b2xzUGFuZWwsCisgICAgTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIsCisgICAgTWVkaWFWb2x1
bWVTbGlkZXIsCisgICAgTWVkaWFWb2x1bWVTbGlkZXJUaHVtYiwKKyAgICBNZWRpYVZvbHVtZVNs
aWRlck11dGVCdXR0b24sCit9OworCitIVE1MTWVkaWFFbGVtZW50KiB0b1BhcmVudE1lZGlhRWxl
bWVudChSZW5kZXJPYmplY3QqKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitjbGFzcyBNZWRpYUNvbnRyb2xFbGVtZW50IDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKK3B1
YmxpYzoKKyAgICB2b2lkIGhpZGUoKTsKKyAgICB2b2lkIHNob3coKTsKKworICAgIHZpcnR1YWwg
TWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCA9IDA7CisKKyAgICBI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxl
bWVudDsgfQorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFDb250cm9sRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50Kik7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1f
bWVkaWFFbGVtZW50OyAgIAorfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitjbGFzcyBNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxl
bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxF
bGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlh
Q29udHJvbFBhbmVsRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgdmlydHVhbCBNZWRp
YUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKworLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRh
aW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50PiBj
cmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisgICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFs
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7Cit9OworCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckNvbnRhaW5lckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFp
bmVyRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBN
ZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
KTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2
ZW50Kik7CisgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0OworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBN
ZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVt
ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTdGF0dXNE
aXNwbGF5RWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKworICAgIHZvaWQgdXBk
YXRlKCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQo
SFRNTE1lZGlhRWxlbWVudCopOworCisgICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZSBkaXNwbGF5VHlwZSgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworCisgICAgZW51bSBTdGF0ZUJlaW5nRGlzcGxheWVkIHsg
Tm90aGluZywgTG9hZGluZywgTGl2ZUJyb2FkY2FzdCB9OworICAgIFN0YXRlQmVpbmdEaXNwbGF5
ZWQgbV9zdGF0ZUJlaW5nRGlzcGxheWVkOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgOiBwdWJsaWMgSFRNTElu
cHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgdm9pZCBoaWRlKCk7CisgICAgdm9pZCBzaG93KCk7
CisKKyAgICBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGlzcGxheVR5cGU7IH0KKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CisKK3Byb3RlY3RlZDoKKyAgICBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlKTsKKworICAgIHZvaWQgc2V0RGlzcGxheVR5cGUoTWVkaWFDb250cm9sRWxlbWVu
dFR5cGUpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBpc01lZGlhQ29udHJvbEVsZW1l
bnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlz
cGxheVR5cGUoKSB7IH0KKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50Owor
ICAgIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIG1fZGlzcGxheVR5cGU7Cit9OworCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbE11dGVCdXR0b25F
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAg
dm9pZCBjaGFuZ2VkTXV0ZSgpOworCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOworCisKK3ByaXZh
dGU6CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCk7Cit9OworCisvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1
dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVs
ZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQq
KTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50KEhU
TUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCopOworCisgICAgdmlydHVh
bCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKKworICAgIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50KiBtX2NvbnRyb2xzOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+
IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9s
Vm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworCisgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Cit9Owor
CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVu
dD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBl
KCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCopOworCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3Q7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K2NsYXNzIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKTsKKworcHJvdGVjdGVkOgorICAgIE1lZGlhQ29udHJvbFNlZWtCdXR0b25F
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSk7CisKK3By
aXZhdGU6CisgICAgdmlydHVhbCBib29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKyAgICB2b2lkIHNlZWtUaW1lckZpcmVkKFRpbWVy
PE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50PiopOworCisgICAgYm9vbCBtX3NlZWtpbmc7
CisgICAgYm9vbCBtX2NhcHR1cmluZzsKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xTZWVrQnV0dG9u
RWxlbWVudD4gbV9zZWVrVGltZXI7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJkQnV0dG9uRWxlbWVudCA6IHB1Ymxp
YyBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRN
TE1lZGlhRWxlbWVudCopOworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbFNlZWtGb3J3YXJk
QnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNG
b3J3YXJkQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKworLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVs
ZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudD4g
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xT
ZWVrQmFja0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworCisgICAgdmlydHVhbCBi
b29sIGlzRm9yd2FyZEJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Cit9OworCisvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFJld2luZEJ1
dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50PiBj
cmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0
b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9u
RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVt
ZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1
bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xSZXR1
cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisKKyAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKK307ICAgIAor
CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1
dEVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQq
KTsKKworICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZURpc3BsYXlUeXBlKCk7CisKK3ByaXZhdGU6CisgICAgTWVkaWFD
b250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
KTsKKworICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0OworfTsgICAgCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3Mg
TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxl
bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxp
bmVFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbFJvb3RFbGVt
ZW50Kik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwor
ICAgIHZvaWQgc2V0UG9zaXRpb24oZmxvYXQpOworICAgIHZvaWQgc2V0RHVyYXRpb24oZmxvYXQp
OworCitwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50KiwgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQqKTsKKworICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworCisgICAgTWVkaWFDb250cm9s
Um9vdEVsZW1lbnQqIG1fY29udHJvbHM7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQgOiBwdWJsaWMg
TWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVu
dCopOworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKKyAg
ICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CisKK3Byb3RlY3RlZDoKKyAgICBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKK307CisK
Ky8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0
dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudCopOworCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
KworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9sUm9vdEVsZW1lbnQqKTsKKworICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworCisgICAgTWVkaWFD
b250cm9sUm9vdEVsZW1lbnQqIG1fY29udHJvbHM7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJF
bGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlk
ZXJFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOworICAgIAorcHJpdmF0ZToKKyAg
ICBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50Kik7CisgICAgCisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2Ns
YXNzIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50IDogcHVibGlj
IE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50Kik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqKTsKKyAgICAKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworICAgIAorICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVs
ZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7CisgICAg
Citwcml2YXRlOgorICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVt
ZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICAKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKworY2xhc3MgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50IDogcHVi
bGljIE1lZGlhQ29udHJvbEVsZW1lbnQgeworcHVibGljOgorICAgIHZvaWQgc2V0Q3VycmVudFZh
bHVlKGZsb2F0KTsKKyAgICBmbG9hdCBjdXJyZW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2N1
cnJlbnRWYWx1ZTsgfQorCitwcm90ZWN0ZWQ6CisgICAgTWVkaWFDb250cm9sVGltZURpc3BsYXlF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIFJlbmRl
ck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOworCisg
ICAgZmxvYXQgbV9jdXJyZW50VmFsdWU7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKK2NsYXNzIE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudCA6
IHB1YmxpYyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQgeworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudD4g
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBNZWRpYUNvbnRyb2xU
aW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOworCisgICAgdmly
dHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0OworICAgIHZp
cnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworfTsKKwor
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBNZWRpYUNvbnRyb2xDdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxl
bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ3VycmVu
dFRpbWVEaXNwbGF5RWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKKworcHJpdmF0
ZToKKyAgICBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50KEhUTUxNZWRpYUVs
ZW1lbnQqKTsKKworICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5
cGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRv
SWQoKSBjb25zdDsKK307CisgCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK30g
Ly9uYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQorCisjZW5kaWYg
Ly8gTWVkaWFDb250cm9sRWxlbWVudHNfaApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCShyZXZpc2lvbiA4MzU5MykKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1NSw3ICs0NTUsNyBAQCBwcml2YXRlOgogIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi19IC8vbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShWSURFTykKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiA4MzU5
MykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEsOTcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1ZGUgIk1lZGlhQ29udHJvbEVs
ZW1lbnRzLmgiCi0KLSNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCi0jaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgotI2luY2x1ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgotI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5o
IgotI2luY2x1ZGUgIk1lZGlhQ29udHJvbFJvb3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiTW91c2VF
dmVudC5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJGbGV4aWJsZUJveC5o
IgotI2luY2x1ZGUgIlJlbmRlck1lZGlhLmgiCi0jaW5jbHVkZSAiUmVuZGVyU2xpZGVyLmgiCi0j
aW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwotCi1IVE1MTWVkaWFFbGVtZW50KiB0b1BhcmVudE1lZGlhRWxlbWVudChSZW5k
ZXJPYmplY3QqIG8pCi17Ci0gICAgTm9kZSogbm9kZSA9IG8tPm5vZGUoKTsKLSAgICBOb2RlKiBt
ZWRpYU5vZGUgPSBub2RlID8gbm9kZS0+c2hhZG93QW5jZXN0b3JOb2RlKCkgOiAwOwotICAgIGlm
ICghbWVkaWFOb2RlIHx8ICghbWVkaWFOb2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9U
YWcpICYmICFtZWRpYU5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjphdWRpb1RhZykpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50
Kj4obWVkaWFOb2RlKTsKLX0KLQotLy8gRklYTUU6IFRoZXNlIGNvbnN0YW50cyBtYXkgbmVlZCB0
byBiZSB0d2Vha2VkIHRvIGJldHRlciBtYXRjaCB0aGUgc2Vla2luZyBpbiB0aGUgUXVpY2tUaW1l
IHBsdWctaW4uCi1zdGF0aWMgY29uc3QgZmxvYXQgY1NlZWtSZXBlYXREZWxheSA9IDAuMWY7Ci1z
dGF0aWMgY29uc3QgZmxvYXQgY1N0ZXBUaW1lID0gMC4wN2Y7Ci1zdGF0aWMgY29uc3QgZmxvYXQg
Y1NlZWtUaW1lID0gMC4yZjsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1N
ZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRyb2xFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCkKLSAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgbWVkaWFFbGVtZW50
LT5kb2N1bWVudCgpKQotICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQotewotfQot
Ci1zdGF0aWMgY29uc3QgU3RyaW5nJiBkaXNwbGF5U3RyaW5nKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgcywgKCJkaXNwbGF5IikpOwotICAgIHJldHVybiBzOwotfQotCi12
b2lkIE1lZGlhQ29udHJvbEVsZW1lbnQ6OnNob3coKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7
Ci0gICAgLy8gRklYTUU6IE1ha2UgbW9yZSBlZmZpY2llbnQgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
NTgxNTc+Ci0gICAgc3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkoZGlzcGxheVN0cmluZygpLCBlYyk7
Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6aGlkZSgpCi17Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYzsKLSAgICAvLyBGSVhNRTogTWFrZSBtb3JlIGVmZmljaWVudCA8aHR0cDovL3dlYmtp
dC5vcmcvYi81ODE1Nz4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgbm9uZSwgKCJu
b25lIikpOwotICAgIHN0eWxlKCktPnNldFByb3BlcnR5KGRpc3BsYXlTdHJpbmcoKSwgbm9uZSwg
ZWMpOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSBNZWRp
YUNvbnRyb2xQYW5lbEVsZW1lbnQ6Ok1lZGlhQ29udHJvbFBhbmVsRWxlbWVudChIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KG1lZGlhRWxl
bWVudCkKLXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQ+IE1lZGlh
Q29udHJvbFBhbmVsRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudCht
ZWRpYUVsZW1lbnQpKTsKLX0KLQotTWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9s
UGFuZWxFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhQ29u
dHJvbHNQYW5lbDsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xQYW5lbEVs
ZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCIpKTsKLSAg
ICByZXR1cm4gaWQ7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotaW5s
aW5lIE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVGlt
ZWxpbmVDb250YWluZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAg
ICA6IE1lZGlhQ29udHJvbEVsZW1lbnQobWVkaWFFbGVtZW50KQotewotfQotCi1QYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudD4gTWVkaWFDb250cm9sVGltZWxp
bmVDb250YWluZXJFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50
KQotewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1lbnQ+IGVs
ZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50
KG1lZGlhRWxlbWVudCkpOwotICAgIGVsZW1lbnQtPmhpZGUoKTsKLSAgICByZXR1cm4gZWxlbWVu
dC5yZWxlYXNlKCk7Ci19Ci0KLU1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIE1lZGlhQ29udHJvbFRp
bWVsaW5lQ29udGFpbmVyRWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25zdAotewotICAgIHJldHVy
biBNZWRpYVRpbWVsaW5lQ29udGFpbmVyOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlh
Q29udHJvbFRpbWVsaW5lQ29udGFpbmVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAot
ewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1l
ZGlhLWNvbnRyb2xzLXRpbWVsaW5lLWNvbnRhaW5lciIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgUmVuZGVyTWVkaWFWb2x1
bWVTbGlkZXJDb250YWluZXIgOiBwdWJsaWMgUmVuZGVyQmxvY2sgewotcHVibGljOgotICAgIFJl
bmRlck1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKE5vZGUqKTsKLQotcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci19OwotCi1SZW5kZXJNZWRpYVZvbHVtZVNsaWRlckNvbnRh
aW5lcjo6UmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoTm9kZSogbm9kZSkKLSAgICA6
IFJlbmRlckJsb2NrKG5vZGUpCi17Ci19Ci0KLXZvaWQgUmVuZGVyTWVkaWFWb2x1bWVTbGlkZXJD
b250YWluZXI6OmxheW91dCgpCi17Ci0gICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOwotICAgIGlm
IChzdHlsZSgpLT5kaXNwbGF5KCkgPT0gTk9ORSB8fCAhcHJldmlvdXNTaWJsaW5nKCkgfHwgIXBy
ZXZpb3VzU2libGluZygpLT5pc0JveCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZW5kZXJC
b3gqIGJ1dHRvbkJveCA9IHRvUmVuZGVyQm94KHByZXZpb3VzU2libGluZygpKTsKLQotICAgIGlm
ICh2aWV3KCkpCi0gICAgICAgIHZpZXcoKS0+ZGlzYWJsZUxheW91dFN0YXRlKCk7Ci0KLSAgICBJ
bnRQb2ludCBvZmZzZXQgPSB0aGVtZSgpLT52b2x1bWVTbGlkZXJPZmZzZXRGcm9tTXV0ZUJ1dHRv
bihidXR0b25Cb3gsIEludFNpemUod2lkdGgoKSwgaGVpZ2h0KCkpKTsKLSAgICBzZXRYKG9mZnNl
dC54KCkgKyBidXR0b25Cb3gtPm9mZnNldExlZnQoKSk7Ci0gICAgc2V0WShvZmZzZXQueSgpICsg
YnV0dG9uQm94LT5vZmZzZXRUb3AoKSk7Ci0KLSAgICBpZiAodmlldygpKQotICAgICAgICB2aWV3
KCktPmVuYWJsZUxheW91dFN0YXRlKCk7Ci19Ci0KLWlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50OjpNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJF
bGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJv
bEVsZW1lbnQobWVkaWFFbGVtZW50KQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZv
bHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRh
aW5lckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0g
ICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ+IGVsZW1l
bnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyQ29udGFpbmVyRWxlbWVu
dChtZWRpYUVsZW1lbnQpKTsKLSAgICBlbGVtZW50LT5oaWRlKCk7Ci0gICAgcmV0dXJuIGVsZW1l
bnQucmVsZWFzZSgpOwotfQotCi1SZW5kZXJPYmplY3QqIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVu
ZGVyU3R5bGUqKQotewotICAgIHJldHVybiBuZXcgKGFyZW5hKSBSZW5kZXJNZWRpYVZvbHVtZVNs
aWRlckNvbnRhaW5lcih0aGlzKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAg
ICBpZiAoIWV2ZW50LT5pc01vdXNlRXZlbnQoKSB8fCBldmVudC0+dHlwZSgpICE9IGV2ZW50TmFt
ZXMoKS5tb3VzZW91dEV2ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBQb29yIG1hbidz
IG1vdXNlbGVhdmUgZXZlbnQgZGV0ZWN0aW9uLgotICAgIE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQg
PSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4oZXZlbnQpOwotICAgIGlmICghbW91c2VFdmVudC0+
cmVsYXRlZFRhcmdldCgpIHx8ICFtb3VzZUV2ZW50LT5yZWxhdGVkVGFyZ2V0KCktPnRvTm9kZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodGhpcy0+Y29udGFpbnNJbmNsdWRpbmdTaGFk
b3dET00obW91c2VFdmVudC0+cmVsYXRlZFRhcmdldCgpLT50b05vZGUoKSkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGhpZGUoKTsKLX0KLQotCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJDb250YWluZXJFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyOwotfQotCi1jb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQ6OnNo
YWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVyLWNvbnRhaW5l
ciIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotaW5saW5lIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50OjpNZWRpYUNvbnRy
b2xTdGF0dXNEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0g
ICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KG1lZGlhRWxlbWVudCkKLSAgICAsIG1fc3RhdGVCZWlu
Z0Rpc3BsYXllZChOb3RoaW5nKQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFN0YXR1
c0Rpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6Y3JlYXRl
KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLXsKLSAgICBSZWZQdHI8TWVkaWFDb250
cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250
cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQobWVkaWFFbGVtZW50KSk7Ci0gICAgZWxlbWVudC0+aGlk
ZSgpOwotICAgIHJldHVybiBlbGVtZW50LnJlbGVhc2UoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRy
b2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6dXBkYXRlKCkKLXsKLSAgICAvLyBHZXQgdGhlIG5ldyBz
dGF0ZSB0aGF0IHdlJ2xsIGhhdmUgdG8gZGlzcGxheS4KLSAgICBTdGF0ZUJlaW5nRGlzcGxheWVk
IG5ld1N0YXRlVG9EaXNwbGF5ID0gTm90aGluZzsKLQotICAgIGlmIChtZWRpYUVsZW1lbnQoKS0+
cmVhZHlTdGF0ZSgpICE9IEhUTUxNZWRpYUVsZW1lbnQ6OkhBVkVfRU5PVUdIX0RBVEEgJiYgIW1l
ZGlhRWxlbWVudCgpLT5jdXJyZW50U3JjKCkuaXNFbXB0eSgpKQotICAgICAgICBuZXdTdGF0ZVRv
RGlzcGxheSA9IExvYWRpbmc7Ci0gICAgZWxzZSBpZiAobWVkaWFFbGVtZW50KCktPm1vdmllTG9h
ZFR5cGUoKSA9PSBNZWRpYVBsYXllcjo6TGl2ZVN0cmVhbSkKLSAgICAgICAgbmV3U3RhdGVUb0Rp
c3BsYXkgPSBMaXZlQnJvYWRjYXN0OwotCi0gICAgaWYgKG5ld1N0YXRlVG9EaXNwbGF5ID09IG1f
c3RhdGVCZWluZ0Rpc3BsYXllZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRXhjZXB0aW9uQ29k
ZSBlOwotCi0gICAgaWYgKG1fc3RhdGVCZWluZ0Rpc3BsYXllZCA9PSBOb3RoaW5nKQotICAgICAg
ICBzaG93KCk7Ci0gICAgZWxzZSBpZiAobmV3U3RhdGVUb0Rpc3BsYXkgPT0gTm90aGluZykKLSAg
ICAgICAgaGlkZSgpOwotCi0gICAgbV9zdGF0ZUJlaW5nRGlzcGxheWVkID0gbmV3U3RhdGVUb0Rp
c3BsYXk7Ci0KLSAgICBzd2l0Y2ggKG1fc3RhdGVCZWluZ0Rpc3BsYXllZCkgewotICAgIGNhc2Ug
Tm90aGluZzoKLSAgICAgICAgc2V0SW5uZXJUZXh0KCIiLCBlKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBMb2FkaW5nOgotICAgICAgICBzZXRJbm5lclRleHQobWVkaWFFbGVtZW50TG9hZGlu
Z1N0YXRlVGV4dCgpLCBlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBMaXZlQnJvYWRjYXN0
OgotICAgICAgICBzZXRJbm5lclRleHQobWVkaWFFbGVtZW50TGl2ZUJyb2FkY2FzdFN0YXRlVGV4
dCgpLCBlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCi1NZWRpYUNvbnRyb2xFbGVtZW50
VHlwZSBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxlbWVudDo6ZGlzcGxheVR5cGUoKSBjb25z
dAotewotICAgIHJldHVybiBNZWRpYVN0YXR1c0Rpc3BsYXk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFDb250cm9sU3RhdHVzRGlzcGxheUVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkg
Y29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdl
YmtpdC1tZWRpYS1jb250cm9scy1zdGF0dXMtZGlzcGxheSIpKTsKLSAgICByZXR1cm4gaWQ7Ci19
Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAKLU1lZGlhQ29udHJvbElu
cHV0RWxlbWVudDo6TWVkaWFDb250cm9sSW5wdXRFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCi0gICAgOiBI
VE1MSW5wdXRFbGVtZW50KGlucHV0VGFnLCBtZWRpYUVsZW1lbnQtPmRvY3VtZW50KCksIDAsIGZh
bHNlKQotICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50KQotICAgICwgbV9kaXNwbGF5
VHlwZShkaXNwbGF5VHlwZSkKLXsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6
OnNob3coKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgc3R5bGUoKS0+cmVtb3ZlUHJv
cGVydHkoZGlzcGxheVN0cmluZygpLCBlYyk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sSW5wdXRF
bGVtZW50OjpoaWRlKCkKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBub25lLCAoIm5vbmUiKSk7Ci0gICAgc3R5bGUoKS0+c2V0UHJvcGVy
dHkoZGlzcGxheVN0cmluZygpLCBub25lLCBlYyk7Ci19Ci0KLQotdm9pZCBNZWRpYUNvbnRyb2xJ
bnB1dEVsZW1lbnQ6OnNldERpc3BsYXlUeXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3Bs
YXlUeXBlKQotewotICAgIGlmIChkaXNwbGF5VHlwZSA9PSBtX2Rpc3BsYXlUeXBlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2Rpc3BsYXlUeXBlID0gZGlzcGxheVR5cGU7Ci0gICAgaWYgKFJl
bmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5yZXBhaW50
KCk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotaW5saW5lIE1lZGlh
Q29udHJvbE11dGVCdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRp
c3BsYXlUeXBlKQotICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwg
ZGlzcGxheVR5cGUpCi17Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQotewotICAgIGlmIChldmVudC0+dHlw
ZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgp
LT5zZXRNdXRlZCghbWVkaWFFbGVtZW50KCktPm11dGVkKCkpOwotICAgICAgICBldmVudC0+c2V0
RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0KLSAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKGV2ZW50KTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxl
bWVudDo6Y2hhbmdlZE11dGUoKQotewotICAgIHVwZGF0ZURpc3BsYXlUeXBlKCk7Ci19Ci0KLXZv
aWQgTWVkaWFDb250cm9sTXV0ZUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKLXsK
LSAgICBzZXREaXNwbGF5VHlwZShtZWRpYUVsZW1lbnQoKS0+bXV0ZWQoKSA/IE1lZGlhVW5NdXRl
QnV0dG9uIDogTWVkaWFNdXRlQnV0dG9uKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1pbmxpbmUgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudDo6TWVk
aWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQsIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50KiBjb250cm9scykKLSAgICA6IE1lZGlhQ29u
dHJvbE11dGVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFNdXRlQnV0dG9uKQotICAg
ICwgbV9jb250cm9scyhjb250cm9scykKLXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQ
YW5lbE11dGVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRyb2xSb290
RWxlbWVudCogY29udHJvbHMpCi17Ci0gICAgQVNTRVJUKGNvbnRyb2xzKTsKLQotICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihu
ZXcgTWVkaWFDb250cm9sUGFuZWxNdXRlQnV0dG9uRWxlbWVudChtZWRpYUVsZW1lbnQsIGNvbnRy
b2xzKSk7Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKLSAgICByZXR1cm4gYnV0dG9u
LnJlbGVhc2UoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoZXZlbnQtPnR5
cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2VvdmVyRXZlbnQpCi0gICAgICAgIG1fY29udHJvbHMt
PnNob3dWb2x1bWVTbGlkZXIoKTsKLQotICAgIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBN
ZWRpYUNvbnRyb2xQYW5lbE11dGVCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQt
bWVkaWEtY29udHJvbHMtbXV0ZS1idXR0b24iKSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJNdXRlQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRv
bkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250
cm9sTXV0ZUJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYU11dGVCdXR0b24pCi17Ci19
Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRvbkVsZW1lbnQ+
IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1l
ZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVudCkpOwotICAgIGJ1
dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7Ci0gICAgcmV0dXJuIGJ1dHRvbi5yZWxlYXNlKCk7Ci19
Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyTXV0ZUJ1dHRv
bkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xp
ZGVyLW11dGUtYnV0dG9uIikpOwotICAgIHJldHVybiBpZDsKLX0KLQotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi1pbmxpbmUgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFBsYXlCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlh
UGxheUJ1dHRvbikKLXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxl
bWVudD4gTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25F
bGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sUGxheUJ1dHRvbkVsZW1l
bnQobWVkaWFFbGVtZW50KSk7Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKLSAgICBy
ZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xQbGF5QnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKGV2
ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFF
bGVtZW50KCktPnRvZ2dsZVBsYXlTdGF0ZSgpOwotICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgp
OwotICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAgSFRNTElu
cHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci19Ci0KLXZvaWQgTWVkaWFD
b250cm9sUGxheUJ1dHRvbkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKLXsKLSAgICBzZXRE
aXNwbGF5VHlwZShtZWRpYUVsZW1lbnQoKS0+Y2FuUGxheSgpID8gTWVkaWFQbGF5QnV0dG9uIDog
TWVkaWFQYXVzZUJ1dHRvbik7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9s
UGxheUJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1w
bGF5LWJ1dHRvbiIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotaW5saW5lIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50OjpNZWRp
YUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQs
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKQotICAgIDogTWVkaWFDb250cm9s
SW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgZGlzcGxheVR5cGUpCi0gICAgLCBtX3NlZWtpbmco
ZmFsc2UpCi0gICAgLCBtX2NhcHR1cmluZyhmYWxzZSkKLSAgICAsIG1fc2Vla1RpbWVyKHRoaXMs
ICZNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQpCi17Ci19Ci0K
LXZvaWQgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIo
RXZlbnQqIGV2ZW50KQotewotICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5t
b3VzZWRvd25FdmVudCkgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+
ZnJhbWUoKSkgewotICAgICAgICAgICAgbV9jYXB0dXJpbmcgPSB0cnVlOwotICAgICAgICAgICAg
ZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c05vZGUodGhpcyk7
Ci0gICAgICAgIH0KLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnBhdXNlKGV2ZW50LT5mcm9tVXNl
ckdlc3R1cmUoKSk7Ci0gICAgICAgIG1fc2Vla1RpbWVyLnN0YXJ0UmVwZWF0aW5nKGNTZWVrUmVw
ZWF0RGVsYXkpOwotICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9IGVs
c2UgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNldXBFdmVudCkgewotICAg
ICAgICBpZiAobV9jYXB0dXJpbmcpCi0gICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKSkgewotICAgICAgICAgICAgICAgIG1fY2FwdHVyaW5nID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZXRDYXB0dXJpbmdNb3Vz
ZUV2ZW50c05vZGUoMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7
Ci0gICAgICAgIGlmIChtX3NlZWtpbmcgfHwgbV9zZWVrVGltZXIuaXNBY3RpdmUoKSkgewotICAg
ICAgICAgICAgaWYgKCFtX3NlZWtpbmcpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCBzdGVwVGlt
ZSA9IGlzRm9yd2FyZEJ1dHRvbigpID8gY1N0ZXBUaW1lIDogLWNTdGVwVGltZTsKLSAgICAgICAg
ICAgICAgICBtZWRpYUVsZW1lbnQoKS0+c2V0Q3VycmVudFRpbWUobWVkaWFFbGVtZW50KCktPmN1
cnJlbnRUaW1lKCkgKyBzdGVwVGltZSwgZWMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
bV9zZWVrVGltZXIuc3RvcCgpOwotICAgICAgICAgICAgbV9zZWVraW5nID0gZmFsc2U7Ci0gICAg
ICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLX0KLQotdm9p
ZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6c2Vla1RpbWVyRmlyZWQoVGltZXI8TWVk
aWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+KikKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjOwot
ICAgIG1fc2Vla2luZyA9IHRydWU7Ci0gICAgZmxvYXQgc2Vla1RpbWUgPSBpc0ZvcndhcmRCdXR0
b24oKSA/IGNTZWVrVGltZSA6IC1jU2Vla1RpbWU7Ci0gICAgbWVkaWFFbGVtZW50KCktPnNldEN1
cnJlbnRUaW1lKG1lZGlhRWxlbWVudCgpLT5jdXJyZW50VGltZSgpICsgc2Vla1RpbWUsIGVjKTsK
LX0KLQotdm9pZCBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudDo6ZGV0YWNoKCkKLXsKLSAg
ICBpZiAobV9jYXB0dXJpbmcpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50
KCktPmZyYW1lKCkpCi0gICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNldENhcHR1
cmluZ01vdXNlRXZlbnRzTm9kZSgwKTsgICAgICAKLSAgICB9Ci0gICAgTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50OjpkZXRhY2goKTsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50OjpNZWRpYUNv
bnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50KQotICAgIDogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50LCBN
ZWRpYVNlZWtGb3J3YXJkQnV0dG9uKQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFNl
ZWtGb3J3YXJkQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVt
ZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotewotICAgIFJlZlB0
cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVm
KG5ldyBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7
Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKLSAgICByZXR1cm4gYnV0dG9uLnJlbGVh
c2UoKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1
dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWZv
cndhcmQtYnV0dG9uIikpOwotICAgIHJldHVybiBpZDsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1pbmxpbmUgTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50
OjpNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQobWVkaWFFbGVt
ZW50LCBNZWRpYVNlZWtCYWNrQnV0dG9uKQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJv
bFNlZWtCYWNrQnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVtZW50
OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotewotICAgIFJlZlB0cjxN
ZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9IGFkb3B0UmVmKG5ldyBN
ZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7Ci0gICAgYnV0
dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKLSAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKLX0K
LQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xTZWVrQmFja0J1dHRvbkVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uIikp
OwotICAgIHJldHVybiBpZDsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1pbmxpbmUgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9sUmV3
aW5kQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBlbGVtZW50KQotICAgIDogTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50KGVsZW1lbnQsIE1lZGlhUmV3aW5kQnV0dG9uKQotewotfQotCi1Q
YXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29udHJvbFJl
d2luZEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQp
Ci17Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1lbnQ+IGJ1dHRvbiA9
IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSZXdpbmRCdXR0b25FbGVtZW50KG1lZGlhRWxlbWVu
dCkpOwotICAgIGJ1dHRvbi0+c2V0VHlwZSgiYnV0dG9uIik7Ci0gICAgcmV0dXJuIGJ1dHRvbi5y
ZWxlYXNlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkg
PT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnJl
d2luZCgzMCk7Ci0gICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwotICAgIH0gICAg
Ci0gICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci19Ci0K
LWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUmV3aW5kQnV0dG9uRWxlbWVudDo6c2hh
ZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3Ry
aW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRyb2xzLXJld2luZC1idXR0b24iKSk7Ci0gICAg
cmV0dXJuIGlkOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWlubGlu
ZSBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxlbWVudDo6TWVkaWFDb250cm9s
UmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50KQotICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVtZW50KG1lZGlhRWxlbWVudCwgTWVkaWFS
ZXR1cm5Ub1JlYWx0aW1lQnV0dG9uKQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJl
dHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1l
QnV0dG9uRWxlbWVudDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLXsK
LSAgICBSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ+IGJ1
dHRvbiA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xSZXR1cm5Ub1JlYWx0aW1lQnV0dG9uRWxl
bWVudChtZWRpYUVsZW1lbnQpKTsKLSAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwotICAg
IGJ1dHRvbi0+aGlkZSgpOwotICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwotfQotCi12b2lk
IE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+cmV0dXJuVG9SZWFs
dGltZSgpOwotICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAg
SFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7Ci19Ci0KLWNvbnN0
IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRvbkVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1yZXR1cm4tdG8tcmVhbHRpbWUt
YnV0dG9uIikpOwotICAgIHJldHVybiBpZDsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi1pbmxpbmUgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoSFRN
TE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sSW5wdXRFbGVt
ZW50KG1lZGlhRWxlbWVudCwgTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24pCi17Ci19Ci0K
LVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50
PiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJv
bFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3
IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudChtZWRpYUVsZW1l
bnQpKTsKLSAgICBidXR0b24tPnNldFR5cGUoImJ1dHRvbiIpOwotICAgIGJ1dHRvbi0+aGlkZSgp
OwotICAgIHJldHVybiBidXR0b24ucmVsZWFzZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldENsb3NlZENhcHRpb25zVmlzaWJs
ZSghbWVkaWFFbGVtZW50KCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKLSAgICAgICAgc2V0
Q2hlY2tlZChtZWRpYUVsZW1lbnQoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOwotICAgICAg
ICB1cGRhdGVEaXNwbGF5VHlwZSgpOwotICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQo
KTsKLSAgICB9Ci0KLSAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2
ZW50KTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVs
ZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKLXsKLSAgICBzZXREaXNwbGF5VHlwZShtZWRpYUVs
ZW1lbnQoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgPyBNZWRpYUhpZGVDbG9zZWRDYXB0aW9u
c0J1dHRvbiA6IE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uKTsKLX0KLQotY29uc3QgQXRv
bWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy10b2dnbGUtY2xvc2VkLWNhcHRp
b25zLWJ1dHRvbiIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpNZWRpYUNvbnRyb2xU
aW1lbGluZUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50LCBNZWRpYUNvbnRy
b2xSb290RWxlbWVudCogY29udHJvbHMpCi0gICAgOiBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQo
bWVkaWFFbGVtZW50LCBNZWRpYVNsaWRlcikKLSAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCi17
Ci19Ci0KLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50PiBNZWRpYUNvbnRy
b2xUaW1lbGluZUVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQs
IE1lZGlhQ29udHJvbFJvb3RFbGVtZW50KiBjb250cm9scykKLXsKLSAgICBBU1NFUlQoY29udHJv
bHMpOwotCi0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudD4gdGltZWxpbmUg
PSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KG1lZGlhRWxlbWVudCwg
Y29udHJvbHMpKTsKLSAgICB0aW1lbGluZS0+c2V0VHlwZSgicmFuZ2UiKTsKLSAgICB0aW1lbGlu
ZS0+c2V0QXR0cmlidXRlKHByZWNpc2lvbkF0dHIsICJmbG9hdCIpOwotICAgIHJldHVybiB0aW1l
bGluZS5yZWxlYXNlKCk7Ci19Ci0KLXZvaWQgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICAvLyBMZWZ0IGJ1dHRvbiBp
cyAwLiBSZWplY3RzIG1vdXNlIGV2ZW50cyBub3QgZnJvbSBsZWZ0IGJ1dHRvbi4KLSAgICBpZiAo
ZXZlbnQtPmlzTW91c2VFdmVudCgpICYmIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQqPihldmVudCkt
PmJ1dHRvbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWF0dGFjaGVkKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZWRvd25FdmVudCkKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPmJlZ2luU2NydWJiaW5nKCk7Ci0K
LSAgICBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQp
OwotCi0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50
IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1vdXNlb3V0RXZlbnQgfHwgZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGZsb2F0IHRpbWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3Vi
bGUoKSk7Ci0gICAgaWYgKHRpbWUgIT0gbWVkaWFFbGVtZW50KCktPmN1cnJlbnRUaW1lKCkpIHsK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgZmlyZWQgMyB0aW1lcyBvbiBldmVyeSBjbGljay4g
V2Ugc2hvdWxkIG5vdCBiZSBkb2luZyB0aGF0IDxodHRwOi93ZWJraXQub3JnL2IvNTgxNjA+Lgot
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+c2V0Q3Vy
cmVudFRpbWUodGltZSwgZWMpOwotICAgIH0KLQotICAgIFJlbmRlclNsaWRlciogc2xpZGVyID0g
dG9SZW5kZXJTbGlkZXIocmVuZGVyZXIoKSk7Ci0gICAgaWYgKHNsaWRlciAmJiBzbGlkZXItPmlu
RHJhZ01vZGUoKSkKLSAgICAgICAgbV9jb250cm9scy0+dXBkYXRlVGltZURpc3BsYXkoKTsKLQot
ICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXVwRXZlbnQpCi0gICAg
ICAgIG1lZGlhRWxlbWVudCgpLT5lbmRTY3J1YmJpbmcoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRy
b2xUaW1lbGluZUVsZW1lbnQ6OnNldFBvc2l0aW9uKGZsb2F0IGN1cnJlbnRUaW1lKSAKLXsKLSAg
ICBzZXRWYWx1ZShTdHJpbmc6Om51bWJlcihjdXJyZW50VGltZSkpOwotfQotCi12b2lkIE1lZGlh
Q29udHJvbFRpbWVsaW5lRWxlbWVudDo6c2V0RHVyYXRpb24oZmxvYXQgZHVyYXRpb24pCi17Ci0g
ICAgc2V0QXR0cmlidXRlKG1heEF0dHIsIFN0cmluZzo6bnVtYmVyKGlzZmluaXRlKGR1cmF0aW9u
KSA/IGR1cmF0aW9uIDogMCkpOwotfQotCi0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sVGltZWxpbmVFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Ci17Ci0gICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMt
dGltZWxpbmUiKSk7Ci0gICAgcmV0dXJuIGlkOwotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLWlubGluZSBNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50OjpNZWRp
YUNvbnRyb2xWb2x1bWVTbGlkZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVu
dCkKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1lZGlhVm9s
dW1lU2xpZGVyKQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQ+IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFF
bGVtZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNs
aWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50KG1lZGlhRWxlbWVudCkpOwotICAgIHNsaWRlci0+c2V0VHlwZSgicmFuZ2UiKTsK
LSAgICBzbGlkZXItPnNldEF0dHJpYnV0ZShwcmVjaXNpb25BdHRyLCAiZmxvYXQiKTsKLSAgICBz
bGlkZXItPnNldEF0dHJpYnV0ZShtYXhBdHRyLCAiMSIpOwotICAgIHNsaWRlci0+c2V0QXR0cmli
dXRlKHZhbHVlQXR0ciwgU3RyaW5nOjpudW1iZXIobWVkaWFFbGVtZW50LT52b2x1bWUoKSkpOwot
ICAgIHJldHVybiBzbGlkZXIucmVsZWFzZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbFZvbHVt
ZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQotewotICAg
IC8vIExlZnQgYnV0dG9uIGlzIDAuIFJlamVjdHMgbW91c2UgZXZlbnRzIG5vdCBmcm9tIGxlZnQg
YnV0dG9uLgotICAgIGlmIChldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgc3RhdGljX2Nhc3Q8TW91
c2VFdmVudCo+KGV2ZW50KS0+YnV0dG9uKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICgh
YXR0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTWVkaWFDb250cm9sSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKLQotICAgIGlmIChldmVudC0+dHlwZSgp
ID09IGV2ZW50TmFtZXMoKS5tb3VzZW92ZXJFdmVudCB8fCBldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5tb3VzZW91dEV2ZW50IHx8IGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLm1v
dXNlbW92ZUV2ZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBmbG9hdCB2b2x1bWUgPSBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7Ci0gICAgaWYgKHZvbHVtZSAh
PSBtZWRpYUVsZW1lbnQoKS0+dm9sdW1lKCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5zZXRWb2x1bWUodm9sdW1lLCBlYyk7Ci0gICAg
ICAgIEFTU0VSVCghZWMpOwotICAgIH0KLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xWb2x1bWVTbGlk
ZXJFbGVtZW50OjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQotewotICAgIGlmICh2YWx1ZSgpLnRv
RmxvYXQoKSAhPSB2b2x1bWUpCi0gICAgICAgIHNldFZhbHVlKFN0cmluZzo6bnVtYmVyKHZvbHVt
ZSkpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVs
ZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy12b2x1bWUtc2xpZGVy
IikpOwotICAgIHJldHVybiBpZDsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi1pbmxpbmUgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ6Ok1l
ZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCkKLSAgICA6IE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQobWVk
aWFFbGVtZW50KQotewotfQotCi1QYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVTbGlkZXJFbGVtZW50PiBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVu
dDo6Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLXsKLSAgICBSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNsaWRlckVsZW1lbnQ+IHNsaWRlciA9IGFkb3B0
UmVmKG5ldyBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lU2xpZGVyRWxlbWVudChtZWRpYUVs
ZW1lbnQpKTsKLSAgICBzbGlkZXItPnNldFR5cGUoInJhbmdlIik7Ci0gICAgc2xpZGVyLT5zZXRB
dHRyaWJ1dGUocHJlY2lzaW9uQXR0ciwgImZsb2F0Iik7Ci0gICAgc2xpZGVyLT5zZXRBdHRyaWJ1
dGUobWF4QXR0ciwgIjEiKTsKLSAgICBzbGlkZXItPnNldEF0dHJpYnV0ZSh2YWx1ZUF0dHIsIFN0
cmluZzo6bnVtYmVyKG1lZGlhRWxlbWVudC0+dm9sdW1lKCkpKTsKLSAgICByZXR1cm4gc2xpZGVy
LnJlbGVhc2UoKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuVm9sdW1lU2xpZGVyRWxlbWVudDo6c2hhZG93UHNldWRvSWQoKSBjb25zdAotewotICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBpZCwgKCItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tdm9sdW1lLXNsaWRlciIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxz
Y3JlZW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQsIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50KiBj
b250cm9scykKLSAgICA6IE1lZGlhQ29udHJvbElucHV0RWxlbWVudChtZWRpYUVsZW1lbnQsIE1l
ZGlhRnVsbHNjcmVlbkJ1dHRvbikKLSAgICAsIG1fY29udHJvbHMoY29udHJvbHMpCi17Ci19Ci0K
LVBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ+IE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50LCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCogY29udHJvbHMpCi17Ci0gICAgQVNT
RVJUKGNvbnRyb2xzKTsKLQotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RWxlbWVudD4gYnV0dG9uID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0
b25FbGVtZW50KG1lZGlhRWxlbWVudCwgY29udHJvbHMpKTsKLSAgICBidXR0b24tPnNldFR5cGUo
ImJ1dHRvbiIpOwotICAgIGJ1dHRvbi0+aGlkZSgpOwotICAgIHJldHVybiBidXR0b24ucmVsZWFz
ZSgpOwotfQotCi12b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
LSAgICAgICAgLy8gT25seSB1c2UgdGhlIG5ldyBmdWxsIHNjcmVlbiBBUEkgaWYgdGhlIGZ1bGxT
Y3JlZW5FbmFibGVkIHNldHRpbmcgaGFzIAotICAgICAgICAvLyBiZWVuIGV4cGxpY2l0bHkgZW5h
YmxlZC4gIE90aGVyd2lzZSwgdXNlIHRoZSBvbGQgZnVsbHNjcmVlbiBBUEkuICBUaGlzCi0gICAg
ICAgIC8vIGFsbG93cyBhcHBzIHdoaWNoIGVtYmVkIGEgV2ViVmlldyB0byByZXRhaW4gdGhlIGV4
aXN0aW5nIGZ1bGwgc2NyZWVuCi0gICAgICAgIC8vIHZpZGVvIGltcGxlbWVudGF0aW9uIHdpdGhv
dXQgcmVxdWlyaW5nIHRoZW0gdG8gaW1wbGVtZW50IHRoZWlyIG93biBmdWxsIAotICAgICAgICAv
LyBzY3JlZW4gYmVoYXZpb3IuCi0gICAgICAgIGlmIChkb2N1bWVudCgpLT5zZXR0aW5ncygpICYm
IGRvY3VtZW50KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpIHsKLSAgICAgICAg
ICAgIGlmIChkb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiBkb2N1bWVudCgpLT53
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSBtZWRpYUVsZW1lbnQoKSkgewotICAg
ICAgICAgICAgICAgIGRvY3VtZW50KCktPndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKLSAgICAg
ICAgICAgICAgICBtX2NvbnRyb2xzLT5leGl0ZWRGdWxsc2NyZWVuKCk7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT53ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbigwKTsKLSAgICAgICAgICAgICAgICBtX2NvbnRyb2xzLT5lbnRlcmVkRnVsbHNjcmVl
bigpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICAgICAg
bWVkaWFFbGVtZW50KCktPmVudGVyRnVsbHNjcmVlbigpOwotICAgICAgICBldmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKLSAgICB9Ci0gICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihldmVudCk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sRnVs
bHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9s
cy1mdWxsc2NyZWVuLWJ1dHRvbiIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLS8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1
bWVNaW5CdXR0b25FbGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9u
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRy
b2xJbnB1dEVsZW1lbnQobWVkaWFFbGVtZW50LCBNZWRpYVVuTXV0ZUJ1dHRvbikKLXsKLX0KLQot
UGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4g
TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVk
aWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7
Ci0gICAgYnV0dG9uLT5zZXRUeXBlKCJidXR0b24iKTsKLSAgICByZXR1cm4gYnV0dG9uLnJlbGVh
c2UoKTsKLX0KLQotdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50
LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgRXhjZXB0aW9u
Q29kZSBjb2RlID0gMDsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPnNldFZvbHVtZSgwLCBjb2Rl
KTsKLSAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgfQotICAgIEhUTUxJ
bnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotfQotCi1jb25zdCBBdG9t
aWNTdHJpbmcmIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNaW5CdXR0b25FbGVtZW50Ojpz
aGFkb3dQc2V1ZG9JZCgpIGNvbnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGlkLCAoIi13ZWJraXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtbWlu
LWJ1dHRvbiIpKTsKLSAgICByZXR1cm4gaWQ7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotaW5saW5lIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25F
bGVtZW50OjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudChIVE1M
TWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi06IE1lZGlhQ29udHJvbElucHV0RWxlbWVudCht
ZWRpYUVsZW1lbnQsIE1lZGlhTXV0ZUJ1dHRvbikKLXsKLX0KLQotUGFzc1JlZlB0cjxNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudD4gTWVkaWFDb250cm9sRnVsbHNj
cmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQpCi17Ci0gICAgUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhC
dXR0b25FbGVtZW50PiBidXR0b24gPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sRnVsbHNjcmVl
blZvbHVtZU1heEJ1dHRvbkVsZW1lbnQobWVkaWFFbGVtZW50KSk7Ci0gICAgYnV0dG9uLT5zZXRU
eXBlKCJidXR0b24iKTsKLSAgICByZXR1cm4gYnV0dG9uLnJlbGVhc2UoKTsKLX0KLQotdm9pZCBN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWF4QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCi17Ci0gICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBjb2RlID0gMDsKLSAg
ICAgICAgbWVkaWFFbGVtZW50KCktPnNldFZvbHVtZSgxLCBjb2RlKTsKLSAgICAgICAgZXZlbnQt
PnNldERlZmF1bHRIYW5kbGVkKCk7Ci0gICAgfQotICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOwotfQotCi1jb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29u
dHJvbEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNv
bnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13ZWJr
aXQtbWVkaWEtY29udHJvbHMtZnVsbHNjcmVlbi12b2x1bWUtbWF4LWJ1dHRvbiIpKTsKLSAgICBy
ZXR1cm4gaWQ7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3Mg
UmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXkgOiBwdWJsaWMgUmVuZGVyRmxleGlibGVCb3gg
ewotcHVibGljOgotICAgIFJlbmRlck1lZGlhQ29udHJvbFRpbWVEaXNwbGF5KE5vZGUqKTsKLQot
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7Ci19OwotCi1SZW5kZXJNZWRpYUNv
bnRyb2xUaW1lRGlzcGxheTo6UmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXkoTm9kZSogbm9k
ZSkKLSAgICA6IFJlbmRlckZsZXhpYmxlQm94KG5vZGUpCi17Ci19Ci0KLS8vIFdlIHdhbnQgdGhl
IHRpbWVsaW5lIHNsaWRlciB0byBiZSBhdCBsZWFzdCAxMDAgcGl4ZWxzIHdpZGUuCi0vLyBGSVhN
RTogRWxpbWluYXRlIGhhcmQtY29kZWQgd2lkdGhzIGFsdG9nZXRoZXIuCi1zdGF0aWMgY29uc3Qg
aW50IG1pbldpZHRoVG9EaXNwbGF5VGltZURpc3BsYXlzID0gNDUgKyAxMDAgKyA0NTsKLQotdm9p
ZCBSZW5kZXJNZWRpYUNvbnRyb2xUaW1lRGlzcGxheTo6bGF5b3V0KCkKLXsKLSAgICBSZW5kZXJG
bGV4aWJsZUJveDo6bGF5b3V0KCk7Ci0gICAgUmVuZGVyQm94KiB0aW1lbGluZUNvbnRhaW5lckJv
eCA9IHBhcmVudEJveCgpOwotICAgIHdoaWxlICh0aW1lbGluZUNvbnRhaW5lckJveCAmJiB0aW1l
bGluZUNvbnRhaW5lckJveC0+aXNBbm9ueW1vdXMoKSkKLSAgICAgICAgdGltZWxpbmVDb250YWlu
ZXJCb3ggPSB0aW1lbGluZUNvbnRhaW5lckJveC0+cGFyZW50Qm94KCk7Ci0KLSAgICBpZiAodGlt
ZWxpbmVDb250YWluZXJCb3ggJiYgdGltZWxpbmVDb250YWluZXJCb3gtPndpZHRoKCkgPCBtaW5X
aWR0aFRvRGlzcGxheVRpbWVEaXNwbGF5cykKLSAgICAgICAgc2V0V2lkdGgoMCk7Ci19Ci0KLWlu
bGluZSBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQ6Ok1lZGlhQ29udHJvbFRpbWVEaXNw
bGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNv
bnRyb2xFbGVtZW50KG1lZGlhRWxlbWVudCkKLSAgICAsIG1fY3VycmVudFZhbHVlKDApCi17Ci19
Ci0KLXZvaWQgTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpzZXRDdXJyZW50VmFsdWUo
ZmxvYXQgdGltZSkKLXsKLSAgICBtX2N1cnJlbnRWYWx1ZSA9IHRpbWU7Ci19Ci0KLVJlbmRlck9i
amVjdCogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGVSZW5kZXJlcihSZW5k
ZXJBcmVuYSogYXJlbmEsIFJlbmRlclN0eWxlKikKLXsKLSAgICByZXR1cm4gbmV3IChhcmVuYSkg
UmVuZGVyTWVkaWFDb250cm9sVGltZURpc3BsYXkodGhpcyk7Ci19Ci0KLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5n
RGlzcGxheUVsZW1lbnQ+IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudDo6
Y3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLXsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1lZGlhQ29udHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChtZWRpYUVs
ZW1lbnQpKTsKLX0KLQotTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpN
ZWRpYUNvbnRyb2xUaW1lUmVtYWluaW5nRGlzcGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KQotICAgIDogTWVkaWFDb250cm9sVGltZURpc3BsYXlFbGVtZW50KG1lZGlh
RWxlbWVudCkKLXsKLX0KLQotTWVkaWFDb250cm9sRWxlbWVudFR5cGUgTWVkaWFDb250cm9sVGlt
ZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIE1lZGlhVGltZVJlbWFpbmluZ0Rpc3BsYXk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYg
TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgp
IGNvbnN0Ci17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGlkLCAoIi13
ZWJraXQtbWVkaWEtY29udHJvbHMtdGltZS1yZW1haW5pbmctZGlzcGxheSIpKTsKLSAgICByZXR1
cm4gaWQ7Ci19Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUGFzc1JlZlB0
cjxNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBNZWRpYUNvbnRyb2xDdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50OjpjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVt
ZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQ3VycmVudFRpbWVE
aXNwbGF5RWxlbWVudChtZWRpYUVsZW1lbnQpKTsKLX0KLQotTWVkaWFDb250cm9sQ3VycmVudFRp
bWVEaXNwbGF5RWxlbWVudDo6TWVkaWFDb250cm9sQ3VycmVudFRpbWVEaXNwbGF5RWxlbWVudChI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQobWVkaWFFbGVtZW50KQotewotfQotCi1NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZSBNZWRpYUNvbnRyb2xDdXJyZW50VGltZURpc3BsYXlFbGVtZW50OjpkaXNwbGF5VHlwZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5OwotfQotCi1jb25zdCBB
dG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQ6OnNoYWRv
d1BzZXVkb0lkKCkgY29uc3QKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1jdXJyZW50LXRpbWUtZGlzcGxheSIpKTsK
LSAgICByZXR1cm4gaWQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8v
IEVOQUJMRShWSURFTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRy
b2xFbGVtZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5oCShyZXZpc2lvbiA4MzU5MykKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ2MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
Ci0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE1lZGlhQ29udHJvbEVsZW1lbnRzX2gKLSNkZWZp
bmUgTWVkaWFDb250cm9sRWxlbWVudHNfaAotCi0jaWYgRU5BQkxFKFZJREVPKQotCi0jaW5jbHVk
ZSAiSFRNTERpdkVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgotI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCi0KLS8v
IFRoZXNlIGFyZSB0aGUgc2hhZG93IGVsZW1lbnRzIHVzZWQgaW4gUmVuZGVyTWVkaWEKLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBFdmVudDsKLWNsYXNzIEZyYW1lOwotY2xhc3MgTWVk
aWFDb250cm9sUm9vdEVsZW1lbnQ7Ci0KLS8vIE11c3QgbWF0Y2ggV2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmgKLWVudW0gTWVkaWFDb250cm9sRWxlbWVudFR5cGUgewotICAgIE1lZGlhRnVsbHNjcmVl
bkJ1dHRvbiA9IDAsCi0gICAgTWVkaWFNdXRlQnV0dG9uLAotICAgIE1lZGlhUGxheUJ1dHRvbiwK
LSAgICBNZWRpYVNlZWtCYWNrQnV0dG9uLAotICAgIE1lZGlhU2Vla0ZvcndhcmRCdXR0b24sCi0g
ICAgTWVkaWFTbGlkZXIsCi0gICAgTWVkaWFTbGlkZXJUaHVtYiwKLSAgICBNZWRpYVJld2luZEJ1
dHRvbiwKLSAgICBNZWRpYVJldHVyblRvUmVhbHRpbWVCdXR0b24sCi0gICAgTWVkaWFTaG93Q2xv
c2VkQ2FwdGlvbnNCdXR0b24sCi0gICAgTWVkaWFIaWRlQ2xvc2VkQ2FwdGlvbnNCdXR0b24sCi0g
ICAgTWVkaWFVbk11dGVCdXR0b24sCi0gICAgTWVkaWFQYXVzZUJ1dHRvbiwKLSAgICBNZWRpYVRp
bWVsaW5lQ29udGFpbmVyLAotICAgIE1lZGlhQ3VycmVudFRpbWVEaXNwbGF5LAotICAgIE1lZGlh
VGltZVJlbWFpbmluZ0Rpc3BsYXksCi0gICAgTWVkaWFTdGF0dXNEaXNwbGF5LAotICAgIE1lZGlh
Q29udHJvbHNQYW5lbCwKLSAgICBNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lciwKLSAgICBNZWRp
YVZvbHVtZVNsaWRlciwKLSAgICBNZWRpYVZvbHVtZVNsaWRlclRodW1iLAotICAgIE1lZGlhVm9s
dW1lU2xpZGVyTXV0ZUJ1dHRvbiwKLX07Ci0KLUhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVk
aWFFbGVtZW50KFJlbmRlck9iamVjdCopOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgSFRNTERpdkVsZW1lbnQg
ewotcHVibGljOgotICAgIHZvaWQgaGlkZSgpOwotICAgIHZvaWQgc2hvdygpOwotCi0gICAgdmly
dHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNwbGF5VHlwZSgpIGNvbnN0ID0gMDsKLQot
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVk
aWFFbGVtZW50OyB9Ci0KLXByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNvbnRy
b2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgSFRNTE1lZGlhRWxlbWVu
dCogbV9tZWRpYUVsZW1lbnQ7ICAgCi19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRy
b2xFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xQ
YW5lbEVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAg
TWVkaWFDb250cm9sUGFuZWxFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKLSAgICB2aXJ0dWFs
IE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci19OwotCi0vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbFRpbWVsaW5l
Q29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xUaW1lbGluZUNvbnRhaW5lckVsZW1l
bnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgTWVkaWFDb250
cm9sVGltZWxpbmVDb250YWluZXJFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKLSAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLQotICAgIHZp
cnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdDsKLX07Ci0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sVm9s
dW1lU2xpZGVyQ29udGFpbmVyRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsK
LXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJD
b250YWluZXJFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwotCi1wcml2YXRlOgot
ICAgIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckNvbnRhaW5lckVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopOwotICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJB
cmVuYSosIFJlbmRlclN0eWxlKik7Ci0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQqKTsKLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlU
eXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVk
b0lkKCkgY29uc3Q7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNs
YXNzIE1lZGlhQ29udHJvbFN0YXR1c0Rpc3BsYXlFbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bEVsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFN0
YXR1c0Rpc3BsYXlFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwotCi0gICAgdm9p
ZCB1cGRhdGUoKTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xTdGF0dXNEaXNwbGF5RWxl
bWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1l
bnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0KLSAgICBlbnVtIFN0YXRlQmVpbmdEaXNwbGF5
ZWQgeyBOb3RoaW5nLCBMb2FkaW5nLCBMaXZlQnJvYWRjYXN0IH07Ci0gICAgU3RhdGVCZWluZ0Rp
c3BsYXllZCBtX3N0YXRlQmVpbmdEaXNwbGF5ZWQ7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCA6IHB1YmxpYyBI
VE1MSW5wdXRFbGVtZW50IHsKLXB1YmxpYzoKLSAgICB2b2lkIGhpZGUoKTsKLSAgICB2b2lkIHNo
b3coKTsKLQotICAgIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5VHlwZTsgfQotCi0gICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFF
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KLQotcHJvdGVjdGVkOgot
ICAgIE1lZGlhQ29udHJvbElucHV0RWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250
cm9sRWxlbWVudFR5cGUpOwotCi0gICAgdm9pZCBzZXREaXNwbGF5VHlwZShNZWRpYUNvbnRyb2xF
bGVtZW50VHlwZSk7Ci0KLXByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzTWVkaWFDb250cm9s
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVEaXNwbGF5VHlwZSgpIHsgfQotCi0gICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1l
bnQ7Ci0gICAgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbV9kaXNwbGF5VHlwZTsKLX07Ci0KLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sTXV0ZUJ1
dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKLXB1YmxpYzoK
LSAgICB2b2lkIGNoYW5nZWRNdXRlKCk7Ci0KLXByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xN
dXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9sRWxlbWVudFR5
cGUpOwotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50Kik7Ci0KLQot
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKTsKLX07Ci0KLS8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sUGFuZWxN
dXRlQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudCB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUGFuZWxNdXRlQnV0
dG9uRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudCopOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFBhbmVsTXV0ZUJ1dHRvbkVsZW1l
bnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbFJvb3RFbGVtZW50Kik7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotCi0gICAgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnQqIG1fY29udHJvbHM7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlck11dGVCdXR0b25FbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbE11dGVCdXR0b25FbGVtZW50IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxl
bWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYUNv
bnRyb2xWb2x1bWVTbGlkZXJNdXRlQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0K
LSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsK
LX07Ci0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBNZWRpYUNv
bnRyb2xQbGF5QnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQg
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFBsYXlCdXR0b25F
bGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIGRl
ZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxh
eVR5cGUoKTsKLQotcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xQbGF5QnV0dG9uRWxlbWVudChI
VE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hh
ZG93UHNldWRvSWQoKSBjb25zdDsKLX07Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotY2xhc3MgTWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQgOiBwdWJsaWMgTWVkaWFD
b250cm9sSW5wdXRFbGVtZW50IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCopOwotCi1wcm90ZWN0ZWQ6Ci0gICAgTWVkaWFDb250cm9sU2Vla0J1
dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKTsK
LQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNGb3J3YXJkQnV0dG9uKCkgY29uc3QgPSAw
OwotCi0gICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOwotICAgIHZvaWQgc2Vla1RpbWVyRmlyZWQo
VGltZXI8TWVkaWFDb250cm9sU2Vla0J1dHRvbkVsZW1lbnQ+Kik7Ci0KLSAgICBib29sIG1fc2Vl
a2luZzsKLSAgICBib29sIG1fY2FwdHVyaW5nOwotICAgIFRpbWVyPE1lZGlhQ29udHJvbFNlZWtC
dXR0b25FbGVtZW50PiBtX3NlZWtUaW1lcjsKLX07Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sU2Vla0ZvcndhcmRCdXR0b25FbGVtZW50IDog
cHVibGljIE1lZGlhQ29udHJvbFNlZWtCdXR0b25FbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xTZWVrRm9yd2FyZEJ1dHRvbkVsZW1lbnQ+IGNyZWF0
ZShIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLXByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sU2Vla0Zv
cndhcmRCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKLQotICAgIHZpcnR1YWwgYm9v
bCBpc0ZvcndhcmRCdXR0b24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci19OwotCi0vLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbFNlZWtCYWNrQnV0
dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xTZWVrQnV0dG9uRWxlbWVudCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sU2Vla0JhY2tCdXR0b25FbGVt
ZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29u
dHJvbFNlZWtCYWNrQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAgICB2aXJ0
dWFsIGJvb2wgaXNGb3J3YXJkQnV0dG9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKLX07Ci0K
LS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sUmV3
aW5kQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewotcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFJld2luZEJ1dHRvbkVsZW1l
bnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCopOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbFJld2lu
ZEJ1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwotCi0gICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci19OwotCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJvbFJldHVyblRvUmVhbHRpbWVC
dXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElucHV0RWxlbWVudCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUmV0dXJuVG9SZWFsdGltZUJ1dHRv
bkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCopOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJv
bFJldHVyblRvUmVhbHRpbWVCdXR0b25FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKLQotICAg
IHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotfTsg
ICAgCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJv
bElucHV0RWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxl
bWVudCopOwotCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGlzcGxheVR5cGUoKTsKLQotcHJpdmF0ZToKLSAgICBN
ZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopOwotCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lk
KCkgY29uc3Q7Ci19OyAgICAKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1j
bGFzcyBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sSW5w
dXRFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xU
aW1lbGluZUVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiwgTWVkaWFDb250cm9sUm9v
dEVsZW1lbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
Kik7Ci0gICAgdm9pZCBzZXRQb3NpdGlvbihmbG9hdCk7Ci0gICAgdm9pZCBzZXREdXJhdGlvbihm
bG9hdCk7Ci0KLXByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50KEhUTUxN
ZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCopOwotCi0gICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0KLSAgICBNZWRpYUNv
bnRyb2xSb290RWxlbWVudCogbV9jb250cm9sczsKLX07Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCA6IHB1
YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFF
bGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCop
OwotICAgIHZvaWQgc2V0Vm9sdW1lKGZsb2F0KTsKLQotcHJvdGVjdGVkOgotICAgIE1lZGlhQ29u
dHJvbFZvbHVtZVNsaWRlckVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwotCi1wcml2YXRlOgot
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0Owot
fTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xJbnB1dEVsZW1l
bnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCosIE1lZGlhQ29udHJvbFJv
b3RFbGVtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50
KEhUTUxNZWRpYUVsZW1lbnQqLCBNZWRpYUNvbnRyb2xSb290RWxlbWVudCopOwotCi0gICAgdmly
dHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci0KLSAgICBN
ZWRpYUNvbnRyb2xSb290RWxlbWVudCogbV9jb250cm9sczsKLX07Ci0KLS8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZVNs
aWRlckVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudCB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVt
ZVNsaWRlckVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgCi1wcml2YXRl
OgotICAgIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5Wb2x1bWVTbGlkZXJFbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2hhZG93
UHNldWRvSWQoKSBjb25zdDsKLX07Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotY2xhc3MgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1pbkJ1dHRvbkVsZW1lbnQgOiBw
dWJsaWMgTWVkaWFDb250cm9sSW5wdXRFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudD4gY3Jl
YXRlKEhUTUxNZWRpYUVsZW1lbnQqKTsKLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgZGVmYXVsdEV2
ZW50SGFuZGxlcihFdmVudCopOwotICAgIAotcHJpdmF0ZToKLSAgICBNZWRpYUNvbnRyb2xGdWxs
c2NyZWVuVm9sdW1lTWluQnV0dG9uRWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgCi0g
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci19
OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJv
bEZ1bGxzY3JlZW5Wb2x1bWVNYXhCdXR0b25FbGVtZW50IDogcHVibGljIE1lZGlhQ29udHJvbElu
cHV0RWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
RnVsbHNjcmVlblZvbHVtZU1heEJ1dHRvbkVsZW1lbnQ+IGNyZWF0ZShIVE1MTWVkaWFFbGVtZW50
Kik7Ci0gICAgCi0gICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsK
LSAgICAKLXByaXZhdGU6Ci0gICAgTWVkaWFDb250cm9sRnVsbHNjcmVlblZvbHVtZU1heEJ1dHRv
bkVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwotICAgIAotICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwotfTsKLQotLy8gLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBNZWRpYUNvbnRyb2xUaW1lRGlzcGxheUVsZW1lbnQg
OiBwdWJsaWMgTWVkaWFDb250cm9sRWxlbWVudCB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzZXRDdXJy
ZW50VmFsdWUoZmxvYXQpOwotICAgIGZsb2F0IGN1cnJlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fY3VycmVudFZhbHVlOyB9Ci0KLXByb3RlY3RlZDoKLSAgICBNZWRpYUNvbnRyb2xUaW1lRGlz
cGxheUVsZW1lbnQoSFRNTE1lZGlhRWxlbWVudCopOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwg
UmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7
Ci0KLSAgICBmbG9hdCBtX2N1cnJlbnRWYWx1ZTsKLX07Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotY2xhc3MgTWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50IDogcHVibGljIE1lZGlhQ29udHJvbFRpbWVEaXNwbGF5RWxlbWVudCB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVGltZVJlbWFpbmluZ0Rpc3BsYXlFbGVt
ZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwotCi1wcml2YXRlOgotICAgIE1lZGlhQ29u
dHJvbFRpbWVSZW1haW5pbmdEaXNwbGF5RWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7Ci0KLSAg
ICB2aXJ0dWFsIE1lZGlhQ29udHJvbEVsZW1lbnRUeXBlIGRpc3BsYXlUeXBlKCkgY29uc3Q7Ci0g
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7Ci19
OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIE1lZGlhQ29udHJv
bEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQgOiBwdWJsaWMgTWVkaWFDb250cm9sVGltZURpc3Bs
YXlFbGVtZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xD
dXJyZW50VGltZURpc3BsYXlFbGVtZW50PiBjcmVhdGUoSFRNTE1lZGlhRWxlbWVudCopOwotCi1w
cml2YXRlOgotICAgIE1lZGlhQ29udHJvbEN1cnJlbnRUaW1lRGlzcGxheUVsZW1lbnQoSFRNTE1l
ZGlhRWxlbWVudCopOwotCi0gICAgdmlydHVhbCBNZWRpYUNvbnRyb2xFbGVtZW50VHlwZSBkaXNw
bGF5VHlwZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQ
c2V1ZG9JZCgpIGNvbnN0OwotfTsKLSAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotfSAvL25hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoVklERU8pCi0KLSNl
bmRpZiAvLyBNZWRpYUNvbnRyb2xFbGVtZW50c19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyaW5nQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJpbmdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDgzNTkzKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcmluZ0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIklubGluZUZsb3dCb3guY3BwIgogI2luY2x1
ZGUgIklubGluZVRleHRCb3guY3BwIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmNwcCIKLSNpbmNs
dWRlICJNZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAiCiAjaW5jbHVkZSAiUG9pbnRlckV2ZW50c0hp
dFJ1bGVzLmNwcCIKICNpbmNsdWRlICJSZW5kZXJBcHBsZXQuY3BwIgogI2luY2x1ZGUgIlJlbmRl
ckFyZW5hLmNwcCIK
</data>
<flag name="review"
          id="81867"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>