<?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>34869</bug_id>
          
          <creation_ts>2010-02-11 18:55:00 -0800</creation_ts>
          <short_desc>webkitdirs.pm has a crazy amount of duplicated feature detection code</short_desc>
          <delta_ts>2010-02-11 19:14:06 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>189871</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-11 18:55:00 -0800</bug_when>
    <thetext>webkitdirs.pm has a crazy amount of duplicated feature detection code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189873</commentid>
    <comment_count>1</comment_count>
      <attachid>48606</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-11 18:58:14 -0800</bug_when>
    <thetext>Created attachment 48606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189876</commentid>
    <comment_count>2</comment_count>
      <attachid>48606</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-02-11 19:01:22 -0800</bug_when>
    <thetext>Comment on attachment 48606
Patch

I don&apos;t really read perl that well, but this looks like an epic win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189879</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-11 19:05:12 -0800</bug_when>
    <thetext>Committed r54697: &lt;http://trac.webkit.org/changeset/54697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>189887</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-02-11 19:14:06 -0800</bug_when>
    <thetext>Committed r54698: &lt;http://trac.webkit.org/changeset/54698&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>48606</attachid>
            <date>2010-02-11 18:58:14 -0800</date>
            <delta_ts>2010-02-11 19:01:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-34869-20100211185812.patch</filename>
            <type>text/plain</type>
            <size>19691</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjOGQ4OWI2Li5lZTE2NTU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDIt
MTEgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdlYmtpdGRpcnMucG0gaGFzIGEgY3JhenkgYW1v
dW50IG9mIGR1cGxpY2F0ZWQgZmVhdHVyZSBkZXRlY3Rpb24gY29kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ4NjkKKworICAgICAgICBJbiBlZGl0
aW5nIHJ1bi13ZWJraXQtdGVzdHMgSSBmb3VuZCB0aGVzZSB0ZXN0cyB3ZXJlCisgICAgICAgIHNr
aXBwZWQgb24gYWxsIHBsYXRmb3Jtcy4gIFJlbW92aW5nIHRoZW0gc2luY2Ugbm8gb25lIGlzIHJ1
bm5pbmcgdGhlbS4KKyAgICAgICAgSWYgd2UgZXZlciBuZWVkIHRoZW0gd2UgY2FuIGRpZyB0aGVt
IG91dCBvZiBTVk4gaGlzdG9yeS4KKworICAgICAgICAqIGZhc3Qvd2Nzcy9tYXJxdWVlLWRpci54
aHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBmYXN0L3djc3MvbWFycXVlZS1sb29wLnhodG1sOiBS
ZW1vdmVkLgorICAgICAgICAqIGZhc3Qvd2Nzcy9tYXJxdWVlLXNwZWVkLnhodG1sOiBSZW1vdmVk
LgorICAgICAgICAqIGZhc3Qvd2Nzcy9tYXJxdWVlLXN0eWxlLnhodG1sOiBSZW1vdmVkLgorCiAy
MDEwLTAyLTExICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd2Nz
cy9tYXJxdWVlLWRpci54aHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvd2Nzcy9tYXJxdWVlLWRpci54
aHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJjNjA2MC4uMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L3djc3MvbWFycXVlZS1kaXIueGh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxNSArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLTwhRE9DVFlQRSBodG1sIFBV
QkxJQyAiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4xLy9FTiIgImh0dHA6Ly93d3cu
d2FwZm9ydW0ub3JnL0RURC94aHRtbC1tb2JpbGUxMS5kdGQiPgotCi08aHRtbCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Ci08aGVhZD4KLTx0aXRsZT5XQ1NTIG1hcnF1ZWUg
dGVzdCAtIGRpcjwvdGl0bGU+Ci08L2hlYWQ+Ci0KLTxib2R5PgotLXdhcC1tYXJxZWUtZGlyOiBs
dHIKLTxoMSBzdHlsZT0iZGlzcGxheTogLXdhcC1tYXJxdWVlOyAtd2FwLW1hcnF1ZWUtZGlyOiBs
dHI7IC13YXAtbWFycXVlZS1zcGVlZDogbm9ybWFsOyIgPiBIMSB3aXRoIG1hcnF1ZWUsIGx0cjwv
aDE+ICA8aHIvPgotLXdhcC1tYXJxZWUtZGlyOiBydGwKLTxoMSBzdHlsZT0iZGlzcGxheTogLXdh
cC1tYXJxdWVlOyAtd2FwLW1hcnF1ZWUtZGlyOiBydGw7IC13YXAtbWFycXVlZS1zcGVlZDogbm9y
bWFsOyIgPiBIMSB3aXRoIG1hcnF1ZWUsIHJ0bDwvaDE+ICA8aHIvPgotPC9ib2R5PgotPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93Y3NzL21hcnF1ZWUtbG9vcC54aHRtbCBi
L0xheW91dFRlc3RzL2Zhc3Qvd2Nzcy9tYXJxdWVlLWxvb3AueGh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAyYWIyZjUuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93
Y3NzL21hcnF1ZWUtbG9vcC54aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLTw/
eG1sIHZlcnNpb249IjEuMCI/PgotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XQVBGT1JVTS8v
RFREIFhIVE1MIE1vYmlsZSAxLjEvL0VOIiAiaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvRFREL3ho
dG1sLW1vYmlsZTExLmR0ZCI+Ci0KLTxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIj4KLTxoZWFkPgotPHRpdGxlPldDU1MgbWFycXVlZSB0ZXN0IC0gbG9vcDwvdGl0bGU+
Ci08L2hlYWQ+Ci0KLTxib2R5PgotRG9uJ3Qgc3BlY2lmeSAtd2FwLW1hcnF1ZWUtbG9vcAotPGgx
IHN0eWxlPSJkaXNwbGF5OiAtd2FwLW1hcnF1ZWU7IiA+IFRlc3QgSDEgZWxlbWVudCB3aXRoIG1h
cnF1ZWUsIE5vIC13YXAtbWFycXVlZS1sb29wPC9oMT48aHIvPgotLXdhcC1tYXJxdWVlLWxvb3A6
IDAKLTxoMSBzdHlsZT0iZGlzcGxheTogLXdhcC1tYXJxdWVlOyAtd2FwLW1hcnF1ZWUtbG9vcDog
MCIgPiBUZXN0IEgxIGVsZW1lbnQgd2l0aCBtYXJxdWVlLCAtd2FwLW1hcnF1ZWUtbG9vcDogMDwv
aDE+PGhyLz4KLS13YXAtbWFycXVlZS1sb29wOiAxCi08aDEgc3R5bGU9ImRpc3BsYXk6IC13YXAt
bWFycXVlZTsgLXdhcC1tYXJxdWVlLWxvb3A6IDEiID4gVGVzdCBIMSBlbGVtZW50IHdpdGggbWFy
cXVlZSwgLXdhcC1tYXJxdWVlLWxvb3A6IDE8L2gxPjxoci8+Ci0td2FwLW1hcnF1ZWUtbG9vcDog
MgotPGgxIHN0eWxlPSJkaXNwbGF5OiAtd2FwLW1hcnF1ZWU7IC13YXAtbWFycXVlZS1sb29wOiAy
IiA+IFRlc3QgSDEgZWxlbWVudCB3aXRoIG1hcnF1ZWUsIC13YXAtbWFycXVlZS1sb29wOiAyPC9o
MT48aHIvPgotLXdhcC1tYXJxdWVlLWxvb3A6IGluZmluaXRlCi08aDEgc3R5bGU9ImRpc3BsYXk6
IC13YXAtbWFycXVlZTsgLXdhcC1tYXJxdWVlLWxvb3A6IGluZmluaXRlIiA+IFRlc3QgSDEgZWxl
bWVudCB3aXRoIG1hcnF1ZWUsIC13YXAtbWFycXVlZS1sb29wOiBpbmZpbml0ZTwvaDE+PGhyLz4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd2Nzcy9tYXJx
dWVlLXNwZWVkLnhodG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93Y3NzL21hcnF1ZWUtc3BlZWQueGh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NDAwZGEuLjAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC93Y3NzL21hcnF1ZWUtc3BlZWQueGh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSwxNyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4KLTwhRE9DVFlQRSBodG1sIFBV
QkxJQyAiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4xLy9FTiIgImh0dHA6Ly93d3cu
d2FwZm9ydW0ub3JnL0RURC94aHRtbC1tb2JpbGUxMS5kdGQiPgotCi08aHRtbCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Ci08aGVhZD4KLTx0aXRsZT5XQ1NTIG1hcnF1ZWUg
dGVzdCAtIHNwZWVkPC90aXRsZT4KLTwvaGVhZD4KLQotPGJvZHk+Ci0td2FwLW1hcnF1ZWUtc3Bl
ZWQ6IHNsb3cKLTxoMSBzdHlsZT0iZGlzcGxheTogLXdhcC1tYXJxdWVlOyAtd2FwLW1hcnF1ZWUt
c3BlZWQ6IHNsb3ciID4gVGVzdCBIMSBlbGVtZW50IHdpdGggbWFycXVlZSwgc2xvdyBzcGVlZDwv
aDE+ICA8aHIvPgotLXdhcC1tYXJxdWVlLXNwZWVkOiBub3JtYWwgCi08aDEgc3R5bGU9ImRpc3Bs
YXk6IC13YXAtbWFycXVlZTsgLXdhcC1tYXJxdWVlLXNwZWVkOiBub3JtYWwiID4gVGVzdCBIMSBl
bGVtZW50IHdpdGggbWFycXVlZSwgbm9ybWFsIHNwZWVkPC9oMT4gIDxoci8+Ci0td2FwLW1hcnF1
ZWUtc3BlZWQ6IGZhc3QgCi08aDEgc3R5bGU9ImRpc3BsYXk6IC13YXAtbWFycXVlZTsgLXdhcC1t
YXJxdWVlLXNwZWVkOiBmYXN0IiA+IFRlc3QgSDEgZWxlbWVudCB3aXRoIG1hcnF1ZWUsIGZhc3Qg
c3BlZWQ8L2gxPiAgPGhyLz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3Qvd2Nzcy9tYXJxdWVlLXN0eWxlLnhodG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93Y3Nz
L21hcnF1ZWUtc3R5bGUueGh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMWZl
MjguLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC93Y3NzL21hcnF1ZWUtc3R5bGUueGh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiPz4K
LTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4x
Ly9FTiIgImh0dHA6Ly93d3cud2FwZm9ydW0ub3JnL0RURC94aHRtbC1tb2JpbGUxMS5kdGQiPgot
Ci08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Ci08aGVhZD4KLTx0
aXRsZT5XQ1NTIG1hcnF1ZWUgdGVzdCAtIHN0eWxlPC90aXRsZT4KLTwvaGVhZD4KLQotPGJvZHk+
Ci0td2FwLW1hcnF1ZWUtc3R5bGU6IHNsaWRlCi08aDEgc3R5bGU9ImRpc3BsYXk6IC13YXAtbWFy
cXVlZTsgLXdhcC1tYXJxdWVlLXN0eWxlOiBzbGlkZTsiID4gVGVzdCBIMSBlbGVtZW50IHdpdGgg
bWFycXVlZSwgc2xpZGUgc3R5bGU8L2gxPgotPGgxIHN0eWxlPSJkaXNwbGF5OiAtd2FwLW1hcnF1
ZWU7IC13YXAtbWFycXVlZS1zdHlsZTogc2xpZGU7IiA+IFRlc3QgSDEgZWxlbWVudCB3aXRoIG1h
cnF1ZWUsIHNsaWRlIHN0eWxlLCBsb25nIHRleHQgbG9uZyB0ZXh0IGxvbmcgdGV4dDwvaDE+PGhy
Lz4KLQotLXdhcC1tYXJxdWVlLXN0eWxlOiBzY3JvbGwKLTxoMSBzdHlsZT0iZGlzcGxheTogLXdh
cC1tYXJxdWVlOyAtd2FwLW1hcnF1ZWUtc3R5bGU6IHNjcm9sbDsiID4gVGVzdCBIMSBlbGVtZW50
IHdpdGggbWFycXVlZSwgc2Nyb2xsIHN0eWxlPC9oMT4KLTxoMSBzdHlsZT0iZGlzcGxheTogLXdh
cC1tYXJxdWVlOyAtd2FwLW1hcnF1ZWUtc3R5bGU6IHNjcm9sbDsiID4gVGVzdCBIMSBlbGVtZW50
IHdpdGggbWFycXVlZSwgc2Nyb2xsIHN0eWxlLCBsb25nIHRleHQgbG9uZyB0ZXh0IGxvbmcgdGV4
dDwvaDE+PGhyLz4KLQotLXdhcC1tYXJxdWVlLXN0eWxlOiBhbHRlcm5hdGU7IC13YXAtbWFycXVl
ZS1sb29wOiAzCi08aDEgc3R5bGU9ImRpc3BsYXk6IC13YXAtbWFycXVlZTsgLXdhcC1tYXJxdWVl
LXN0eWxlOiBhbHRlcm5hdGU7IC13YXAtbWFycXVlZS1sb29wOiAzIiA+IFRlc3QgSDEgZWxlbWVu
dCB3aXRoIG1hcnF1ZWUsIGFsdGVybmF0ZSBzdHlsZTwvaDE+Ci08aDEgc3R5bGU9ImRpc3BsYXk6
IC13YXAtbWFycXVlZTsgLXdhcC1tYXJxdWVlLXN0eWxlOiBhbHRlcm5hdGU7IC13YXAtbWFycXVl
ZS1sb29wOiAzIiA+IFRlc3QgSDEgZWxlbWVudCB3aXRoIG1hcnF1ZWUsIGFsdGVybmF0ZSBzdHls
ZSwgbG9uZyB0ZXh0IGxvbmcgdGV4dCBsb25nIHRleHQ8L2gxPjxoci8+Ci08L2JvZHk+Ci08L2h0
bWw+CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKaW5kZXggOGRlZWNiMy4uYTg5YzEyZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEw
LTAyLTExICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB3ZWJraXRkaXJzLnBtIGhhcyBhIGNyYXp5
IGFtb3VudCBvZiBkdXBsaWNhdGVkIGZlYXR1cmUgZGV0ZWN0aW9uIGNvZGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0ODY5CisKKyAgICAgICAgKiBT
Y3JpcHRzL2J1aWxkLXdlYmtpdDogVXNlIHRoZSBuZXcgaG90bmVzcy4KKyAgICAgICAgKiBTY3Jp
cHRzL3J1bi13ZWJraXQtdGVzdHM6IGRpdHRvCisgICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJz
LnBtOiBSZW1vdmUgYSBidW5jaCBvZiBiYWQgZHVwbGljYXRlIGNvZGUuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRwZXJsL2ZlYXR1cmVzLnBtOiBBZGRlZC4KKyAgICAgICAgIC0gU2ltcGxpZmll
ZCB0aGUgMTAgbWV0aG9kcyBpbiB3ZWJraXRkaXJzLnBtIGludG8gMiBleHBvcnRlZCBtZXRob2Rz
IGluIHRoaXMgbmV3IGZpbGUuCisKIDIwMTAtMDItMTEgIERhbmllbCBCYXRlcyAgPGRiYXRlc0By
aW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0CmluZGV4IDJhZGNjNDYuLjI5NDE2NjUgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0CkBAIC0zNiw2ICszNiw3IEBAIHVzZSBGaW5kQmluOwogdXNlIEdldG9wdDo6TG9uZyBxdyg6
Y29uZmlnIHBhc3NfdGhyb3VnaCk7CiB1c2UgbGliICRGaW5kQmluOjpCaW47CiB1c2Ugd2Via2l0
ZGlyczsKK3VzZSB3ZWJraXRwZXJsOjpmZWF0dXJlczsKIHVzZSBQT1NJWDsKIAogc3ViIGZvcm1h
dEJ1aWxkVGltZSgkKTsKQEAgLTMyMiw3ICszMjMsNyBAQCBpZiAoaXNHdGsoKSkgewogfQogCiAj
IEZvcmNlIHJlLWxpbmsgb2YgZXhpc3RpbmcgbGlicmFyaWVzIGlmIGRpZmZlcmVudCB0aGFuIGV4
cGVjdGVkCi1yZW1vdmVMaWJyYXJ5RGVwZW5kaW5nT25TVkcoIldlYkNvcmUiLCAkc3ZnU3VwcG9y
dCk7CityZW1vdmVMaWJyYXJ5RGVwZW5kaW5nT25GZWF0dXJlKCJTVkciLCAiV2ViQ29yZSIsICRz
dmdTdXBwb3J0KTsKIAogaWYgKGlzSW5zcGVjdG9yRnJvbnRlbmQoKSkgewogICAgIGV4aXQgZXhp
dFN0YXR1cyhjb3B5SW5zcGVjdG9yRnJvbnRlbmRGaWxlcygpKTsKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVu
LXdlYmtpdC10ZXN0cwppbmRleCA1NjAxMWU2Li44OWQzZWNiIDEwMDc1NQotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9y
dW4td2Via2l0LXRlc3RzCkBAIC02Nyw2ICs2Nyw3IEBAIHVzZSBUaW1lOjpIaVJlcyBxdyh0aW1l
IHVzbGVlcCk7CiB1c2UgTGlzdDo6VXRpbCAnc2h1ZmZsZSc7CiAKIHVzZSBsaWIgJEZpbmRCaW46
OkJpbjsKK3VzZSB3ZWJraXRwZXJsOjpmZWF0dXJlczsKIHVzZSB3ZWJraXRwZXJsOjpodHRwZDsK
IHVzZSB3ZWJraXRkaXJzOwogdXNlIFZDU1V0aWxzOwpAQCAtNDIwLDEyICs0MjEsMTIgQEAgbXkg
JWlnbm9yZWREaXJlY3RvcmllcyA9IG1hcCB7ICRfID0+IDEgfSBxdyhwbGF0Zm9ybSk7CiBteSAl
aWdub3JlZExvY2FsRGlyZWN0b3JpZXMgPSBtYXAgeyAkXyA9PiAxIH0gcXcoLnN2biBfc3ZuIHJl
c291cmNlcyBzY3JpcHQtdGVzdHMpOwogbXkgJXN1cHBvcnRlZEZpbGVFeHRlbnNpb25zID0gbWFw
IHsgJF8gPT4gMSB9IHF3KGh0bWwgc2h0bWwgeG1sIHhodG1sIHBsIHBocCk7CiAKLWlmICghY2hl
Y2tXZWJDb3JlTWF0aE1MU3VwcG9ydCgwKSkgeyAKK2lmICghY2hlY2tXZWJDb3JlRmVhdHVyZVN1
cHBvcnQoIk1hdGhNTCIsIDApKSB7CiAgICAgJGlnbm9yZWREaXJlY3Rvcmllc3snbWF0aG1sJ30g
PSAxOwogfQogCi0jIEZJWE1FOiBXZSBzaG91bGQgZml4IHdlYmtpdGRpcnMucG06aGFzU1ZHL1dN
TFN1cHBvcnQoKSB0byBkbyB0aGUgY29ycmVjdCBmZWF0dXJlIGRldGVjdGlvbiBmb3IgQ3lnd2lu
LgotaWYgKGNoZWNrV2ViQ29yZVNWR1N1cHBvcnQoMCkpIHsgCisjIEZJWE1FOiBXZSBzaG91bGQg
Zml4IHdlYmtpdHBlcmwvZmVhdHVyZXMucG06aGFzRmVhdHVyZSgpIHRvIGRvIHRoZSBjb3JyZWN0
IGZlYXR1cmUgZGV0ZWN0aW9uIGZvciBDeWd3aW4uCitpZiAoY2hlY2tXZWJDb3JlRmVhdHVyZVN1
cHBvcnQoIlNWRyIsIDApKSB7CiAgICAgJHN1cHBvcnRlZEZpbGVFeHRlbnNpb25zeydzdmcnfSA9
IDE7CiB9IGVsc2lmIChpc0N5Z3dpbigpKSB7CiAgICAgJHN1cHBvcnRlZEZpbGVFeHRlbnNpb25z
eydzdmcnfSA9IDE7CkBAIC00NDMsMjAgKzQ0NCwyMCBAQCBpZiAoISR0ZXN0TWVkaWEpIHsKICAg
ICAkaWdub3JlZERpcmVjdG9yaWVzeydodHRwL3Rlc3RzL21lZGlhJ30gPSAxOwogfQogCi1pZiAo
IWNoZWNrV2ViQ29yZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdTdXBwb3J0KDApKSB7CitpZiAoIWNo
ZWNrV2ViQ29yZUZlYXR1cmVTdXBwb3J0KCJBY2NlbGVyYXRlZCBDb21wb3NpdGluZyIsIDApKSB7
CiAgICAgJGlnbm9yZWREaXJlY3Rvcmllc3snY29tcG9zaXRpbmcnfSA9IDE7CiB9CiAKLWlmICgh
Y2hlY2tXZWJDb3JlM0RSZW5kZXJpbmdTdXBwb3J0KDApKSB7CitpZiAoIWNoZWNrV2ViQ29yZUZl
YXR1cmVTdXBwb3J0KCIzRCBSZW5kZXJpbmciLCAwKSkgewogICAgICRpZ25vcmVkRGlyZWN0b3Jp
ZXN7J2FuaW1hdGlvbnMvM2QnfSA9IDE7CiAgICAgJGlnbm9yZWREaXJlY3Rvcmllc3sndHJhbnNm
b3Jtcy8zZCd9ID0gMTsKIH0KIAotaWYgKCFjaGVja1dlYkNvcmUzRENhbnZhc1N1cHBvcnQoMCkp
IHsKK2lmICghY2hlY2tXZWJDb3JlRmVhdHVyZVN1cHBvcnQoIjNEIENhbnZhcyIsIDApKSB7CiAg
ICAgJGlnbm9yZWREaXJlY3Rvcmllc3snZmFzdC9jYW52YXMvd2ViZ2wnfSA9IDE7CiB9CiAKLWlm
IChjaGVja1dlYkNvcmVXTUxTdXBwb3J0KDApKSB7IAoraWYgKGNoZWNrV2ViQ29yZUZlYXR1cmVT
dXBwb3J0KCJXTUwiLCAwKSkgewogICAgICRzdXBwb3J0ZWRGaWxlRXh0ZW5zaW9uc3snd21sJ30g
PSAxOwogfSBlbHNlIHsKICAgICAkaWdub3JlZERpcmVjdG9yaWVzeydodHRwL3Rlc3RzL3dtbCd9
ID0gMTsKQEAgLTQ2NCwxNCArNDY1LDEwIEBAIGlmIChjaGVja1dlYkNvcmVXTUxTdXBwb3J0KDAp
KSB7CiAgICAgJGlnbm9yZWREaXJlY3Rvcmllc3snd21sJ30gPSAxOwogfQogCi1pZiAoIWNoZWNr
V2ViQ29yZVhIVE1MTVBTdXBwb3J0KDApKSB7CitpZiAoIWNoZWNrV2ViQ29yZUZlYXR1cmVTdXBw
b3J0KCJYSFRNTE1QIiwgMCkpIHsKICAgICAkaWdub3JlZERpcmVjdG9yaWVzeydmYXN0L3hodG1s
bXAnfSA9IDE7CiB9CiAKLWlmICghY2hlY2tXZWJDb3JlV0NTU1N1cHBvcnQoMCkpIHsKLSAgICAk
aWdub3JlZERpcmVjdG9yaWVzeydmYXN0L3djc3MnfSA9IDE7Ci19Ci0KIHByb2Nlc3NJZ25vcmVU
ZXN0cygkaWdub3JlVGVzdHMsICJpZ25vcmUtdGVzdHMiKSBpZiAkaWdub3JlVGVzdHM7CiBpZiAo
ISRpZ25vcmVTa2lwcGVkKSB7CiAgICAgaWYgKCEkc2tpcHBlZE9ubHkgfHwgQEFSR1YgPT0gMCkg
ewpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCmluZGV4IDFlZTY5YTMuLmE3ODhiM2QgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KQEAgLTU3MywyMjIgKzU3MywxNyBAQCBzdWIgYnVpbHRE
eWxpYlBhdGhGb3JOYW1lCiB9CiAKICMgQ2hlY2sgdG8gc2VlIHRoYXQgYWxsIHRoZSBmcmFtZXdv
cmtzIGFyZSBidWlsdC4KLXN1YiBjaGVja0ZyYW1ld29ya3MKK3N1YiBjaGVja0ZyYW1ld29ya3Mg
IyBGSVhNRTogVGhpcyBpcyBhIHBvb3IgbmFtZSBzaW5jZSBvbmx5IHRoZSBNYWMgY2FsbHMgYnVp
bHQgV2ViQ29yZSBhIEZyYW1ld29yay4KIHsKICAgICByZXR1cm4gaWYgaXNDeWd3aW4oKTsKICAg
ICBteSBAZnJhbWV3b3JrcyA9ICgiSmF2YVNjcmlwdENvcmUiLCAiV2ViQ29yZSIpOwotICAgIHB1
c2goQGZyYW1ld29ya3MsICJXZWJLaXQiKSBpZiBpc0FwcGxlTWFjV2ViS2l0KCk7CisgICAgcHVz
aChAZnJhbWV3b3JrcywgIldlYktpdCIpIGlmIGlzQXBwbGVNYWNXZWJLaXQoKTsgIyBGSVhNRTog
VGhpcyBzZWVtcyB3cm9uZywgYWxsIHBvcnRzIHNob3VsZCBoYXZlIGEgV2ViS2l0IHRoZXNlIGRh
eXMuCiAgICAgZm9yIG15ICRmcmFtZXdvcmsgKEBmcmFtZXdvcmtzKSB7CiAgICAgICAgIG15ICRw
YXRoID0gYnVpbHREeWxpYlBhdGhGb3JOYW1lKCRmcmFtZXdvcmspOwogICAgICAgICBkaWUgIkNh
bid0IGZpbmQgYnVpbHQgZnJhbWV3b3JrIGF0IFwiJHBhdGhcIi5cbiIgdW5sZXNzIC1lICRwYXRo
OwogICAgIH0KIH0KIAotc3ViIGxpYnJhcnlDb250YWluc1N5bWJvbAotewotICAgIG15ICRwYXRo
ID0gc2hpZnQ7Ci0gICAgbXkgJHN5bWJvbCA9IHNoaWZ0OwotCi0gICAgaWYgKGlzQ3lnd2luKCkg
b3IgaXNXaW5kb3dzKCkpIHsKLSAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IHRoaXMgZm9yIFdp
bmRvd3MuCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIG15ICRmb3VuZFN5bWJvbCA9
IDA7Ci0gICAgaWYgKC1lICRwYXRoKSB7Ci0gICAgICAgIG9wZW4gTk0sICItfCIsICJubSIsICRw
YXRoIG9yIGRpZTsKLSAgICAgICAgd2hpbGUgKDxOTT4pIHsKLSAgICAgICAgICAgICRmb3VuZFN5
bWJvbCA9IDEgaWYgLyRzeW1ib2wvOwotICAgICAgICB9Ci0gICAgICAgIGNsb3NlIE5NOwotICAg
IH0KLSAgICByZXR1cm4gJGZvdW5kU3ltYm9sOwotfQotCi1zdWIgaGFzTWF0aE1MU3VwcG9ydAot
ewotICAgIG15ICRwYXRoID0gc2hpZnQ7Ci0KLSAgICByZXR1cm4gbGlicmFyeUNvbnRhaW5zU3lt
Ym9sKCRwYXRoLCAiTWF0aE1MRWxlbWVudCIpOwotfQotCi1zdWIgY2hlY2tXZWJDb3JlTWF0aE1M
U3VwcG9ydAotewotICAgIG15ICRyZXF1aXJlZCA9IHNoaWZ0OwotICAgIG15ICRmcmFtZXdvcmsg
PSAiV2ViQ29yZSI7Ci0gICAgbXkgJHBhdGggPSBidWlsdER5bGliUGF0aEZvck5hbWUoJGZyYW1l
d29yayk7Ci0gICAgbXkgJGhhc01hdGhNTCA9IGhhc01hdGhNTFN1cHBvcnQoJHBhdGgpOwotICAg
IGlmICgkcmVxdWlyZWQgJiYgISRoYXNNYXRoTUwpIHsKLSAgICAgICAgZGllICIkZnJhbWV3b3Jr
IGF0IFwiJHBhdGhcIiBkb2VzIG5vdCBpbmNsdWRlIE1hdGhNTCBTdXBwb3J0LCBwbGVhc2UgcnVu
IGJ1aWxkLXdlYmtpdCAtLW1hdGhtbFxuIjsKLSAgICB9Ci0gICAgcmV0dXJuICRoYXNNYXRoTUw7
Ci19Ci0KLXN1YiBoYXNTVkdTdXBwb3J0Ci17Ci0gICAgbXkgJHBhdGggPSBzaGlmdDsKLQotICAg
IGlmIChpc1d4KCkpIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgIyBXZSB1c2Vk
IHRvIGxvb2sgZm9yIFNWR0VsZW1lbnQgYnV0IGlzU1ZHRWxlbWVudCBpcyBhIHZhbGlkIHN5bWJv
bCBpbiAtLW5vLXN2ZyBidWlsZHMuCi0gICAgcmV0dXJuIGxpYnJhcnlDb250YWluc1N5bWJvbCgk
cGF0aCwgIlNWR0RlZnNFbGVtZW50Iik7Ci19Ci0KLXN1YiByZW1vdmVMaWJyYXJ5RGVwZW5kaW5n
T25TVkcKLXsKLSAgICBteSAkZnJhbWV3b3JrTmFtZSA9IHNoaWZ0OwotICAgIG15ICRzaG91bGRI
YXZlU1ZHID0gc2hpZnQ7Ci0KLSAgICBteSAkcGF0aCA9IGJ1aWx0RHlsaWJQYXRoRm9yTmFtZSgk
ZnJhbWV3b3JrTmFtZSk7Ci0gICAgcmV0dXJuIHVubGVzcyAteCAkcGF0aDsKLQotICAgIG15ICRo
YXNTVkcgPSBoYXNTVkdTdXBwb3J0KCRwYXRoKTsKLSAgICBzeXN0ZW0gInJtIC1mICRwYXRoIiBp
ZiAoJHNob3VsZEhhdmVTVkcgeG9yICRoYXNTVkcpOwotfQotCi1zdWIgY2hlY2tXZWJDb3JlU1ZH
U3VwcG9ydAotewotICAgIG15ICRyZXF1aXJlZCA9IHNoaWZ0OwotICAgIG15ICRmcmFtZXdvcmsg
PSAiV2ViQ29yZSI7Ci0gICAgbXkgJHBhdGggPSBidWlsdER5bGliUGF0aEZvck5hbWUoJGZyYW1l
d29yayk7Ci0gICAgbXkgJGhhc1NWRyA9IGhhc1NWR1N1cHBvcnQoJHBhdGgpOwotICAgIGlmICgk
cmVxdWlyZWQgJiYgISRoYXNTVkcpIHsKLSAgICAgICAgZGllICIkZnJhbWV3b3JrIGF0IFwiJHBh
dGhcIiBkb2VzIG5vdCBpbmNsdWRlIFNWRyBTdXBwb3J0LCBwbGVhc2UgcnVuIGJ1aWxkLXdlYmtp
dCAtLXN2Z1xuIjsKLSAgICB9Ci0gICAgcmV0dXJuICRoYXNTVkc7Ci19Ci0KLXN1YiBoYXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nU3VwcG9ydAotewotICAgICMgT24gcGxhdGZvcm1zIG90aGVyIHRo
YW4gTWFjIHRoZSBTa2lwcGVkIGZpbGVzIGFyZSB1c2VkIHRvIHNraXAgY29tcG9zaXRpbmcgdGVz
dHMKLSAgICByZXR1cm4gMSBpZiAhaXNBcHBsZU1hY1dlYktpdCgpOwotCi0gICAgbXkgJHBhdGgg
PSBzaGlmdDsKLSAgICByZXR1cm4gbGlicmFyeUNvbnRhaW5zU3ltYm9sKCRwYXRoLCAiR3JhcGhp
Y3NMYXllciIpOwotfQotCi1zdWIgY2hlY2tXZWJDb3JlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1N1
cHBvcnQKLXsKLSAgICBteSAkcmVxdWlyZWQgPSBzaGlmdDsKLSAgICBteSAkZnJhbWV3b3JrID0g
IldlYkNvcmUiOwotICAgIG15ICRwYXRoID0gYnVpbHREeWxpYlBhdGhGb3JOYW1lKCRmcmFtZXdv
cmspOwotICAgIG15ICRoYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nID0gaGFzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1N1cHBvcnQoJHBhdGgpOwotICAgIGlmICgkcmVxdWlyZWQgJiYgISRoYXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKSB7Ci0gICAgICAgIGRpZSAiJGZyYW1ld29yayBhdCBcIiRwYXRo
XCIgZG9lcyBub3QgdXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nXG4iOwotICAgIH0KLSAgICBy
ZXR1cm4gJGhhc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7Ci19Ci0KLXN1YiBoYXMzRFJlbmRlcmlu
Z1N1cHBvcnQKLXsKLSAgICAjIE9uIHBsYXRmb3JtcyBvdGhlciB0aGFuIE1hYyB0aGUgU2tpcHBl
ZCBmaWxlcyBhcmUgdXNlZCB0byBza2lwIDNEIHRlc3RzCi0gICAgcmV0dXJuIDEgaWYgIWlzQXBw
bGVNYWNXZWJLaXQoKTsKLQotICAgIG15ICRwYXRoID0gc2hpZnQ7Ci0gICAgcmV0dXJuIGxpYnJh
cnlDb250YWluc1N5bWJvbCgkcGF0aCwgIldlYkNvcmVIYXMzRFJlbmRlcmluZyIpOwotfQotCi1z
dWIgY2hlY2tXZWJDb3JlM0RSZW5kZXJpbmdTdXBwb3J0Ci17Ci0gICAgbXkgJHJlcXVpcmVkID0g
c2hpZnQ7Ci0gICAgbXkgJGZyYW1ld29yayA9ICJXZWJDb3JlIjsKLSAgICBteSAkcGF0aCA9IGJ1
aWx0RHlsaWJQYXRoRm9yTmFtZSgkZnJhbWV3b3JrKTsKLSAgICBteSAkaGFzM0RSZW5kZXJpbmcg
PSBoYXMzRFJlbmRlcmluZ1N1cHBvcnQoJHBhdGgpOwotICAgIGlmICgkcmVxdWlyZWQgJiYgISRo
YXMzRFJlbmRlcmluZykgewotICAgICAgICBkaWUgIiRmcmFtZXdvcmsgYXQgXCIkcGF0aFwiIGRv
ZXMgbm90IGluY2x1ZGUgM0QgcmVuZGVyaW5nIFN1cHBvcnQsIHBsZWFzZSBydW4gYnVpbGQtd2Vi
a2l0IC0tM2QtcmVuZGVyaW5nXG4iOwotICAgIH0KLSAgICByZXR1cm4gJGhhczNEUmVuZGVyaW5n
OwotfQotCi1zdWIgaGFzM0RDYW52YXNTdXBwb3J0Ci17Ci0gICAgcmV0dXJuIDAgaWYgaXNRdCgp
OwotCi0gICAgbXkgJHBhdGggPSBzaGlmdDsKLSAgICByZXR1cm4gbGlicmFyeUNvbnRhaW5zU3lt
Ym9sKCRwYXRoLCAiV2ViR0xTaGFkZXIiKTsKLX0KLQotc3ViIGNoZWNrV2ViQ29yZTNEQ2FudmFz
U3VwcG9ydAotewotICAgIG15ICRyZXF1aXJlZCA9IHNoaWZ0OwotICAgIG15ICRmcmFtZXdvcmsg
PSAiV2ViQ29yZSI7Ci0gICAgbXkgJHBhdGggPSBidWlsdER5bGliUGF0aEZvck5hbWUoJGZyYW1l
d29yayk7Ci0gICAgbXkgJGhhczNEQ2FudmFzID0gaGFzM0RDYW52YXNTdXBwb3J0KCRwYXRoKTsK
LSAgICBpZiAoJHJlcXVpcmVkICYmICEkaGFzM0RDYW52YXMpIHsKLSAgICAgICAgZGllICIkZnJh
bWV3b3JrIGF0IFwiJHBhdGhcIiBkb2VzIG5vdCBpbmNsdWRlIDNEIENhbnZhcyBTdXBwb3J0LCBw
bGVhc2UgcnVuIGJ1aWxkLXdlYmtpdCAtLTNkLWNhbnZhc1xuIjsKLSAgICB9Ci0gICAgcmV0dXJu
ICRoYXMzRENhbnZhczsKLX0KLQotc3ViIGhhc1dNTFN1cHBvcnQKLXsKLSAgICBteSAkcGF0aCA9
IHNoaWZ0OwotICAgIHJldHVybiBsaWJyYXJ5Q29udGFpbnNTeW1ib2woJHBhdGgsICJXTUxFbGVt
ZW50Iik7Ci19Ci0KLXN1YiByZW1vdmVMaWJyYXJ5RGVwZW5kaW5nT25XTUwKLXsKLSAgICBteSAk
ZnJhbWV3b3JrTmFtZSA9IHNoaWZ0OwotICAgIG15ICRzaG91bGRIYXZlV01MID0gc2hpZnQ7Ci0K
LSAgICBteSAkcGF0aCA9IGJ1aWx0RHlsaWJQYXRoRm9yTmFtZSgkZnJhbWV3b3JrTmFtZSk7Ci0g
ICAgcmV0dXJuIHVubGVzcyAteCAkcGF0aDsKLQotICAgIG15ICRoYXNXTUwgPSBoYXNXTUxTdXBw
b3J0KCRwYXRoKTsKLSAgICBzeXN0ZW0gInJtIC1mICRwYXRoIiBpZiAoJHNob3VsZEhhdmVXTUwg
eG9yICRoYXNXTUwpOwotfQotCi1zdWIgY2hlY2tXZWJDb3JlV01MU3VwcG9ydAotewotICAgIG15
ICRyZXF1aXJlZCA9IHNoaWZ0OwotICAgIG15ICRmcmFtZXdvcmsgPSAiV2ViQ29yZSI7Ci0gICAg
bXkgJHBhdGggPSBidWlsdER5bGliUGF0aEZvck5hbWUoJGZyYW1ld29yayk7Ci0gICAgbXkgJGhh
c1dNTCA9IGhhc1dNTFN1cHBvcnQoJHBhdGgpOwotICAgIGlmICgkcmVxdWlyZWQgJiYgISRoYXNX
TUwpIHsKLSAgICAgICAgZGllICIkZnJhbWV3b3JrIGF0IFwiJHBhdGhcIiBkb2VzIG5vdCBpbmNs
dWRlIFdNTCBTdXBwb3J0LCBwbGVhc2UgcnVuIGJ1aWxkLXdlYmtpdCAtLXdtbFxuIjsKLSAgICB9
Ci0gICAgcmV0dXJuICRoYXNXTUw7Ci19Ci0KLXN1YiBoYXNYSFRNTE1QU3VwcG9ydAotewotICAg
IG15ICRwYXRoID0gc2hpZnQ7Ci0gICAgcmV0dXJuIGxpYnJhcnlDb250YWluc1N5bWJvbCgkcGF0
aCwgImlzWEhUTUxNUERvY3VtZW50Iik7Ci19Ci0KLXN1YiBjaGVja1dlYkNvcmVYSFRNTE1QU3Vw
cG9ydAotewotICAgIG15ICRyZXF1aXJlZCA9IHNoaWZ0OwotICAgIG15ICRmcmFtZXdvcmsgPSAi
V2ViQ29yZSI7Ci0gICAgbXkgJHBhdGggPSBidWlsdER5bGliUGF0aEZvck5hbWUoJGZyYW1ld29y
ayk7Ci0gICAgbXkgJGhhc1hIVE1MTVAgPSBoYXNYSFRNTE1QU3VwcG9ydCgkcGF0aCk7Ci0gICAg
aWYgKCRyZXF1aXJlZCAmJiAhJGhhc1hIVE1MTVApIHsKLSAgICAgICAgZGllICIkZnJhbWV3b3Jr
IGF0IFwiJHBhdGhcIiBkb2VzIG5vdCBpbmNsdWRlIFhIVE1MIE1QIFN1cHBvcnRcbiI7Ci0gICAg
fQotICAgIHJldHVybiAkaGFzWEhUTUxNUDsKLX0KLQotc3ViIGhhc1dDU1NTdXBwb3J0Ci17Ci0g
ICAgIyBGSVhNRTogV2hlbiBXQ1NTIHN1cHBvcnQgaXMgbGFuZGVkIHRoaXMgc2hvdWxkIGJlIHVw
ZGF0ZWQgdG8gY2hlY2sgZm9yIFdDU1MKLSAgICAjIGJlaW5nIGVuYWJsZWQgaW4gYSBtYW5uZXIg
c2ltaWxhciB0byBob3cgd2UgY2hlY2sgZm9yIFhIVE1MIE1QIGFib3ZlLgotICAgIHJldHVybiAw
OwotfQotCi1zdWIgY2hlY2tXZWJDb3JlV0NTU1N1cHBvcnQKLXsKLSAgICBteSAkcmVxdWlyZWQg
PSBzaGlmdDsKLSAgICBteSAkZnJhbWV3b3JrID0gIldlYkNvcmUiOwotICAgIG15ICRwYXRoID0g
YnVpbHREeWxpYlBhdGhGb3JOYW1lKCRmcmFtZXdvcmspOwotICAgIG15ICRoYXNXQ1NTID0gaGFz
V0NTU1N1cHBvcnQoJHBhdGgpOwotICAgIGlmICgkcmVxdWlyZWQgJiYgISRoYXNXQ1NTKSB7Ci0g
ICAgICAgIGRpZSAiJGZyYW1ld29yayBhdCBcIiRwYXRoXCIgZG9lcyBub3QgaW5jbHVkZSBXQ1NT
IFN1cHBvcnRcbiI7Ci0gICAgfQotICAgIHJldHVybiAkaGFzV0NTUzsKLX0KLQogc3ViIGlzSW5z
cGVjdG9yRnJvbnRlbmQoKQogewogICAgIGRldGVybWluZUlzSW5zcGVjdG9yRnJvbnRlbmQoKTsK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9mZWF0dXJlcy5wbSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9mZWF0dXJlcy5wbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjg4MDIyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL2ZlYXR1cmVzLnBtCkBAIC0wLDAgKzEsMTA0IEBACisj
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQKKyMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFr
b3YgKGFwQG55cG9wLmNvbSkKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEFuZHJhcyBCZWNzaSAoYWJl
Y3NpQGluZi51LXN6ZWdlZC5odSksIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMgMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyMgICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyMgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisj
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyMgTW9kdWxlIHRvIHNoYXJlIGNvZGUgdG8gZGV0ZWN0IHRoZSBleGlzdGFu
Y2Ugb2YgZmVhdHVyZXMgaW4gYnVpbHQgYmluYXJpZXMuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fy
bmluZ3M7CisKK0JFR0lOIHsKKyAgIHVzZSBFeHBvcnRlciAgICgpOworICAgb3VyICgkVkVSU0lP
TiwgQElTQSwgQEVYUE9SVCwgQEVYUE9SVF9PSywgJUVYUE9SVF9UQUdTKTsKKyAgICRWRVJTSU9O
ICAgICA9IDEuMDA7CisgICBASVNBICAgICAgICAgPSBxdyhFeHBvcnRlcik7CisgICBARVhQT1JU
ICAgICAgPSBxdygmY2hlY2tXZWJDb3JlRmVhdHVyZVN1cHBvcnQKKyAgICAgICAgICAgICAgICAg
ICAgICZyZW1vdmVMaWJyYXJ5RGVwZW5kaW5nT25GZWF0dXJlKTsKKyAgICVFWFBPUlRfVEFHUyA9
ICggKTsKKyAgIEBFWFBPUlRfT0sgICA9ICgpOworfQorCitzdWIgbGlicmFyeUNvbnRhaW5zU3lt
Ym9sKCQkKQoreworICAgIG15ICgkcGF0aCwgJHN5bWJvbCkgPSBAXzsKKworICAgIGlmIChpc0N5
Z3dpbigpIG9yIGlzV2luZG93cygpKSB7CisgICAgICAgICMgRklYTUU6IEltcGxlbWVudCB0aGlz
IGZvciBXaW5kb3dzLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBteSAkZm91bmRT
eW1ib2wgPSAwOworICAgIGlmICgtZSAkcGF0aCkgeworICAgICAgICBvcGVuIE5NLCAiLXwiLCAi
bm0iLCAkcGF0aCBvciBkaWU7CisgICAgICAgIHdoaWxlICg8Tk0+KSB7CisgICAgICAgICAgICAk
Zm91bmRTeW1ib2wgPSAxIGlmIC8kc3ltYm9sLzsgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFi
bHkgY2hlY2sgZm9yIHdvcmQgYm91bmRhcmllcyBiZWZvcmUvYWZ0ZXIgdGhlIHN5bWJvbCBuYW1l
LgorICAgICAgICB9CisgICAgICAgIGNsb3NlIE5NOworICAgIH0KKyAgICByZXR1cm4gJGZvdW5k
U3ltYm9sOworfQorCitzdWIgaGFzRmVhdHVyZSgkJCkKK3sKKyAgICBteSAoJGZlYXR1cmVOYW1l
LCAkcGF0aCkgPSBAXzsKKyAgICBteSAlc3ltYm9sRm9yRmVhdHVyZSA9ICgKKyAgICAgICAgIk1h
dGhNTCIgPT4gIk1hdGhNTEVsZW1lbnQiLAorICAgICAgICAiU1ZHIiA9PiAiU1ZHRGVmc0VsZW1l
bnQiLCAjIFdlIHVzZWQgdG8gbG9vayBmb3IgU1ZHRWxlbWVudCBidXQgaXNTVkdFbGVtZW50IGV4
aXN0cyAoYW5kIHdvdWxkIG1hdGNoKSBpbiAtLW5vLXN2ZyBidWlsZHMuCisgICAgICAgICJBY2Nl
bGVyYXRlZCBDb21wb3NpdGluZyIgPT4gIkdyYXBoaWNzTGF5ZXIiLAorICAgICAgICAiM0QgUmVu
ZGVyaW5nIiA9PiAiV2ViQ29yZUhhczNEUmVuZGVyaW5nIiwKKyAgICAgICAgIjNEIENhbnZhcyIg
PT4gIldlYkdMU2hhZGVyIiwKKyAgICAgICAgIldNTCIgPT4gIldNTEVsZW1lbnQiLAorICAgICAg
ICAiWEhUTUxNUCIgPT4gImlzWEhUTUxNUERvY3VtZW50IiwKKyAgICApOworICAgIG15ICRzeW1i
b2xOYW1lID0gJHN5bWJvbEZvckZlYXR1cmV7JGZlYXR1cmVOYW1lfTsKKyAgICBkaWUgIlVua25v
d24gZmVhdHVyZTogJGZlYXR1cmVOYW1lIiB1bmxlc3MgJHN5bWJvbE5hbWU7CisgICAgcmV0dXJu
IGxpYnJhcnlDb250YWluc1N5bWJvbCgkcGF0aCwgJHN5bWJvbE5hbWUpOworfQorCitzdWIgY2hl
Y2tXZWJDb3JlRmVhdHVyZVN1cHBvcnQoJCQpCit7CisgICAgbXkgKCRmZWF0dXJlLCAkcmVxdWly
ZWQpID0gQF87CisgICAgbXkgJGxpYnJhcnlOYW1lID0gIldlYkNvcmUiOworICAgIG15ICRwYXRo
ID0gYnVpbHREeWxpYlBhdGhGb3JOYW1lKCRsaWJyYXJ5TmFtZSk7CisgICAgbXkgJGhhc0ZlYXR1
cmUgPSBoYXNGZWF0dXJlKCRmZWF0dXJlLCAkcGF0aCk7CisgICAgaWYgKCRyZXF1aXJlZCAmJiAh
JGhhc0ZlYXR1cmUpIHsKKyAgICAgICAgZGllICIkbGlicmFyeU5hbWUgYXQgXCIkcGF0aFwiIGRv
ZXMgbm90IGluY2x1ZGUgJGhhc0ZlYXR1cmUgc3VwcG9ydC4gIFNlZSBidWlsZC13ZWJraXQgLS1o
ZWxwXG4iOworICAgIH0KKyAgICByZXR1cm4gJGhhc0ZlYXR1cmU7Cit9CisKK3N1YiByZW1vdmVM
aWJyYXJ5RGVwZW5kaW5nT25GZWF0dXJlKCQkJCkKK3sKKyAgICBteSAoJGxpYnJhcnlOYW1lLCAk
ZmVhdHVyZU5hbWUsICRzaG91bGRIYXZlRmVhdHVyZSkgPSBAXzsKKyAgICBteSAkcGF0aCA9IGJ1
aWx0RHlsaWJQYXRoRm9yTmFtZSgkbGlicmFyeU5hbWUpOworICAgIHJldHVybiB1bmxlc3MgLXgg
JHBhdGg7CisKKyAgICBteSAkaGFzRmVhdHVyZSA9IGhhc0ZlYXR1cmUoJGZlYXR1cmVOYW1lLCAk
cGF0aCk7CisgICAgc3lzdGVtICJybSAtZiAkcGF0aCIgaWYgKCRzaG91bGRIYXZlRmVhdHVyZSB4
b3IgJGhhc0ZlYXR1cmUpOworfQorCisxOwo=
</data>
<flag name="review"
          id="31319"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>