<?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>147898</bug_id>
          
          <creation_ts>2015-08-11 13:58:19 -0700</creation_ts>
          <short_desc>Add a tool that dumps class and struct member layout, showing padding</short_desc>
          <delta_ts>2015-08-12 12:32:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>kling</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116694</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-11 13:58:19 -0700</bug_when>
    <thetext>Add a tool that dumps class and struct member layout, showing padding</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116698</commentid>
    <comment_count>1</comment_count>
      <attachid>258753</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-11 14:01:50 -0700</bug_when>
    <thetext>Created attachment 258753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116701</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-08-11 14:03:06 -0700</bug_when>
    <thetext>Here&apos;s what it says for RenderElement:

 97$ $ ./Tools/Scripts/dump-class-layout WebCore RenderElement
Found 1 types matching &quot;RenderElement&quot; in &quot;/Volumes/Data/Development/OSX/webkit/OpenSource/WebKitBuild/Release/WebCore.framework/WebCore&quot;
  +0 { 72} RenderElement
  +0 { 48}     WebCore::RenderObject
  +0 {  8}         WebCore::CachedImageClient
  +0 {  8}             WebCore::CachedResourceClient
  +0 &lt;  8&gt;                 __vtbl_ptr_type * _vptr;
  +8 &lt;  8&gt;         WebCore::Node &amp; m_node;
 +16 &lt;  8&gt;         WebCore::RenderElement * m_parent;
 +24 &lt;  8&gt;         WebCore::RenderObject * m_previous;
 +32 &lt;  8&gt;         WebCore::RenderObject * m_next;
 +40 &lt;  4&gt;         WebCore::RenderObject::RenderObjectBitfields m_bitfields;
 +40 &lt;  4&gt;             unsigned int:1 m_hasRareData;
 +40 &lt;  4&gt;             unsigned int:1 m_beingDestroyed;
 +40 &lt;  4&gt;             unsigned int:1 m_needsLayout;
 +40 &lt;  4&gt;             unsigned int:1 m_needsPositionedMovementLayout;
 +40 &lt;  4&gt;             unsigned int:1 m_normalChildNeedsLayout;
 +40 &lt;  4&gt;             unsigned int:1 m_posChildNeedsLayout;
 +40 &lt;  4&gt;             unsigned int:1 m_needsSimplifiedNormalFlowLayout;
 +40 &lt;  4&gt;             unsigned int:1 m_preferredLogicalWidthsDirty;
 +41 &lt;  4&gt;             unsigned int:1 m_floating;
 +41 &lt;  4&gt;             unsigned int:1 m_isAnonymous;
 +41 &lt;  4&gt;             unsigned int:1 m_isTextOrRenderView;
 +41 &lt;  4&gt;             unsigned int:1 m_isBox;
 +41 &lt;  4&gt;             unsigned int:1 m_isInline;
 +41 &lt;  4&gt;             unsigned int:1 m_isReplaced;
 +41 &lt;  4&gt;             unsigned int:1 m_isLineBreak;
 +41 &lt;  4&gt;             unsigned int:1 m_horizontalWritingMode;
 +42 &lt;  4&gt;             unsigned int:1 m_hasLayer;
 +42 &lt;  4&gt;             unsigned int:1 m_hasOverflowClip;
 +42 &lt;  4&gt;             unsigned int:1 m_hasTransformRelatedProperty;
 +42 &lt;  4&gt;             unsigned int:1 m_unused;
 +42 &lt;  4&gt;             unsigned int:1 m_everHadLayout;
 +42 &lt;  4&gt;             unsigned int:1 m_childrenInline;
 +42 &lt;  4&gt;             unsigned int:2 m_positionedState;
 +43 &lt;  4&gt;             unsigned int:3 m_selectionState;
 +43 &lt;  4&gt;             unsigned int:2 m_flowThreadState;
 +43 &lt;  4&gt;             unsigned int:2 m_boxDecorationState;
 +47 &lt;  1&gt;         &lt;PADDING&gt;
 +44 &lt;  4&gt;     unsigned int:6 m_baseTypeFlags;
 +44 &lt;  4&gt;     unsigned int:1 m_ancestorLineBoxDirty;
 +44 &lt;  4&gt;     unsigned int:1 m_hasInitializedStyle;
 +45 &lt;  4&gt;     unsigned int:1 m_renderInlineAlwaysCreatesLineBoxes;
 +45 &lt;  4&gt;     unsigned int:1 m_renderBoxNeedsLazyRepaint;
 +45 &lt;  4&gt;     unsigned int:1 m_hasPausedImageAnimations;
 +45 &lt;  4&gt;     unsigned int:1 m_hasCounterNodeMap;
 +45 &lt;  4&gt;     unsigned int:1 m_isCSSAnimating;
 +45 &lt;  4&gt;     unsigned int:1 m_hasContinuation;
 +45 &lt;  4&gt;     unsigned int:1 m_renderBlockHasMarginBeforeQuirk;
 +45 &lt;  4&gt;     unsigned int:1 m_renderBlockHasMarginAfterQuirk;
 +46 &lt;  4&gt;     unsigned int:1 m_renderBlockHasBorderOrPaddingLogicalWidthChanged;
 +46 &lt;  4&gt;     unsigned int:1 m_renderBlockFlowHasMarkupTruncation;
 +46 &lt;  4&gt;     unsigned int:2 m_renderBlockFlowLineLayoutPath;
 +48 &lt;  8&gt;     WebCore::RenderObject * m_firstChild;
 +56 &lt;  8&gt;     WebCore::RenderObject * m_lastChild;
 +64 &lt;  8&gt;     WTF::Ref&lt;WebCore::RenderStyle&gt; m_style;
 +64 &lt;  8&gt;         WebCore::RenderStyle * m_ptr;
