<?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>188936</bug_id>
          
          <creation_ts>2018-08-24 15:46:21 -0700</creation_ts>
          <short_desc>lldb-webkit: Pretty-print OptionSet</short_desc>
          <delta_ts>2018-08-30 09:33:32 -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>Tools / Tests</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>189008</dependson>
          <blocked>189011</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>lforschler</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1453603</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-24 15:46:21 -0700</bug_when>
    <thetext>We should add support for pretty-printing OptionSet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453606</commentid>
    <comment_count>1</comment_count>
      <attachid>348050</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-24 15:51:20 -0700</bug_when>
    <thetext>Created attachment 348050
Patch and unit tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453609</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-24 15:51:47 -0700</bug_when>
    <thetext>With the proposed patch, here is how it looks to print a variable that is an OptionSet:

(lldb) p checkingTypes
(WTF::OptionSet&lt;WebCore::TextCheckingType&gt;) $3 = { size = 3 } {
  (Spelling) [0] = 0
  (Grammar) [1] = 1
  (Replacement) [2] = 4
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453611</commentid>
    <comment_count>3</comment_count>
      <attachid>348050</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-08-24 15:55:03 -0700</bug_when>
    <thetext>Comment on attachment 348050
Patch and unit tests

Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453645</commentid>
    <comment_count>4</comment_count>
      <attachid>348050</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-24 18:57:03 -0700</bug_when>
    <thetext>Comment on attachment 348050
Patch and unit tests

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

&gt; Tools/lldb/lldb_webkit.py:33
&gt; +import operator

Will remoce this before landing.

&gt; Tools/lldb/lldb_webkit.py:613
&gt; +            return self.valobj.CreateValueFromExpression(&apos;(%s) [%s]&apos; % (self._elements[index], str(index)), str(index ** 2))

index ** 2  =&gt; 2 ** index</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453914</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-27 09:29:51 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #4)
&gt; Comment on attachment 348050 [details]
&gt; Patch and unit tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=348050&amp;action=review
&gt; 
&gt; &gt; Tools/lldb/lldb_webkit.py:33
&gt; &gt; +import operator
&gt; 
&gt; Will remoce this before landing.
&gt; 
&gt; &gt; Tools/lldb/lldb_webkit.py:613
&gt; &gt; +            return self.valobj.CreateValueFromExpression(&apos;(%s) [%s]&apos; % (self._elements[index], str(index)), str(index ** 2))
&gt; 
&gt; index ** 2  =&gt; 2 ** index

This is not correct because index represents the position in the array of collected enumerators != the enumerator&apos;s value. We need to explicitly keep track of the value of each seen enumerator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453919</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-27 09:33:32 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #2)
&gt; With the proposed patch, here is how it looks to print a variable that is an
&gt; OptionSet:
&gt; 
&gt; (lldb) p checkingTypes
&gt; (WTF::OptionSet&lt;WebCore::TextCheckingType&gt;) $3 = { size = 3 } {
&gt;   (Spelling) [0] = 0
&gt;   (Grammar) [1] = 1
&gt;   (Replacement) [2] = 4
&gt; }

Displaying the position in the set (e.g. [1]) does not seem very useful since you cannot index into the set. I am going to simplify this output to only show the name of the enumerator and its value before landing (due to :

(lldb) p checkingTypes
(WTF::OptionSet&lt;WebCore::TextCheckingType&gt;) $3 = { size = 3 } {
  Spelling = 1
  Grammar = 2
  Replacement = 32
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453936</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-27 09:59:48 -0700</bug_when>
    <thetext>Committed r235376: &lt;https://trac.webkit.org/changeset/235376&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1453940</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-27 10:00:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/43757743&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454095</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-27 14:45:15 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #7)
&gt; Committed r235376: &lt;https://trac.webkit.org/changeset/235376&gt;

For some reason the tests lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSetProvider_simple and lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_simple, included in this change, are failing on the Apple High Sierra Debug and Apple Sierra Debug bots. These tests do not fail on the Release variants of these bots (why?). The following is the failure output:

[[
[1772/1787] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSetProvider_simple
[1773/1787] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSetProvider_simple erred:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/highsierra-debug-tests-wk2/build/Tools/lldb/lldb_webkit_unittest.py&quot;, line 193, in serial_test_WTFOptionSetProvider_simple
      self.assertEqual(provider.get_child_at_index(0).GetName(), &apos;A&apos;)
  AttributeError: &apos;NoneType&apos; object has no attribute &apos;GetName&apos;
...
[1779/1787] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_simple failed:
  Traceback (most recent call last):
    File &quot;/Volumes/Data/slave/highsierra-debug-tests-wk2/build/Tools/lldb/lldb_webkit_unittest.py&quot;, line 181, in serial_test_WTFOptionSet_SummaryProvider_simple
      self.assertEqual(summary, &quot;{ size = 3 }&quot;)
  AssertionError: &apos;{ size = 0 }&apos; != &apos;{ size = 3 }&apos;
[1779/1787] dump_class_layout_unittest.TestDumpClassLayout.serial_test_ClassWithTwoVirtualBaseClasses
]]
&lt;https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/4639/steps/webkitpy-test/logs/stdio&gt;

Same error seen on Apple Sierra Debug WK1 (Tests):
&lt;https://build.webkit.org/builders/Apple%20Sierra%20Debug%20WK1%20%28Tests%29/builds/9271/steps/webkitpy-test/logs/stdio&gt;

For completeness, the Apple Sierra Release WK2 (Tests) and High Sierra Release WK2 (Tests) output of test-webkitpy is at &lt;https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/11327/steps/webkitpy-test/logs/stdio&gt; and &lt;https://build.webkit.org/builders/Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/6406/steps/webkitpy-test/logs/stdio&gt;, respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454098</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-27 14:47:17 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 189008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1455244</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-08-30 09:33:32 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #9)
&gt; (In reply to Daniel Bates from comment #7)
&gt; &gt; Committed r235376: &lt;https://trac.webkit.org/changeset/235376&gt;
&gt; 
&gt; For some reason the tests
&gt; lldb_webkit_unittest.TestSummaryProviders.
&gt; serial_test_WTFOptionSetProvider_simple and
&gt; lldb_webkit_unittest.TestSummaryProviders.
&gt; serial_test_WTFOptionSet_SummaryProvider_simple, included in this change,
&gt; are failing on the Apple High Sierra Debug and Apple Sierra Debug bots.
&gt; These tests do not fail on the Release variants of these bots (why?). The
&gt; following is the failure output:
&gt; 
&gt; [[
&gt; [1772/1787]
&gt; lldb_webkit_unittest.TestSummaryProviders.
&gt; serial_test_WTFOptionSetProvider_simple
&gt; [1773/1787]
&gt; lldb_webkit_unittest.TestSummaryProviders.
&gt; serial_test_WTFOptionSetProvider_simple erred:
&gt;   Traceback (most recent call last):
&gt;     File
&gt; &quot;/Volumes/Data/slave/highsierra-debug-tests-wk2/build/Tools/lldb/
&gt; lldb_webkit_unittest.py&quot;, line 193, in
&gt; serial_test_WTFOptionSetProvider_simple
&gt;       self.assertEqual(provider.get_child_at_index(0).GetName(), &apos;A&apos;)
&gt;   AttributeError: &apos;NoneType&apos; object has no attribute &apos;GetName&apos;
&gt; ...
&gt; [1779/1787]
&gt; lldb_webkit_unittest.TestSummaryProviders.
&gt; serial_test_WTFOptionSet_SummaryProvider_simple failed:
&gt;   Traceback (most recent call last):
&gt;     File
&gt; &quot;/Volumes/Data/slave/highsierra-debug-tests-wk2/build/Tools/lldb/
&gt; lldb_webkit_unittest.py&quot;, line 181, in
&gt; serial_test_WTFOptionSet_SummaryProvider_simple
&gt;       self.assertEqual(summary, &quot;{ size = 3 }&quot;)
&gt;   AssertionError: &apos;{ size = 0 }&apos; != &apos;{ size = 3 }&apos;
&gt; [1779/1787]
&gt; dump_class_layout_unittest.TestDumpClassLayout.
&gt; serial_test_ClassWithTwoVirtualBaseClasses
&gt; ]]
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Debug%20WK2%20%28Tests%29/builds/4639/steps/webkitpy-
&gt; test/logs/stdio&gt;
&gt; 
&gt; Same error seen on Apple Sierra Debug WK1 (Tests):
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20Sierra%20Debug%20WK1%20%28Tests%29/builds/9271/steps/webkitpy-test/
&gt; logs/stdio&gt;
&gt; 
&gt; For completeness, the Apple Sierra Release WK2 (Tests) and High Sierra
&gt; Release WK2 (Tests) output of test-webkitpy is at
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/11327/steps/webkitpy-
&gt; test/logs/stdio&gt; and
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20High%20Sierra%20Release%20WK2%20%28Tests%29/builds/6406/steps/
&gt; webkitpy-test/logs/stdio&gt;, respectively.

Filed bug #189011 to fix this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348050</attachid>
            <date>2018-08-24 15:51:20 -0700</date>
            <delta_ts>2018-08-24 15:55:03 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-188936-20180824155119.patch</filename>
            <type>text/plain</type>
            <size>8862</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1MTc4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjIyOTRjOGE5MzFkYTYyNDAwZGNmZjkyODJiMTA1YWNk
NjI3YTc1MC4uMzM0ZThkZTdiZDk2NmViMjAwNjEwZmM4NzRkZWE3YjZmMGY1NzNmNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDE4LTA4LTI0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBsbGRiLXdlYmtpdDogUHJldHR5LXByaW50IE9wdGlvblNldAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4OTM2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIExMREIgZm9ybWF0dGVycyB0byBw
cmV0dHktcHJpbnQgYW4gT3B0aW9uU2V0LgorCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwOgorICAgICAgICAodGVzdFN1bW1hcnlQcm92aWRlcnMpOgorICAgICAgICAq
IGxsZGIvbGxkYl93ZWJraXQucHk6CisgICAgICAgIChfX2xsZGJfaW5pdF9tb2R1bGUpOgorICAg
ICAgICAoX19sbGRiX2luaXRfbW9kdWxlLmxsZGJfd2Via2l0KToKKyAgICAgICAgKFdURk9wdGlv
blNldF9TdW1tYXJ5UHJvdmlkZXIpOgorICAgICAgICAoV1RGT3B0aW9uU2V0UHJvdmlkZXIpOgor
ICAgICAgICAoV1RGT3B0aW9uU2V0UHJvdmlkZXIuX19pbml0X18pOgorICAgICAgICAoV1RGT3B0
aW9uU2V0UHJvdmlkZXIuaGFzX2NoaWxkcmVuKToKKyAgICAgICAgKFdURk9wdGlvblNldFByb3Zp
ZGVyLm51bV9jaGlsZHJlbik6CisgICAgICAgIChXVEZPcHRpb25TZXRQcm92aWRlci5nZXRfY2hp
bGRfaW5kZXgpOgorICAgICAgICAoV1RGT3B0aW9uU2V0UHJvdmlkZXIuZ2V0X2NoaWxkX2F0X2lu
ZGV4KToKKyAgICAgICAgKFdURk9wdGlvblNldFByb3ZpZGVyLnVwZGF0ZSk6CisgICAgICAgICog
bGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlk
ZXJzLnNlcmlhbF90ZXN0X1dURkhhc2hTZXRfdGFibGVzaXplX2FuZF9zaXplKToKKyAgICAgICAg
KFRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNl
cmlhbF90ZXN0X1dURk9wdGlvblNldF9TdW1tYXJ5UHJvdmlkZXJfZW1wdHkpOgorICAgICAgICAo
VGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGT3B0aW9uU2V0X1N1bW1hcnlQcm92
aWRlcl9zaW1wbGUpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3Rf
V1RGT3B0aW9uU2V0UHJvdmlkZXJfc2ltcGxlKToKKwogMjAxOC0wOC0yMSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJvbGwgb3V0IHIyMzUx
MzkgYW5kIHIyMzUxNDYKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9t
YWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcAppbmRleCAyY2U4
ZDYxMDZlMDhjZWQ5YWE3YWFmYTJkYjc0NjgwZDcyOGI4MmRhLi45ZjhhZjUyNDNkNjMxZTgzZmM4
MGEyMGFhMmExNWMwMTBiZmYwYTZmIDEwMDY0NAotLS0gYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvbWFpbi5jcHAKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL09wdGlvblNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00NCw2ICs0NSwx
MyBAQCBzdGF0aWMgU3RyaW5nIHV0ZjE2U3RyaW5nKGNvbnN0IGNoYXIxNl90ICgmc3RyaW5nKVts
ZW5ndGhdKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK2VudW0gY2xhc3Mg
RXhhbXBsZUZsYWdzIHsKKyAgICBBID0gMSA8PCAwLAorICAgIEIgPSAxIDw8IDEsCisgICAgQyA9
IDEgPDwgMiwKKyAgICBEID0gMSA8PCAzLAorfTsKKwogc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQ
cm92aWRlcnMoKQogewogICAgIFN0cmluZyBhTnVsbFN0cmluZyB7ICIiIH07CkBAIC03Myw2ICs4
MSw5IEBAIHN0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKICAgICBIYXNoTWFwPHVu
c2lnbmVkLCBWZWN0b3I8aW50Pj4gaGFzaE1hcE9mVmVjdG9yczsKICAgICBoYXNoTWFwT2ZWZWN0
b3JzLmFkZCgxLCBWZWN0b3I8aW50Pih7MiwgM30pKTsKIAorICAgIE9wdGlvblNldDxFeGFtcGxl
RmxhZ3M+IGV4YW1wbGVGbGFnc0VtcHR5OworICAgIE9wdGlvblNldDxFeGFtcGxlRmxhZ3M+IGV4
YW1wbGVGbGFnc1NpbXBsZSB7IEV4YW1wbGVGbGFnczo6QSwgRXhhbXBsZUZsYWdzOjpELCBFeGFt
cGxlRmxhZ3M6OkMgfTsKKwogICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdC5weSBiL1Rvb2xzL2xsZGIv
bGxkYl93ZWJraXQucHkKaW5kZXggYWFiYWU0ZDk3YjM2NTYwNzk3OTFiOWEzMWMwMTAyMGRmOTVm
NDlkYi4uMzkyNzMxYmIwNjc3M2JiNzViNzc1NGQzYjZkNDViMzdiYmJlZGEyMiAxMDA2NDQKLS0t
IGEvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdC5weQorKysgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0
LnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTItMjAxNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MzAsNiArMzAsNyBAQAogIiIiCiAKIGltcG9ydCBsbGRiCitpbXBvcnQgb3BlcmF0b3IKIGltcG9y
dCBzdHJpbmcKIGltcG9ydCBzdHJ1Y3QKIApAQCAtNDQsNiArNDUsNyBAQCBkZWYgX19sbGRiX2lu
aXRfbW9kdWxlKGRlYnVnZ2VyLCBkaWN0KToKICAgICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0
eXBlIHN1bW1hcnkgYWRkIC0tZXhwYW5kIC1GIGxsZGJfd2Via2l0LldURkhhc2hNYXBfU3VtbWFy
eVByb3ZpZGVyIC14ICJeV1RGOjpIYXNoTWFwPC4rPiQiJykKICAgICBkZWJ1Z2dlci5IYW5kbGVD
b21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC0tZXhwYW5kIC1GIGxsZGJfd2Via2l0LldURkhhc2hT
ZXRfU3VtbWFyeVByb3ZpZGVyIC14ICJeV1RGOjpIYXNoU2V0PC4rPiQiJykKICAgICBkZWJ1Z2dl
ci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC0tZXhwYW5kIC1GIGxsZGJfd2Via2l0
LldURk1lZGlhVGltZV9TdW1tYXJ5UHJvdmlkZXIgV1RGOjpNZWRpYVRpbWUnKQorICAgIGRlYnVn
Z2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBhZGQgLS1leHBhbmQgLUYgbGxkYl93ZWJr
aXQuV1RGT3B0aW9uU2V0X1N1bW1hcnlQcm92aWRlciAteCAiXldURjo6T3B0aW9uU2V0PC4rPiQi
JykKIAogICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3VtbWFyeSBhZGQgLUYgbGxk
Yl93ZWJraXQuV2ViQ29yZVVSTF9TdW1tYXJ5UHJvdmlkZXIgV2ViQ29yZTo6VVJMJykKICAgICBk
ZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN1bW1hcnkgYWRkIC1GIGxsZGJfd2Via2l0Lldl
YkNvcmVDb2xvcl9TdW1tYXJ5UHJvdmlkZXIgV2ViQ29yZTo6Q29sb3InKQpAQCAtNjQsNiArNjYs
NyBAQCBkZWYgX19sbGRiX2luaXRfbW9kdWxlKGRlYnVnZ2VyLCBkaWN0KToKICAgICAjIHN5bnRo
ZXRpYyB0eXBlcyAoc2VlIDxodHRwczovL2xsZGIubGx2bS5vcmcvdmFyZm9ybWF0cy5odG1sPikK
ICAgICBkZWJ1Z2dlci5IYW5kbGVDb21tYW5kKCd0eXBlIHN5bnRoZXRpYyBhZGQgLXggIl5XVEY6
OlZlY3RvcjwuKz4kIiAtLXB5dGhvbi1jbGFzcyBsbGRiX3dlYmtpdC5XVEZWZWN0b3JQcm92aWRl
cicpCiAgICAgZGVidWdnZXIuSGFuZGxlQ29tbWFuZCgndHlwZSBzeW50aGV0aWMgYWRkIC14ICJe
V1RGOjpIYXNoVGFibGU8Lis+JCIgLS1weXRob24tY2xhc3MgbGxkYl93ZWJraXQuV1RGSGFzaFRh
YmxlUHJvdmlkZXInKQorICAgIGRlYnVnZ2VyLkhhbmRsZUNvbW1hbmQoJ3R5cGUgc3ludGhldGlj
IGFkZCAteCAiXldURjo6T3B0aW9uU2V0PC4rPiQiIC0tcHl0aG9uLWNsYXNzIGxsZGJfd2Via2l0
LldURk9wdGlvblNldFByb3ZpZGVyJykKIAogCiBkZWYgV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRl
cih2YWxvYmosIGRpY3QpOgpAQCAtMTA3LDYgKzExMCwxMSBAQCBkZWYgV1RGSGFzaFNldF9TdW1t
YXJ5UHJvdmlkZXIodmFsb2JqLCBkaWN0KToKICAgICByZXR1cm4gInsgdGFibGVTaXplID0gJWQs
IGtleUNvdW50ID0gJWQgfSIgJSAocHJvdmlkZXIudGFibGVTaXplKCksIHByb3ZpZGVyLmtleUNv
dW50KCkpCiAKIAorZGVmIFdURk9wdGlvblNldF9TdW1tYXJ5UHJvdmlkZXIodmFsb2JqLCBkaWN0
KToKKyAgICBwcm92aWRlciA9IFdURk9wdGlvblNldFByb3ZpZGVyKHZhbG9iaiwgZGljdCkKKyAg
ICByZXR1cm4gInsgc2l6ZSA9ICVkIH0iICUgcHJvdmlkZXIuc2l6ZQorCisKIGRlZiBXVEZNZWRp
YVRpbWVfU3VtbWFyeVByb3ZpZGVyKHZhbG9iaiwgZGljdCk6CiAgICAgcHJvdmlkZXIgPSBXVEZN
ZWRpYVRpbWVQcm92aWRlcih2YWxvYmosIGRpY3QpCiAgICAgaWYgcHJvdmlkZXIuaXNJbnZhbGlk
KCk6CkBAIC01NzQsNiArNTgyLDU0IEBAIGNsYXNzIFdlYkNvcmVVUkxQcm92aWRlcjoKICAgICAg
ICAgcmV0dXJuIFdURlN0cmluZ1Byb3ZpZGVyKHNlbGYudmFsb2JqLkdldENoaWxkTWVtYmVyV2l0
aE5hbWUoJ21fc3RyaW5nJyksIGRpY3QpLnRvX3N0cmluZygpCiAKIAorY2xhc3MgV1RGT3B0aW9u
U2V0UHJvdmlkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbG9iaiwgaW50ZXJuYWxfZGlj
dCk6CisgICAgICAgIHNlbGYudmFsb2JqID0gdmFsb2JqCisgICAgICAgIHNlbGYuX2VsZW1lbnRz
ID0gW10KKyAgICAgICAgc2VsZi5zaXplID0gbGVuKHNlbGYuX2VsZW1lbnRzKQorICAgICAgICBz
ZWxmLnVwZGF0ZSgpCisKKyAgICBkZWYgaGFzX2NoaWxkcmVuKHNlbGYpOgorICAgICAgICByZXR1
cm4gYm9vbChzZWxmLl9lbGVtZW50cykKKworICAgIGRlZiBudW1fY2hpbGRyZW4oc2VsZik6Cisg
ICAgICAgIHJldHVybiBsZW4oc2VsZi5fZWxlbWVudHMpCisKKyAgICBkZWYgZ2V0X2NoaWxkX2lu
ZGV4KHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lID09ICdtX3N0b3JhZ2UnOgorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYubnVtX2NoaWxkcmVuKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgcmV0dXJuIGludChuYW1lLmxzdHJpcCgnWycpLnJzdHJpcCgnXScpKQorICAgICAgICBleGNl
cHQ6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGdldF9jaGlsZF9hdF9pbmRl
eChzZWxmLCBpbmRleCk6CisgICAgICAgIGlmIGluZGV4IDwgMCBvciBub3Qgc2VsZi52YWxvYmou
SXNWYWxpZCgpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgbnVtYmVyX29mX2No
aWxkcmVuID0gc2VsZi5udW1fY2hpbGRyZW4oKQorICAgICAgICBpZiBpbmRleCA9PSBudW1iZXJf
b2ZfY2hpbGRyZW46CisgICAgICAgICAgICByZXR1cm4gc2VsZi5zdG9yYWdlCisgICAgICAgIGlm
IGluZGV4IDwgbnVtYmVyX29mX2NoaWxkcmVuOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFs
b2JqLkNyZWF0ZVZhbHVlRnJvbUV4cHJlc3Npb24oJyglcykgWyVzXScgJSAoc2VsZi5fZWxlbWVu
dHNbaW5kZXhdLCBzdHIoaW5kZXgpKSwgc3RyKGluZGV4ICoqIDIpKQorICAgICAgICByZXR1cm4g
Tm9uZQorCisgICAgZGVmIHVwZGF0ZShzZWxmKToKKyAgICAgICAgc2VsZi5zdG9yYWdlID0gc2Vs
Zi52YWxvYmouR2V0Q2hpbGRNZW1iZXJXaXRoTmFtZSgnbV9zdG9yYWdlJykKKworICAgICAgICB0
ZW1wbGF0ZV9hcmd1bWVudF9zYlR5cGUgPSBzZWxmLnZhbG9iai5HZXRUeXBlKCkuR2V0VGVtcGxh
dGVBcmd1bWVudFR5cGUoMCkKKyAgICAgICAgZW51bWVyYXRvcl92YWx1ZV90b19uYW1lX21hcCA9
IHtzYlR5cGVFbnVtTWVtYmVyLkdldFZhbHVlQXNVbnNpZ25lZCgpOiBzYlR5cGVFbnVtTWVtYmVy
LkdldE5hbWUoKSBmb3Igc2JUeXBlRW51bU1lbWJlciBpbiB0ZW1wbGF0ZV9hcmd1bWVudF9zYlR5
cGUuZ2V0X2VudW1fbWVtYmVyc19hcnJheSgpfQorCisgICAgICAgICMgSXRlcmF0ZSBmcm9tIGxl
YXN0IHNpZ25pZmljYW50IGJpdCB0byBtb3N0IHNpZ25pZmljYW50IGJpdC4KKyAgICAgICAgZWxl
bWVudHMgPSBbXQorICAgICAgICBiaXRtYXNrID0gc2VsZi5zdG9yYWdlLkdldFZhbHVlQXNVbnNp
Z25lZCgwKQorICAgICAgICB3aGlsZSBiaXRtYXNrID4gMDoKKyAgICAgICAgICAgIGN1cnJlbnQg
PSBiaXRtYXNrICYgLWJpdG1hc2sgICMgSXNvbGF0ZSB0aGUgcmlnaHRtb3N0IHNldCBiaXQuCisg
ICAgICAgICAgICBlbGVtZW50cy5hcHBlbmQoZW51bWVyYXRvcl92YWx1ZV90b19uYW1lX21hcFtj
dXJyZW50XSkKKyAgICAgICAgICAgIGJpdG1hc2sgPSBiaXRtYXNrICYgKGJpdG1hc2sgLSAxKSAg
IyBUdXJuIG9mZiB0aGUgcmlnaHRtb3N0IHNldCBiaXQuCisgICAgICAgIHNlbGYuX2VsZW1lbnRz
ID0gZWxlbWVudHMKKyAgICAgICAgc2VsZi5zaXplID0gbGVuKGVsZW1lbnRzKQorCisKIGNsYXNz
IFdURlZlY3RvclByb3ZpZGVyOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWxvYmosIGludGVy
bmFsX2RpY3QpOgogICAgICAgICBzZWxmLnZhbG9iaiA9IHZhbG9iagpkaWZmIC0tZ2l0IGEvVG9v
bHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRf
dW5pdHRlc3QucHkKaW5kZXggODY1Yzk3YWY1N2JmNzUwMjZhNGQ3N2MyZWI0NTE1ZjBkZjFhYTQz
YS4uOWNiM2FmNzU1YmMyMDdkNTk2NWFiYTM0ZDJiNjA4ZGFjOWI0OTExNSAxMDA3NTUKLS0tIGEv
VG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weQorKysgYi9Ub29scy9sbGRiL2xsZGJf
d2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0xNjcsMyArMTY3LDI3IEBAIGNsYXNzIFRlc3RTdW1tYXJ5
UHJvdmlkZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgdmFyaWFibGUgPSBzZWxmLl9z
YkZyYW1lLkZpbmRWYXJpYWJsZSgnaGFzaFNldE9mSW50cycpCiAgICAgICAgIHN1bW1hcnkgPSBs
bGRiX3dlYmtpdC5XVEZIYXNoU2V0X1N1bW1hcnlQcm92aWRlcih2YXJpYWJsZSwge30pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgdGFibGVTaXplID0gOCwga2V5Q291bnQg
PSAxIH0iKQorCisgICAgIyBNQVJLOiBXVEZPcHRpb25TZXRfU3VtbWFyeVByb3ZpZGVyIHRlc3Qg
Y2FzZXMKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZPcHRpb25TZXRfU3VtbWFyeVByb3ZpZGVy
X2VtcHR5KHNlbGYpOgorICAgICAgICB2YXJpYWJsZSA9IHNlbGYuX3NiRnJhbWUuRmluZFZhcmlh
YmxlKCdleGFtcGxlRmxhZ3NFbXB0eScpCisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5X
VEZPcHRpb25TZXRfU3VtbWFyeVByb3ZpZGVyKHZhcmlhYmxlLCB7fSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdW1tYXJ5LCAieyBzaXplID0gMCB9IikKKworICAgIGRlZiBzZXJpYWxfdGVz
dF9XVEZPcHRpb25TZXRfU3VtbWFyeVByb3ZpZGVyX3NpbXBsZShzZWxmKToKKyAgICAgICAgdmFy
aWFibGUgPSBzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnZXhhbXBsZUZsYWdzU2ltcGxlJykK
KyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURk9wdGlvblNldF9TdW1tYXJ5UHJvdmlk
ZXIodmFyaWFibGUsIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IHNp
emUgPSAzIH0iKQorCisgICAgIyBNQVJLOiBXVEZPcHRpb25TZXRQcm92aWRlciB0ZXN0IGNhc2Vz
CisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGT3B0aW9uU2V0UHJvdmlkZXJfc2ltcGxlKHNlbGYp
OgorICAgICAgICB2YXJpYWJsZSA9IHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdleGFtcGxl
RmxhZ3NTaW1wbGUnKQorICAgICAgICBwcm92aWRlciA9IGxsZGJfd2Via2l0LldURk9wdGlvblNl
dFByb3ZpZGVyKHZhcmlhYmxlLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm92aWRl
ci5nZXRfY2hpbGRfYXRfaW5kZXgoMCkuR2V0TmFtZSgpLCAnKEEpIFswXScpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocHJvdmlkZXIuZ2V0X2NoaWxkX2F0X2luZGV4KDApLkdldFZhbHVlKCks
ICcwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm92aWRlci5nZXRfY2hpbGRfYXRfaW5k
ZXgoMSkuR2V0TmFtZSgpLCAnKEMpIFsxXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJv
dmlkZXIuZ2V0X2NoaWxkX2F0X2luZGV4KDEpLkdldFZhbHVlKCksICcxJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwcm92aWRlci5nZXRfY2hpbGRfYXRfaW5kZXgoMikuR2V0TmFtZSgpLCAn
KEQpIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdmlkZXIuZ2V0X2NoaWxkX2F0
X2luZGV4KDIpLkdldFZhbHVlKCksICc0JykK
</data>
<flag name="review"
          id="365748"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>