<?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>118368</bug_id>
          
          <creation_ts>2013-07-03 12:57:28 -0700</creation_ts>
          <short_desc>Nix upstreaming - Adding Nix render theme files</short_desc>
          <delta_ts>2013-07-05 16:06:56 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>117658</blocked>
    
    <blocked>118367</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Marcelo Lira">marcelo.lira</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>luciano.wolf</cc>
    
    <cc>luiz</cc>
    
    <cc>nick.diego</cc>
    
    <cc>sergio</cc>
    
    <cc>tullio.lucena</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>905956</commentid>
    <comment_count>0</comment_count>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2013-07-03 12:57:28 -0700</bug_when>
    <thetext>All files related to render theme stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905975</commentid>
    <comment_count>1</comment_count>
      <attachid>206025</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-07-03 14:14:37 -0700</bug_when>
    <thetext>Created attachment 206025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906477</commentid>
    <comment_count>2</comment_count>
      <attachid>206025</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-07-05 14:22:48 -0700</bug_when>
    <thetext>Comment on attachment 206025
Patch

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

Use real name: o-&gt; renderObject. i-&gt;info|paintInfo.

&gt; Source/WebCore/platform/nix/RenderThemeNix.cpp:276
&gt; +void RenderThemeNix::adjustProgressBarStyle(StyleResolver*, RenderStyle* style, Element *) const

Element * -&gt; Element*

