<?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>73897</bug_id>
          
          <creation_ts>2011-12-06 02:18:11 -0800</creation_ts>
          <short_desc>[V8] Multiple VMs: make ScheduledAction an interface.</short_desc>
          <delta_ts>2014-12-16 00:48:02 -0800</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>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>acucu</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515746</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-12-06 02:18:11 -0800</bug_when>
    <thetext>ScheduledAction::execute could only invoke JavaScript function. Introduce ScheduleAction interface to allow arbitrary binding to use DOMWindow::setTimeout like it is already done for EventListener interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515751</commentid>
    <comment_count>1</comment_count>
      <attachid>118011</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-12-06 02:21:46 -0800</bug_when>
    <thetext>Created attachment 118011
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515753</commentid>
    <comment_count>2</comment_count>
      <attachid>118012</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-12-06 02:23:27 -0800</bug_when>
    <thetext>Created attachment 118012
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516142</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-06 12:17:32 -0800</bug_when>
    <thetext>Isn&apos;t there a JSScheduledAction which would need modifying too?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055919</commentid>
    <comment_count>4</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-16 00:48:02 -0800</bug_when>
    <thetext>Closing some V8-related work items.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118011</attachid>
            <date>2011-12-06 02:21:46 -0800</date>
            <delta_ts>2011-12-06 02:23:27 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>17121</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YmI5ZjliLi42MmI4MWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTEtMTItMDYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW1Y4XSBNdWx0aXBsZSBWTXM6IG1ha2UgU2NoZWR1bGVkQWN0aW9uIGFuIGlu
dGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczODk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlIGNvdWxkIG9ubHkgaW52b2tlIEphdmFTY3JpcHQgZnVu
Y3Rpb24uIEludHJvZHVjZSBTY2hlZHVsZUFjdGlvbgorICAgICAgICBpbnRlcmZhY2UgdG8gYWxs
b3cgYXJiaXRyYXJ5IGJpbmRpbmcgdG8gdXNlIERPTVdpbmRvdzo6c2V0VGltZW91dCBsaWtlIGl0
IGlzIGFscmVhZHkgZG9uZQorICAgICAgICBmb3IgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2UuCisK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvcHVibGljL1NjaGVk
dWxlZEFjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFNjaGVkdWxlZEFj
dGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4U2NoZWR1bGVkQWN0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaW5kb3dTZXRUaW1lb3V0SW1wbCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXRUaW1lb3V0T3JJbnRlcnZhbCk6CisKIDIwMTEtMTAtMzEgIEplcmVteSBB
cHRob3JwICA8amVyZW15YUBnb29nbGUuY29tPgogCiAgICAgICAgIEZpeCBhIGNyYXNoIHJlbGF0
aW5nIHRvIGFub255bW91cyBibG9jayBtZXJnaW5nIGluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDZh
Njc1Yi4uYjI2ZjA4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMjAxMiw2ICsyMDEyLDcgQEAKICAg
ICAgICAgICAgICdiaW5kaW5ncy9vYmpjL09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3QubW0nLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3B1YmxpYy9TY2hlZHVsZWRBY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvRE9NRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0RPTURhdGEuaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCcsCkBAIC0yMDM5LDggKzIw
NDAsNiBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9SZXRhaW5lZE9iamVjdEluZm8uaCcsCi0gICAgICAgICAgICAnYmluZGlu
Z3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvU2No
ZWR1bGVkQWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFT
dG9yZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwJywK
QEAgLTIxMTksNiArMjExOCw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOb2RlRmls
dGVyQ29uZGl0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFByb3h5LmgnLAorICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1Y4U2NoZWR1bGVkQWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhTY2hlZHVsZWRBY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFV0aWxpdGllcy5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOFdpbmRvd0Vycm9ySGFuZGxlci5jcHAnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvcHVibGljL1NjaGVkdWxlZEFjdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvcHVibGljL1NjaGVkdWxlZEFjdGlvbi5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmM2E2ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9wdWJsaWMvU2NoZWR1bGVkQWN0aW9uLmgKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgU2NoZWR1bGVkQWN0aW9uX2gKKyNkZWZpbmUgU2NoZWR1bGVkQWN0aW9uX2gK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
CitjbGFzcyBTY2hlZHVsZWRBY3Rpb24geworcHVibGljOgorICAgIFNjaGVkdWxlZEFjdGlvbigp
IHsgfQorICAgIHZpcnR1YWwgflNjaGVkdWxlZEFjdGlvbigpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY2hlZHVsZWRBY3Rpb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4U2NoZWR1bGVkQWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5hNTljMDAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhTY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhTY2hlZHVsZWRBY3Rpb24uaCIK
KworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKworI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIK
KyNpbmNsdWRlICJXb3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJUaHJlYWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitWOFNjaGVkdWxlZEFjdGlvbjo6
VjhTY2hlZHVsZWRBY3Rpb24odjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCwgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb24+IGZ1bmMsIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YXJndltdKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2NvZGUoU3RyaW5nKCks
IEtVUkwoKSwgVGV4dFBvc2l0aW9uOjpiZWxvd1JhbmdlUG9zaXRpb24oKSkKK3sKKyAgICBtX2Z1
bmN0aW9uID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPjo6TmV3KGZ1bmMpOworCisjaWZu
ZGVmIE5ERUJVRworICAgIFY4R0NDb250cm9sbGVyOjpyZWdpc3Rlckdsb2JhbEhhbmRsZShTQ0hF
RFVMRURfQUNUSU9OLCB0aGlzLCBtX2Z1bmN0aW9uKTsKKyNlbmRpZgorCisgICAgbV9hcmdjID0g
YXJnYzsKKyAgICBpZiAoYXJnYyA+IDApIHsKKyAgICAgICAgbV9hcmd2ID0gbmV3IHY4OjpQZXJz
aXN0ZW50PHY4OjpWYWx1ZT5bYXJnY107CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJn
YzsgaSsrKSB7CisgICAgICAgICAgICBtX2FyZ3ZbaV0gPSB2ODo6UGVyc2lzdGVudDx2ODo6VmFs
dWU+OjpOZXcoYXJndltpXSk7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgVjhHQ0NvbnRyb2xsZXI6
OnJlZ2lzdGVyR2xvYmFsSGFuZGxlKFNDSEVEVUxFRF9BQ1RJT04sIHRoaXMsIG1fYXJndltpXSk7
CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBtX2FyZ3YgPSAwOworfQor
CitWOFNjaGVkdWxlZEFjdGlvbjo6flY4U2NoZWR1bGVkQWN0aW9uKCkKK3sKKyAgICBpZiAobV9m
dW5jdGlvbi5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworI2lmbmRlZiBOREVCVUcKKyAg
ICBWOEdDQ29udHJvbGxlcjo6dW5yZWdpc3Rlckdsb2JhbEhhbmRsZSh0aGlzLCBtX2Z1bmN0aW9u
KTsKKyNlbmRpZgorICAgIG1fZnVuY3Rpb24uRGlzcG9zZSgpOworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBtX2FyZ2M7IGkrKykgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgVjhHQ0NvbnRy
b2xsZXI6OnVucmVnaXN0ZXJHbG9iYWxIYW5kbGUodGhpcywgbV9hcmd2W2ldKTsKKyNlbmRpZgor
ICAgICAgICBtX2FyZ3ZbaV0uRGlzcG9zZSgpOworICAgIH0KKworICAgIGlmIChtX2FyZ2MgPiAw
KQorICAgICAgICBkZWxldGVbXSBtX2FyZ3Y7Cit9CisKK3ZvaWQgVjhTY2hlZHVsZWRBY3Rpb246
OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBWOFByb3h5
KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGNvbnRleHQpOworICAgIGlmIChwcm94eSkKKyAg
ICAgICAgZXhlY3V0ZShwcm94eSk7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAgZWxzZSBpZiAo
Y29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpCisgICAgICAgIGV4ZWN1dGUoc3RhdGljX2Nhc3Q8
V29ya2VyQ29udGV4dCo+KGNvbnRleHQpKTsKKyNlbmRpZgorICAgIC8vIEl0J3MgcG9zc2libGUg
dGhhdCBKYXZhc2NyaXB0IGlzIGRpc2FibGVkIGFuZCB0aGF0IHdlIGhhdmUgbmVpdGhlciBhIFY4
UHJveHkKKyAgICAvLyBub3IgYSBXb3JrZXJDb250ZXh0LiAgRG8gbm90aGluZyBpbiB0aGF0IGNh
c2UuCit9CisKK3ZvaWQgVjhTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoVjhQcm94eSogcHJveHkp
Cit7CisgICAgQVNTRVJUKHByb3h5KTsKKworICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29w
ZTsKKyAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB2ODo6TG9jYWw8djg6
OkNvbnRleHQ+OjpOZXcobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAodjhDb250ZXh0LklzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOyAvLyBKUyBtYXkgbm90IGJlIGVuYWJsZWQuCisKKyNpZiBQ
TEFURk9STShDSFJPTUlVTSkKKyAgICBUUkFDRV9FVkVOVCgiVjhTY2hlZHVsZWRBY3Rpb246OmV4
ZWN1dGUiLCB0aGlzLCAwKTsKKyNlbmRpZgorCisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3Bl
KHY4Q29udGV4dCk7CisKKyAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBsZW1lbnQgdGltZW91dHMg
Zm9yIHByZWVtcHRpbmcgYSBsb25nLXJ1bm5pbmcgc2NyaXB0LgorICAgIGlmICghbV9mdW5jdGlv
bi5Jc0VtcHR5KCkgJiYgbV9mdW5jdGlvbi0+SXNGdW5jdGlvbigpKSB7CisgICAgICAgIHByb3h5
LT5jYWxsRnVuY3Rpb24odjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2Z1bmN0
aW9uKSwgdjhDb250ZXh0LT5HbG9iYWwoKSwgbV9hcmdjLCBtX2FyZ3YpOworICAgICAgICBEb2N1
bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cHJveHktPmV2YWx1YXRlKG1fY29kZSwgMCk7CisKKyAgICAvLyBUaGUgJ3Byb3h5JyBtYXkgYmUg
aW52YWxpZCBhdCB0aGlzIHBvaW50IHNpbmNlIEpTIGNvdWxkIGhhdmUgcmVsZWFzZWQgdGhlIG93
bmluZyBGcmFtZS4KK30KKworI2lmIEVOQUJMRShXT1JLRVJTKQordm9pZCBWOFNjaGVkdWxlZEFj
dGlvbjo6ZXhlY3V0ZShXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0KQoreworICAgIC8vIElu
IGEgV29ya2VyLCB0aGUgZXhlY3V0aW9uIHNob3VsZCBhbHdheXMgaGFwcGVuIG9uIGEgd29ya2Vy
IHRocmVhZC4KKyAgICBBU1NFUlQod29ya2VyQ29udGV4dC0+dGhyZWFkKCktPnRocmVhZElEKCkg
PT0gY3VycmVudFRocmVhZCgpKTsKKyAgCisgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2Ny
aXB0Q29udHJvbGxlciA9IHdvcmtlckNvbnRleHQtPnNjcmlwdCgpOworCisgICAgaWYgKCFtX2Z1
bmN0aW9uLklzRW1wdHkoKSAmJiBtX2Z1bmN0aW9uLT5Jc0Z1bmN0aW9uKCkpIHsKKyAgICAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiB2OENvbnRleHQgPSB2ODo6TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcobV9jb250ZXh0Lmdl
dCgpKTsKKyAgICAgICAgQVNTRVJUKCF2OENvbnRleHQuSXNFbXB0eSgpKTsKKyAgICAgICAgdjg6
OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisgICAgICAgIG1fZnVuY3Rpb24tPkNh
bGwodjhDb250ZXh0LT5HbG9iYWwoKSwgbV9hcmdjLCBtX2FyZ3YpOworICAgIH0gZWxzZQorICAg
ICAgICBzY3JpcHRDb250cm9sbGVyLT5ldmFsdWF0ZShtX2NvZGUpOworfQorI2VuZGlmCisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4U2NoZWR1bGVkQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFNj
aGVkdWxlZEFjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYzMw
ODUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFNjaGVk
dWxlZEFjdGlvbi5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhTY2hlZHVsZWRBY3Rp
b25faAorI2RlZmluZSBWOFNjaGVkdWxlZEFjdGlvbl9oCisKKyNpbmNsdWRlICJPd25IYW5kbGUu
aCIKKyNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCisjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorCisjaW5jbHVkZSA8djguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBjbGFzcyBWOFByb3h5OworICAgIGNsYXNz
IFdvcmtlckNvbnRleHQ7CisKKyAgICBjbGFzcyBWOFNjaGVkdWxlZEFjdGlvbiA6IHB1YmxpYyBT
Y2hlZHVsZWRBY3Rpb24geworICAgIHB1YmxpYzoKKyAgICAgICAgVjhTY2hlZHVsZWRBY3Rpb24o
djg6OkhhbmRsZTx2ODo6Q29udGV4dD4sIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiwgaW50IGFy
Z2MsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10pOworICAgICAgICBleHBsaWNpdCBWOFNj
aGVkdWxlZEFjdGlvbih2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBjb25zdCBXVEY6
OlN0cmluZyYgY29kZSwgY29uc3QgS1VSTCYgdXJsID0gS1VSTCgpKQorICAgICAgICAgICAgOiBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAgICAgICAgICwgbV9hcmdjKDApCisgICAgICAgICAgICAs
IG1fYXJndigwKQorICAgICAgICAgICAgLCBtX2NvZGUoY29kZSwgdXJsKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5WOFNjaGVkdWxlZEFjdGlvbigpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisKKyAgICBw
cml2YXRlOgorICAgICAgICB2b2lkIGV4ZWN1dGUoVjhQcm94eSopOworI2lmIEVOQUJMRShXT1JL
RVJTKQorICAgICAgICB2b2lkIGV4ZWN1dGUoV29ya2VyQ29udGV4dCopOworI2VuZGlmCisKKyAg
ICAgICAgT3duSGFuZGxlPHY4OjpDb250ZXh0PiBtX2NvbnRleHQ7CisgICAgICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvbj4gbV9mdW5jdGlvbjsKKyAgICAgICAgaW50IG1fYXJnYzsKKyAg
ICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiogbV9hcmd2OworICAgICAgICBTY3JpcHRT
b3VyY2VDb2RlIG1fY29kZTsKKyAgICB9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBWOFNjaGVkdWxlZEFjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAzYTNlN2E1Li5i
Mjg2Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhE
T01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJNZWRp
YVBsYXllci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5o
IgotI2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNv
ZGUuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgpAQCAtNjMsNiArNjIsNyBAQAogI2luY2x1ZGUgIlY4TWVzc2FnZVBvcnRDdXN0b20u
aCIKICNpbmNsdWRlICJWOE5vZGUuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAi
VjhTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2lmIEVOQUJM
RShXRUJfU09DS0VUUykKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKQEAgLTEyNiw3ICsxMjYsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0VGltZW91dEltcGwoY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgICAgICB9CiAKICAgICAgICAgLy8gcGFyYW1z
IGlzIHBhc3NlZCB0byBhY3Rpb24sIGFuZCByZWxlYXNlZCBpbiBhY3Rpb24ncyBkZXN0cnVjdG9y
Ci0gICAgICAgIE93blB0cjxTY2hlZHVsZWRBY3Rpb24+IGFjdGlvbiA9IGFkb3B0UHRyKG5ldyBT
Y2hlZHVsZWRBY3Rpb24oVjhQcm94eTo6Y29udGV4dChpbXAtPmZyYW1lKCkpLCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj46OkNhc3QoZnVuY3Rpb24pLCBwYXJhbUNvdW50LCBwYXJhbXMpKTsKKyAg
ICAgICAgT3duUHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gYWRvcHRQdHIobmV3IFY4U2No
ZWR1bGVkQWN0aW9uKFY4UHJveHk6OmNvbnRleHQoaW1wLT5mcmFtZSgpKSwgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+OjpDYXN0KGZ1bmN0aW9uKSwgcGFyYW1Db3VudCwgcGFyYW1zKSk7CiAKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgT3duQXJyYXlQdHIgZm9yIHBhcmFtcy4KICAg
ICAgICAgZGVsZXRlW10gcGFyYW1zOwpAQCAtMTM1LDcgKzEzNSw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBXaW5kb3dTZXRUaW1lb3V0SW1wbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBi
b29sIHNpbmdsCiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGltcC0+ZG9jdW1lbnQoKSAmJiAh
aW1wLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dFdmFsKCkpCiAg
ICAgICAgICAgICByZXR1cm4gdjg6OkludGVnZXI6Ok5ldygwKTsKLSAgICAgICAgaWQgPSBET01U
aW1lcjo6aW5zdGFsbChzY3JpcHRDb250ZXh0LCBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9u
KFY4UHJveHk6OmNvbnRleHQoaW1wLT5mcmFtZSgpKSwgZnVuY3Rpb25TdHJpbmcpKSwgdGltZW91
dCwgc2luZ2xlU2hvdCk7CisgICAgICAgIGlkID0gRE9NVGltZXI6Omluc3RhbGwoc2NyaXB0Q29u
dGV4dCwgYWRvcHRQdHIobmV3IFY4U2NoZWR1bGVkQWN0aW9uKFY4UHJveHk6OmNvbnRleHQoaW1w
LT5mcmFtZSgpKSwgZnVuY3Rpb25TdHJpbmcpKSwgdGltZW91dCwgc2luZ2xlU2hvdCk7CiAgICAg
fQogCiAgICAgLy8gVHJ5IHRvIGRvIHRoZSBpZGxlIG5vdGlmaWNhdGlvbiBiZWZvcmUgdGhlIHRp
bWVvdXQgZXhwaXJlcyB0byBnZXQgYmV0dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IDFk
OGYzMzUuLjE4YzRmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC0zNSwxMCArMzUsMTAg
QEAKIAogI2luY2x1ZGUgIkRPTVRpbWVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgot
I2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRl
ICJWOFNjaGVkdWxlZEFjdGlvbi5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVk
ZSAiVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5o
IgpAQCAtNjYsNyArNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50
ZXJ2YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIHY4OjpIYW5k
bGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHByb3h5LT5jb250ZXh0KCk7CiAgICAgaWYgKGZ1
bmN0aW9uLT5Jc1N0cmluZygpKSB7CiAgICAgICAgIFdURjo6U3RyaW5nIHN0cmluZ0Z1bmN0aW9u
ID0gdG9XZWJDb3JlU3RyaW5nKGZ1bmN0aW9uKTsKLSAgICAgICAgdGltZXJJZCA9IERPTVRpbWVy
OjppbnN0YWxsKHdvcmtlckNvbnRleHQsIGFkb3B0UHRyKG5ldyBTY2hlZHVsZWRBY3Rpb24odjhD
b250ZXh0LCBzdHJpbmdGdW5jdGlvbiwgd29ya2VyQ29udGV4dC0+dXJsKCkpKSwgdGltZW91dCwg
c2luZ2xlU2hvdCk7CisgICAgICAgIHRpbWVySWQgPSBET01UaW1lcjo6aW5zdGFsbCh3b3JrZXJD
b250ZXh0LCBhZG9wdFB0cihuZXcgVjhTY2hlZHVsZWRBY3Rpb24odjhDb250ZXh0LCBzdHJpbmdG
dW5jdGlvbiwgd29ya2VyQ29udGV4dC0+dXJsKCkpKSwgdGltZW91dCwgc2luZ2xlU2hvdCk7CiAg
ICAgfSBlbHNlIGlmIChmdW5jdGlvbi0+SXNGdW5jdGlvbigpKSB7CiAgICAgICAgIHNpemVfdCBw
YXJhbUNvdW50ID0gYXJndW1lbnRDb3VudCA+PSAyID8gYXJndW1lbnRDb3VudCAtIDIgOiAwOwog
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiogcGFyYW1zID0gMDsKQEAgLTc2LDcgKzc2LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVydmFsKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBh
cmdzW2krMl07CiAgICAgICAgIH0KICAgICAgICAgLy8gU2NoZWR1bGVkQWN0aW9uIHRha2VzIG93
bmVyc2hpcCBvZiBhY3R1YWwgcGFyYW1zIGFuZCByZWxlYXNlcyB0aGVtIGluIGl0cyBkZXN0cnVj
dG9yLgotICAgICAgICBPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBhZG9wdFB0cihu
ZXcgU2NoZWR1bGVkQWN0aW9uKHY4Q29udGV4dCwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpD
YXN0KGZ1bmN0aW9uKSwgcGFyYW1Db3VudCwgcGFyYW1zKSk7CisgICAgICAgIE93blB0cjxTY2hl
ZHVsZWRBY3Rpb24+IGFjdGlvbiA9IGFkb3B0UHRyKG5ldyBWOFNjaGVkdWxlZEFjdGlvbih2OENv
bnRleHQsIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChmdW5jdGlvbiksIHBhcmFtQ291
bnQsIHBhcmFtcykpOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBhIE93bkFycmF5
UHRyIGZvciBwYXJhbXMuCiAgICAgICAgIGRlbGV0ZSBbXSBwYXJhbXM7CiAgICAgICAgIHRpbWVy
SWQgPSBET01UaW1lcjo6aW5zdGFsbCh3b3JrZXJDb250ZXh0LCBhY3Rpb24ucmVsZWFzZSgpLCB0
aW1lb3V0LCBzaW5nbGVTaG90KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118012</attachid>
            <date>2011-12-06 02:23:27 -0800</date>
            <delta_ts>2011-12-08 02:19:50 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26053</size>
            <attacher name="Pavel Podivilov">podivilov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5YmI5ZjliLi4zZDE3ZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkg
QEAKKzIwMTEtMTItMDYgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgW1Y4XSBNdWx0aXBsZSBWTXM6IG1ha2UgU2NoZWR1bGVkQWN0aW9uIGFuIGlu
dGVyZmFjZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczODk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlIGNvdWxkIG9ubHkgaW52b2tlIEphdmFTY3JpcHQgZnVu
Y3Rpb24uIEludHJvZHVjZSBTY2hlZHVsZUFjdGlvbgorICAgICAgICBpbnRlcmZhY2UgdG8gYWxs
b3cgYXJiaXRyYXJ5IGJpbmRpbmcgdG8gdXNlIERPTVdpbmRvdzo6c2V0VGltZW91dCBsaWtlIGl0
IGlzIGFscmVhZHkgZG9uZQorICAgICAgICBmb3IgRXZlbnRMaXN0ZW5lciBpbnRlcmZhY2UuCisK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogYmluZGluZ3MvcHVibGljL1NjaGVk
dWxlZEFjdGlvbi5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hl
ZHVsZWRBY3Rpb24uaC4KKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1
bGVkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6flNjaGVkdWxl
ZEFjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhTY2hlZHVsZWRBY3Rpb24uY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OlY4U2NoZWR1bGVkQWN0aW9uOjpWOFNjaGVkdWxlZEFjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpWOFNjaGVkdWxlZEFjdGlvbjo6flY4U2NoZWR1bGVkQWN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy92OC9WOFNjaGVkdWxlZEFjdGlvbi5oOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmguCisgICAgICAgIChXZWJD
b3JlOjpWOFNjaGVkdWxlZEFjdGlvbjo6VjhTY2hlZHVsZWRBY3Rpb24pOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXaW5kb3dTZXRUaW1lb3V0SW1wbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
V29ya2VyQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXRUaW1lb3V0T3JJ
bnRlcnZhbCk6CisKIDIwMTEtMTAtMzEgIEplcmVteSBBcHRob3JwICA8amVyZW15YUBnb29nbGUu
Y29tPgogCiAgICAgICAgIEZpeCBhIGNyYXNoIHJlbGF0aW5nIHRvIGFub255bW91cyBibG9jayBt
ZXJnaW5nIGluCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMDZhNjc1Yi4uYjI2ZjA4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMjAxMiw2ICsyMDEyLDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpj
L09iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tJywKICAgICAgICAgICAgICdiaW5kaW5ncy9vYmpj
L1B1YmxpY0RPTUludGVyZmFjZXMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvb2JqYy9XZWJT
Y3JpcHRPYmplY3QubW0nLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3B1YmxpYy9TY2hlZHVsZWRB
Y3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvRE9NRGF0YS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L0RPTURhdGEuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmNwcCcsCkBAIC0yMDM5LDggKzIwNDAsNiBAQAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1JldGFpbmVkRE9NSW5mby5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9SZXRhaW5lZE9i
amVjdEluZm8uaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNw
cCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Njb3BlZERPTURhdGFTdG9yZS5oJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwJywKQEAgLTIxMTksNiArMjExOCw4IEBACiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9WOFByb3h5LmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4U2NoZWR1bGVkQWN0aW9u
LmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhTY2hlZHVsZWRBY3Rpb24uaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9WOFV0aWxpdGllcy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFdp
bmRvd0Vycm9ySGFuZGxlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvcHVibGljL1NjaGVkdWxlZEFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvcHVi
bGljL1NjaGVkdWxlZEFjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmZmM2E2ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9wdWJs
aWMvU2NoZWR1bGVkQWN0aW9uLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2NoZWR1bGVkQWN0
aW9uX2gKKyNkZWZpbmUgU2NoZWR1bGVkQWN0aW9uX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBTY2hlZHVsZWRBY3Rpb24g
eworcHVibGljOgorICAgIFNjaGVkdWxlZEFjdGlvbigpIHsgfQorICAgIHZpcnR1YWwgflNjaGVk
dWxlZEFjdGlvbigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBTY2hlZHVsZWRBY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVs
ZWRBY3Rpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWNmN2EwLi4wMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxNTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
Ny0yMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNjaGVkdWxlZEFjdGlvbi5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNl
Q29kZS5oIgotCi0jaWYgUExBVEZPUk0oQ0hST01JVU0pCi0jaW5jbHVkZSAiVHJhY2VFdmVudC5o
IgotI2VuZGlmCi0KLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOFByb3h5Lmgi
Ci0jaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgotI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVj
dXRpb25Qcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLVNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jLCBpbnQgYXJn
Yywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKLSAgICA6IG1fY29udGV4dChjb250ZXh0
KQotICAgICwgbV9jb2RlKFN0cmluZygpLCBLVVJMKCksIFRleHRQb3NpdGlvbjo6YmVsb3dSYW5n
ZVBvc2l0aW9uKCkpCi17Ci0gICAgbV9mdW5jdGlvbiA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvbj46Ok5ldyhmdW5jKTsKLQotI2lmbmRlZiBOREVCVUcKLSAgICBWOEdDQ29udHJvbGxlcjo6
cmVnaXN0ZXJHbG9iYWxIYW5kbGUoU0NIRURVTEVEX0FDVElPTiwgdGhpcywgbV9mdW5jdGlvbik7
Ci0jZW5kaWYKLQotICAgIG1fYXJnYyA9IGFyZ2M7Ci0gICAgaWYgKGFyZ2MgPiAwKSB7Ci0gICAg
ICAgIG1fYXJndiA9IG5ldyB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+W2FyZ2NdOwotICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICAgICAgbV9hcmd2W2ld
ID0gdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPjo6TmV3KGFyZ3ZbaV0pOwotCi0jaWZuZGVmIE5E
RUJVRwotICAgIFY4R0NDb250cm9sbGVyOjpyZWdpc3Rlckdsb2JhbEhhbmRsZShTQ0hFRFVMRURf
QUNUSU9OLCB0aGlzLCBtX2FyZ3ZbaV0pOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICB9IGVsc2UK
LSAgICAgICAgbV9hcmd2ID0gMDsKLX0KLQotU2NoZWR1bGVkQWN0aW9uOjp+U2NoZWR1bGVkQWN0
aW9uKCkKLXsKLSAgICBpZiAobV9mdW5jdGlvbi5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsK
LQotI2lmbmRlZiBOREVCVUcKLSAgICBWOEdDQ29udHJvbGxlcjo6dW5yZWdpc3Rlckdsb2JhbEhh
bmRsZSh0aGlzLCBtX2Z1bmN0aW9uKTsKLSNlbmRpZgotICAgIG1fZnVuY3Rpb24uRGlzcG9zZSgp
OwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX2FyZ2M7IGkrKykgewotI2lmbmRlZiBOREVC
VUcKLSAgICAgICAgVjhHQ0NvbnRyb2xsZXI6OnVucmVnaXN0ZXJHbG9iYWxIYW5kbGUodGhpcywg
bV9hcmd2W2ldKTsKLSNlbmRpZgotICAgICAgICBtX2FyZ3ZbaV0uRGlzcG9zZSgpOwotICAgIH0K
LQotICAgIGlmIChtX2FyZ2MgPiAwKQotICAgICAgICBkZWxldGVbXSBtX2FyZ3Y7Ci19Ci0KLXZv
aWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCi17Ci0gICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShjb250ZXh0KTsK
LSAgICBpZiAocHJveHkpCi0gICAgICAgIGV4ZWN1dGUocHJveHkpOwotI2lmIEVOQUJMRShXT1JL
RVJTKQotICAgIGVsc2UgaWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKQotICAgICAgICBl
eGVjdXRlKHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KSk7Ci0jZW5kaWYKLSAg
ICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgSmF2YXNjcmlwdCBpcyBkaXNhYmxlZCBhbmQgdGhhdCB3
ZSBoYXZlIG5laXRoZXIgYSBWOFByb3h5Ci0gICAgLy8gbm9yIGEgV29ya2VyQ29udGV4dC4gIERv
IG5vdGhpbmcgaW4gdGhhdCBjYXNlLgotfQotCi12b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShWOFByb3h5KiBwcm94eSkKLXsKLSAgICBBU1NFUlQocHJveHkpOwotCi0gICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4
dCA9IHY4OjpMb2NhbDx2ODo6Q29udGV4dD46Ok5ldyhtX2NvbnRleHQuZ2V0KCkpOwotICAgIGlm
ICh2OENvbnRleHQuSXNFbXB0eSgpKQotICAgICAgICByZXR1cm47IC8vIEpTIG1heSBub3QgYmUg
ZW5hYmxlZC4KLQotI2lmIFBMQVRGT1JNKENIUk9NSVVNKQotICAgIFRSQUNFX0VWRU5UKCJTY2hl
ZHVsZWRBY3Rpb246OmV4ZWN1dGUiLCB0aGlzLCAwKTsKLSNlbmRpZgotCi0gICAgdjg6OkNvbnRl
eHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7Ci0KLSAgICAvLyBGSVhNRTogTmVlZCB0byBpbXBs
ZW1lbnQgdGltZW91dHMgZm9yIHByZWVtcHRpbmcgYSBsb25nLXJ1bm5pbmcgc2NyaXB0LgotICAg
IGlmICghbV9mdW5jdGlvbi5Jc0VtcHR5KCkgJiYgbV9mdW5jdGlvbi0+SXNGdW5jdGlvbigpKSB7
Ci0gICAgICAgIHByb3h5LT5jYWxsRnVuY3Rpb24odjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
Pjo6Q2FzdChtX2Z1bmN0aW9uKSwgdjhDb250ZXh0LT5HbG9iYWwoKSwgbV9hcmdjLCBtX2FyZ3Yp
OwotICAgICAgICBEb2N1bWVudDo6dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsKLSAgICB9
IGVsc2UKLSAgICAgICAgcHJveHktPmV2YWx1YXRlKG1fY29kZSwgMCk7Ci0KLSAgICAvLyBUaGUg
J3Byb3h5JyBtYXkgYmUgaW52YWxpZCBhdCB0aGlzIHBvaW50IHNpbmNlIEpTIGNvdWxkIGhhdmUg
cmVsZWFzZWQgdGhlIG93bmluZyBGcmFtZS4KLX0KLQotI2lmIEVOQUJMRShXT1JLRVJTKQotdm9p
ZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkK
LXsKLSAgICAvLyBJbiBhIFdvcmtlciwgdGhlIGV4ZWN1dGlvbiBzaG91bGQgYWx3YXlzIGhhcHBl
biBvbiBhIHdvcmtlciB0aHJlYWQuCi0gICAgQVNTRVJUKHdvcmtlckNvbnRleHQtPnRocmVhZCgp
LT50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQoKSk7Ci0gIAotICAgIFdvcmtlclNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSB3b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKLQot
ICAgIGlmICghbV9mdW5jdGlvbi5Jc0VtcHR5KCkgJiYgbV9mdW5jdGlvbi0+SXNGdW5jdGlvbigp
KSB7Ci0gICAgICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICAgICAgdjg6Okhh
bmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3
KG1fY29udGV4dC5nZXQoKSk7Ci0gICAgICAgIEFTU0VSVCghdjhDb250ZXh0LklzRW1wdHkoKSk7
Ci0gICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOwotICAgICAgICBt
X2Z1bmN0aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xvYmFsKCksIG1fYXJnYywgbV9hcmd2KTsKLSAg
ICB9IGVsc2UKLSAgICAgICAgc2NyaXB0Q29udHJvbGxlci0+ZXZhbHVhdGUobV9jb2RlKTsKLX0K
LSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh
ZWZlN2VmLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxl
ZEFjdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1
dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTY2hl
ZHVsZWRBY3Rpb25faAotI2RlZmluZSBTY2hlZHVsZWRBY3Rpb25faAotCi0jaW5jbHVkZSAiT3du
SGFuZGxlLmgiCi0jaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgotI2luY2x1ZGUgIlY4R0ND
b250cm9sbGVyLmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLQotI2luY2x1ZGUgPHY4Lmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7Ci0gICAgY2xhc3MgVjhQcm94eTsKLSAgICBjbGFzcyBXb3JrZXJDb250ZXh0OwotCi0gICAg
Y2xhc3MgU2NoZWR1bGVkQWN0aW9uIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFNjaGVkdWxlZEFj
dGlvbih2ODo6SGFuZGxlPHY4OjpDb250ZXh0Piwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+LCBp
bnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7Ci0gICAgICAgIGV4cGxpY2l0
IFNjaGVkdWxlZEFjdGlvbih2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0LCBjb25zdCBX
VEY6OlN0cmluZyYgY29kZSwgY29uc3QgS1VSTCYgdXJsID0gS1VSTCgpKQotICAgICAgICAgICAg
OiBtX2NvbnRleHQoY29udGV4dCkKLSAgICAgICAgICAgICwgbV9hcmdjKDApCi0gICAgICAgICAg
ICAsIG1fYXJndigwKQotICAgICAgICAgICAgLCBtX2NvZGUoY29kZSwgdXJsKQotICAgICAgICB7
Ci0gICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIH5TY2hlZHVsZWRBY3Rpb24oKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCi0gICAg
cHJpdmF0ZToKLSAgICAgICAgdm9pZCBleGVjdXRlKFY4UHJveHkqKTsKLSNpZiBFTkFCTEUoV09S
S0VSUykKLSAgICAgICAgdm9pZCBleGVjdXRlKFdvcmtlckNvbnRleHQqKTsKLSNlbmRpZgotCi0g
ICAgICAgIE93bkhhbmRsZTx2ODo6Q29udGV4dD4gbV9jb250ZXh0OwotICAgICAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb24+IG1fZnVuY3Rpb247Ci0gICAgICAgIGludCBtX2FyZ2M7Ci0g
ICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4qIG1fYXJndjsKLSAgICAgICAgU2NyaXB0
U291cmNlQ29kZSBtX2NvZGU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0j
ZW5kaWYgLy8gU2NoZWR1bGVkQWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFNjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFNjaGVkdWxlZEFjdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTU5YzAwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4U2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlY4U2NoZWR1bGVkQWN0aW9uLmgiCisKKyNpbmNsdWRlICJEb2N1
bWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRTb3VyY2VDb2RlLmgiCisKKyNpZiBQTEFURk9STShDSFJPTUlVTSkKKyNpbmNsdWRlICJU
cmFjZUV2ZW50LmgiCisjZW5kaWYKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUg
IlY4UHJveHkuaCIKKyNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworVjhTY2hlZHVsZWRBY3Rpb246OlY4U2NoZWR1bGVkQWN0aW9u
KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQsIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
PiBmdW5jLCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSkKKyAgICA6IG1f
Y29udGV4dChjb250ZXh0KQorICAgICwgbV9jb2RlKFN0cmluZygpLCBLVVJMKCksIFRleHRQb3Np
dGlvbjo6YmVsb3dSYW5nZVBvc2l0aW9uKCkpCit7CisgICAgbV9mdW5jdGlvbiA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvbj46Ok5ldyhmdW5jKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBW
OEdDQ29udHJvbGxlcjo6cmVnaXN0ZXJHbG9iYWxIYW5kbGUoU0NIRURVTEVEX0FDVElPTiwgdGhp
cywgbV9mdW5jdGlvbik7CisjZW5kaWYKKworICAgIG1fYXJnYyA9IGFyZ2M7CisgICAgaWYgKGFy
Z2MgPiAwKSB7CisgICAgICAgIG1fYXJndiA9IG5ldyB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+
W2FyZ2NdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ2M7IGkrKykgeworICAgICAg
ICAgICAgbV9hcmd2W2ldID0gdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPjo6TmV3KGFyZ3ZbaV0p
OworCisjaWZuZGVmIE5ERUJVRworICAgIFY4R0NDb250cm9sbGVyOjpyZWdpc3Rlckdsb2JhbEhh
bmRsZShTQ0hFRFVMRURfQUNUSU9OLCB0aGlzLCBtX2FyZ3ZbaV0pOworI2VuZGlmCisgICAgICAg
IH0KKyAgICB9IGVsc2UKKyAgICAgICAgbV9hcmd2ID0gMDsKK30KKworVjhTY2hlZHVsZWRBY3Rp
b246On5WOFNjaGVkdWxlZEFjdGlvbigpCit7CisgICAgaWYgKG1fZnVuY3Rpb24uSXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyNpZm5kZWYgTkRFQlVHCisgICAgVjhHQ0NvbnRyb2xsZXI6
OnVucmVnaXN0ZXJHbG9iYWxIYW5kbGUodGhpcywgbV9mdW5jdGlvbik7CisjZW5kaWYKKyAgICBt
X2Z1bmN0aW9uLkRpc3Bvc2UoKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9hcmdjOyBp
KyspIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIFY4R0NDb250cm9sbGVyOjp1bnJlZ2lzdGVy
R2xvYmFsSGFuZGxlKHRoaXMsIG1fYXJndltpXSk7CisjZW5kaWYKKyAgICAgICAgbV9hcmd2W2ld
LkRpc3Bvc2UoKTsKKyAgICB9CisKKyAgICBpZiAobV9hcmdjID4gMCkKKyAgICAgICAgZGVsZXRl
W10gbV9hcmd2OworfQorCit2b2lkIFY4U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5
OjpyZXRyaWV2ZShjb250ZXh0KTsKKyAgICBpZiAocHJveHkpCisgICAgICAgIGV4ZWN1dGUocHJv
eHkpOworI2lmIEVOQUJMRShXT1JLRVJTKQorICAgIGVsc2UgaWYgKGNvbnRleHQtPmlzV29ya2Vy
Q29udGV4dCgpKQorICAgICAgICBleGVjdXRlKHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihj
b250ZXh0KSk7CisjZW5kaWYKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgSmF2YXNjcmlwdCBp
cyBkaXNhYmxlZCBhbmQgdGhhdCB3ZSBoYXZlIG5laXRoZXIgYSBWOFByb3h5CisgICAgLy8gbm9y
IGEgV29ya2VyQ29udGV4dC4gIERvIG5vdGhpbmcgaW4gdGhhdCBjYXNlLgorfQorCit2b2lkIFY4
U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFY4UHJveHkqIHByb3h5KQoreworICAgIEFTU0VSVChw
cm94eSk7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdjg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1f
Y29udGV4dC5nZXQoKSk7CisgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsgLy8gSlMgbWF5IG5vdCBiZSBlbmFibGVkLgorCisjaWYgUExBVEZPUk0oQ0hST01JVU0p
CisgICAgVFJBQ0VfRVZFTlQoIlY4U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlIiwgdGhpcywgMCk7
CisjZW5kaWYKKworICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOworCisg
ICAgLy8gRklYTUU6IE5lZWQgdG8gaW1wbGVtZW50IHRpbWVvdXRzIGZvciBwcmVlbXB0aW5nIGEg
bG9uZy1ydW5uaW5nIHNjcmlwdC4KKyAgICBpZiAoIW1fZnVuY3Rpb24uSXNFbXB0eSgpICYmIG1f
ZnVuY3Rpb24tPklzRnVuY3Rpb24oKSkgeworICAgICAgICBwcm94eS0+Y2FsbEZ1bmN0aW9uKHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj46OkNhc3QobV9mdW5jdGlvbiksIHY4Q29udGV4dC0+
R2xvYmFsKCksIG1fYXJnYywgbV9hcmd2KTsKKyAgICAgICAgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxl
Rm9yQWxsRG9jdW1lbnRzKCk7CisgICAgfSBlbHNlCisgICAgICAgIHByb3h5LT5ldmFsdWF0ZSht
X2NvZGUsIDApOworCisgICAgLy8gVGhlICdwcm94eScgbWF5IGJlIGludmFsaWQgYXQgdGhpcyBw
b2ludCBzaW5jZSBKUyBjb3VsZCBoYXZlIHJlbGVhc2VkIHRoZSBvd25pbmcgRnJhbWUuCit9CisK
KyNpZiBFTkFCTEUoV09SS0VSUykKK3ZvaWQgVjhTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoV29y
a2VyQ29udGV4dCogd29ya2VyQ29udGV4dCkKK3sKKyAgICAvLyBJbiBhIFdvcmtlciwgdGhlIGV4
ZWN1dGlvbiBzaG91bGQgYWx3YXlzIGhhcHBlbiBvbiBhIHdvcmtlciB0aHJlYWQuCisgICAgQVNT
RVJUKHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT50aHJlYWRJRCgpID09IGN1cnJlbnRUaHJlYWQo
KSk7CisgIAorICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSB3
b3JrZXJDb250ZXh0LT5zY3JpcHQoKTsKKworICAgIGlmICghbV9mdW5jdGlvbi5Jc0VtcHR5KCkg
JiYgbV9mdW5jdGlvbi0+SXNGdW5jdGlvbigpKSB7CisgICAgICAgIHY4OjpIYW5kbGVTY29wZSBo
YW5kbGVTY29wZTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0g
djg6OkxvY2FsPHY4OjpDb250ZXh0Pjo6TmV3KG1fY29udGV4dC5nZXQoKSk7CisgICAgICAgIEFT
U0VSVCghdjhDb250ZXh0LklzRW1wdHkoKSk7CisgICAgICAgIHY4OjpDb250ZXh0OjpTY29wZSBz
Y29wZSh2OENvbnRleHQpOworICAgICAgICBtX2Z1bmN0aW9uLT5DYWxsKHY4Q29udGV4dC0+R2xv
YmFsKCksIG1fYXJnYywgbV9hcmd2KTsKKyAgICB9IGVsc2UKKyAgICAgICAgc2NyaXB0Q29udHJv
bGxlci0+ZXZhbHVhdGUobV9jb2RlKTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFNjaGVkdWxlZEFj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhTY2hlZHVsZWRBY3Rpb24uaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWMzMDg1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhTY2hlZHVsZWRBY3Rpb24uaApAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4U2NoZWR1bGVkQWN0aW9uX2gKKyNkZWZpbmUgVjhT
Y2hlZHVsZWRBY3Rpb25faAorCisjaW5jbHVkZSAiT3duSGFuZGxlLmgiCisjaW5jbHVkZSAiU2No
ZWR1bGVkQWN0aW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgorI2luY2x1ZGUg
IlY4R0NDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworI2luY2x1ZGUg
PHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CisgICAgY2xhc3MgVjhQcm94eTsKKyAgICBjbGFzcyBXb3JrZXJDb250ZXh0Owor
CisgICAgY2xhc3MgVjhTY2hlZHVsZWRBY3Rpb24gOiBwdWJsaWMgU2NoZWR1bGVkQWN0aW9uIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIFY4U2NoZWR1bGVkQWN0aW9uKHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+LCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIGludCBhcmdjLCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gYXJndltdKTsKKyAgICAgICAgZXhwbGljaXQgVjhTY2hlZHVsZWRBY3Rpb24odjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCwgY29uc3QgV1RGOjpTdHJpbmcmIGNvZGUsIGNv
bnN0IEtVUkwmIHVybCA9IEtVUkwoKSkKKyAgICAgICAgICAgIDogbV9jb250ZXh0KGNvbnRleHQp
CisgICAgICAgICAgICAsIG1fYXJnYygwKQorICAgICAgICAgICAgLCBtX2FyZ3YoMCkKKyAgICAg
ICAgICAgICwgbV9jb2RlKGNvZGUsIHVybCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB+VjhTY2hlZHVsZWRBY3Rpb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGV4
ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
dm9pZCBleGVjdXRlKFY4UHJveHkqKTsKKyNpZiBFTkFCTEUoV09SS0VSUykKKyAgICAgICAgdm9p
ZCBleGVjdXRlKFdvcmtlckNvbnRleHQqKTsKKyNlbmRpZgorCisgICAgICAgIE93bkhhbmRsZTx2
ODo6Q29udGV4dD4gbV9jb250ZXh0OworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b24+IG1fZnVuY3Rpb247CisgICAgICAgIGludCBtX2FyZ2M7CisgICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpWYWx1ZT4qIG1fYXJndjsKKyAgICAgICAgU2NyaXB0U291cmNlQ29kZSBtX2NvZGU7
CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhTY2hlZHVs
ZWRBY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggM2EzZTdhNS4uYjI4NmM3NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKLSNpbmNsdWRlICJTY2hl
ZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTYzLDYg
KzYyLDcgQEAKICNpbmNsdWRlICJWOE1lc3NhZ2VQb3J0Q3VzdG9tLmgiCiAjaW5jbHVkZSAiVjhO
b2RlLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgIlY4U2NoZWR1bGVkQWN0aW9u
LmgiCiAjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAj
aW5jbHVkZSAiV2ViU29ja2V0LmgiCkBAIC0xMjYsNyArMTI2LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFdpbmRvd1NldFRpbWVvdXRJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIGJv
b2wgc2luZ2wKICAgICAgICAgfQogCiAgICAgICAgIC8vIHBhcmFtcyBpcyBwYXNzZWQgdG8gYWN0
aW9uLCBhbmQgcmVsZWFzZWQgaW4gYWN0aW9uJ3MgZGVzdHJ1Y3RvcgotICAgICAgICBPd25QdHI8
U2NoZWR1bGVkQWN0aW9uPiBhY3Rpb24gPSBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9uKFY4
UHJveHk6OmNvbnRleHQoaW1wLT5mcmFtZSgpKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpD
YXN0KGZ1bmN0aW9uKSwgcGFyYW1Db3VudCwgcGFyYW1zKSk7CisgICAgICAgIE93blB0cjxTY2hl
ZHVsZWRBY3Rpb24+IGFjdGlvbiA9IGFkb3B0UHRyKG5ldyBWOFNjaGVkdWxlZEFjdGlvbihWOFBy
b3h5Ojpjb250ZXh0KGltcC0+ZnJhbWUoKSksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2Fz
dChmdW5jdGlvbiksIHBhcmFtQ291bnQsIHBhcmFtcykpOwogCiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgdXNlIE93bkFycmF5UHRyIGZvciBwYXJhbXMuCiAgICAgICAgIGRlbGV0ZVtdIHBh
cmFtczsKQEAgLTEzNSw3ICsxMzUsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2luZG93U2V0
VGltZW91dEltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgYm9vbCBzaW5nbAogICAgIH0g
ZWxzZSB7CiAgICAgICAgIGlmIChpbXAtPmRvY3VtZW50KCkgJiYgIWltcC0+ZG9jdW1lbnQoKS0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93RXZhbCgpKQogICAgICAgICAgICAgcmV0dXJu
IHY4OjpJbnRlZ2VyOjpOZXcoMCk7Ci0gICAgICAgIGlkID0gRE9NVGltZXI6Omluc3RhbGwoc2Ny
aXB0Q29udGV4dCwgYWRvcHRQdHIobmV3IFNjaGVkdWxlZEFjdGlvbihWOFByb3h5Ojpjb250ZXh0
KGltcC0+ZnJhbWUoKSksIGZ1bmN0aW9uU3RyaW5nKSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwor
ICAgICAgICBpZCA9IERPTVRpbWVyOjppbnN0YWxsKHNjcmlwdENvbnRleHQsIGFkb3B0UHRyKG5l
dyBWOFNjaGVkdWxlZEFjdGlvbihWOFByb3h5Ojpjb250ZXh0KGltcC0+ZnJhbWUoKSksIGZ1bmN0
aW9uU3RyaW5nKSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAgIH0KIAogICAgIC8vIFRyeSB0
byBkbyB0aGUgaWRsZSBub3RpZmljYXRpb24gYmVmb3JlIHRoZSB0aW1lb3V0IGV4cGlyZXMgdG8g
Z2V0IGJldHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCAxZDhmMzM1Li4xOGM0ZmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250
ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtMzUsMTAgKzM1LDEwIEBACiAKICNpbmNsdWRlICJE
T01UaW1lci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJTY2hlZHVs
ZWRBY3Rpb24uaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdN
YWNyb3MuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiVjhTY2hlZHVsZWRBY3Rp
b24uaCIKICNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlY4V29ya2VyQ29udGV4
dEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKQEAgLTY2LDcgKzY2LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFNldFRpbWVvdXRPckludGVydmFsKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MsIGJvb2wgc2luZ2wKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2
OENvbnRleHQgPSBwcm94eS0+Y29udGV4dCgpOwogICAgIGlmIChmdW5jdGlvbi0+SXNTdHJpbmco
KSkgewogICAgICAgICBXVEY6OlN0cmluZyBzdHJpbmdGdW5jdGlvbiA9IHRvV2ViQ29yZVN0cmlu
ZyhmdW5jdGlvbik7Ci0gICAgICAgIHRpbWVySWQgPSBET01UaW1lcjo6aW5zdGFsbCh3b3JrZXJD
b250ZXh0LCBhZG9wdFB0cihuZXcgU2NoZWR1bGVkQWN0aW9uKHY4Q29udGV4dCwgc3RyaW5nRnVu
Y3Rpb24sIHdvcmtlckNvbnRleHQtPnVybCgpKSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOworICAg
ICAgICB0aW1lcklkID0gRE9NVGltZXI6Omluc3RhbGwod29ya2VyQ29udGV4dCwgYWRvcHRQdHIo
bmV3IFY4U2NoZWR1bGVkQWN0aW9uKHY4Q29udGV4dCwgc3RyaW5nRnVuY3Rpb24sIHdvcmtlckNv
bnRleHQtPnVybCgpKSksIHRpbWVvdXQsIHNpbmdsZVNob3QpOwogICAgIH0gZWxzZSBpZiAoZnVu
Y3Rpb24tPklzRnVuY3Rpb24oKSkgewogICAgICAgICBzaXplX3QgcGFyYW1Db3VudCA9IGFyZ3Vt
ZW50Q291bnQgPj0gMiA/IGFyZ3VtZW50Q291bnQgLSAyIDogMDsKICAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4qIHBhcmFtcyA9IDA7CkBAIC03Niw3ICs3Niw3IEBAIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBTZXRUaW1lb3V0T3JJbnRlcnZhbChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLCBi
b29sIHNpbmdsCiAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gYXJnc1tpKzJdOwogICAgICAg
ICB9CiAgICAgICAgIC8vIFNjaGVkdWxlZEFjdGlvbiB0YWtlcyBvd25lcnNoaXAgb2YgYWN0dWFs
IHBhcmFtcyBhbmQgcmVsZWFzZXMgdGhlbSBpbiBpdHMgZGVzdHJ1Y3Rvci4KLSAgICAgICAgT3du
UHRyPFNjaGVkdWxlZEFjdGlvbj4gYWN0aW9uID0gYWRvcHRQdHIobmV3IFNjaGVkdWxlZEFjdGlv
bih2OENvbnRleHQsIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChmdW5jdGlvbiksIHBh
cmFtQ291bnQsIHBhcmFtcykpOworICAgICAgICBPd25QdHI8U2NoZWR1bGVkQWN0aW9uPiBhY3Rp
b24gPSBhZG9wdFB0cihuZXcgVjhTY2hlZHVsZWRBY3Rpb24odjhDb250ZXh0LCB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj46OkNhc3QoZnVuY3Rpb24pLCBwYXJhbUNvdW50LCBwYXJhbXMpKTsKICAg
ICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1c2UgYSBPd25BcnJheVB0ciBmb3IgcGFyYW1zLgog
ICAgICAgICBkZWxldGUgW10gcGFyYW1zOwogICAgICAgICB0aW1lcklkID0gRE9NVGltZXI6Omlu
c3RhbGwod29ya2VyQ29udGV4dCwgYWN0aW9uLnJlbGVhc2UoKSwgdGltZW91dCwgc2luZ2xlU2hv
dCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>