Total byte size: 72
Total pad bytes: 1
Padding percentage: 1.39 %</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116704</commentid>
    <comment_count>3</comment_count>
      <attachid>258753</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-08-11 14:05:37 -0700</bug_when>
    <thetext>Comment on attachment 258753
Patch

rs=me!
very nice!

Any documentation on how to use it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116705</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-08-11 14:06:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 258753 [details]
&gt; Patch
&gt; 
&gt; rs=me!
&gt; very nice!
&gt; 
&gt; Any documentation on how to use it?
Never mind!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117021</commentid>
    <comment_count>5</comment_count>
      <attachid>258753</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-12 12:32:00 -0700</bug_when>
    <thetext>Comment on attachment 258753
Patch

Clearing flags on attachment: 258753

Committed r188350: &lt;http://trac.webkit.org/changeset/188350&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117022</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-12 12:32:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258753</attachid>
            <date>2015-08-11 14:01:50 -0700</date>
            <delta_ts>2015-08-12 12:32:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147898-20150811140134.patch</filename>
            <type>text/plain</type>
            <size>10255</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDQxYWEzMmJkNTYzNTg1OTg5ZTBiNjE3YzdkYWFlOTBh
ZDc4MTdlMS4uNWRjNmVmZjhiYThkODk2OTY5ZWYxZmQ1MjllMjU5NWRiNWI4NmIzYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDE1LTA4LTExICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhIHRvb2wgdGhhdCBkdW1wcyBjbGFzcyBhbmQgc3RydWN0IG1lbWJlciBs
YXlvdXQsIHNob3dpbmcgcGFkZGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ3ODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBUaGlzICdkdW1wLWNsYXNzLWxheW91dCcgc2NyaXB0IHVz
ZXMgdGhlIGxsZGIgUHl0aG9uIGJpbmRpbmdzIHRvIGNvbGxlY3QgZGF0YQorICAgICAgICBhYm91
dCBkYXRhIG1lbWJlciBsYXlvdXQsIGFuZCBkaXNwbGF5cyBpdC4KKyAgICAgICAgCisgICAgICAg
IFNhbXBsZSBvdXRwdXQ6CisKKyAgICAgICAgICAgICAgKzAgeyA3Mn0gV1RGOjpMaXN0SGFzaFNl
dDxXZWJDb3JlOjpVUkwsIFdlYkNvcmU6OlVSTEhhc2g+OjpOb2RlCisgICAgICAgICAgICAgICsw
IDwgNTY+ICAgICBXZWJDb3JlOjpVUkwgbV92YWx1ZTsKKyAgICAgICAgICAgICAgKzAgPCAgOD4g
ICAgICAgICBXVEY6OlN0cmluZyBtX3N0cmluZzsKKyAgICAgICAgICAgICAgKzAgPCAgOD4gICAg
ICAgICAgICAgV1RGOjpSZWZQdHI8V1RGOjpTdHJpbmdJbXBsPiBtX2ltcGw7CisgICAgICAgICAg
ICAgICswIDwgIDg+ICAgICAgICAgICAgICAgICBXVEY6OlN0cmluZ0ltcGwgKiBtX3B0cjsKKyAg
ICAgICAgICAgICAgKzggPCAgMT4gICAgICAgICBib29sOjEgbV9pc1ZhbGlkOworICAgICAgICAg
ICAgICArOCA8ICAxPiAgICAgICAgIGJvb2w6MSBtX3Byb3RvY29sSXNJbkhUVFBGYW1pbHk7Cisg
ICAgICAgICAgICAgICs5IDwgIDM+ICAgICAgICAgPFBBRERJTkc+CisgICAgICAgICAgICAgKzEy
IDwgIDQ+ICAgICAgICAgaW50IG1fc2NoZW1lRW5kOworICAgICAgICAgICAgICsxNiA8ICA0PiAg
ICAgICAgIGludCBtX3VzZXJTdGFydDsKKyAgICAgICAgICAgICArMjAgPCAgND4gICAgICAgICBp
bnQgbV91c2VyRW5kOworICAgICAgICAgICAgICsyNCA8ICA0PiAgICAgICAgIGludCBtX3Bhc3N3
b3JkRW5kOworICAgICAgICAgICAgICsyOCA8ICA0PiAgICAgICAgIGludCBtX2hvc3RFbmQ7Cisg
ICAgICAgICAgICAgKzMyIDwgIDQ+ICAgICAgICAgaW50IG1fcG9ydEVuZDsKKyAgICAgICAgICAg
ICArMzYgPCAgND4gICAgICAgICBpbnQgbV9wYXRoQWZ0ZXJMYXN0U2xhc2g7CisgICAgICAgICAg
ICAgKzQwIDwgIDQ+ICAgICAgICAgaW50IG1fcGF0aEVuZDsKKyAgICAgICAgICAgICArNDQgPCAg
ND4gICAgICAgICBpbnQgbV9xdWVyeUVuZDsKKyAgICAgICAgICAgICArNDggPCAgND4gICAgICAg
ICBpbnQgbV9mcmFnbWVudEVuZDsKKyAgICAgICAgICAgICArNTIgPCAgND4gICAgICAgICA8UEFE
RElORz4KKyAgICAgICAgICAgICArNTIgPCAgND4gICAgIDxQQURESU5HPgorICAgICAgICAgICAg
ICs1NiA8ICA4PiAgICAgV1RGOjpMaXN0SGFzaFNldE5vZGU8V2ViQ29yZTo6VVJMPiAqIG1fcHJl
djsKKyAgICAgICAgICAgICArNjQgPCAgOD4gICAgIFdURjo6TGlzdEhhc2hTZXROb2RlPFdlYkNv
cmU6OlVSTD4gKiBtX25leHQ7CisgICAgICAgICAgICBUb3RhbCBieXRlIHNpemU6IDcyCisgICAg
ICAgICAgICBUb3RhbCBwYWQgYnl0ZXM6IDExCisgICAgICAgICAgICBQYWRkaW5nIHBlcmNlbnRh
Z2U6IDE1LjI4ICUKKworICAgICAgICAqIFNjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQ6IEFkZGVk
LgorICAgICAgICAod2Via2l0X2J1aWxkX2Rpcik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKToK
KyAgICAgICAgKGltcG9ydF9sbGRiKToKKyAgICAgICAgKGZpbmRfYnVpbGRfZGlyZWN0b3J5KToK
KyAgICAgICAgKHZlcmlmeV90eXBlKToKKyAgICAgICAgKHZlcmlmeV90eXBlX3JlY3Vyc2l2ZSk6
CisgICAgICAgIChkdW1wX2NsYXNzKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAobWFpbi5v
cik6CisKIDIwMTUtMDgtMTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5v
bi5mcj4KIAogICAgICAgICBDb21waWxlIHdhcm5pbmcgKC1Xc2lnbi1jb21wYXJlKSBvbiAzMi1i
aXRzIGF0IFdlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQgYi9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5
b3V0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkxNGFkYjAwYzdjMWVlYjA2MzY4NDRiZjA3NDgxOWQ3ZTZmOGE0MDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CkBAIC0w
LDAgKzEsMTY5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIyBDb3B5cmlnaHQgKEMpIDIw
MTEtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgc3lzCitpbXBvcnQgZ2V0b3B0CitpbXBv
cnQgYXJncGFyc2UKK2ltcG9ydCBvcworaW1wb3J0IHN1YnByb2Nlc3M7CisKKworZnJhbWV3b3Jr
ID0gIldlYkNvcmUiCitidWlsZF9kaXJlY3RvcnkgPSAiIgorY29uZmlnID0gIlJlbGVhc2UiCisK
K2RlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CisgICAgc2NyaXB0cGF0aCA9IG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVj
a19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAid2Via2l0LWJ1aWxkLWRpcmVjdG9y
eSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQorCitkZWYgZGV2ZWxvcGVyX2RpcigpOgorICAg
IHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhjb2RlLXNlbGVjdCIsICItLXByaW50
LXBhdGgiXSkKKworZGVmIGltcG9ydF9sbGRiKCk6CisgICAgeGNvZGVfY29udGVudHNfcGF0aCA9
IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXTsKKyAgICBsbGRiX2ZyYW1ld29ya19w
YXRoID0gb3MucGF0aC5qb2luKHhjb2RlX2NvbnRlbnRzX3BhdGgsICJTaGFyZWRGcmFtZXdvcmtz
IiwgIkxMREIuZnJhbWV3b3JrIiwgIlJlc291cmNlcyIsICJQeXRob24iKTsKKyAgICBzeXMucGF0
aC5hcHBlbmQobGxkYl9mcmFtZXdvcmtfcGF0aCkKKyAgICBpbXBvcnQgbGxkYgorCitkZWYgZmlu
ZF9idWlsZF9kaXJlY3RvcnkoKToKKyAgICByZXR1cm4KKworCitkZWYgdmVyaWZ5X3R5cGUodGFy
Z2V0LCB0eXBlKToKKyAgICB0eXBlbmFtZSA9IHR5cGUuR2V0TmFtZSgpCisgICAgKGVuZF9vZmZz
ZXQsIHBhZGRpbmcpID0gdmVyaWZ5X3R5cGVfcmVjdXJzaXZlKHRhcmdldCwgdHlwZSwgTm9uZSwg
MCwgMCwgMCkKKyAgICBieXRlX3NpemUgPSB0eXBlLkdldEJ5dGVTaXplKCkKKyAgICBwcmludCAn
VG90YWwgYnl0ZSBzaXplOiAldScgJSAoYnl0ZV9zaXplKQorICAgIHByaW50ICdUb3RhbCBwYWQg
Ynl0ZXM6ICV1JyAlIChwYWRkaW5nKQorICAgIGlmIHBhZGRpbmcgPiAwOgorICAgICAgICBwcmlu
dCAnUGFkZGluZyBwZXJjZW50YWdlOiAlMi4yZiAlJScgJSAoKGZsb2F0KHBhZGRpbmcpIC8gZmxv
YXQoYnl0ZV9zaXplKSkgKiAxMDAuMCkKKyAgICBwcmludAorCitkZWYgdmVyaWZ5X3R5cGVfcmVj
dXJzaXZlKHRhcmdldCwgdHlwZSwgbWVtYmVyX25hbWUsIGRlcHRoLCBiYXNlX29mZnNldCwgcGFk
ZGluZyk6CisgICAgcHJldl9lbmRfb2Zmc2V0ID0gYmFzZV9vZmZzZXQKKyAgICB0eXBlbmFtZSA9
IHR5cGUuR2V0TmFtZSgpCisgICAgYnl0ZV9zaXplID0gdHlwZS5HZXRCeXRlU2l6ZSgpCisgICAg
aWYgbWVtYmVyX25hbWUgYW5kIG1lbWJlcl9uYW1lICE9IHR5cGVuYW1lOgorICAgICAgICBwcmlu
dCAnJSs0dSA8JTN1PiAlcyVzICVzOycgJSAoYmFzZV9vZmZzZXQsIGJ5dGVfc2l6ZSwgJyAgICAn
ICogZGVwdGgsIHR5cGVuYW1lLCBtZW1iZXJfbmFtZSkKKyAgICBlbHNlOgorICAgICAgICBwcmlu
dCAnJSs0dSB7JTN1fSAlcyVzJyAlIChiYXNlX29mZnNldCwgYnl0ZV9zaXplLCAnICAgICcgKiBk
ZXB0aCwgdHlwZW5hbWUpCisKKyAgICBtZW1iZXJzID0gdHlwZS5tZW1iZXJzCisgICAgaWYgbWVt
YmVyczoKKyAgICAgICAgZm9yIG1lbWJlcl9pZHgsIG1lbWJlciBpbiBlbnVtZXJhdGUobWVtYmVy
cyk6CisgICAgICAgICAgICBtZW1iZXJfdHlwZSA9IG1lbWJlci5HZXRUeXBlKCkKKyAgICAgICAg
ICAgIG1lbWJlcl9jYW5vbmljYWxfdHlwZSA9IG1lbWJlcl90eXBlLkdldENhbm9uaWNhbFR5cGUo
KQorICAgICAgICAgICAgbWVtYmVyX3R5cGVfY2xhc3MgPSBtZW1iZXJfY2Fub25pY2FsX3R5cGUu
R2V0VHlwZUNsYXNzKCkKKyAgICAgICAgICAgIG1lbWJlcl9uYW1lID0gbWVtYmVyLkdldE5hbWUo
KQorICAgICAgICAgICAgbWVtYmVyX29mZnNldCA9IG1lbWJlci5HZXRPZmZzZXRJbkJ5dGVzKCkK
KyAgICAgICAgICAgIG1lbWJlcl90b3RhbF9vZmZzZXQgPSBtZW1iZXJfb2Zmc2V0ICsgYmFzZV9v
ZmZzZXQKKyAgICAgICAgICAgIG1lbWJlcl9ieXRlX3NpemUgPSBtZW1iZXJfdHlwZS5HZXRCeXRl
U2l6ZSgpCisgICAgICAgICAgICBtZW1iZXJfaXNfY2xhc3Nfb3Jfc3RydWN0ID0gRmFsc2UKKyAg
ICAgICAgICAgIGlmIG1lbWJlcl90eXBlX2NsYXNzID09IGxsZGIuZVR5cGVDbGFzc1N0cnVjdCBv
ciBtZW1iZXJfdHlwZV9jbGFzcyA9PSBsbGRiLmVUeXBlQ2xhc3NDbGFzczoKKyAgICAgICAgICAg
ICAgICBtZW1iZXJfaXNfY2xhc3Nfb3Jfc3RydWN0ID0gVHJ1ZQorICAgICAgICAgICAgaWYgbWVt
YmVyX2lkeCA9PSAwIGFuZCBtZW1iZXJfb2Zmc2V0ID09IHRhcmdldC5HZXRBZGRyZXNzQnl0ZVNp
emUoKSBhbmQgdHlwZS5Jc1BvbHltb3JwaGljQ2xhc3MoKToKKyAgICAgICAgICAgICAgICBwdHJf
c2l6ZSA9IHRhcmdldC5HZXRBZGRyZXNzQnl0ZVNpemUoKQorICAgICAgICAgICAgICAgIHByaW50
ICclKzR1IDwlM3U+ICVzX192dGJsX3B0cl90eXBlICogX3ZwdHI7JyAlIChwcmV2X2VuZF9vZmZz
ZXQsIHB0cl9zaXplLCAnICAgICcgKiAoZGVwdGggKyAxKSkKKyAgICAgICAgICAgICAgICBwcmV2
X2VuZF9vZmZzZXQgPSBwdHJfc2l6ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBpZiBwcmV2X2VuZF9vZmZzZXQgPCBtZW1iZXJfdG90YWxfb2Zmc2V0OgorICAgICAgICAgICAg
ICAgICAgICBtZW1iZXJfcGFkZGluZyA9IG1lbWJlcl90b3RhbF9vZmZzZXQgLSBwcmV2X2VuZF9v
ZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA9IHBhZGRpbmcgKyBtZW1iZXJfcGFk
ZGluZworICAgICAgICAgICAgICAgICAgICBwcmludCAnJSs0dSA8JTN1PiAlczxQQURESU5HPicg
JSAocHJldl9lbmRfb2Zmc2V0LCBtZW1iZXJfcGFkZGluZywgJyAgICAnICogKGRlcHRoICsgMSkp
CisKKyAgICAgICAgICAgIGlmIG1lbWJlcl9pc19jbGFzc19vcl9zdHJ1Y3Q6CisgICAgICAgICAg
ICAgICAgKHByZXZfZW5kX29mZnNldCwgcGFkZGluZykgPSB2ZXJpZnlfdHlwZV9yZWN1cnNpdmUo
dGFyZ2V0LCBtZW1iZXJfY2Fub25pY2FsX3R5cGUsIG1lbWJlcl9uYW1lLCBkZXB0aCArIDEsIG1l
bWJlcl90b3RhbF9vZmZzZXQsIHBhZGRpbmcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIHByZXZfZW5kX29mZnNldCA9IG1lbWJlcl90b3RhbF9vZmZzZXQgKyBtZW1iZXJfYnl0
ZV9zaXplCisgICAgICAgICAgICAgICAgbWVtYmVyX3R5cGVuYW1lID0gbWVtYmVyX3R5cGUuR2V0
TmFtZSgpCisgICAgICAgICAgICAgICAgaWYgbWVtYmVyLklzQml0ZmllbGQoKToKKyAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgJyUrNHUgPCUzdT4gJXMlczoldSAlczsnICUgKG1lbWJlcl90b3Rh
bF9vZmZzZXQsIG1lbWJlcl9ieXRlX3NpemUsICcgICAgJyAqIChkZXB0aCArIDEpLCBtZW1iZXJf
dHlwZW5hbWUsIG1lbWJlci5HZXRCaXRmaWVsZFNpemVJbkJpdHMoKSwgbWVtYmVyX25hbWUpCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyUrNHUgPCUz
dT4gJXMlcyAlczsnICUgKG1lbWJlcl90b3RhbF9vZmZzZXQsIG1lbWJlcl9ieXRlX3NpemUsICcg
ICAgJyAqIChkZXB0aCArIDEpLCBtZW1iZXJfdHlwZW5hbWUsIG1lbWJlcl9uYW1lKQorCisgICAg
ICAgIGlmIHByZXZfZW5kX29mZnNldCA8IGJ5dGVfc2l6ZToKKyAgICAgICAgICAgIGxhc3RfbWVt
YmVyX3BhZGRpbmcgPSBieXRlX3NpemUgLSBwcmV2X2VuZF9vZmZzZXQKKyAgICAgICAgICAgIHBy
aW50ICclKzR1IDwlM3U+ICVzPFBBRERJTkc+JyAlIChwcmV2X2VuZF9vZmZzZXQsIGxhc3RfbWVt
YmVyX3BhZGRpbmcsICcgICAgJyAqIChkZXB0aCArIDEpKQorICAgICAgICAgICAgcGFkZGluZyAr
PSBsYXN0X21lbWJlcl9wYWRkaW5nCisgICAgZWxzZToKKyAgICAgICAgaWYgdHlwZS5Jc1BvbHlt
b3JwaGljQ2xhc3MoKToKKyAgICAgICAgICAgIHB0cl9zaXplID0gdGFyZ2V0LkdldEFkZHJlc3NC
eXRlU2l6ZSgpCisgICAgICAgICAgICBwcmludCAnJSs0dSA8JTN1PiAlc19fdnRibF9wdHJfdHlw
ZSAqIF92cHRyOycgJSAocHJldl9lbmRfb2Zmc2V0LCBwdHJfc2l6ZSwgJyAgICAnICogKGRlcHRo
ICsgMSkpCisgICAgICAgICAgICBwcmV2X2VuZF9vZmZzZXQgPSBwdHJfc2l6ZQorICAgICAgICBw
cmV2X2VuZF9vZmZzZXQgPSBiYXNlX29mZnNldCArIGJ5dGVfc2l6ZQorCisgICAgcmV0dXJuIChw
cmV2X2VuZF9vZmZzZXQsIHBhZGRpbmcpCisKK2RlZiBkdW1wX2NsYXNzKGZyYW1ld29yaywgY2xh
c3NuYW1lKToKKyAgICBkZWJ1Z2dlciA9IGxsZGIuU0JEZWJ1Z2dlci5DcmVhdGUoKQorICAgIGRl
YnVnZ2VyLlNldEFzeW5jIChGYWxzZSkKKyAgICB0YXJnZXQgPSBkZWJ1Z2dlci5DcmVhdGVUYXJn
ZXRXaXRoRmlsZUFuZEFyY2goZnJhbWV3b3JrLCBsbGRiLkxMREJfQVJDSF9ERUZBVUxUKQorICAg
IGlmIG5vdCB0YXJnZXQ6CisgICAgICAgIHByaW50ICJGYWlsZWQgdG8gbWFrZSB0YXJnZXQgZm9y
ICIgKyBmcmFtZXdvcms7CisgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICBtb2R1bGUgPSB0YXJn
ZXQuR2V0TW9kdWxlQXRJbmRleCgwKQorICAgIGlmIG5vdCBtb2R1bGU6CisgICAgICAgIHByaW50
ICJGYWlsZWQgdG8gZ2V0IGZpcnN0IG1vZHVsZSBpbiAiICsgZnJhbWV3b3JrOworICAgICAgICBz
eXMuZXhpdCgxKQorCisgICAgdHlwZXMgPSBtb2R1bGUuRmluZFR5cGVzKGNsYXNzbmFtZSkKKyAg
ICBpZiB0eXBlcy5HZXRTaXplKCk6CisgICAgICAgIHByaW50ICdGb3VuZCAldSB0eXBlcyBtYXRj
aGluZyAiJXMiIGluICIlcyInICUgKGxlbih0eXBlcyksIGNsYXNzbmFtZSwgbW9kdWxlLmZpbGUp
CisgICAgICAgIGZvciB0eXBlIGluIHR5cGVzOgorICAgICAgICAgICAgdmVyaWZ5X3R5cGUodGFy
Z2V0LCB0eXBlKQorICAgIGVsc2U6CisgICAgICAgIHByaW50ICdlcnJvcjogbm8gdHlwZSBtYXRj
aGVzICIlcyIgaW4gIiVzIicgJSAoY2xhc3NuYW1lLCBtb2R1bGUuZmlsZSkKKworICAgIGxsZGIu
U0JEZWJ1Z2dlci5EZXN0cm95KGRlYnVnZ2VyKQorCitkZWYgbWFpbigpOgorICAgIHBhcnNlciA9
IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdEdW1wcyB0aGUgaW4tbWVtb3J5
IGxheW91dCBvZiB0aGUgZ2l2ZW4gY2xhc3Mgb3IgY2xhc3Nlcywgc2hvd2luZyBwYWRkaW5nIGhv
bGVzLicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnZnJhbWV3b3JrJywgbWV0YXZhcj0nZnJh
bWV3b3JrJywKKyAgICAgICAgaGVscD0nbmFtZSBvZiB0aGUgZnJhbWV3b3JrIGNvbnRhaW5pbmcg
dGhlIGNsYXNzIChlLmcuICJXZWJDb3JlIiknKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2Ns
YXNzbmFtZScsIG1ldGF2YXI9J2NsYXNzbmFtZScsCisgICAgICAgIGhlbHA9J25hbWUgb2YgdGhl
IGNsYXNzIG9yIHN0cnVjdCB0byBkdW1wJykKKworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1i
JywgJy0tYnVpbGQtZGlyZWN0b3J5JywgZGVzdD0nYnVpbGRfZGlyZWN0b3J5JywgYWN0aW9uPSdz
dG9yZScsCisgICAgICAgIGhlbHA9J1BhdGggdG8gdGhlIGRpcmVjdG9yeSB1bmRlciB3aGljaCBi
dWlsZCBmaWxlcyBhcmUga2VwdCAoc2hvdWxkIG5vdCBpbmNsdWRlIGNvbmZpZ3VyYXRpb24pJykK
KworICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1jJywgJy0tY29uZmlndXJhdGlvbicsIGRlc3Q9
J2NvbmZpZycsIGFjdGlvbj0nc3RvcmUnLAorICAgICAgICBoZWxwPSdDb25maWd1cmF0aW9uIChE
ZWJ1ZyBvciBSZWxlYXNlKScpCisKKyAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAg
IGJ1aWxkX2RpciA9IHdlYmtpdF9idWlsZF9kaXIoKQorCisgICAgaWYgYXJncy5jb25maWcgPT0g
Tm9uZToKKyAgICAgICAgYXJncy5jb25maWcgPSAiUmVsZWFzZSIKKworICAgIGlmIG5vdCBhcmdz
LmJ1aWxkX2RpcmVjdG9yeSA9PSBOb25lOgorICAgICAgICBidWlsZF9kaXIgPSBhcmdzLmJ1aWxk
X2RpcmVjdG9yeQorCisgICAgdGFyZ2V0X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCBh
cmdzLmNvbmZpZywgYXJncy5mcmFtZXdvcmsgKyAiLmZyYW1ld29yayIsIGFyZ3MuZnJhbWV3b3Jr
KTsKKyAgICBpbXBvcnRfbGxkYigpCisgICAgZHVtcF9jbGFzcyh0YXJnZXRfcGF0aCwgYXJncy5j
bGFzc25hbWUpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>