<?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>143184</bug_id>
          
          <creation_ts>2015-03-28 09:31:00 -0700</creation_ts>
          <short_desc>Add script to graph GC phase timings</short_desc>
          <delta_ts>2015-04-24 23:00:26 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Mark Hahnenberg">mhahnenb</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenb</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080941</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-28 09:31:00 -0700</bug_when>
    <thetext>This can make it easier to quickly see which particular GC phases are taking the most time and would therefore benefit the most from further scrutiny and improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080946</commentid>
    <comment_count>1</comment_count>
      <attachid>249662</attachid>
    <who name="Mark Hahnenberg">mhahnenb</who>
    <bug_when>2015-03-28 09:41:43 -0700</bug_when>
    <thetext>Created attachment 249662
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080947</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-28 09:43:26 -0700</bug_when>
    <thetext>Attachment 249662 did not pass style-queue:


ERROR: Tools/Scripts/gctools/graph_phase_timings.py:66:  [graph_timings] Passing unexpected keyword argument &apos;startangle&apos; in function call  [pylint/E1123] [5]
Total errors found: 1 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088486</commentid>
    <comment_count>3</comment_count>
      <attachid>249662</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-04-24 23:00:26 -0700</bug_when>
    <thetext>Comment on attachment 249662
Patch

rs=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249662</attachid>
            <date>2015-03-28 09:41:43 -0700</date>
            <delta_ts>2015-04-24 23:00:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143184-20150328094105.patch</filename>
            <type>text/plain</type>
            <size>17588</size>
            <attacher name="Mark Hahnenberg">mhahnenb</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxODM3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTJlNDFmZWNlNGJhNDk1MGY4YjY0ZjIzMmU3MzFhNWIw