&gt; Source/WebCore/platform/nix/RenderThemeNix.h:33
&gt; +class RenderThemeNix : public RenderTheme {

Plenty of missing OVERRIDE.

&gt; Source/WebCore/platform/nix/ScrollbarThemeNix.cpp:29
&gt; +#include &quot;NotImplemented.h&quot;

Why?

&gt; Source/WebCore/platform/nix/ScrollbarThemeNix.cpp:30
&gt; +#include &lt;stdio.h&gt;

Why?

&gt; Source/WebCore/platform/nix/ScrollbarThemeNix.cpp:46
&gt; +    return 0; // we paint on top

Fix the comment.

&gt; Source/WebCore/platform/nix/ScrollbarThemeNix.h:33
&gt; +class ScrollbarThemeNix : public ScrollbarTheme {

Missing OVERRIDEs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906489</commentid>
    <comment_count>3</comment_count>
      <attachid>206171</attachid>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-07-05 15:00:15 -0700</bug_when>
    <thetext>Created attachment 206171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906492</commentid>
    <comment_count>4</comment_count>
    <who name="Tullio Lucena">tullio.lucena</who>
    <bug_when>2013-07-05 15:10:23 -0700</bug_when>
    <thetext>Thanks for the review.

I have updated the patch.
Could you give a cq+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906500</commentid>
    <comment_count>5</comment_count>
      <attachid>206171</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-05 16:06:52 -0700</bug_when>
    <thetext>Comment on attachment 206171
Patch

Clearing flags on attachment: 206171

Committed r152428: &lt;http://trac.webkit.org/changeset/152428&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906501</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-05 16:06:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206025</attachid>
            <date>2013-07-03 14:14:37 -0700</date>
            <delta_ts>2013-07-05 15:00:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118368-20130703181233.patch</filename>
            <type>text/plain</type>
            <size>25948</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE1OTVjZjQ5YjViM2Rh
YTExYzQ5MWNiM2NjMGJmYzM0MGVkMzhhNS4uMWI5YTYyNTE5NDE3ZmU5ODcyNDQ0OWYxMGFjMjdm
NDc1YTc3OGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA3LTAzICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIE5peCB1
cHN0cmVhbWluZyAtIEFkZGluZyBOaXggcmVuZGVyIHRoZW1lIGZpbGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgzNjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgZmlsZXMgcmVsYXRlZCB0byBy
ZW5kZXIgdGhlbWUgc3R1ZmYuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBUaGV5IHdpbGwgYmUg
dXBsb2FkZWQgb24gYW5vdGhlciBwYXRjaCBkdXJpbmcgdGhlIHVwc3RyZWFtaW5nIHByb2Nlc3Mu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uaXgvUmVuZGVyVGhlbWVOaXguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9uaXgvUmVuZGVyVGhlbWVOaXguaDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vbml4L1Njcm9sbGJhclRoZW1lTml4LmNwcDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbml4L1Njcm9sbGJhclRoZW1lTml4Lmg6IEFkZGVkLgorCiAyMDEzLTA3LTAzICBKZXNz
aWUgQmVybGluICA8amJlcmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRpdmUgYnVp
bGQgZml4IGFmdGVyIHIxNTIzNDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uaXgvUmVuZGVyVGhlbWVOaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1Jl
bmRlclRoZW1lTml4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDMyMzA5NjA3ZTdlNDM0OTE2NDg0ZmFlNGNi
YmRkNDYyN2I2MTU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bml4L1JlbmRlclRoZW1lTml4LmNwcApAQCAtMCwwICsxLDQ0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMi0yMDEzIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKS4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJUaGVt
ZU5peC5oIgorCisjaW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKKyNpbmNsdWRlICJQYWludElu
Zm8uaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgInB1Ymxp
Yy9QbGF0Zm9ybS5oIgorI2luY2x1ZGUgInB1YmxpYy9XZWJDYW52YXMuaCIKKyNpbmNsdWRlICJw
dWJsaWMvV2ViUmVjdC5oIgorI2luY2x1ZGUgInB1YmxpYy9XZWJUaGVtZUVuZ2luZS5oIgorI2lm
IEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQorI2luY2x1ZGUgIlJlbmRlclByb2dyZXNzLmgiCisj
ZW5kaWYKKyNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKKyNpbmNsdWRlICJIVE1MTWV0ZXJFbGVt
ZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyTWV0ZXIuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBkZWZhdWx0QnV0dG9uQmFja2dyb3VuZENv
bG9yID0gMHhmZmRkZGRkZDsKKworc3RhdGljIHZvaWQgc2V0U2l6ZUlmQXV0byhSZW5kZXJTdHls
ZSogc3R5bGUsIGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKHN0eWxlLT53aWR0aCgp
LmlzSW50cmluc2ljT3JBdXRvKCkpCisgICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoc2l6
ZS53aWR0aCgpLCBGaXhlZCkpOworICAgIGlmIChzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCisg
ICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKHNpemUuaGVpZ2h0KCksIEZpeGVkKSk7Cit9
CisKK0NvbG9yIHRvQ29sb3IoY29uc3QgV2ViS2l0OjpXZWJDb2xvciYgY29sb3IpCit7CisgICAg
cmV0dXJuIFdlYkNvcmU6OkNvbG9yKFJHQkEzMihjb2xvcikpOworfQorCitzdGF0aWMgV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZSogdGhlbWVFbmdpbmUoKQoreworICAgIHJldHVybiBXZWJLaXQ6OlBs
YXRmb3JtOjpjdXJyZW50KCktPnRoZW1lRW5naW5lKCk7Cit9CisKK3N0YXRpYyBXZWJLaXQ6Oldl
YkNhbnZhcyogd2ViQ2FudmFzKGNvbnN0IFBhaW50SW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4g
aW5mby5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKK30KKworUGFzc1JlZlB0cjxS
ZW5kZXJUaGVtZT4gUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFnZShQYWdlKikKK3sKKyAgICByZXR1
cm4gUmVuZGVyVGhlbWVOaXg6OmNyZWF0ZSgpOworfQorCitQYXNzUmVmUHRyPFJlbmRlclRoZW1l
PiBSZW5kZXJUaGVtZU5peDo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJl
bmRlclRoZW1lTml4KTsKK30KKworUmVuZGVyVGhlbWVOaXg6OlJlbmRlclRoZW1lTml4KCkKKyAg
ICA6IFJlbmRlclRoZW1lKCkKK3sKK30KKworUmVuZGVyVGhlbWVOaXg6On5SZW5kZXJUaGVtZU5p
eCgpCit7CisKK30KKworU3RyaW5nIFJlbmRlclRoZW1lTml4OjpleHRyYURlZmF1bHRTdHlsZVNo
ZWV0KCkKK3sKKyAgICByZXR1cm4gdGhlbWVFbmdpbmUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVl
dCgpOworfQorCitTdHJpbmcgUmVuZGVyVGhlbWVOaXg6OmV4dHJhUXVpcmtzU3R5bGVTaGVldCgp
Cit7CisgICAgcmV0dXJuIHRoZW1lRW5naW5lKCktPmV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOwor
fQorCitTdHJpbmcgUmVuZGVyVGhlbWVOaXg6OmV4dHJhUGx1Z0luc1N0eWxlU2hlZXQoKQorewor
ICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5leHRyYVBsdWdJbnNTdHlsZVNoZWV0KCk7Cit9CisK
K0NvbG9yIFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRD
b2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ29sb3IodGhlbWVFbmdpbmUoKS0+YWN0aXZl
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkpOworfQorCitDb2xvciBSZW5kZXJUaGVtZU5peDo6
cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHRvQ29sb3IodGhlbWVFbmdpbmUoKS0+aW5hY3RpdmVTZWxlY3Rpb25CYWNrZ3JvdW5k
Q29sb3IoKSk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUFjdGl2ZVNlbGVj
dGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ29sb3IodGhlbWVF
bmdpbmUoKS0+YWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkpOworfQorCitDb2xvciBS
ZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ29sb3IodGhlbWVFbmdpbmUoKS0+aW5hY3RpdmVTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lTml4OjpwbGF0
Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAg
IHJldHVybiB0b0NvbG9yKHRoZW1lRW5naW5lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUluYWN0
aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IHRvQ29sb3IodGhlbWVFbmdpbmUoKS0+aW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3Vu
ZENvbG9yKCkpOworfQorCitDb2xvciBSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1BY3RpdmVMaXN0
Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9Db2xv
cih0aGVtZUVuZ2luZSgpLT5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkp
OworfQorCitDb2xvciBSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1JbmFjdGl2ZUxpc3RCb3hTZWxl
Y3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiB0b0NvbG9yKHRoZW1l
RW5naW5lKCktPmluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpKTsKK30K
KworQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdo
dENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9Db2xvcih0aGVtZUVuZ2luZSgpLT5hY3Rp
dmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lTml4
OjpwbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdG9Db2xvcih0aGVtZUVuZ2luZSgpLT5pbmFjdGl2ZVRleHRTZWFyY2hIaWdobGln
aHRDb2xvcigpKTsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtRm9jdXNSaW5n
Q29sb3IoKSBjb25zdAoreworICAgIHJldHVybiB0b0NvbG9yKHRoZW1lRW5naW5lKCktPmZvY3Vz
UmluZ0NvbG9yKCkpOyAgIAorfQorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK0NvbG9yIFJl
bmRlclRoZW1lTml4OjpwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gdG9Db2xvcih0aGVtZUVuZ2luZSgpLT50YXBIaWdobGlnaHRDb2xvcigpKTsKK30KKyNl
bmRpZgorCit2b2lkIFJlbmRlclRoZW1lTml4OjpzeXN0ZW1Gb250KFdlYkNvcmU6OkNTU1ZhbHVl
SUQsIEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0Cit7Cit9CisKK3N0YXRpYyBXZWJLaXQ6OldlYlRo
ZW1lRW5naW5lOjpTdGF0ZSBnZXRXZWJUaGVtZVN0YXRlKGNvbnN0IFJlbmRlclRoZW1lKiB0aGVt
ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiBvKQoreworICAgIGlmICghdGhlbWUtPmlzRW5hYmxlZChv
KSkKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQ7
CisgICAgaWYgKHRoZW1lLT5pc1ByZXNzZWQobykpCisgICAgICAgIHJldHVybiBXZWJLaXQ6Oldl
YlRoZW1lRW5naW5lOjpTdGF0ZVByZXNzZWQ7CisgICAgaWYgKHRoZW1lLT5pc0hvdmVyZWQobykp
CisgICAgICAgIHJldHVybiBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpTdGF0ZUhvdmVyOworCisg
ICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlTm9ybWFsOworfQorCitib29s
IFJlbmRlclRoZW1lTml4OjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50
SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lOjpCdXR0b25FeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBleHRyYVBhcmFtcy5pc0Rl
ZmF1bHQgPSBpc0RlZmF1bHQobyk7CisgICAgZXh0cmFQYXJhbXMuaGFzQm9yZGVyID0gdHJ1ZTsK
KyAgICBleHRyYVBhcmFtcy5iYWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QnV0dG9uQmFja2dyb3Vu
ZENvbG9yOworICAgIGlmIChvLT5oYXNCYWNrZ3JvdW5kKCkpCisgICAgICAgIGV4dHJhUGFyYW1z
LmJhY2tncm91bmRDb2xvciA9IG8tPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQ
cm9wZXJ0eUJhY2tncm91bmRDb2xvcikucmdiKCk7CisKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWlu
dEJ1dHRvbih3ZWJDYW52YXMoaSksIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6
V2ViUmVjdChyZWN0KSwgZXh0cmFQYXJhbXMpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBSZW5kZXJUaGVtZU5peDo6cGFpbnRUZXh0RmllbGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8gV2ViVGhlbWVFbmdp
bmUgZG9lcyBub3QgaGFuZGxlIGJvcmRlciByb3VuZGVkIGNvcm5lciBhbmQgYmFja2dyb3VuZCBp
bWFnZQorICAgIC8vIHNvIHJldHVybiB0cnVlIHRvIGRyYXcgQ1NTIGJvcmRlciBhbmQgYmFja2dy
b3VuZC4KKyAgICBpZiAoby0+c3R5bGUoKS0+aGFzQm9yZGVyUmFkaXVzKCkgfHwgby0+c3R5bGUo
KS0+aGFzQmFja2dyb3VuZEltYWdlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgdGhl
bWVFbmdpbmUoKS0+cGFpbnRUZXh0RmllbGQod2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRl
KHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCkpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqIG8sIGNv
bnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcGFp
bnRUZXh0RmllbGQobywgaSwgcmVjdCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50
Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6QnV0dG9uRXh0cmFQYXJh
bXMgZXh0cmFQYXJhbXM7CisgICAgZXh0cmFQYXJhbXMuY2hlY2tlZCA9IGlzQ2hlY2tlZChvKTsK
KyAgICBleHRyYVBhcmFtcy5pbmRldGVybWluYXRlID0gaXNJbmRldGVybWluYXRlKG8pOworCisg
ICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRDaGVja2JveCh3ZWJDYW52YXMoaSksIGdldFdlYlRoZW1l
U3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgZXh0cmFQYXJhbXMpOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJUaGVtZU5peDo6c2V0Q2hlY2tib3hTaXpl
KFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhl
aWdodCBhcmUgYm90aCBzcGVjaWZpZWQsIHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgorICAg
IGlmICghc3R5bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNPckF1dG8oKSAmJiAhc3R5bGUtPmhlaWdo
dCgpLmlzQXV0bygpKQorICAgICAgICByZXR1cm47CisKKyAgICBJbnRTaXplIHNpemUgPSB0aGVt
ZUVuZ2luZSgpLT5nZXRDaGVja2JveFNpemUoKTsKKyAgICBzZXRTaXplSWZBdXRvKHN0eWxlLCBz
aXplKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFpbnRSYWRpbyhSZW5kZXJPYmplY3Qq
IG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJL
aXQ6OldlYlRoZW1lRW5naW5lOjpCdXR0b25FeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKKyAgICBl
eHRyYVBhcmFtcy5jaGVja2VkID0gaXNDaGVja2VkKG8pOworICAgIGV4dHJhUGFyYW1zLmluZGV0
ZXJtaW5hdGUgPSBpc0luZGV0ZXJtaW5hdGUobyk7CisKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWlu
dFJhZGlvKHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpX
ZWJSZWN0KHJlY3QpLCBleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lk
IFJlbmRlclRoZW1lTml4OjpzZXRSYWRpb1NpemUoUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdAor
eworICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNwZWNpZmllZCwgdGhl
biB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCisgICAgaWYgKCFzdHlsZS0+d2lkdGgoKS5pc0ludHJp
bnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEludFNpemUgc2l6ZSA9IHRoZW1lRW5naW5lKCktPmdldFJhZGlvU2l6ZSgpOwor
ICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOworfQorCitib29sIFJlbmRlclRoZW1lTml4
OjpwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25z
dCBJbnRSZWN0JiByZWN0KQoreworICAgIHRoZW1lRW5naW5lKCktPnBhaW50TWVudUxpc3Qod2Vi
Q2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVj
dCkpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJUaGVtZU5peDo6YWRqdXN0
TWVudUxpc3RTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50
KikgY29uc3QKK3sKKyAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKKyAgICBzdHlsZS0+c2V0V2hp
dGVTcGFjZShQUkUpOworCisgICAgaW50IHBhZGRpbmdUb3AgPSAwOworICAgIGludCBwYWRkaW5n
TGVmdCA9IDA7CisgICAgaW50IHBhZGRpbmdCb3R0b20gPSAwOworICAgIGludCBwYWRkaW5nUmln
aHQgPSAwOworICAgIHRoZW1lRW5naW5lKCktPmdldE1lbnVMaXN0UGFkZGluZyhwYWRkaW5nVG9w
LCBwYWRkaW5nTGVmdCwgcGFkZGluZ0JvdHRvbSwgcGFkZGluZ1JpZ2h0KTsKKyAgICBzdHlsZS0+
c2V0UGFkZGluZ1RvcChMZW5ndGgocGFkZGluZ1RvcCwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0
UGFkZGluZ1JpZ2h0KExlbmd0aChwYWRkaW5nUmlnaHQsIEZpeGVkKSk7CisgICAgc3R5bGUtPnNl
dFBhZGRpbmdCb3R0b20oTGVuZ3RoKHBhZGRpbmdCb3R0b20sIEZpeGVkKSk7CisgICAgc3R5bGUt
PnNldFBhZGRpbmdMZWZ0KExlbmd0aChwYWRkaW5nTGVmdCwgRml4ZWQpKTsKK30KKworI2lmIEVO
QUJMRShQUk9HUkVTU19FTEVNRU5UKQordm9pZCBSZW5kZXJUaGVtZU5peDo6YWRqdXN0UHJvZ3Jl
c3NCYXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50ICop
IGNvbnN0Cit7CisgICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKK30KKworYm9vbCBS
ZW5kZXJUaGVtZU5peDo6cGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBh
aW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBSZW5kZXJQcm9ncmVzcyog
cmVuZGVyUHJvZ3Jlc3MgPSB0b1JlbmRlclByb2dyZXNzKG8pOworICAgIFdlYktpdDo6V2ViVGhl
bWVFbmdpbmU6OlByb2dyZXNzQmFyRXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgZXh0cmFQ
YXJhbXMuaXNEZXRlcm1pbmF0ZSA9IHJlbmRlclByb2dyZXNzLT5pc0RldGVybWluYXRlKCk7Cisg
ICAgZXh0cmFQYXJhbXMucG9zaXRpb24gPSByZW5kZXJQcm9ncmVzcy0+cG9zaXRpb24oKTsKKyAg
ICBleHRyYVBhcmFtcy5hbmltYXRpb25Qcm9ncmVzcyA9IHJlbmRlclByb2dyZXNzLT5hbmltYXRp
b25Qcm9ncmVzcygpOworICAgIGV4dHJhUGFyYW1zLmFuaW1hdGlvblN0YXJ0VGltZSA9IHJlbmRl
clByb2dyZXNzLT5hbmltYXRpb25TdGFydFRpbWUoKTsKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWlu
dFByb2dyZXNzQmFyKHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2Vi
S2l0OjpXZWJSZWN0KHJlY3QpLCBleHRyYVBhcmFtcyk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2RvdWJsZSBSZW5kZXJUaGVtZU5peDo6YW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9n
cmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0Cit7CisgICAgcmV0dXJuIHRoZW1lRW5naW5l
KCktPmdldEFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoKTsKK30KKworZG91
YmxlIFJlbmRlclRoZW1lTml4OjphbmltYXRpb25EdXJhdGlvbkZvclByb2dyZXNzQmFyKFJlbmRl
clByb2dyZXNzKikgY29uc3QKK3sKKyAgICByZXR1cm4gdGhlbWVFbmdpbmUoKS0+Z2V0QW5pbWF0
aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcigpOworfQorI2VuZGlmCisKK2Jvb2wgUmVuZGVyVGhl
bWVOaXg6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50
SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICB0aGVtZUVuZ2luZSgpLT5w
YWludFNsaWRlclRyYWNrKHdlYkNhbnZhcyhpbmZvKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBv
YmplY3QpLCByZWN0KTsKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICBwYWludFNs
aWRlclRpY2tzKG9iamVjdCwgaW5mbywgcmVjdCk7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVOaXg6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUoU3R5bGVS
ZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0Cit7CisgICAgc3R5
bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFp
bnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZv
LCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIHRoZW1lRW5naW5lKCktPnBhaW50U2xpZGVy
VGh1bWIod2ViQ2FudmFzKGluZm8pLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG9iamVjdCksIHJl
Y3QpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbmRlclRoZW1lTml4OjphZGp1
c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKK3sKKyAgICBSZW5kZXJUaGVtZTo6
YWRqdXN0U2xpZGVyVGh1bWJTdHlsZShzdHlsZVJlc29sdmVyLCBzdHlsZSwgZWxlbWVudCk7Cisg
ICAgc3R5bGUtPnNldEJveFNoYWRvdyhudWxscHRyKTsKK30KKworY29uc3QgaW50IFNsaWRlclRo
dW1iV2lkdGggPSAxMDsKK2NvbnN0IGludCBTbGlkZXJUaHVtYkhlaWdodCA9IDIwOworCit2b2lk
IFJlbmRlclRoZW1lTml4OjphZGp1c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KikgY29uc3QKK3sKKyAgICBDb250cm9sUGFydCBwYXJ0ID0gc3R5bGUtPmFwcGVh
cmFuY2UoKTsKKyAgICBpZiAocGFydCA9PSBTbGlkZXJUaHVtYlZlcnRpY2FsUGFydCkgeworICAg
ICAgICBzdHlsZS0+c2V0V2lkdGgoTGVuZ3RoKFNsaWRlclRodW1iV2lkdGgsIEZpeGVkKSk7Cisg
ICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoTGVuZ3RoKFNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkp
OworICAgIH0gZWxzZSBpZiAocGFydCA9PSBTbGlkZXJUaHVtYkhvcml6b250YWxQYXJ0KSB7Cisg
ICAgICAgIHN0eWxlLT5zZXRXaWR0aChMZW5ndGgoU2xpZGVyVGh1bWJXaWR0aCwgRml4ZWQpKTsK
KyAgICAgICAgc3R5bGUtPnNldEhlaWdodChMZW5ndGgoU2xpZGVyVGh1bWJIZWlnaHQsIEZpeGVk
KSk7CisgICAgfQorfQorCisjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCitJbnRTaXplIFJl
bmRlclRoZW1lTml4OjpzbGlkZXJUaWNrU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFNp
emUoMSwgNik7Cit9CisKK2ludCBSZW5kZXJUaGVtZU5peDo6c2xpZGVyVGlja09mZnNldEZyb21U
cmFja0NlbnRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIC0xMjsKK30KKworTGF5b3V0VW5pdCBS
ZW5kZXJUaGVtZU5peDo6c2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gNTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU5peDo6c3VwcG9ydHNEYXRhTGlzdFVJ
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gdHlwZSA9PSBJ
bnB1dFR5cGVOYW1lczo6cmFuZ2UoKTsKK30KKyNlbmRpZgorCit2b2lkIFJlbmRlclRoZW1lTml4
OjphZGp1c3RJbm5lclNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUq
IHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3sKKyAgICBzdHlsZS0+cmVzZXRCb3JkZXIoKTsKKyAg
ICBzdHlsZS0+c2V0V2hpdGVTcGFjZShQUkUpOworCisgICAgaW50IHBhZGRpbmdUb3AgPSAwOwor
ICAgIGludCBwYWRkaW5nTGVmdCA9IDA7CisgICAgaW50IHBhZGRpbmdCb3R0b20gPSAwOworICAg
IGludCBwYWRkaW5nUmlnaHQgPSAwOworICAgIHRoZW1lRW5naW5lKCktPmdldElubmVyU3BpbkJ1
dHRvblBhZGRpbmcocGFkZGluZ1RvcCwgcGFkZGluZ0xlZnQsIHBhZGRpbmdCb3R0b20sIHBhZGRp
bmdSaWdodCk7CisgICAgc3R5bGUtPnNldFBhZGRpbmdUb3AoTGVuZ3RoKHBhZGRpbmdUb3AsIEZp
eGVkKSk7CisgICAgc3R5bGUtPnNldFBhZGRpbmdSaWdodChMZW5ndGgocGFkZGluZ1JpZ2h0LCBG
aXhlZCkpOworICAgIHN0eWxlLT5zZXRQYWRkaW5nQm90dG9tKExlbmd0aChwYWRkaW5nQm90dG9t
LCBGaXhlZCkpOworICAgIHN0eWxlLT5zZXRQYWRkaW5nTGVmdChMZW5ndGgocGFkZGluZ0xlZnQs
IEZpeGVkKSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50SW5uZXJTcGluQnV0dG9u
KFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0
KQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OklubmVyU3BpbkJ1dHRvbkV4dHJhUGFy
YW1zIGV4dHJhUGFyYW1zOworICAgIGV4dHJhUGFyYW1zLnNwaW5VcCA9IGlzU3BpblVwQnV0dG9u
UGFydFByZXNzZWQobyk7CisgICAgZXh0cmFQYXJhbXMucmVhZE9ubHkgPSBpc1JlYWRPbmx5Q29u
dHJvbChvKTsKKworICAgIHRoZW1lRW5naW5lKCktPnBhaW50SW5uZXJTcGluQnV0dG9uKHdlYkNh
bnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3Qp
LCBleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjaWYgRU5BQkxFKE1FVEVS
X0VMRU1FTlQpCit2b2lkIFJlbmRlclRoZW1lTml4OjphZGp1c3RNZXRlclN0eWxlKFN0eWxlUmVz
b2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAoreworICAgIHN0eWxl
LT5zZXRCb3hTaGFkb3cobnVsbHB0cik7Cit9CisKK0ludFNpemUgUmVuZGVyVGhlbWVOaXg6Om1l
dGVyU2l6ZUZvckJvdW5kcyhjb25zdCBSZW5kZXJNZXRlciosIGNvbnN0IEludFJlY3QmIGJvdW5k
cykgY29uc3QKK3sKKyAgICByZXR1cm4gYm91bmRzLnNpemUoKTsKK30KKworYm9vbCBSZW5kZXJU
aGVtZU5peDo6c3VwcG9ydHNNZXRlcihDb250cm9sUGFydCBwYXJ0KSBjb25zdAoreworICAgIHN3
aXRjaCAocGFydCkgeworICAgIGNhc2UgUmVsZXZhbmN5TGV2ZWxJbmRpY2F0b3JQYXJ0OgorICAg
IGNhc2UgRGlzY3JldGVDYXBhY2l0eUxldmVsSW5kaWNhdG9yUGFydDoKKyAgICBjYXNlIFJhdGlu
Z0xldmVsSW5kaWNhdG9yUGFydDoKKyAgICBjYXNlIE1ldGVyUGFydDoKKyAgICBjYXNlIENvbnRp
bnVvdXNDYXBhY2l0eUxldmVsSW5kaWNhdG9yUGFydDoKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBSZW5k
ZXJUaGVtZU5peDo6cGFpbnRNZXRlcihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYg
aSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoIW8tPmlzTWV0ZXIoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBSZW5kZXJNZXRlciogcmVuZGVyTWV0ZXIgPSB0b1JlbmRl
ck1ldGVyKG8pOworICAgIEhUTUxNZXRlckVsZW1lbnQqIGUgPSByZW5kZXJNZXRlci0+bWV0ZXJF
bGVtZW50KCk7CisgICAgV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6TWV0ZXJFeHRyYVBhcmFtcyBl
eHRyYVBhcmFtczsKKyAgICBleHRyYVBhcmFtcy5taW4gPSBlLT5taW4oKTsKKyAgICBleHRyYVBh
cmFtcy5tYXggPSBlLT5tYXgoKTsKKyAgICBleHRyYVBhcmFtcy52YWx1ZSA9IGUtPnZhbHVlKCk7
CisgICAgZXh0cmFQYXJhbXMubG93ID0gZS0+bG93KCk7CisgICAgZXh0cmFQYXJhbXMuaGlnaCA9
IGUtPmhpZ2goKTsKKyAgICBleHRyYVBhcmFtcy5vcHRpbXVtID0gZS0+b3B0aW11bSgpOworCisg
ICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRNZXRlcih3ZWJDYW52YXMoaSksIGdldFdlYlRoZW1lU3Rh
dGUodGhpcywgbyksIHJlY3QsIGV4dHJhUGFyYW1zKTsKKworICAgIHJldHVybiBmYWxzZTsKK30K
KyNlbmRpZgorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUmVu
ZGVyVGhlbWVOaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9SZW5kZXJUaGVtZU5p
eC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmZkNDE4MTliYjk4ODA5ZDM2OGRjNWZhNDI0NDcyYTE4ZTc1YTI4OGQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUmVuZGVyVGhl
bWVOaXguaApAQCAtMCwwICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDEz
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgUmVuZGVyVGhlbWVOaXhfaAorI2RlZmluZSBSZW5kZXJUaGVtZU5peF9oCisKKyNp
bmNsdWRlICJSZW5kZXJUaGVtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFJl
bmRlclRoZW1lTml4IDogcHVibGljIFJlbmRlclRoZW1lIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4gY3JlYXRlKCk7CisKKyAgICB2aXJ0dWFsIH5SZW5kZXJU
aGVtZU5peCgpOworCisgICAgdmlydHVhbCBTdHJpbmcgZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgp
OworICAgIHZpcnR1YWwgU3RyaW5nIGV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOworICAgIHZpcnR1
YWwgU3RyaW5nIGV4dHJhUGx1Z0luc1N0eWxlU2hlZXQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBz
eXN0ZW1Gb250KFdlYkNvcmU6OkNTU1ZhbHVlSUQsIEZvbnREZXNjcmlwdGlvbiYpIGNvbnN0IE9W
RVJSSURFOworCisjaWYgRU5BQkxFKFBST0dSRVNTX0VMRU1FTlQpCisgICAgLy8gUmV0dXJucyB0
aGUgcmVwZWF0IGludGVydmFsIG9mIHRoZSBhbmltYXRpb24gZm9yIHRoZSBwcm9ncmVzcyBiYXIu
CisgICAgdmlydHVhbCBkb3VibGUgYW5pbWF0aW9uUmVwZWF0SW50ZXJ2YWxGb3JQcm9ncmVzc0Jh
cihSZW5kZXJQcm9ncmVzcyopIGNvbnN0IE9WRVJSSURFOworICAgIC8vIFJldHVybnMgdGhlIGR1
cmF0aW9uIG9mIHRoZSBhbmltYXRpb24gZm9yIHRoZSBwcm9ncmVzcyBiYXIuCisgICAgdmlydHVh
bCBkb3VibGUgYW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyop
IGNvbnN0IE9WRVJSSURFOworI2VuZGlmCisKKyNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKKyAg
ICB2aXJ0dWFsIEludFNpemUgbWV0ZXJTaXplRm9yQm91bmRzKGNvbnN0IFJlbmRlck1ldGVyKiwg
Y29uc3QgSW50UmVjdCYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c01ldGVyKENvbnRyb2xQYXJ0KSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgorCitwcm90ZWN0ZWQ6
CisgICAgLy8gVGhlIHBsYXRmb3JtIHNlbGVjdGlvbiBjb2xvci4KKyAgICB2aXJ0dWFsIENvbG9y
IHBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3Q7CisgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29u
c3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkZvcmVncm91bmRD
b2xvcigpIGNvbnN0OworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlv
bkZvcmVncm91bmRDb2xvcigpIGNvbnN0OworCisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFj
dGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IENvbG9yIHBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3Rp
dmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3Q7CisKKyAgICAvLyBIaWdo
bGlnaHRpbmcgY29sb3JzIGZvciBUZXh0TWF0Y2hlcy4KKyAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtQWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3Q7CisgICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkgY29uc3Q7CisK
KyAgICB2aXJ0dWFsIENvbG9yIHBsYXRmb3JtRm9jdXNSaW5nQ29sb3IoKSBjb25zdDsKKworI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hs
aWdodENvbG9yKCkgY29uc3Q7CisjZW5kaWYKKworICAgIHZpcnR1YWwgYm9vbCBwYWludEJ1dHRv
bihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHBhaW50VGV4dEZpZWxkKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
cGFpbnRUZXh0QXJlYShSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRS
ZWN0JikgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRDaGVja2JveChSZW5kZXJP
YmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldENoZWNrYm94U2l6ZShSZW5kZXJTdHlsZSopIGNvbnN0IE9WRVJSSURF
OworCisgICAgdmlydHVhbCBib29sIHBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFp
bnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRS
YWRpb1NpemUoUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9v
bCBwYWludE1lbnVMaXN0KFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IElu
dFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWVudUxpc3RTdHlsZShT
dHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHBhaW50TWVudUxpc3RCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBjb25z
dCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpIE9WRVJSSURFIHsgcmV0dXJuIHBhaW50
TWVudUxpc3QobywgaSwgcik7IH0KKworICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RJbm5lclNwaW5C
dXR0b25TdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBhaW50SW5uZXJTcGluQnV0dG9uKFJlbmRlck9i
amVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKworI2lm
IEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RQcm9ncmVz
c0JhclN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRQcm9ncmVzc0JhcihSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisjZW5kaWYKKwor
I2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQorICAgIHZpcnR1YWwgdm9pZCBhZGp1c3RNZXRlclN0
eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRNZXRlcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWlu
dEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisjZW5kaWYKKworICAgIHZpcnR1YWwg
Ym9vbCBwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYsIGNv
bnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0U2xpZGVyVHJh
Y2tTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QgT1ZF
UlJJREU7CisKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3Qq
LCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGFkanVzdFNsaWRlclRodW1iU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxl
KiwgRWxlbWVudCopIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNs
aWRlclRodW1iU2l6ZShSZW5kZXJTdHlsZSosIEVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKKwor
I2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorICAgIHZpcnR1YWwgSW50U2l6ZSBzbGlkZXJU
aWNrU2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNsaWRlclRpY2tPZmZz
ZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFVu
aXQgc2xpZGVyVGlja1NuYXBwaW5nVGhyZXNob2xkKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNEYXRhTGlzdFVJKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0
IE9WRVJSSURFOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgUmVuZGVyVGhlbWVOaXgoKTsKK307
CisKK30KKworI2VuZGlmIC8vIFJlbmRlclRoZW1lTml4X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25peC9TY3JvbGxiYXJUaGVtZU5peC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uaXgvU2Nyb2xsYmFyVGhlbWVOaXguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQyNGJhYjRh
YjRjZTM4ZWJjMmE2ZjBiNGJlZDEwOTM1Y2NmNzY4MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvU2Nyb2xsYmFyVGhlbWVOaXguY3BwCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVOaXguaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3Jv
bGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKK3sKKyAgICBzdGF0aWMg
U2Nyb2xsYmFyVGhlbWVOaXggdGhlbWU7CisgICAgcmV0dXJuICZ0aGVtZTsKK30KKworU2Nyb2xs
YmFyVGhlbWVOaXg6On5TY3JvbGxiYXJUaGVtZU5peCgpCit7Cit9CisKK2ludCBTY3JvbGxiYXJU
aGVtZU5peDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKQoreworICAg
IHJldHVybiAwOyAvLyB3ZSBwYWludCBvbiB0b3AKK30KKwordm9pZCBTY3JvbGxiYXJUaGVtZU5p
eDo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKQoreworfQorCit2b2lk
IFNjcm9sbGJhclRoZW1lTml4Ojp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KikKK3sKK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
aXgvU2Nyb2xsYmFyVGhlbWVOaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9TY3Jv
bGxiYXJUaGVtZU5peC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhZTc2ODg0Mzk5ZjVkZThjODMxYjIxMTQ4ZmY5
MGRlNzQ5ZjliN2UKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
aXgvU2Nyb2xsYmFyVGhlbWVOaXguaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyLTIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVCBIT0xERVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZU5peF9oCisjZGVmaW5lIFNjcm9s
bGJhclRoZW1lTml4X2gKKworI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsYmFyVGhlbWVOaXggOiBwdWJsaWMgU2Nyb2xsYmFy
VGhlbWUgeworcHVibGljOgorICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lTml4KCk7CisKKyAg
ICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBS
ZWd1bGFyU2Nyb2xsYmFyKTsKKworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Cit9OworCit9CisjZW5kaWYgLy8gU2Nyb2xsYmFy
VGhlbWVOaXhfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206171</attachid>
            <date>2013-07-05 15:00:15 -0700</date>
            <delta_ts>2013-07-05 16:06:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-118368-20130705185807.patch</filename>
            <type>text/plain</type>
            <size>26080</size>
            <attacher name="Tullio Lucena">tullio.lucena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNDI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmI1Nzk3NTE1YmEyNGQz
OWQwNWIxYmZmMzU4NTRmYjhkNWZjYzRlYi4uM2JlMzUxYzNmNGFkMmE2NWM5MzQxODVlYzNmZGEw
ZjQxYWFiMzMyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA3LTA1ICBUdWxs
aW8gTHVjZW5hICA8dHVsbGlvLmx1Y2VuYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIE5peCB1
cHN0cmVhbWluZyAtIEFkZGluZyBOaXggcmVuZGVyIHRoZW1lIGZpbGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTgzNjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBCZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgIEFsbCBmaWxlcyByZWxhdGVkIHRv
IHJlbmRlciB0aGVtZSBzdHVmZi4KKworICAgICAgICBObyBuZXcgdGVzdHMuIFRoZXkgd2lsbCBi
ZSB1cGxvYWRlZCBvbiBhbm90aGVyIHBhdGNoIGR1cmluZyB0aGUgdXBzdHJlYW1pbmcgcHJvY2Vz
cy4KKworICAgICAgICAqIHBsYXRmb3JtL25peC9SZW5kZXJUaGVtZU5peC5jcHA6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25peC9SZW5kZXJUaGVtZU5peC5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9uaXgvU2Nyb2xsYmFyVGhlbWVOaXguY3BwOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uaXgvU2Nyb2xsYmFyVGhlbWVOaXguaDogQWRkZWQuCisKIDIwMTMtMDctMDUgIFRp
bSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW3drMl0gQWRk
IEFQSSB0byBsb2NrIHRoZSBzY3JvbGwgcG9zaXRpb24gYXQgdGhlIHRvcCBvciBib3R0b20gb2Yg
dGhlIHBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9SZW5kZXJU
aGVtZU5peC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUmVuZGVyVGhlbWVOaXgu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmRmYjU2ODEyNDM5ZmNjZmUzYjExOTRhODhlODVkZjFlMmI5NmRlNmQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUmVuZGVyVGhl
bWVOaXguY3BwCkBAIC0wLDAgKzEsNDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlbmRlclRoZW1lTml4LmgiCisKKyNp
bmNsdWRlICJJbnB1dFR5cGVOYW1lcy5oIgorI2luY2x1ZGUgIlBhaW50SW5mby5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCisjaW5jbHVkZSAicHVibGljL1BsYXRmb3JtLmgi
CisjaW5jbHVkZSAicHVibGljL1dlYkNhbnZhcy5oIgorI2luY2x1ZGUgInB1YmxpYy9XZWJSZWN0
LmgiCisjaW5jbHVkZSAicHVibGljL1dlYlRoZW1lRW5naW5lLmgiCisjaWYgRU5BQkxFKFBST0dS
RVNTX0VMRU1FTlQpCisjaW5jbHVkZSAiUmVuZGVyUHJvZ3Jlc3MuaCIKKyNlbmRpZgorI2lmIEVO
QUJMRShNRVRFUl9FTEVNRU5UKQorI2luY2x1ZGUgIkhUTUxNZXRlckVsZW1lbnQuaCIKKyNpbmNs
dWRlICJSZW5kZXJNZXRlci5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3IgPSAweGZmZGRk
ZGRkOworCitzdGF0aWMgdm9pZCBzZXRTaXplSWZBdXRvKFJlbmRlclN0eWxlKiBzdHlsZSwgY29u
c3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBpZiAoc3R5bGUtPndpZHRoKCkuaXNJbnRyaW5zaWNP
ckF1dG8oKSkKKyAgICAgICAgc3R5bGUtPnNldFdpZHRoKExlbmd0aChzaXplLndpZHRoKCksIEZp
eGVkKSk7CisgICAgaWYgKHN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgc3R5bGUt
PnNldEhlaWdodChMZW5ndGgoc2l6ZS5oZWlnaHQoKSwgRml4ZWQpKTsKK30KKworQ29sb3IgdG9D
b2xvcihjb25zdCBXZWJLaXQ6OldlYkNvbG9yJiBjb2xvcikKK3sKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Q29sb3IoUkdCQTMyKGNvbG9yKSk7Cit9CisKK3N0YXRpYyBXZWJLaXQ6OldlYlRoZW1lRW5n
aW5lKiB0aGVtZUVuZ2luZSgpCit7CisgICAgcmV0dXJuIFdlYktpdDo6UGxhdGZvcm06OmN1cnJl
bnQoKS0+dGhlbWVFbmdpbmUoKTsKK30KKworc3RhdGljIFdlYktpdDo6V2ViQ2FudmFzKiB3ZWJD
YW52YXMoY29uc3QgUGFpbnRJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBpbmZvLmNvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOworfQorCitQYXNzUmVmUHRyPFJlbmRlclRoZW1lPiBS
ZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqKQoreworICAgIHJldHVybiBSZW5kZXJUaGVt
ZU5peDo6Y3JlYXRlKCk7Cit9CisKK1Bhc3NSZWZQdHI8UmVuZGVyVGhlbWU+IFJlbmRlclRoZW1l
Tml4OjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVuZGVyVGhlbWVOaXgp
OworfQorCitSZW5kZXJUaGVtZU5peDo6UmVuZGVyVGhlbWVOaXgoKQorICAgIDogUmVuZGVyVGhl
bWUoKQoreworfQorCitSZW5kZXJUaGVtZU5peDo6flJlbmRlclRoZW1lTml4KCkKK3sKKworfQor
CitTdHJpbmcgUmVuZGVyVGhlbWVOaXg6OmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKQoreworICAg
IHJldHVybiB0aGVtZUVuZ2luZSgpLT5leHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Cit9CisKK1N0
cmluZyBSZW5kZXJUaGVtZU5peDo6ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCkKK3sKKyAgICByZXR1
cm4gdGhlbWVFbmdpbmUoKS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7Cit9CisKK1N0cmluZyBS
ZW5kZXJUaGVtZU5peDo6ZXh0cmFQbHVnSW5zU3R5bGVTaGVldCgpCit7CisgICAgcmV0dXJuIHRo
ZW1lRW5naW5lKCktPmV4dHJhUGx1Z0luc1N0eWxlU2hlZXQoKTsKK30KKworQ29sb3IgUmVuZGVy
VGhlbWVOaXg6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gdG9Db2xvcih0aGVtZUVuZ2luZSgpLT5hY3RpdmVTZWxlY3Rpb25CYWNr
Z3JvdW5kQ29sb3IoKSk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUluYWN0
aXZlU2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9Db2xv
cih0aGVtZUVuZ2luZSgpLT5pbmFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpKTsKK30K
KworQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtQWN0aXZlU2VsZWN0aW9uRm9yZWdyb3Vu
ZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9Db2xvcih0aGVtZUVuZ2luZSgpLT5hY3Rp
dmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSk7Cit9CisKK0NvbG9yIFJlbmRlclRoZW1lTml4
OjpwbGF0Zm9ybUluYWN0aXZlU2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gdG9Db2xvcih0aGVtZUVuZ2luZSgpLT5pbmFjdGl2ZVNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpKTsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtQWN0aXZlTGlz
dEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ29s
b3IodGhlbWVFbmdpbmUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigp
KTsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtSW5hY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9Db2xvcih0aGVt
ZUVuZ2luZSgpLT5pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25CYWNrZ3JvdW5kQ29sb3IoKSk7Cit9
CisKK0NvbG9yIFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3IoKSBjb25zdAoreworICAgIHJldHVybiB0b0NvbG9yKHRoZW1lRW5naW5l
KCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSk7Cit9CisKK0NvbG9y
IFJlbmRlclRoZW1lTml4OjpwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91
bmRDb2xvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvQ29sb3IodGhlbWVFbmdpbmUoKS0+aW5h
Y3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkpOworfQorCitDb2xvciBSZW5k
ZXJUaGVtZU5peDo6cGxhdGZvcm1BY3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25z
dAoreworICAgIHJldHVybiB0b0NvbG9yKHRoZW1lRW5naW5lKCktPmFjdGl2ZVRleHRTZWFyY2hI
aWdobGlnaHRDb2xvcigpKTsKK30KKworQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBsYXRmb3JtSW5h
Y3RpdmVUZXh0U2VhcmNoSGlnaGxpZ2h0Q29sb3IoKSBjb25zdAoreworICAgIHJldHVybiB0b0Nv
bG9yKHRoZW1lRW5naW5lKCktPmluYWN0aXZlVGV4dFNlYXJjaEhpZ2hsaWdodENvbG9yKCkpOwor
fQorCitDb2xvciBSZW5kZXJUaGVtZU5peDo6cGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRvQ29sb3IodGhlbWVFbmdpbmUoKS0+Zm9jdXNSaW5nQ29sb3IoKSk7
Cit9CisKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorQ29sb3IgUmVuZGVyVGhlbWVOaXg6OnBs
YXRmb3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdAoreworICAgIHJldHVybiB0b0NvbG9yKHRo
ZW1lRW5naW5lKCktPnRhcEhpZ2hsaWdodENvbG9yKCkpOworfQorI2VuZGlmCisKK3ZvaWQgUmVu
ZGVyVGhlbWVOaXg6OnN5c3RlbUZvbnQoV2ViQ29yZTo6Q1NTVmFsdWVJRCwgRm9udERlc2NyaXB0
aW9uJikgY29uc3QKK3sKK30KKworc3RhdGljIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRl
IGdldFdlYlRoZW1lU3RhdGUoY29uc3QgUmVuZGVyVGhlbWUqIHRoZW1lLCBjb25zdCBSZW5kZXJP
YmplY3QqIG8pCit7CisgICAgaWYgKCF0aGVtZS0+aXNFbmFibGVkKG8pKQorICAgICAgICByZXR1
cm4gV2ViS2l0OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZDsKKyAgICBpZiAodGhlbWUt
PmlzUHJlc3NlZChvKSkKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0
YXRlUHJlc3NlZDsKKyAgICBpZiAodGhlbWUtPmlzSG92ZXJlZChvKSkKKyAgICAgICAgcmV0dXJu
IFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OlN0YXRlSG92ZXI7CisKKyAgICByZXR1cm4gV2ViS2l0
OjpXZWJUaGVtZUVuZ2luZTo6U3RhdGVOb3JtYWw7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6
OnBhaW50QnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdpbmU6OkJ1dHRvbkV4dHJh
UGFyYW1zIGV4dHJhUGFyYW1zOworICAgIGV4dHJhUGFyYW1zLmlzRGVmYXVsdCA9IGlzRGVmYXVs
dChvKTsKKyAgICBleHRyYVBhcmFtcy5oYXNCb3JkZXIgPSB0cnVlOworICAgIGV4dHJhUGFyYW1z
LmJhY2tncm91bmRDb2xvciA9IGRlZmF1bHRCdXR0b25CYWNrZ3JvdW5kQ29sb3I7CisgICAgaWYg
KG8tPmhhc0JhY2tncm91bmQoKSkKKyAgICAgICAgZXh0cmFQYXJhbXMuYmFja2dyb3VuZENvbG9y
ID0gby0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKS5yZ2IoKTsKKworICAgIHRoZW1lRW5naW5lKCktPnBhaW50QnV0dG9uKHdlYkNhbnZh
cyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwgV2ViS2l0OjpXZWJSZWN0KHJlY3QpLCBl
eHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlclRoZW1lTml4
OjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICAvLyBXZWJUaGVtZUVuZ2luZSBkb2VzIG5vdCBoYW5k
bGUgYm9yZGVyIHJvdW5kZWQgY29ybmVyIGFuZCBiYWNrZ3JvdW5kIGltYWdlCisgICAgLy8gc28g
cmV0dXJuIHRydWUgdG8gZHJhdyBDU1MgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kLgorICAgIGlmIChv
LT5zdHlsZSgpLT5oYXNCb3JkZXJSYWRpdXMoKSB8fCBvLT5zdHlsZSgpLT5oYXNCYWNrZ3JvdW5k
SW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWlu
dFRleHRGaWVsZCh3ZWJDYW52YXMoaSksIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktp
dDo6V2ViUmVjdChyZWN0KSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFJlbmRlclRo
ZW1lTml4OjpwYWludFRleHRBcmVhKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBp
LCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIHJldHVybiBwYWludFRleHRGaWVsZChvLCBp
LCByZWN0KTsKK30KKworYm9vbCBSZW5kZXJUaGVtZU5peDo6cGFpbnRDaGVja2JveChSZW5kZXJP
YmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAg
ICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpCdXR0b25FeHRyYVBhcmFtcyBleHRyYVBhcmFtczsK
KyAgICBleHRyYVBhcmFtcy5jaGVja2VkID0gaXNDaGVja2VkKG8pOworICAgIGV4dHJhUGFyYW1z
LmluZGV0ZXJtaW5hdGUgPSBpc0luZGV0ZXJtaW5hdGUobyk7CisKKyAgICB0aGVtZUVuZ2luZSgp
LT5wYWludENoZWNrYm94KHdlYkNhbnZhcyhpKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvKSwg
V2ViS2l0OjpXZWJSZWN0KHJlY3QpLCBleHRyYVBhcmFtcyk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCit2b2lkIFJlbmRlclRoZW1lTml4OjpzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdAoreworICAgIC8vIElmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBib3RoIHNw
ZWNpZmllZCwgdGhlbiB3ZSBoYXZlIG5vdGhpbmcgdG8gZG8uCisgICAgaWYgKCFzdHlsZS0+d2lk
dGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICFzdHlsZS0+aGVpZ2h0KCkuaXNBdXRvKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEludFNpemUgc2l6ZSA9IHRoZW1lRW5naW5lKCktPmdldENo
ZWNrYm94U2l6ZSgpOworICAgIHNldFNpemVJZkF1dG8oc3R5bGUsIHNpemUpOworfQorCitib29s
IFJlbmRlclRoZW1lTml4OjpwYWludFJhZGlvKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIFdlYktpdDo6V2ViVGhlbWVFbmdp
bmU6OkJ1dHRvbkV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIGV4dHJhUGFyYW1zLmNoZWNr
ZWQgPSBpc0NoZWNrZWQobyk7CisgICAgZXh0cmFQYXJhbXMuaW5kZXRlcm1pbmF0ZSA9IGlzSW5k
ZXRlcm1pbmF0ZShvKTsKKworICAgIHRoZW1lRW5naW5lKCktPnBhaW50UmFkaW8od2ViQ2FudmFz
KGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCBXZWJLaXQ6OldlYlJlY3QocmVjdCksIGV4
dHJhUGFyYW1zKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUmVuZGVyVGhlbWVOaXg6
OnNldFJhZGlvU2l6ZShSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0Cit7CisgICAgLy8gSWYgdGhl
IHdpZHRoIGFuZCBoZWlnaHQgYXJlIGJvdGggc3BlY2lmaWVkLCB0aGVuIHdlIGhhdmUgbm90aGlu
ZyB0byBkby4KKyAgICBpZiAoIXN0eWxlLT53aWR0aCgpLmlzSW50cmluc2ljT3JBdXRvKCkgJiYg
IXN0eWxlLT5oZWlnaHQoKS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSW50U2l6
ZSBzaXplID0gdGhlbWVFbmdpbmUoKS0+Z2V0UmFkaW9TaXplKCk7CisgICAgc2V0U2l6ZUlmQXV0
byhzdHlsZSwgc2l6ZSk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50TWVudUxpc3Qo
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit7CisgICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRNZW51TGlzdCh3ZWJDYW52YXMoaSksIGdldFdl
YlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSk7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIFJlbmRlclRoZW1lTml4OjphZGp1c3RNZW51TGlzdFN0eWxlKFN0
eWxlUmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAoreworICAg
IHN0eWxlLT5yZXNldEJvcmRlcigpOworICAgIHN0eWxlLT5zZXRXaGl0ZVNwYWNlKFBSRSk7CisK
KyAgICBpbnQgcGFkZGluZ1RvcCA9IDA7CisgICAgaW50IHBhZGRpbmdMZWZ0ID0gMDsKKyAgICBp
bnQgcGFkZGluZ0JvdHRvbSA9IDA7CisgICAgaW50IHBhZGRpbmdSaWdodCA9IDA7CisgICAgdGhl
bWVFbmdpbmUoKS0+Z2V0TWVudUxpc3RQYWRkaW5nKHBhZGRpbmdUb3AsIHBhZGRpbmdMZWZ0LCBw
YWRkaW5nQm90dG9tLCBwYWRkaW5nUmlnaHQpOworICAgIHN0eWxlLT5zZXRQYWRkaW5nVG9wKExl
bmd0aChwYWRkaW5nVG9wLCBGaXhlZCkpOworICAgIHN0eWxlLT5zZXRQYWRkaW5nUmlnaHQoTGVu
Z3RoKHBhZGRpbmdSaWdodCwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0UGFkZGluZ0JvdHRvbShM
ZW5ndGgocGFkZGluZ0JvdHRvbSwgRml4ZWQpKTsKKyAgICBzdHlsZS0+c2V0UGFkZGluZ0xlZnQo
TGVuZ3RoKHBhZGRpbmdMZWZ0LCBGaXhlZCkpOworfQorCisjaWYgRU5BQkxFKFBST0dSRVNTX0VM
RU1FTlQpCit2b2lkIFJlbmRlclRoZW1lTml4OjphZGp1c3RQcm9ncmVzc0JhclN0eWxlKFN0eWxl
UmVzb2x2ZXIqLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAoreworICAgIHN0
eWxlLT5zZXRCb3hTaGFkb3cobnVsbHB0cik7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBh
aW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgUmVuZGVyUHJvZ3Jlc3MqIHJlbmRlclByb2dyZXNzID0g
dG9SZW5kZXJQcm9ncmVzcyhvKTsKKyAgICBXZWJLaXQ6OldlYlRoZW1lRW5naW5lOjpQcm9ncmVz
c0JhckV4dHJhUGFyYW1zIGV4dHJhUGFyYW1zOworICAgIGV4dHJhUGFyYW1zLmlzRGV0ZXJtaW5h
dGUgPSByZW5kZXJQcm9ncmVzcy0+aXNEZXRlcm1pbmF0ZSgpOworICAgIGV4dHJhUGFyYW1zLnBv
c2l0aW9uID0gcmVuZGVyUHJvZ3Jlc3MtPnBvc2l0aW9uKCk7CisgICAgZXh0cmFQYXJhbXMuYW5p
bWF0aW9uUHJvZ3Jlc3MgPSByZW5kZXJQcm9ncmVzcy0+YW5pbWF0aW9uUHJvZ3Jlc3MoKTsKKyAg
ICBleHRyYVBhcmFtcy5hbmltYXRpb25TdGFydFRpbWUgPSByZW5kZXJQcm9ncmVzcy0+YW5pbWF0
aW9uU3RhcnRUaW1lKCk7CisgICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRQcm9ncmVzc0Jhcih3ZWJD
YW52YXMoaSksIGdldFdlYlRoZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0
KSwgZXh0cmFQYXJhbXMpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitkb3VibGUgUmVuZGVy
VGhlbWVOaXg6OmFuaW1hdGlvblJlcGVhdEludGVydmFsRm9yUHJvZ3Jlc3NCYXIoUmVuZGVyUHJv
Z3Jlc3MqKSBjb25zdAoreworICAgIHJldHVybiB0aGVtZUVuZ2luZSgpLT5nZXRBbmltYXRpb25S
ZXBlYXRJbnRlcnZhbEZvclByb2dyZXNzQmFyKCk7Cit9CisKK2RvdWJsZSBSZW5kZXJUaGVtZU5p
eDo6YW5pbWF0aW9uRHVyYXRpb25Gb3JQcm9ncmVzc0JhcihSZW5kZXJQcm9ncmVzcyopIGNvbnN0
Cit7CisgICAgcmV0dXJuIHRoZW1lRW5naW5lKCktPmdldEFuaW1hdGlvbkR1cmF0aW9uRm9yUHJv
Z3Jlc3NCYXIoKTsKK30KKyNlbmRpZgorCitib29sIFJlbmRlclRoZW1lTml4OjpwYWludFNsaWRl
clRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCit7CisgICAgdGhlbWVFbmdpbmUoKS0+cGFpbnRTbGlkZXJUcmFjayh3
ZWJDYW52YXMoaW5mbyksIGdldFdlYlRoZW1lU3RhdGUodGhpcywgb2JqZWN0KSwgcmVjdCk7Cisj
aWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCisgICAgcGFpbnRTbGlkZXJUaWNrcyhvYmplY3Qs
IGluZm8sIHJlY3QpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFJlbmRl
clRoZW1lTml4OjphZGp1c3RTbGlkZXJUcmFja1N0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSogc3R5bGUsIEVsZW1lbnQqKSBjb25zdAoreworICAgIHN0eWxlLT5zZXRCb3hTaGFkb3co
bnVsbHB0cik7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50U2xpZGVyVGh1bWIoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYg
cmVjdCkKK3sKKyAgICB0aGVtZUVuZ2luZSgpLT5wYWludFNsaWRlclRodW1iKHdlYkNhbnZhcyhp
bmZvKSwgZ2V0V2ViVGhlbWVTdGF0ZSh0aGlzLCBvYmplY3QpLCByZWN0KTsKKworICAgIHJldHVy
biBmYWxzZTsKK30KKwordm9pZCBSZW5kZXJUaGVtZU5peDo6YWRqdXN0U2xpZGVyVGh1bWJTdHls
ZShTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgUmVuZGVyVGhlbWU6OmFkanVzdFNsaWRlclRodW1i
U3R5bGUoc3R5bGVSZXNvbHZlciwgc3R5bGUsIGVsZW1lbnQpOworICAgIHN0eWxlLT5zZXRCb3hT
aGFkb3cobnVsbHB0cik7Cit9CisKK2NvbnN0IGludCBTbGlkZXJUaHVtYldpZHRoID0gMTA7Citj
b25zdCBpbnQgU2xpZGVyVGh1bWJIZWlnaHQgPSAyMDsKKwordm9pZCBSZW5kZXJUaGVtZU5peDo6
YWRqdXN0U2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCopIGNvbnN0
Cit7CisgICAgQ29udHJvbFBhcnQgcGFydCA9IHN0eWxlLT5hcHBlYXJhbmNlKCk7CisgICAgaWYg
KHBhcnQgPT0gU2xpZGVyVGh1bWJWZXJ0aWNhbFBhcnQpIHsKKyAgICAgICAgc3R5bGUtPnNldFdp
ZHRoKExlbmd0aChTbGlkZXJUaHVtYldpZHRoLCBGaXhlZCkpOworICAgICAgICBzdHlsZS0+c2V0
SGVpZ2h0KExlbmd0aChTbGlkZXJUaHVtYkhlaWdodCwgRml4ZWQpKTsKKyAgICB9IGVsc2UgaWYg
KHBhcnQgPT0gU2xpZGVyVGh1bWJIb3Jpem9udGFsUGFydCkgeworICAgICAgICBzdHlsZS0+c2V0
V2lkdGgoTGVuZ3RoKFNsaWRlclRodW1iV2lkdGgsIEZpeGVkKSk7CisgICAgICAgIHN0eWxlLT5z
ZXRIZWlnaHQoTGVuZ3RoKFNsaWRlclRodW1iSGVpZ2h0LCBGaXhlZCkpOworICAgIH0KK30KKwor
I2lmIEVOQUJMRShEQVRBTElTVF9FTEVNRU5UKQorSW50U2l6ZSBSZW5kZXJUaGVtZU5peDo6c2xp
ZGVyVGlja1NpemUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKDEsIDYpOworfQorCitp
bnQgUmVuZGVyVGhlbWVOaXg6OnNsaWRlclRpY2tPZmZzZXRGcm9tVHJhY2tDZW50ZXIoKSBjb25z
dAoreworICAgIHJldHVybiAtMTI7Cit9CisKK0xheW91dFVuaXQgUmVuZGVyVGhlbWVOaXg6OnNs
aWRlclRpY2tTbmFwcGluZ1RocmVzaG9sZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIDU7Cit9CisK
K2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnN1cHBvcnRzRGF0YUxpc3RVSShjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHR5cGUgPT0gSW5wdXRUeXBlTmFtZXM6OnJh
bmdlKCk7Cit9CisjZW5kaWYKKwordm9pZCBSZW5kZXJUaGVtZU5peDo6YWRqdXN0SW5uZXJTcGlu
QnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCop
IGNvbnN0Cit7CisgICAgc3R5bGUtPnJlc2V0Qm9yZGVyKCk7CisgICAgc3R5bGUtPnNldFdoaXRl
U3BhY2UoUFJFKTsKKworICAgIGludCBwYWRkaW5nVG9wID0gMDsKKyAgICBpbnQgcGFkZGluZ0xl
ZnQgPSAwOworICAgIGludCBwYWRkaW5nQm90dG9tID0gMDsKKyAgICBpbnQgcGFkZGluZ1JpZ2h0
ID0gMDsKKyAgICB0aGVtZUVuZ2luZSgpLT5nZXRJbm5lclNwaW5CdXR0b25QYWRkaW5nKHBhZGRp
bmdUb3AsIHBhZGRpbmdMZWZ0LCBwYWRkaW5nQm90dG9tLCBwYWRkaW5nUmlnaHQpOworICAgIHN0
eWxlLT5zZXRQYWRkaW5nVG9wKExlbmd0aChwYWRkaW5nVG9wLCBGaXhlZCkpOworICAgIHN0eWxl
LT5zZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKHBhZGRpbmdSaWdodCwgRml4ZWQpKTsKKyAgICBzdHls
ZS0+c2V0UGFkZGluZ0JvdHRvbShMZW5ndGgocGFkZGluZ0JvdHRvbSwgRml4ZWQpKTsKKyAgICBz
dHlsZS0+c2V0UGFkZGluZ0xlZnQoTGVuZ3RoKHBhZGRpbmdMZWZ0LCBGaXhlZCkpOworfQorCiti
b29sIFJlbmRlclRoZW1lTml4OjpwYWludElubmVyU3BpbkJ1dHRvbihSZW5kZXJPYmplY3QqIG8s
IGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBXZWJLaXQ6
OldlYlRoZW1lRW5naW5lOjpJbm5lclNwaW5CdXR0b25FeHRyYVBhcmFtcyBleHRyYVBhcmFtczsK
KyAgICBleHRyYVBhcmFtcy5zcGluVXAgPSBpc1NwaW5VcEJ1dHRvblBhcnRQcmVzc2VkKG8pOwor
ICAgIGV4dHJhUGFyYW1zLnJlYWRPbmx5ID0gaXNSZWFkT25seUNvbnRyb2wobyk7CisKKyAgICB0
aGVtZUVuZ2luZSgpLT5wYWludElubmVyU3BpbkJ1dHRvbih3ZWJDYW52YXMoaSksIGdldFdlYlRo
ZW1lU3RhdGUodGhpcywgbyksIFdlYktpdDo6V2ViUmVjdChyZWN0KSwgZXh0cmFQYXJhbXMpOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQordm9pZCBS
ZW5kZXJUaGVtZU5peDo6YWRqdXN0TWV0ZXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3sKKyAgICBzdHlsZS0+c2V0Qm94U2hhZG93KG51
bGxwdHIpOworfQorCitJbnRTaXplIFJlbmRlclRoZW1lTml4OjptZXRlclNpemVGb3JCb3VuZHMo
Y29uc3QgUmVuZGVyTWV0ZXIqLCBjb25zdCBJbnRSZWN0JiBib3VuZHMpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGJvdW5kcy5zaXplKCk7Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnN1cHBvcnRz
TWV0ZXIoQ29udHJvbFBhcnQgcGFydCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKHBhcnQpIHsKKyAg
ICBjYXNlIFJlbGV2YW5jeUxldmVsSW5kaWNhdG9yUGFydDoKKyAgICBjYXNlIERpc2NyZXRlQ2Fw
YWNpdHlMZXZlbEluZGljYXRvclBhcnQ6CisgICAgY2FzZSBSYXRpbmdMZXZlbEluZGljYXRvclBh
cnQ6CisgICAgY2FzZSBNZXRlclBhcnQ6CisgICAgY2FzZSBDb250aW51b3VzQ2FwYWNpdHlMZXZl
bEluZGljYXRvclBhcnQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgUmVuZGVyVGhlbWVOaXg6OnBhaW50
TWV0ZXIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit7CisgICAgaWYgKCFvLT5pc01ldGVyKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgUmVuZGVyTWV0ZXIqIHJlbmRlck1ldGVyID0gdG9SZW5kZXJNZXRlcihvKTsKKyAgICBI
VE1MTWV0ZXJFbGVtZW50KiBlID0gcmVuZGVyTWV0ZXItPm1ldGVyRWxlbWVudCgpOworICAgIFdl
YktpdDo6V2ViVGhlbWVFbmdpbmU6Ok1ldGVyRXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAg
ZXh0cmFQYXJhbXMubWluID0gZS0+bWluKCk7CisgICAgZXh0cmFQYXJhbXMubWF4ID0gZS0+bWF4
KCk7CisgICAgZXh0cmFQYXJhbXMudmFsdWUgPSBlLT52YWx1ZSgpOworICAgIGV4dHJhUGFyYW1z
LmxvdyA9IGUtPmxvdygpOworICAgIGV4dHJhUGFyYW1zLmhpZ2ggPSBlLT5oaWdoKCk7CisgICAg
ZXh0cmFQYXJhbXMub3B0aW11bSA9IGUtPm9wdGltdW0oKTsKKworICAgIHRoZW1lRW5naW5lKCkt
PnBhaW50TWV0ZXIod2ViQ2FudmFzKGkpLCBnZXRXZWJUaGVtZVN0YXRlKHRoaXMsIG8pLCByZWN0
LCBleHRyYVBhcmFtcyk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvUmVuZGVyVGhlbWVOaXguaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
NDFkNTA3MDg2YWQ5NjMwNWYzMWQ5YTZjYjk1ZjJlM2ZlMTVkMGY3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1JlbmRlclRoZW1lTml4LmgKQEAgLTAsMCAr
MSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTItMjAxMyBOb2tpYSBDb3Jwb3JhdGlv
biBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlclRo
ZW1lTml4X2gKKyNkZWZpbmUgUmVuZGVyVGhlbWVOaXhfaAorCisjaW5jbHVkZSAiUmVuZGVyVGhl
bWUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJUaGVtZU5peCA6IHB1
YmxpYyBSZW5kZXJUaGVtZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVuZGVy
VGhlbWU+IGNyZWF0ZSgpOworCisgICAgdmlydHVhbCB+UmVuZGVyVGhlbWVOaXgoKTsKKworICAg
IHZpcnR1YWwgU3RyaW5nIGV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBleHRyYVF1aXJrc1N0eWxlU2hlZXQoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBleHRyYVBsdWdJbnNTdHlsZVNoZWV0KCkgT1ZFUlJJREU7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc3lzdGVtRm9udChXZWJDb3JlOjpDU1NWYWx1ZUlELCBGb250RGVzY3JpcHRpb24m
KSBjb25zdCBPVkVSUklERTsKKworI2lmIEVOQUJMRShQUk9HUkVTU19FTEVNRU5UKQorICAgIC8v
IFJldHVybnMgdGhlIHJlcGVhdCBpbnRlcnZhbCBvZiB0aGUgYW5pbWF0aW9uIGZvciB0aGUgcHJv
Z3Jlc3MgYmFyLgorICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvblJlcGVhdEludGVydmFsRm9y
UHJvZ3Jlc3NCYXIoUmVuZGVyUHJvZ3Jlc3MqKSBjb25zdCBPVkVSUklERTsKKyAgICAvLyBSZXR1
cm5zIHRoZSBkdXJhdGlvbiBvZiB0aGUgYW5pbWF0aW9uIGZvciB0aGUgcHJvZ3Jlc3MgYmFyLgor
ICAgIHZpcnR1YWwgZG91YmxlIGFuaW1hdGlvbkR1cmF0aW9uRm9yUHJvZ3Jlc3NCYXIoUmVuZGVy
UHJvZ3Jlc3MqKSBjb25zdCBPVkVSUklERTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKE1FVEVSX0VM
RU1FTlQpCisgICAgdmlydHVhbCBJbnRTaXplIG1ldGVyU2l6ZUZvckJvdW5kcyhjb25zdCBSZW5k
ZXJNZXRlciosIGNvbnN0IEludFJlY3QmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNNZXRlcihDb250cm9sUGFydCkgY29uc3QgT1ZFUlJJREU7CisjZW5kaWYKKwor
cHJvdGVjdGVkOgorICAgIC8vIFRoZSBwbGF0Zm9ybSBzZWxlY3Rpb24gY29sb3IuCisgICAgdmly
dHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZv
cm1BY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIENvbG9yIHBsYXRmb3JtSW5hY3RpdmVTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBj
b25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0Qm94
U2VsZWN0aW9uQmFja2dyb3VuZENvbG9yKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91bmRDb2xvcigpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1BY3RpdmVMaXN0Qm94U2Vs
ZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBDb2xv
ciBwbGF0Zm9ybUluYWN0aXZlTGlzdEJveFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigpIGNvbnN0
IE9WRVJSSURFOworCisgICAgLy8gSGlnaGxpZ2h0aW5nIGNvbG9ycyBmb3IgVGV4dE1hdGNoZXMu
CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xv
cigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVRl
eHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCBD
b2xvciBwbGF0Zm9ybUZvY3VzUmluZ0NvbG9yKCkgY29uc3QgT1ZFUlJJREU7CisKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRD
b2xvcigpIGNvbnN0IE9WRVJSSURFOworI2VuZGlmCisKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnRC
dXR0b24oUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqLCBj
b25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3Qg
SW50UmVjdCYpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIHBhaW50Q2hlY2tib3goUmVu
ZGVyT2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDaGVja2JveFNpemUoUmVuZGVyU3R5bGUqKSBjb25zdCBPVkVS
UklERTsKKworICAgIHZpcnR1YWwgYm9vbCBwYWludFJhZGlvKFJlbmRlck9iamVjdCosIGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IEludFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0UmFkaW9TaXplKFJlbmRlclN0eWxlKikgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnRNZW51TGlzdChSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25z
dCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdE1lbnVMaXN0U3R5
bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBwYWludE1lbnVMaXN0QnV0dG9uKFJlbmRlck9iamVjdCogbywg
Y29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByKSBPVkVSUklERSB7IHJldHVybiBw
YWludE1lbnVMaXN0KG8sIGksIHIpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0SW5uZXJT
cGluQnV0dG9uU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBwYWludElubmVyU3BpbkJ1dHRvbihSZW5k
ZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mLCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisK
KyNpZiBFTkFCTEUoUFJPR1JFU1NfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0UHJv
Z3Jlc3NCYXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHBhaW50UHJvZ3Jlc3NCYXIoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworI2VuZGlm
CisKKyNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIHZvaWQgYWRqdXN0TWV0
ZXJTdHlsZShTdHlsZVJlc29sdmVyKiwgUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHBhaW50TWV0ZXIoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
UGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworI2VuZGlmCisKKyAgICB2aXJ0
dWFsIGJvb2wgcGFpbnRTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8m
LCBjb25zdCBJbnRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkanVzdFNsaWRl
clRyYWNrU3R5bGUoU3R5bGVSZXNvbHZlciosIFJlbmRlclN0eWxlKiwgRWxlbWVudCopIGNvbnN0
IE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIHBhaW50U2xpZGVyVGh1bWIoUmVuZGVyT2Jq
ZWN0KiwgY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgSW50UmVjdCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBhZGp1c3RTbGlkZXJUaHVtYlN0eWxlKFN0eWxlUmVzb2x2ZXIqLCBSZW5kZXJT
dHlsZSosIEVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGp1
c3RTbGlkZXJUaHVtYlNpemUoUmVuZGVyU3R5bGUqLCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7
CisKKyNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKKyAgICB2aXJ0dWFsIEludFNpemUgc2xp
ZGVyVGlja1NpemUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCBzbGlkZXJUaWNr
T2Zmc2V0RnJvbVRyYWNrQ2VudGVyKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlv
dXRVbml0IHNsaWRlclRpY2tTbmFwcGluZ1RocmVzaG9sZCgpIGNvbnN0IE9WRVJSSURFOworCisg
ICAgdmlydHVhbCBib29sIHN1cHBvcnRzRGF0YUxpc3RVSShjb25zdCBBdG9taWNTdHJpbmcmKSBj
b25zdCBPVkVSUklERTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFJlbmRlclRoZW1lTml4KCk7
Cit9OworCit9CisKKyNlbmRpZiAvLyBSZW5kZXJUaGVtZU5peF9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvU2Nyb2xsYmFyVGhlbWVOaXguY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbml4L1Njcm9sbGJhclRoZW1lTml4LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMGMw
MWZlZmEzOTY4YWI3N2I5M2QwNmMzYjI2ZmQwODVmMDU4NzU1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbml4L1Njcm9sbGJhclRoZW1lTml4LmNwcApAQCAtMCww
ICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgTm9raWEgQ29ycG9yYXRp
b24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lTml4LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVtZSgpCit7Cisg
ICAgc3RhdGljIFNjcm9sbGJhclRoZW1lTml4IHRoZW1lOworICAgIHJldHVybiAmdGhlbWU7Cit9
CisKK1Njcm9sbGJhclRoZW1lTml4Ojp+U2Nyb2xsYmFyVGhlbWVOaXgoKQoreworfQorCitpbnQg
U2Nyb2xsYmFyVGhlbWVOaXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6
ZSkKK3sKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBTY3JvbGxiYXJUaGVtZU5peDo6cmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKQoreworfQorCit2b2lkIFNjcm9sbGJh
clRoZW1lTml4Ojp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KikKK3sK
K30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvU2Nyb2xs
YmFyVGhlbWVOaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25peC9TY3JvbGxiYXJUaGVt
ZU5peC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjY4NGRlOWNlZjc4MDhjNzFiNzQxZmQzZjc5Y2MwNDQ3MTg5YzA2
MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uaXgvU2Nyb2xs
YmFyVGhlbWVOaXguaApAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
LTIwMTMgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZU5peF9oCisjZGVmaW5lIFNjcm9sbGJhclRoZW1l
Tml4X2gKKworI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2Nyb2xsYmFyVGhlbWVOaXggOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewor
cHVibGljOgorICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lTml4KCk7CisKKyAgICB2aXJ0dWFs
IGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Ny
b2xsYmFyKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lz
dGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgT1ZFUlJJREU7Cit9OworCit9Cisj
ZW5kaWYgLy8gU2Nyb2xsYmFyVGhlbWVOaXhfaAorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>