ZWFlNjNmYS4uMjFhMGZkYTQ4N2NjZGU3NmNmNjk5YzRhNTIyYzVhMGM1M2Y3ODVmZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMx
IEBACisyMDE1LTAzLTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYkBnbWFpbC5jb20+CisK
KyAgICAgICAgQWRkIHNjcmlwdCB0byBncmFwaCBHQyBwaGFzZSB0aW1pbmdzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDMxODQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBz
Y3JpcHQgdG8gY3JlYXRlIGEgcGllIGNoYXJ0IGZvciBhIHBhcnRpY3VsYXIgR0MgcGhhc2UKKyAg
ICAgICAgbWFkZSB1cCBvZiBpdHMgY29tcG9uZW50IHN1YnBoYXNlcy4gVGhlc2UgY2hhcnRzIG1h
a2UgaXQgZWFzaWVyIHRvIHF1aWNrbHkgCisgICAgICAgIHNlZSB3aGljaCBwYXJ0aWN1bGFyIEdD
IHBoYXNlcyBhcmUgdGFraW5nIHRoZSBtb3N0IHRpbWUgYW5kIHdvdWxkIHRoZXJlZm9yZSAKKyAg
ICAgICAgYmVuZWZpdCB0aGUgbW9zdCBmcm9tIGZ1cnRoZXIgc2NydXRpbnkgYW5kIGltcHJvdmVt
ZW50LgorCisgICAgICAgICogU2NyaXB0cy9nY3Rvb2xzL2dyYXBoX3BoYXNlX3RpbWluZ3MucHk6
IEFkZGVkLgorICAgICAgICAoZ3JhcGhfdGltaW5ncyk6CisgICAgICAgIChtYWluKToKKyAgICAg
ICAgKiBTY3JpcHRzL2djdG9vbHMvcGhhc2VfdGltaW5nLnB5OiBDb3BpZWQgZnJvbSBUb29scy9T
Y3JpcHRzL3BhcnNlLWdjLXBoYXNlLXRpbWluZ3MuCisgICAgICAgIChQaGFzZVRpbWluZyk6Cisg
ICAgICAgIChQaGFzZVRpbWluZy5fX2luaXRfXyk6CisgICAgICAgIChQaGFzZVRpbWluZy5fX3Vu
aWNvZGVfXyk6CisgICAgICAgIChQaGFzZVRpbWluZy5fX3N0cl9fKToKKyAgICAgICAgKFBoYXNl
VGltaW5nLl9fcmVwcl9fKToKKyAgICAgICAgKF9saW5rX3BhcmVudHMpOgorICAgICAgICAocGFy
c2VfdGltaW5ncyk6CisgICAgICAgICogU2NyaXB0cy9nY3Rvb2xzL3ByaW50X3BoYXNlX3RpbWlu
Z3MucHk6IFJlbmFtZWQgZnJvbSBUb29scy9TY3JpcHRzL3BhcnNlLWdjLXBoYXNlLXRpbWluZ3Mu
CisgICAgICAgIChwcmludF90aW1pbmdfbm9kZSk6CisgICAgICAgIChwcmludF90aW1pbmdfdHJl
ZSk6CisgICAgICAgIChtYWluKToKKwogMjAxNS0wMy0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIF9XS1dlYnNpdGVEYXRhU3RvcmUgc2hvdWxkIGNs
ZWFyIFdlYlNRTCBkYXRhYmFzZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2N0b29scy9n
cmFwaF9waGFzZV90aW1pbmdzLnB5IGIvVG9vbHMvU2NyaXB0cy9nY3Rvb2xzL2dyYXBoX3BoYXNl
X3RpbWluZ3MucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjQ3YjYyN2UwYTJkNGFlMGE5N2NmYWNlNzg4YzQ4MTdj
MDE1OWY5YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2N0b29scy9ncmFwaF9w
aGFzZV90aW1pbmdzLnB5CkBAIC0wLDAgKzEsOTAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
CisjIENvcHlyaWdodCAoQykgMjAxNSBNYXJrIEhhaG5lbmJlcmcuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgYXJn
cGFyc2UKK2ltcG9ydCBmaWxlaW5wdXQKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBtYXRwbG90
bGliLnB5cGxvdCBhcyBwbHQKK2ltcG9ydCBwaGFzZV90aW1pbmcKK2ltcG9ydCBzeXMKKworCitk
ZWYgZ3JhcGhfdGltaW5ncyh0aW1pbmdzLCB0b3BfbGV2ZWwsIGNvbGxlY3Rpb25fdHlwZSk6Cisg
ICAgdG90YWxfdGltZSA9IE5vbmUKKyAgICBmb3IgdGltaW5nIGluIHRpbWluZ3M6CisgICAgICAg
IGlmIHRpbWluZy5uYW1lICE9IHRvcF9sZXZlbDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgIGlmIHRpbWluZy5jb2xsZWN0X3R5cGUgIT0gY29sbGVjdGlvbl90eXBlOgorICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgdG90YWxfdGltZSA9IHRpbWluZy50b3RhbF90aW1lCisKKyAg
ICBsYWJlbHMgPSBbXQorICAgIGFtb3VudHMgPSBbXQorICAgIHRvdGFsX3RpbWVfcmVtYWluaW5n
ID0gdG90YWxfdGltZQorICAgIG90aGVyX2NvdW50ID0gMAorICAgIGZvciB0aW1pbmcgaW4gdGlt
aW5nczoKKyAgICAgICAgaWYgdGltaW5nLmNvbGxlY3RfdHlwZSAhPSBjb2xsZWN0aW9uX3R5cGU6
CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiB0aW1pbmcucGFyZW50IGlzIE5vbmUg
b3IgdGltaW5nLnBhcmVudC5uYW1lICE9IHRvcF9sZXZlbDoKKyAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgIGlmIHRpbWluZy50b3RhbF90aW1lIC8gdG90YWxfdGltZSA8IDAuMDE1OgorICAg
ICAgICAgICAgb3RoZXJfY291bnQgKz0gMQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAg
bGFiZWxzLmFwcGVuZCh0aW1pbmcubmFtZSkKKyAgICAgICAgYW1vdW50cy5hcHBlbmQodGltaW5n
LnRvdGFsX3RpbWUpCisgICAgICAgIHRvdGFsX3RpbWVfcmVtYWluaW5nIC09IHRpbWluZy50b3Rh
bF90aW1lCisgICAgaWYgdG90YWxfdGltZV9yZW1haW5pbmcgPj0gMC4wMDU6CisgICAgICAgIGxh
YmVscy5hcHBlbmQoJ090aGVyICglZCknICUgb3RoZXJfY291bnQpCisgICAgICAgIGFtb3VudHMu
YXBwZW5kKHRvdGFsX3RpbWVfcmVtYWluaW5nKQorCisgICAgcGx0LmZpZ3VyZSgpLnN1cHRpdGxl
KCIlcyAtICVzIiAlICh0b3BfbGV2ZWwsIGNvbGxlY3Rpb25fdHlwZSksIGZvbnRzaXplPTE0LCBm
b250d2VpZ2h0PSdib2xkJykKKyAgICBjb2xvcl9jeWNsZSA9IGl0ZXJ0b29scy5jeWNsZShbJ2In
LCAnZycsICdyJywgJ2MnLCAnbScsICd5JywgJ3cnLCAnb3JhbmdlJ10pCisgICAgY29sb3JzID0g
W25leHQoY29sb3JfY3ljbGUpIGZvciBfIGluIHJhbmdlKGxlbihsYWJlbHMpKV0KKyAgICBzb3J0
ZWRfYW1vdW50cywgc29ydGVkX2xhYmVscyA9IFtsaXN0KHQpIGZvciB0IGluIHppcCgqcmV2ZXJz
ZWQoc29ydGVkKHppcChhbW91bnRzLCBsYWJlbHMpKSkpXQorICAgIHBsdC5waWUoc29ydGVkX2Ft
b3VudHMsIGxhYmVscz1zb3J0ZWRfbGFiZWxzLCBhdXRvcGN0PSclMS4xZiUlJywgY29sb3JzPWNv
bG9ycywgc3RhcnRhbmdsZT05MCkKKyAgICBwbHQuYXhpcygnZXF1YWwnKQorICAgIHBsdC5zaG93
KCkKKworCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2Vy
KCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNvbGxlY3Rpb25fdHlwZScsIGhlbHA9J1Ro
ZSB0eXBlIG9mIGNvbGxlY3Rpb24gKGUuZy4gRWRlbiknKQorICAgIHBhcnNlci5hZGRfYXJndW1l
bnQoJy0tdG9wX2xldmVsJywgaGVscD0nVGhlIHBoYXNlIHRvIGJlIGFuYWx5emVkLiBPbmx5IGRp
cmVjdCBjaGlsZHJlbiBvZiB0aGlzIHBoYXNlIHdpbGwgYmUgcHJpbnRlZC4nKQorICAgIHBhcnNl
ci5hZGRfYXJndW1lbnQoJ2ZpbGUnLCBuYXJncz0nPycsIGhlbHA9J0ZpbGUgd2l0aCBHQyBwaGFz
ZSB0aW1pbmcgbG9ncyB0byBncmFwaC4nKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygp
CisKKyAgICBjb2xsZWN0aW9uX3R5cGUgPSBhcmdzLmNvbGxlY3Rpb25fdHlwZSBpZiBhcmdzLmNv
bGxlY3Rpb25fdHlwZSBlbHNlICdFZGVuJworICAgIHRvcF9sZXZlbCA9IGFyZ3MudG9wX2xldmVs
IGlmIGFyZ3MudG9wX2xldmVsIGVsc2UgJ0NvbGxlY3QnCisKKyAgICB0aW1pbmdzID0gTm9uZQor
ICAgIGlmIGFyZ3MuZmlsZSBpcyBOb25lOgorICAgICAgICB0aW1pbmdzID0gcGhhc2VfdGltaW5n
LnBhcnNlX3RpbWluZ3Moc3lzLnN0ZGluKQorICAgIGVsc2U6CisgICAgICAgIHdpdGggb3Blbihh
cmdzLmZpbGUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHRpbWluZ3MgPSBwaGFzZV90aW1pbmcu
cGFyc2VfdGltaW5ncyhmKQorICAgIGdyYXBoX3RpbWluZ3ModGltaW5ncywgdG9wX2xldmVsLCBj
b2xsZWN0aW9uX3R5cGUpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigp
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2djdG9vbHMvcGhhc2VfdGltaW5nLnB5IGIvVG9v
bHMvU2NyaXB0cy9nY3Rvb2xzL3BoYXNlX3RpbWluZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTU4MTQ2NGNj
NDMyNzdiYjc4ZDhjMjY1NWE4MGNlZmI2MWY4OWVjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy9nY3Rvb2xzL3BoYXNlX3RpbWluZy5weQpAQCAtMCwwICsxLDk4IEBACisjIS91c3Iv
YmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIwMTUgTWFyayBIYWhuZW5iZXJnLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworaW1wb3J0IHJlCisKK19waGFzZV90aW1pbmdfcmVnZXggPSByZS5jb21waWxlKAorICAg
IHInXlxbKD9QPHBpZD5bMC05XSspXF0gJworICAgICcoP1A8bmFtZT5bXiBdKykgJworICAgICdc
KFBhcmVudDogKD9QPHBhcmVudD5bXlwpXSspXCkgJworICAgICdcKCg/UDxjb2xsZWN0X3R5cGU+
W15cKV0rKVwpOiAnCisgICAgJyg/UDx0b3RhbF90aW1lPlswLTldK1wuWzAtOV0rKW1zICcKKyAg
ICAnXChhdmcuICg/UDxhdmdfdGltZT5bXixdKyksICcKKyAgICAnbWluLiAoP1A8bWluX3RpbWU+
W14sXSspLCAnCisgICAgJ21heC4gKD9QPG1heF90aW1lPlteLF0rKSwgJworICAgICdjb3VudCAo
P1A8Y291bnQ+W14sXCldKyknCisgICAgJyg/OiwgaXRlcnMvY29sbGVjdCAoP1A8YXZnX2l0ZXJz
PlteXCldKykpPycKKyAgICAnXCknKQorCisKK2NsYXNzIFBoYXNlVGltaW5nKG9iamVjdCk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBpZCwgbmFtZSwgcGFyZW50LCBjb2xsZWN0X3R5cGUsIHRv
dGFsX3RpbWUsIGF2Z190aW1lLCBtaW5fdGltZSwgbWF4X3RpbWUsIGNvdW50LCBhdmdfaXRlcnMp
OgorICAgICAgICBzZWxmLnBpZCA9IGludChwaWQpCisgICAgICAgIHNlbGYubmFtZSA9IHN0cihu
YW1lKQorICAgICAgICBzZWxmLnBhcmVudCA9IHN0cihwYXJlbnQpCisgICAgICAgIHNlbGYuY29s
bGVjdF90eXBlID0gc3RyKGNvbGxlY3RfdHlwZSkKKyAgICAgICAgc2VsZi50b3RhbF90aW1lID0g
ZmxvYXQodG90YWxfdGltZSkKKyAgICAgICAgc2VsZi5hdmdfdGltZSA9IGZsb2F0KGF2Z190aW1l
KQorICAgICAgICBzZWxmLm1pbl90aW1lID0gZmxvYXQobWluX3RpbWUpCisgICAgICAgIHNlbGYu
bWF4X3RpbWUgPSBmbG9hdChtYXhfdGltZSkKKyAgICAgICAgc2VsZi5jb3VudCA9IGludChjb3Vu
dCkKKyAgICAgICAgc2VsZi5hdmdfaXRlcnMgPSBmbG9hdChhdmdfaXRlcnMpCisgICAgICAgIHNl
bGYuY2hpbGRyZW4gPSBbXQorCisgICAgZGVmIF9fdW5pY29kZV9fKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gdSIlcyAtICVzIiAlIChzZWxmLm5hbWUsIHNlbGYuY29sbGVjdF90eXBlKQorCisgICAg
ZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMgLSAlcyIgJSAoc2VsZi5uYW1l
LCBzZWxmLmNvbGxlY3RfdHlwZSkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAg
cmV0dXJuICIlcyAtICVzIiAlIChzZWxmLm5hbWUsIHNlbGYuY29sbGVjdF90eXBlKQorCisKK2Rl
ZiBfbGlua19wYXJlbnRzKHRpbWluZ3MpOgorICAgIGZvciB0aW1pbmcgaW4gdGltaW5nczoKKyAg
ICAgICAgaWYgdGltaW5nLnBhcmVudCA9PSAibnVsbHB0ciI6CisgICAgICAgICAgICB0aW1pbmcu
cGFyZW50ID0gTm9uZQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZm9yIHBhcmVudCBp
biB0aW1pbmdzOgorICAgICAgICAgICAgaWYgdGltaW5nLnBhcmVudCAhPSBwYXJlbnQubmFtZToK
KyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgdGltaW5nLmNvbGxlY3Rf
dHlwZSAhPSBwYXJlbnQuY29sbGVjdF90eXBlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgICAgICB0aW1pbmcucGFyZW50ID0gcGFyZW50CisgICAgICAgICAgICBwYXJlbnQuY2hp
bGRyZW4uYXBwZW5kKHRpbWluZykKKworCitkZWYgcGFyc2VfdGltaW5ncyhmaW4pOgorICAgIHRp
bWluZ3MgPSBbXQorICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgcmVzdWx0ID0gX3BoYXNl
X3RpbWluZ19yZWdleC5tYXRjaChsaW5lKQorICAgICAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHRpbWluZ3MuYXBwZW5kKFBoYXNlVGltaW5nKAor
ICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCdwaWQnKSwKKyAgICAgICAgICAgIHJlc3VsdC5ncm91
cCgnbmFtZScpLAorICAgICAgICAgICAgcmVzdWx0Lmdyb3VwKCdwYXJlbnQnKSwKKyAgICAgICAg
ICAgIHJlc3VsdC5ncm91cCgnY29sbGVjdF90eXBlJyksCisgICAgICAgICAgICByZXN1bHQuZ3Jv
dXAoJ3RvdGFsX3RpbWUnKSwKKyAgICAgICAgICAgIHJlc3VsdC5ncm91cCgnYXZnX3RpbWUnKSwK
KyAgICAgICAgICAgIHJlc3VsdC5ncm91cCgnbWluX3RpbWUnKSwKKyAgICAgICAgICAgIHJlc3Vs
dC5ncm91cCgnbWF4X3RpbWUnKSwKKyAgICAgICAgICAgIHJlc3VsdC5ncm91cCgnY291bnQnKSwK
KyAgICAgICAgICAgIDEuMCBpZiByZXN1bHQuZ3JvdXAoJ2F2Z19pdGVycycpIGlzIE5vbmUgZWxz
ZSByZXN1bHQuZ3JvdXAoJ2F2Z19pdGVycycpKSkKKyAgICBfbGlua19wYXJlbnRzKHRpbWluZ3Mp
CisgICAgcmV0dXJuIHRpbWluZ3MKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZ2N0b29scy9w
cmludF9waGFzZV90aW1pbmdzLnB5IGIvVG9vbHMvU2NyaXB0cy9nY3Rvb2xzL3ByaW50X3BoYXNl
X3RpbWluZ3MucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q4YWI1MDhmNmYzOTYyMTc0ZTlmZWY1Yzk5MDBiMzc2
NzIzM2ZiMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvZ2N0b29scy9wcmludF9w
aGFzZV90aW1pbmdzLnB5CkBAIC0wLDAgKzEsNjQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
CisjIENvcHlyaWdodCAoQykgMjAxNSBNYXJrIEhhaG5lbmJlcmcuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgZmls
ZWlucHV0CitpbXBvcnQgcGhhc2VfdGltaW5nCisKKworZGVmIHByaW50X3RpbWluZ19ub2RlKHJv
b3QsIHRpbWluZ3MsIHRhYnMpOgorICAgIGZvciBfIGluIHJhbmdlKHRhYnMpOgorICAgICAgICBw
cmludCAiICAgICIsCisgICAgcGVyY2VudF90aW1lID0gMS4wCisgICAgaWYgcm9vdC5wYXJlbnQg
aXMgbm90IE5vbmU6CisgICAgICAgIHBlcmNlbnRfdGltZSA9IGZsb2F0KHJvb3QudG90YWxfdGlt
ZSkgLyBmbG9hdChyb290LnBhcmVudC50b3RhbF90aW1lKQorICAgIHByaW50ICIlcyAoJS4yZm1z
IHRvdGFsLCAlLjJmbXMgYXZnKSAtICUuMmYlJSIgJSAoc3RyKHJvb3QpLCByb290LnRvdGFsX3Rp
bWUsIHJvb3QuYXZnX3RpbWUsIHBlcmNlbnRfdGltZSAqIDEwMC4wKQorICAgIGZvciBjaGlsZCBp
biByZXZlcnNlZChzb3J0ZWQocm9vdC5jaGlsZHJlbiwga2V5PWxhbWJkYSB0OiB0LnRvdGFsX3Rp
bWUpKToKKyAgICAgICAgaWYgY2hpbGQucGFyZW50ICE9IHJvb3Q6CisgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICBpZiBjaGlsZC5jb2xsZWN0X3R5cGUgIT0gcm9vdC5jb2xsZWN0X3R5cGU6
CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBwcmludF90aW1pbmdfbm9kZShjaGlsZCwg
dGltaW5ncywgdGFicyArIDEpCisKKworZGVmIHByaW50X3RpbWluZ190cmVlKHRpbWluZ3MpOgor
ICAgIHRpbWluZ3Muc29ydChrZXk9bGFtYmRhIHQ6IHQudG90YWxfdGltZSkKKyAgICB0aW1pbmdz
LnJldmVyc2UoKQorICAgIGNvbGxlY3Rpb25fdHlwZXMgPSBbIkFsbCIsICJFZGVuIiwgIkZ1bGwi
XQorICAgIGZvciBjb2xsZWN0X3R5cGUgaW4gY29sbGVjdGlvbl90eXBlczoKKyAgICAgICAgZm9y
IHRpbWluZyBpbiB0aW1pbmdzOgorICAgICAgICAgICAgaWYgdGltaW5nLmNvbGxlY3RfdHlwZSAh
PSBjb2xsZWN0X3R5cGU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlm
IHRpbWluZy5wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAg
ICAgICAgICAgIHByaW50X3RpbWluZ19ub2RlKHRpbWluZywgdGltaW5ncywgMCkKKyAgICAgICAg
cHJpbnQgIiIKKworCitkZWYgbWFpbigpOgorICAgIHRpbWluZ3MgPSBwaGFzZV90aW1pbmcucGFy
c2VfdGltaW5ncyhmaWxlaW5wdXQuaW5wdXQoKSkKKyAgICBwcmludF90aW1pbmdfdHJlZSh0aW1p
bmdzKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9wYXJzZS1nYy1waGFzZS10aW1pbmdzIGIvVG9vbHMvU2NyaXB0cy9w
YXJzZS1nYy1waGFzZS10aW1pbmdzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4Njdj
NzU4ZDlkNjAzZmZkYmYyMjY3OTBlMjA2Yzc0YmZkZWIxNzVkLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1NjcmlwdHMvcGFyc2UtZ2MtcGhhc2Ut
dGltaW5ncworKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0jIS91c3IvYmluL2VudiBw
eXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMTUgTWFyayBIYWhuZW5iZXJnLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0jIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0jIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0jIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1w
b3J0IGZpbGVpbnB1dAotaW1wb3J0IHJlCi0KLVRJTUlOR19SRUdFWCA9IHJlLmNvbXBpbGUoCi0g
ICAgcideXFsoP1A8cGlkPlswLTldKylcXSAnCi0gICAgJyg/UDxuYW1lPlteIF0rKSAnCi0gICAg
J1woUGFyZW50OiAoP1A8cGFyZW50PlteXCldKylcKSAnCi0gICAgJ1woKD9QPGNvbGxlY3RfdHlw
ZT5bXlwpXSspXCk6ICcKLSAgICAnKD9QPHRvdGFsX3RpbWU+WzAtOV0rXC5bMC05XSspbXMgJwot
ICAgICdcKGF2Zy4gKD9QPGF2Z190aW1lPlteLF0rKSwgJwotICAgICdtaW4uICg/UDxtaW5fdGlt
ZT5bXixdKyksICcKLSAgICAnbWF4LiAoP1A8bWF4X3RpbWU+W14sXSspLCAnCi0gICAgJ2NvdW50
ICg/UDxjb3VudD5bXlwpXSspXCknKQotCi1jbGFzcyBUaW1pbmcob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgcGlkLCBuYW1lLCBwYXJlbnQsIGNvbGxlY3RfdHlwZSwgdG90YWxfdGlt
ZSwgYXZnX3RpbWUsIG1pbl90aW1lLCBtYXhfdGltZSwgY291bnQpOgotICAgICAgICBzZWxmLnBp
ZCA9IGludChwaWQpCi0gICAgICAgIHNlbGYubmFtZSA9IHN0cihuYW1lKQotICAgICAgICBzZWxm
LnBhcmVudCA9IHN0cihwYXJlbnQpCi0gICAgICAgIHNlbGYuY29sbGVjdF90eXBlID0gc3RyKGNv
bGxlY3RfdHlwZSkKLSAgICAgICAgc2VsZi50b3RhbF90aW1lID0gZmxvYXQodG90YWxfdGltZSkK
LSAgICAgICAgc2VsZi5hdmdfdGltZSA9IGZsb2F0KGF2Z190aW1lKQotICAgICAgICBzZWxmLm1p
bl90aW1lID0gZmxvYXQobWluX3RpbWUpCi0gICAgICAgIHNlbGYubWF4X3RpbWUgPSBmbG9hdCht
YXhfdGltZSkKLSAgICAgICAgc2VsZi5jb3VudCA9IGludChjb3VudCkKLSAgICAgICAgc2VsZi5j
aGlsZHJlbiA9IFtdCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVy
biB1IiVzIC0gJXMgdG90YWw6ICUuMmYsIGF2ZzogJS4yZiIgJSAoc2VsZi5uYW1lLCBzZWxmLmNv
bGxlY3RfdHlwZSwgc2VsZi50b3RhbF90aW1lLCBzZWxmLmF2Z190aW1lKQotCi0gICAgZGVmIF9f
c3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiJXMgLSAlcyB0b3RhbDogJS4yZiwgYXZnOiAl
LjJmIiAlIChzZWxmLm5hbWUsIHNlbGYuY29sbGVjdF90eXBlLCBzZWxmLnRvdGFsX3RpbWUsIHNl
bGYuYXZnX3RpbWUpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAi
JXMgLSAlcyB0b3RhbDogJS4yZiwgYXZnOiAlLjJmIiAlIChzZWxmLm5hbWUsIHNlbGYuY29sbGVj
dF90eXBlLCBzZWxmLnRvdGFsX3RpbWUsIHNlbGYuYXZnX3RpbWUpCi0KLQotZGVmIHBhcnNlX2lu
cHV0KCk6Ci0gICAgdGltaW5ncyA9IFtdCi0gICAgZm9yIGxpbmUgaW4gZmlsZWlucHV0LmlucHV0
KCk6Ci0gICAgICAgIHJlc3VsdCA9IFRJTUlOR19SRUdFWC5tYXRjaChsaW5lKQotICAgICAgICBp
ZiByZXN1bHQgaXMgTm9uZToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHRpbWluZ3Mu
YXBwZW5kKFRpbWluZygKLSAgICAgICAgICAgIHJlc3VsdC5ncm91cCgncGlkJyksCi0gICAgICAg
ICAgICByZXN1bHQuZ3JvdXAoJ25hbWUnKSwKLSAgICAgICAgICAgIHJlc3VsdC5ncm91cCgncGFy
ZW50JyksCi0gICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ2NvbGxlY3RfdHlwZScpLAotICAgICAg
ICAgICAgcmVzdWx0Lmdyb3VwKCd0b3RhbF90aW1lJyksCi0gICAgICAgICAgICByZXN1bHQuZ3Jv
dXAoJ2F2Z190aW1lJyksCi0gICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ21pbl90aW1lJyksCi0g
ICAgICAgICAgICByZXN1bHQuZ3JvdXAoJ21heF90aW1lJyksCi0gICAgICAgICAgICByZXN1bHQu
Z3JvdXAoJ2NvdW50JyksCi0gICAgICAgICkpCi0gICAgcmV0dXJuIHRpbWluZ3MKLQotCi1kZWYg
cHJpbnRfdGltaW5nX25vZGUocm9vdCwgdGltaW5ncywgdGFicyk6Ci0gICAgZm9yIF8gaW4gcmFu
Z2UodGFicyk6Ci0gICAgICAgIHByaW50ICIgICAgIiwKLSAgICBwZXJjZW50X3RpbWUgPSAxLjAK
LSAgICBpZiByb290LnBhcmVudCBpcyBub3QgTm9uZToKLSAgICAgICAgcGVyY2VudF90aW1lID0g
ZmxvYXQocm9vdC50b3RhbF90aW1lKSAvIGZsb2F0KHJvb3QucGFyZW50LnRvdGFsX3RpbWUpCi0g
ICAgcHJpbnQgIiVzIC0gJS4yZiUlIiAlIChzdHIocm9vdCksIHBlcmNlbnRfdGltZSAqIDEwMC4w
KQotICAgIGZvciBjaGlsZCBpbiByZXZlcnNlZChzb3J0ZWQocm9vdC5jaGlsZHJlbiwga2V5PWxh
bWJkYSB0OiB0LnRvdGFsX3RpbWUpKToKLSAgICAgICAgaWYgY2hpbGQucGFyZW50ICE9IHJvb3Q6
Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBjaGlsZC5jb2xsZWN0X3R5cGUgIT0g
cm9vdC5jb2xsZWN0X3R5cGU6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBwcmludF90
aW1pbmdfbm9kZShjaGlsZCwgdGltaW5ncywgdGFicyArIDEpCi0gICAgCi0KLWRlZiBwcmludF90
aW1pbmdfdHJlZSh0aW1pbmdzKToKLSAgICB0aW1pbmdzLnNvcnQoa2V5PWxhbWJkYSB0OiB0LnRv
dGFsX3RpbWUpCi0gICAgdGltaW5ncy5yZXZlcnNlKCkKLSAgICBjb2xsZWN0aW9uX3R5cGVzID0g
WyJBbGwiLCAiRWRlbiIsICJGdWxsIl0KLSAgICBmb3IgY29sbGVjdF90eXBlIGluIGNvbGxlY3Rp
b25fdHlwZXM6Ci0gICAgICAgIGZvciB0aW1pbmcgaW4gdGltaW5nczoKLSAgICAgICAgICAgIGlm
IHRpbWluZy5jb2xsZWN0X3R5cGUgIT0gY29sbGVjdF90eXBlOgotICAgICAgICAgICAgICAgIGNv
bnRpbnVlCi0gICAgICAgICAgICBpZiB0aW1pbmcucGFyZW50IGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBwcmludF90aW1pbmdfbm9kZSh0aW1pbmcs
IHRpbWluZ3MsIDApCi0gICAgICAgIHByaW50ICIiCi0KLQotZGVmIGxpbmtfcGFyZW50cyh0aW1p
bmdzKToKLSAgICBmb3IgdGltaW5nIGluIHRpbWluZ3M6Ci0gICAgICAgIGlmIHRpbWluZy5wYXJl
bnQgPT0gIm51bGxwdHIiOgotICAgICAgICAgICAgdGltaW5nLnBhcmVudCA9IE5vbmUKLSAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGZvciBwYXJlbnQgaW4gdGltaW5nczoKLSAgICAgICAg
ICAgIGlmIHRpbWluZy5wYXJlbnQgIT0gcGFyZW50Lm5hbWU6Ci0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIGlmIHRpbWluZy5jb2xsZWN0X3R5cGUgIT0gcGFyZW50LmNvbGxl
Y3RfdHlwZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgdGltaW5nLnBh
cmVudCA9IHBhcmVudAotICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLmFwcGVuZCh0aW1pbmcp
Ci0KLWRlZiBtYWluKCk6Ci0gICAgdGltaW5ncyA9IHBhcnNlX2lucHV0KCkKLSAgICBsaW5rX3Bh
cmVudHModGltaW5ncykKLSAgICBwcmludF90aW1pbmdfdHJlZSh0aW1pbmdzKQotCi1pZiBfX25h
bWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQo=
</data>
<flag name="review"
          id="274491"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>