<?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>136388</bug_id>
          
          <creation_ts>2014-08-29 14:12:15 -0700</creation_ts>
          <short_desc>[iOS] Configure Xcode to build a command line tool for the iOS Simulator</short_desc>
          <delta_ts>2014-08-29 16:34:52 -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>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dfarler</cc>
    
    <cc>lforschler</cc>
    
    <cc>mitz</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1032249</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-29 14:12:15 -0700</bug_when>
    <thetext>Towards building iOS WebKit using the public iOS SDK we need to configure Xcode to support building a command line tool for the iOS Simulator (e.g. JSCLLIntOffsetsExtractor).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032257</commentid>
    <comment_count>1</comment_count>
      <attachid>237379</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-29 14:30:59 -0700</bug_when>
    <thetext>Created attachment 237379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032262</commentid>
    <comment_count>2</comment_count>
      <attachid>237380</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-29 14:40:46 -0700</bug_when>
    <thetext>Created attachment 237380
Patch

Renamed updateXcodeSpecification() to createXcodeSpecificationFromSpecificationAndId() to better describe what it does. I am open to name suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032264</commentid>
    <comment_count>3</comment_count>
      <attachid>237380</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-29 15:02:51 -0700</bug_when>
    <thetext>Comment on attachment 237380
Patch

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

&gt; Tools/Scripts/configure-Xcode-to-build-iOS-Simulator-command-line-tool:142
&gt; +    if ($foundSpecification) {

The conditional expression of this if-statement should be &quot;$foundSpecification &amp;&amp; $position &gt;= 0&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032265</commentid>
    <comment_count>4</comment_count>
      <attachid>237380</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-08-29 15:08:52 -0700</bug_when>
    <thetext>Comment on attachment 237380
Patch

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

r=me

&gt; Tools/ChangeLog:9
&gt; +        Add a script, called configure-Xcode-to-build-iOS-Simulator-command-line-tool, to
&gt; +        configure Xcode to support building a command line tool for the iOS Simulator.

We could be a little less specific about the script name so it could be shorter:  configure-Xcode-for-iOS-Simulator-builds

Not required if there are no other objections.

&gt; Tools/ChangeLog:16
&gt; +        Additionally, teach build-{jsc, webkit} to call the script when building for
&gt; +        iOS Simulator.

How much does this slow down build-webkit?

While it&apos;s great that we can make this transparent to the user, don&apos;t they need to be root to run the script?  I always envisioned this as a one-time script (after installing Xcode) that each developer would have to run, although there is value in making builds &quot;just work&quot;.  :)

&gt; Tools/Scripts/configure-Xcode-to-build-iOS-Simulator-command-line-tool:52
&gt; +    if ($file =~ /^\../) {

Won&apos;t this ignore &quot;.&quot;?  Maybe that doesn&apos;t matter because it gets filtered out below.

&gt; Tools/Scripts/configure-Xcode-to-build-iOS-Simulator-command-line-tool:57
&gt; +    return if -d $file || $file !~ /\.xcspec$/;

Do we care about operating on symlinks?  An alternative approach that only operates on real files is:

    return if ! -f $file || $file !~ /\.xcspec$/;

&gt; Tools/Scripts/configure-Xcode-to-build-iOS-Simulator-command-line-tool:94
&gt; +

Please add an &apos;exit 0;&apos; here to show when the main part of the script ends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032267</commentid>
    <comment_count>5</comment_count>
      <attachid>237380</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-08-29 15:27:03 -0700</bug_when>
    <thetext>Comment on attachment 237380
Patch

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

&gt;&gt; Tools/ChangeLog:9
&gt;&gt; +        configure Xcode to support building a command line tool for the iOS Simulator.
&gt; 
&gt; We could be a little less specific about the script name so it could be shorter:  configure-Xcode-for-iOS-Simulator-builds
&gt; 
&gt; Not required if there are no other objections.

I also object to this. Given that we&apos;ll want to eventually support device builds, I don&apos;t like having &quot;Simulator&quot; as part of the script name. I suggested &quot;configure-xcode-for-ios-development&quot; to Dan over IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032285</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-29 16:24:57 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Tools/ChangeLog:9
&gt; &gt; +        Add a script, called configure-Xcode-to-build-iOS-Simulator-command-line-tool, to
&gt; &gt; +        configure Xcode to support building a command line tool for the iOS Simulator.
&gt; 
&gt; We could be a little less specific about the script name so it could be shorter:  configure-Xcode-for-iOS-Simulator-builds
&gt; 
&gt; Not required if there are no other objections.
&gt; 

As per our IRC conversation today with Andy Estes, will rename the script to configure-xcode-for-ios-development, which is a generic name and allows us to expand the functionality of this script without having to rename it in a subsequent commit.

&gt; &gt; Tools/ChangeLog:16
&gt; &gt; +        Additionally, teach build-{jsc, webkit} to call the script when building for
&gt; &gt; +        iOS Simulator.
&gt; 
&gt; How much does this slow down build-webkit?
&gt; 

For now, I&apos;m going to remove the call to the script from build-{webkit, jsc} since the script may need to be run as root (see my response to your next question for more details). So, there will be no performance impact to build-{webkit, jsc}.

For completeness, running &quot;time Tools/Scripts/configure-Xcode-to-build-iOS-Simulator-command-line-tool” three times on my MacBook Pro shows that it takes on average about .111 seconds (real time) to complete.

&gt; While it&apos;s great that we can make this transparent to the user, don&apos;t they need to be root to run the script? I always envisioned this as a one-time script (after installing Xcode) that each developer would have to run, although there is value in making builds &quot;just work&quot;.  :)

You will need to run this script as root if Xcode was installed via the App Store (which it is the majority of the time). I&apos;ll go with the approach you envisioned and will modify the script to error out with the following message when it&apos;s not with an effective UID of 0 (root): &quot;configure-xcode-for-ios-development must be run as root.&quot;

Moreover, I will revert the changes to build-{webkit, jsc} that call this script. We may want to consider teaching build-webkit to error out and inform a person to run the script configure-xcode-for-ios-development if applicable. We can do such an enhancement in another bug.

&gt; 
&gt; &gt; Tools/Scripts/configure-Xcode-to-build-iOS-Simulator-command-line-tool:52
&gt; &gt; +    if ($file =~ /^\../) {
&gt; 
&gt; Won&apos;t this ignore &quot;.&quot;?  Maybe that doesn&apos;t matter because it gets filtered out below.
&gt; 

Notice that the regular expression only matches a path with at least two characters (a period and some other character). So, we don&apos;t ignore &quot;.&quot; here. As you noticed, we disregard &quot;.&quot; below since it&apos;s a directory.

&gt; &gt; Tools/Scripts/configure-Xcode-to-build-iOS-Simulator-command-line-tool:57
&gt; &gt; +    return if -d $file || $file !~ /\.xcspec$/;
&gt; 
&gt; Do we care about operating on symlinks?  An alternative approach that only operates on real files is:
&gt; 
&gt;     return if ! -f $file || $file !~ /\.xcspec$/;
&gt; 

Will use this approach.

&gt; &gt; Tools/Scripts/configure-Xcode-to-build-iOS-Simulator-command-line-tool:94
&gt; &gt; +
&gt; 
&gt; Please add an &apos;exit 0;&apos; here to show when the main part of the script ends.

Will add &quot;exit 0;&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032287</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2014-08-29 16:34:52 -0700</bug_when>
    <thetext>Committed r173129: &lt;http://trac.webkit.org/changeset/173129&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237379</attachid>
            <date>2014-08-29 14:30:59 -0700</date>
            <delta_ts>2014-08-29 14:40:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136388-20140829143052.patch</filename>
            <type>text/plain</type>
            <size>10590</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMTE3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmEyMjcyZjE0YTY0ZTNmYjMyYjMzOGQyZTg2NzA4MDRl
YmQzYWE4Zi4uMjFiYjRjYzhhYzUzNDAxOTQxMDZlYTBmZTFmMDgzNmZiZjA3NTM2ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE0LTA4LTI5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBDb25maWd1cmUgWGNvZGUgdG8gYnVpbGQgYSBjb21tYW5kIGxpbmUgdG9vbCBm
b3IgdGhlIGlPUyBTaW11bGF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIHNjcmlwdCwgY2FsbGVkIGNvbmZpZ3VyZS1YY29kZS10by1idWls
ZC1pT1MtU2ltdWxhdG9yLWNvbW1hbmQtbGluZS10b29sLCB0bworICAgICAgICBjb25maWd1cmUg
WGNvZGUgdG8gc3VwcG9ydCBidWlsZGluZyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0aGUgaU9T
IFNpbXVsYXRvci4KKworICAgICAgICBUaGUgc2NyaXB0IHVzZXMgdGhlIHhjc3BlYyBmaWxlcyBp
biB0aGUgT1MgWCBTREsgdG8gY3JlYXRlIHhjc3BlYyBmaWxlcyBpbiB0aGUKKyAgICAgICAgaU9T
IFNpbXVsYXRvciBTREsgd2l0aCB0aGUgcHJvZHVjdC0gYW5kIHBhY2thZ2UtIHR5cGUgZGVmaW5p
dGlvbnMgdG8gYnVpbGQgYQorICAgICAgICBjb21tYW5kIGxpbmUgdG9vbCwgaWYgYXBwbGljYWJs
ZS4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHRlYWNoIGJ1aWxkLXtqc2MsIHdlYmtpdH0gdG8g
Y2FsbCB0aGUgc2NyaXB0IHdoZW4gYnVpbGRpbmcgZm9yCisgICAgICAgIGlPUyBTaW11bGF0b3Iu
CisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLWpzYzogQ2FsbCBzY3JpcHQgY29uZmlndXJlLVhj
b2RlLXRvLWJ1aWxkLWlPUy1TaW11bGF0b3ItY29tbWFuZC1saW5lLXRvb2wKKyAgICAgICAgd2hl
biBidWlsZGluZyBmb3IgaU9TIFNpbXVsYXRvci4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdl
YmtpdDogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9jb25maWd1cmUtWGNvZGUtdG8tYnVpbGQt
aU9TLVNpbXVsYXRvci1jb21tYW5kLWxpbmUtdG9vbDogQWRkZWQuCisKIDIwMTQtMDgtMjkgIENh
cmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0pTQ10gU29tZSBKU0MgdGVzdHMgYXJlIGRlcGVuZGVudCBvbiB0aGUgbWFjaGluZSB0aW1lIHpv
bmUuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYyBiL1Rvb2xzL1NjcmlwdHMv
YnVpbGQtanNjCmluZGV4IGQ1NWFjZjk4ZWI1OTVlMWY3Y2U4ZGQ5ODFiMTY1MDNjN2EwOWU5NTgu
LjE2YTA4YmUxNjFhNTFmODhmZDY3YjllNzYyNDdmODg0YmY5MWI3ZDcgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvYnVpbGQtanNjCisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjCkBAIC0x
LDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKLSMgQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAw
NSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmln
aHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0xMDksNiArMTA5LDkgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogICAgIGlmICgk
Zm9yY2VDTG9vcCkgewogICAgICAgICBwdXNoIEBvcHRpb25zLCAiRU5BQkxFX0xMSU5UX0NfTE9P
UD1FTkFCTEVfTExJTlRfQ19MT09QIjsKICAgICB9CisgICAgaWYgKHdpbGxVc2VJT1NTaW11bGF0
b3JTREtXaGVuQnVpbGRpbmcoKSkgeworICAgICAgICBzeXN0ZW0oInBlcmwgVG9vbHMvU2NyaXB0
cy9jb25maWd1cmUtWGNvZGUtdG8tYnVpbGQtaU9TLVNpbXVsYXRvci1jb21tYW5kLWxpbmUtdG9v
bCIpID09IDAgb3IgZGllOworICAgIH0KICAgICBpZiAoJGNvcHlMaWJyYXJpZXMpIHsKICAgICAg
ICAgbXkgQGNvcHlMaWJyYXJpZXNBcmdzID0gKCJwZXJsIiwgIlRvb2xzL1NjcmlwdHMvY29weS13
ZWJraXRsaWJyYXJpZXMtdG8tcHJvZHVjdC1kaXJlY3RvcnkiKTsKICAgICAgICAgaWYgKCRmdGxK
SVQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXQKaW5kZXggYWU4MjFkZDg4YWM3ZDc0ZjQ4ZmM5YjUzNDRhMjQzYzBi
MjhkNDU4OC4uNzlhNWE3NGY2YjQzNmMyYmQyODM4ODU2NWY2MDNhZmY1MWYwYjhlYyAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKQEAgLTIxMiw2ICsyMTIsOSBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAg
ICAgICAgIHByaW50KGpvaW4oIiAiLCBAY29weUxpYnJhcmllc0FyZ3MpIC4gIlxuIik7CiAgICAg
ICAgIChzeXN0ZW0oQGNvcHlMaWJyYXJpZXNBcmdzKSA9PSAwKSBvciBkaWU7CiAgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKHdpbGxVc2VJT1NTaW11bGF0b3JTREtXaGVuQnVpbGRpbmcoKSkgewor
ICAgICAgICAgICAgc3lzdGVtKCJwZXJsIFRvb2xzL1NjcmlwdHMvY29uZmlndXJlLVhjb2RlLXRv
LWJ1aWxkLWlPUy1TaW11bGF0b3ItY29tbWFuZC1saW5lLXRvb2wiKSA9PSAwIG9yIGRpZTsKKyAg
ICAgICAgfQogICAgICAgICBteSBAY29weUxpYnJhcmllc0FyZ3MgPSAoCiAgICAgICAgICAgICAi
cGVybCIsICJUb29scy9TY3JpcHRzL2NvcHktd2Via2l0bGlicmFyaWVzLXRvLXByb2R1Y3QtZGly
ZWN0b3J5IiwKICAgICAgICAgICAgICItLXNkayIsIHhjb2RlU0RLKCksICItLWxsdm0iLCAiLS1w
cmVmZXItc3lzdGVtLWxsdm0iLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9jb25maWd1cmUt
WGNvZGUtdG8tYnVpbGQtaU9TLVNpbXVsYXRvci1jb21tYW5kLWxpbmUtdG9vbCBiL1Rvb2xzL1Nj
cmlwdHMvY29uZmlndXJlLVhjb2RlLXRvLWJ1aWxkLWlPUy1TaW11bGF0b3ItY29tbWFuZC1saW5l
LXRvb2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYjQ4Y2Q4MDY2OGE4MTBmY2QwN2MxYzlmODZkNDE2MWJiZmM3YjNk
OAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvY29uZmlndXJlLVhjb2RlLXRvLWJ1
aWxkLWlPUy1TaW11bGF0b3ItY29tbWFuZC1saW5lLXRvb2wKQEAgLTAsMCArMSwxNjggQEAKKyMh
L3Vzci9iaW4vcGVybCAtdworCisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgQ2hlY2tzIGlmIFhjb2RlIHN1cHBvcnRzIGJ1aWxkaW5nIGEgY29tbWFuZCBsaW5lIHRv
b2wgZm9yIHRoZSBpT1MgU2ltdWxhdG9yLgorIyBJZiBub3QsIHRoZW4gY3JlYXRlcyB4Y3NwZWMg
ZmlsZXMgaW4gdGhlIGlPUyBTaW11bGF0b3IgU0RLIGZvciBhIGNvbW1hbmQgbGluZQorIyB0b29s
IHByb2R1Y3QtIGFuZCBwYWNrYWdlLSB0eXBlIHVzaW5nIHRoZSBkZWZpbml0aW9ucyBpbiB0aGUg
T1MgWCBTREsgZm9yIHRoZQorIyBzYW1lIHR5cGVzLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p
bmdzOworCit1c2UgRmlsZTo6RmluZDsKK3VzZSBGaWxlOjpTcGVjOwordXNlIEZpbGU6OlRlbXAg
cXcodGVtcGZpbGUpOworCitzdWIgcmVhZFhjb2RlU3BlY2lmaWNhdGlvbkJ5SWQoJCQpOworc3Vi
IHVwZGF0ZVhjb2RlU3BlY2lmaWNhdGlvbigkJCQpOworc3ViIHhjb2RlU0RLU3BlY2lmaWNhdGlv
bnNQYXRoKCQpOworCit1c2UgY29uc3RhbnQgQ09NTUFORF9MSU5FX1BBQ0tBR0VfVFlQRSA9PiAi
Y29tLmFwcGxlLnBhY2thZ2UtdHlwZS5tYWNoLW8tZXhlY3V0YWJsZSI7Cit1c2UgY29uc3RhbnQg
Q09NTUFORF9MSU5FX1BST0RVQ1RfVFlQRSA9PiAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29s
IjsKKworbXkgJGlvc1NpbXVsYXRvclNES1NwZWNpZmljYXRpb25zUGF0aCA9IHhjb2RlU0RLU3Bl
Y2lmaWNhdGlvbnNQYXRoKCJpcGhvbmVzaW11bGF0b3IiKTsKKworbXkgQHhjb2RlU3BlY2lmaWNh
dGlvbkZpbGVzOworc3ViIHdhbnRlZAoreworICAgIG15ICRmaWxlID0gJF87CisKKyAgICAjIEln
bm9yZSBoaWRkZW4gZmlsZXMvZGlyZWN0b3JpZXMuCisgICAgaWYgKCRmaWxlID1+IC9eXC4uLykg
eworICAgICAgICAkRmlsZTo6RmluZDo6cHJ1bmUgPSAxOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgcmV0dXJuIGlmIC1kICRmaWxlIHx8ICRmaWxlICF+IC9cLnhjc3BlYyQvOworCisg
ICAgcHVzaCBAeGNvZGVTcGVjaWZpY2F0aW9uRmlsZXMsICRGaWxlOjpGaW5kOjpuYW1lOworfQor
CitmaW5kKFwmd2FudGVkLCAkaW9zU2ltdWxhdG9yU0RLU3BlY2lmaWNhdGlvbnNQYXRoKTsKKwor
bXkgJGhhc1BhY2thZ2VUeXBlRm9yQ29tbWFuZExpbmVUb29sOworbXkgJGhhc1Byb2R1Y3RUeXBl
Rm9yQ29tbWFuZExpbmVUb29sOworZm9yZWFjaCBteSAkc3BlY2lmaWNhdGlvbkZpbGUgKEB4Y29k
ZVNwZWNpZmljYXRpb25GaWxlcykgeworICAgIGxhc3QgaWYgJGhhc1BhY2thZ2VUeXBlRm9yQ29t
bWFuZExpbmVUb29sICYmICRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbDsKKyAgICBp
ZiAoISRoYXNQYWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9vbCAmJiByZWFkWGNvZGVTcGVjaWZp
Y2F0aW9uQnlJZCgkc3BlY2lmaWNhdGlvbkZpbGUsIENPTU1BTkRfTElORV9QQUNLQUdFX1RZUEUp
KSB7CisgICAgICAgICRoYXNQYWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9vbCA9IDE7CisgICAg
ICAgIG5leHQ7CisgICAgfQorICAgIGlmICghJGhhc1Byb2R1Y3RUeXBlRm9yQ29tbWFuZExpbmVU
b29sICYmIHJlYWRYY29kZVNwZWNpZmljYXRpb25CeUlkKCRzcGVjaWZpY2F0aW9uRmlsZSwgQ09N
TUFORF9MSU5FX1BST0RVQ1RfVFlQRSkpIHsKKyAgICAgICAgJGhhc1Byb2R1Y3RUeXBlRm9yQ29t
bWFuZExpbmVUb29sID0gMTsKKyAgICAgICAgbmV4dDsKKyAgICB9Cit9CisKK2lmICgkaGFzUGFj
a2FnZVR5cGVGb3JDb21tYW5kTGluZVRvb2wgJiYgJGhhc1Byb2R1Y3RUeXBlRm9yQ29tbWFuZExp
bmVUb29sKSB7CisgICAgZXhpdCgwKTsgIyBYY29kZSBrbm93cyBob3cgdG8gYnVpbGQgYSBjb21t
YW5kIGxpbmUgdG9vbCBmb3IgdGhlIGlPUyBTaW11bGF0b3IuCit9CisKK215ICRtYWNvc3hTREtT
cGVjaWZpY2F0aW9uc1BhdGggPSB4Y29kZVNES1NwZWNpZmljYXRpb25zUGF0aCgibWFjb3N4Iik7
CitpZiAoISRoYXNQYWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9vbCkgeworICAgIG15ICRwYWNr
YWdlVHlwZXNGb3JNYWNPU1hQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbWFjb3N4U0RLU3Bl
Y2lmaWNhdGlvbnNQYXRoLCAiTWFjT1NYIFBhY2thZ2UgVHlwZXMueGNzcGVjIik7CisgICAgbXkg
JHBhY2thZ2VUeXBlc0ZvcldlYktpdERldmVsb3BtZW50UGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZp
bGUoJGlvc1NpbXVsYXRvclNES1NwZWNpZmljYXRpb25zUGF0aCwgImlQaG9uZSBTaW11bGF0b3Ig
UGFja2FnZVR5cGVzIEZvciBXZWJLaXQgRGV2ZWxvcG1lbnQueGNzcGVjIik7CisgICAgdXBkYXRl
WGNvZGVTcGVjaWZpY2F0aW9uKCRwYWNrYWdlVHlwZXNGb3JNYWNPU1hQYXRoLCAkcGFja2FnZVR5
cGVzRm9yV2ViS2l0RGV2ZWxvcG1lbnRQYXRoLCBDT01NQU5EX0xJTkVfUEFDS0FHRV9UWVBFKTsK
K30KKworaWYgKCEkaGFzUHJvZHVjdFR5cGVGb3JDb21tYW5kTGluZVRvb2wpIHsKKyAgICBteSAk
cHJvZHVjdFR5cGVzRm9yTWFjT1NYUGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJG1hY29zeFNE
S1NwZWNpZmljYXRpb25zUGF0aCwgIk1hY09TWCBQcm9kdWN0IFR5cGVzLnhjc3BlYyIpOworICAg
IG15ICRwcm9kdWN0VHlwZXNGb3JXZWJLaXREZXZlbG9wbWVudFBhdGggPSBGaWxlOjpTcGVjLT5j
YXRmaWxlKCRpb3NTaW11bGF0b3JTREtTcGVjaWZpY2F0aW9uc1BhdGgsICJpUGhvbmUgU2ltdWxh
dG9yIFByb2R1Y3RUeXBlcyBGb3IgV2ViS2l0IERldmVsb3BtZW50Lnhjc3BlYyIpOworICAgIHVw
ZGF0ZVhjb2RlU3BlY2lmaWNhdGlvbigkcHJvZHVjdFR5cGVzRm9yTWFjT1NYUGF0aCwgJHByb2R1
Y3RUeXBlc0ZvcldlYktpdERldmVsb3BtZW50UGF0aCwgQ09NTUFORF9MSU5FX1BST0RVQ1RfVFlQ
RSk7Cit9CisKK3N1YiB3cml0ZVhjb2RlU3BlY2lmaWNhdGlvbigkJCkKK3sKKyAgICBteSAoJHhj
b2RlU3BlY2lmaWNhdGlvbkZpbGUsICRzcGVjaWZpY2F0aW9uKSA9IEBfOworICAgIG15ICgkdGVt
cEZpbGVIYW5kbGUsICR0ZW1wRmlsZW5hbWUpID0gdGVtcGZpbGUoIndlYmtpdC14Y3NwZWNYWFhY
WFhYIiwgVU5MSU5LID0+IDEpOworICAgIHByaW50ICR0ZW1wRmlsZUhhbmRsZSAkc3BlY2lmaWNh
dGlvbjsKKyAgICBjbG9zZSgkdGVtcEZpbGVIYW5kbGUpOworICAgIHN5c3RlbSgiL3Vzci9saWJl
eGVjL1BsaXN0QnVkZHkgLXggLWMgJ2NsZWFyIGFycmF5JyAnJHhjb2RlU3BlY2lmaWNhdGlvbkZp
bGUnID4gL2Rldi9udWxsIikgPT0gMCBvciBkaWUgIlBsaXN0QnVkZHkgZXhpdGVkIHdpdGggJD86
ICQhIjsKKyAgICBzeXN0ZW0oIi91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IC14IC1jICdhZGQgMCBk
aWN0JyAnJHhjb2RlU3BlY2lmaWNhdGlvbkZpbGUnID4gL2Rldi9udWxsIikgPT0gMCBvciBkaWUg
IlBsaXN0QnVkZHkgZXhpdGVkIHdpdGggJD86ICQhIjsKKyAgICBzeXN0ZW0oIi91c3IvbGliZXhl
Yy9QbGlzdEJ1ZGR5IC14IC1jICdtZXJnZSAkdGVtcEZpbGVuYW1lIDAnICckeGNvZGVTcGVjaWZp
Y2F0aW9uRmlsZScgPiAvZGV2L251bGwiKSA9PSAwIG9yIGRpZSAiUGxpc3RCdWRkeSBleGl0ZWQg
d2l0aCAkPzogJCEiOworfQorCitzdWIgcmVhZFhjb2RlU3BlY2lmaWNhdGlvbkJ5SWQoJCQpCit7
CisgICAgbXkgKCR4Y29kZVNwZWNpZmljYXRpb25GaWxlLCAkaWQpID0gQF87CisgICAgb3BlbihQ
TElTVF9CVUREWSwgIi18IiwgIi91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IiwgIi14IiwgIi1jIiwg
IlByaW50IiwgJHhjb2RlU3BlY2lmaWNhdGlvbkZpbGUpIG9yIGRpZSAiRmFpbGVkIHRvIHJ1biBQ
bGlzdEJ1ZGR5OiAkISI7CisgICAgbXkgJGZvdW5kU3RhcnRPZlNwZWNpZmljYXRpb25zQXJyYXk7
CisgICAgd2hpbGUgKDxQTElTVF9CVUREWT4pIHsKKyAgICAgICAgaWYgKC9ePGFycmF5PiQvKSB7
CisgICAgICAgICAgICAkZm91bmRTdGFydE9mU3BlY2lmaWNhdGlvbnNBcnJheSA9IDE7CisgICAg
ICAgICAgICBsYXN0OworICAgICAgICB9CisgICAgfQorICAgIGlmICghJGZvdW5kU3RhcnRPZlNw
ZWNpZmljYXRpb25zQXJyYXkpIHsKKyAgICAgICByZXR1cm4gIiI7ICMgTm90IGEgWGNvZGUgc3Bl
Y2lmaWNhdGlvbiBmaWxlLgorICAgIH0KKyAgICBteSAkcG9zaXRpb24gPSAtMTsKKyAgICBteSAk
Zm91bmRJZGVudGZpZXJLZXkgPSAwOworICAgIG15ICRmb3VuZFNwZWNpZmljYXRpb24gPSAwOwor
ICAgIHdoaWxlICg8UExJU1RfQlVERFk+KSB7CisgICAgICAgIGlmICgvXlxzPGRpY3Q+JC8pIHsK
KyAgICAgICAgICAgICsrJHBvc2l0aW9uOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoISRmb3VuZElkZW50ZmllcktleSAmJiAvXlxzXHM8a2V5PklkZW50aWZpZXI8
XC9rZXk+JC8pIHsKKyAgICAgICAgICAgICRmb3VuZElkZW50ZmllcktleSA9IDE7CisgICAgICAg
ICAgICBuZXh0OworICAgICAgICB9CisgICAgICAgIGlmICgkZm91bmRJZGVudGZpZXJLZXkgJiYg
L15cc1xzPHN0cmluZz4oW148XSspPFwvc3RyaW5nPiQvKSB7CisgICAgICAgICAgICBpZiAoJDEg
ZXEgJGlkKSB7CisgICAgICAgICAgICAgICAgJGZvdW5kU3BlY2lmaWNhdGlvbiA9IDE7CisgICAg
ICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRmb3VuZElkZW50
ZmllcktleSA9IDA7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAgfQorICAgIGNs
b3NlKFBMSVNUX0JVRERZKTsKKyAgICBpZiAoJGZvdW5kU3BlY2lmaWNhdGlvbikgeworICAgICAg
ICBjaG9tcChteSAkcmVzdWx0ID0gYC91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IC14IC1jICdQcmlu
dCAkcG9zaXRpb24nICckeGNvZGVTcGVjaWZpY2F0aW9uRmlsZSdgKTsKKyAgICAgICAgZGllICJG
YWlsZWQgdG8gcnVuIFBsaXN0QnVkZHkiIGlmICQ/OworICAgICAgICByZXR1cm4gJHJlc3VsdDsK
KyAgICB9CisgICAgcmV0dXJuICIiOyAjIERpZCBub3QgZmluZCBpZC4KK30KKworc3ViIHhjb2Rl
U0RLU3BlY2lmaWNhdGlvbnNQYXRoKCQpCit7CisgICAgbXkgKCRzZGtOYW1lKSA9IEBfOworICAg
IGNob21wKG15ICRzZGtQbGF0Zm9ybURpcmVjdG9yeSA9IGB4Y3J1biAtLXNkayAnJHNka05hbWUn
IC0tc2hvdy1zZGstcGxhdGZvcm0tcGF0aGApOworICAgIGRpZSAiRmFpbGVkIHRvIGdldCBTREsg
cGxhdGZvcm0gcGF0aCBmcm9tIHhjcnVuIiBpZiAkPzsKKworICAgIHJldHVybiBGaWxlOjpTcGVj
LT5jYXRkaXIoJHNka1BsYXRmb3JtRGlyZWN0b3J5LCAiRGV2ZWxvcGVyIiwgIkxpYnJhcnkiLCAi
WGNvZGUiLCAiU3BlY2lmaWNhdGlvbnMiKTsKK30KKworc3ViIHVwZGF0ZVhjb2RlU3BlY2lmaWNh
dGlvbigkJCQpCit7CisgICAgbXkgKCRzb3VyY2VYY29kZVNwZWNpZmljYXRpb25GaWxlLCAkdGFy
Z2V0WGNvZGVTcGVjaWZpY2F0aW9uRmlsZSwgJGlkKSA9IEBfOworICAgIG15ICRzcGVjaWZpY2F0
aW9uID0gcmVhZFhjb2RlU3BlY2lmaWNhdGlvbkJ5SWQoJHNvdXJjZVhjb2RlU3BlY2lmaWNhdGlv
bkZpbGUsICRpZCk7CisgICAgaWYgKCEkc3BlY2lmaWNhdGlvbikgeworICAgICAgICBkaWUgIkZh
aWxlZCB0byBmaW5kICckaWQnIGluICckc291cmNlWGNvZGVTcGVjaWZpY2F0aW9uRmlsZScuXG4i
OworICAgIH0KKyAgICB3cml0ZVhjb2RlU3BlY2lmaWNhdGlvbigkdGFyZ2V0WGNvZGVTcGVjaWZp
Y2F0aW9uRmlsZSwgJHNwZWNpZmljYXRpb24pOworICAgIHByaW50ICJTdWNjZXNzZnVsbHkgY3Jl
YXRlZCAnJHRhcmdldFhjb2RlU3BlY2lmaWNhdGlvbkZpbGUnLlxuIjsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237380</attachid>
            <date>2014-08-29 14:40:46 -0700</date>
            <delta_ts>2014-08-29 15:27:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136388-20140829144040.patch</filename>
            <type>text/plain</type>
            <size>10678</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMTE3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYmEyMjcyZjE0YTY0ZTNmYjMyYjMzOGQyZTg2NzA4MDRl
YmQzYWE4Zi4uMjFiYjRjYzhhYzUzNDAxOTQxMDZlYTBmZTFmMDgzNmZiZjA3NTM2ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDE0LTA4LTI5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBbaU9TXSBDb25maWd1cmUgWGNvZGUgdG8gYnVpbGQgYSBjb21tYW5kIGxpbmUgdG9vbCBm
b3IgdGhlIGlPUyBTaW11bGF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzNjM4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCBhIHNjcmlwdCwgY2FsbGVkIGNvbmZpZ3VyZS1YY29kZS10by1idWls
ZC1pT1MtU2ltdWxhdG9yLWNvbW1hbmQtbGluZS10b29sLCB0bworICAgICAgICBjb25maWd1cmUg
WGNvZGUgdG8gc3VwcG9ydCBidWlsZGluZyBhIGNvbW1hbmQgbGluZSB0b29sIGZvciB0aGUgaU9T
IFNpbXVsYXRvci4KKworICAgICAgICBUaGUgc2NyaXB0IHVzZXMgdGhlIHhjc3BlYyBmaWxlcyBp
biB0aGUgT1MgWCBTREsgdG8gY3JlYXRlIHhjc3BlYyBmaWxlcyBpbiB0aGUKKyAgICAgICAgaU9T
IFNpbXVsYXRvciBTREsgd2l0aCB0aGUgcHJvZHVjdC0gYW5kIHBhY2thZ2UtIHR5cGUgZGVmaW5p
dGlvbnMgdG8gYnVpbGQgYQorICAgICAgICBjb21tYW5kIGxpbmUgdG9vbCwgaWYgYXBwbGljYWJs
ZS4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHRlYWNoIGJ1aWxkLXtqc2MsIHdlYmtpdH0gdG8g
Y2FsbCB0aGUgc2NyaXB0IHdoZW4gYnVpbGRpbmcgZm9yCisgICAgICAgIGlPUyBTaW11bGF0b3Iu
CisKKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLWpzYzogQ2FsbCBzY3JpcHQgY29uZmlndXJlLVhj
b2RlLXRvLWJ1aWxkLWlPUy1TaW11bGF0b3ItY29tbWFuZC1saW5lLXRvb2wKKyAgICAgICAgd2hl
biBidWlsZGluZyBmb3IgaU9TIFNpbXVsYXRvci4KKyAgICAgICAgKiBTY3JpcHRzL2J1aWxkLXdl
YmtpdDogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy9jb25maWd1cmUtWGNvZGUtdG8tYnVpbGQt
aU9TLVNpbXVsYXRvci1jb21tYW5kLWxpbmUtdG9vbDogQWRkZWQuCisKIDIwMTQtMDgtMjkgIENh
cmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W0pTQ10gU29tZSBKU0MgdGVzdHMgYXJlIGRlcGVuZGVudCBvbiB0aGUgbWFjaGluZSB0aW1lIHpv
bmUuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYyBiL1Rvb2xzL1NjcmlwdHMv
YnVpbGQtanNjCmluZGV4IGQ1NWFjZjk4ZWI1OTVlMWY3Y2U4ZGQ5ODFiMTY1MDNjN2EwOWU5NTgu
LjE2YTA4YmUxNjFhNTFmODhmZDY3YjllNzYyNDdmODg0YmY5MWI3ZDcgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvYnVpbGQtanNjCisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjCkBAIC0x
LDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKLSMgQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAw
NSwgMjAxMywgMjAxNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmln
aHQgKEMpIDIwMDcgRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0xMDksNiArMTA5LDkgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogICAgIGlmICgk
Zm9yY2VDTG9vcCkgewogICAgICAgICBwdXNoIEBvcHRpb25zLCAiRU5BQkxFX0xMSU5UX0NfTE9P
UD1FTkFCTEVfTExJTlRfQ19MT09QIjsKICAgICB9CisgICAgaWYgKHdpbGxVc2VJT1NTaW11bGF0
b3JTREtXaGVuQnVpbGRpbmcoKSkgeworICAgICAgICBzeXN0ZW0oInBlcmwgVG9vbHMvU2NyaXB0
cy9jb25maWd1cmUtWGNvZGUtdG8tYnVpbGQtaU9TLVNpbXVsYXRvci1jb21tYW5kLWxpbmUtdG9v
bCIpID09IDAgb3IgZGllOworICAgIH0KICAgICBpZiAoJGNvcHlMaWJyYXJpZXMpIHsKICAgICAg
ICAgbXkgQGNvcHlMaWJyYXJpZXNBcmdzID0gKCJwZXJsIiwgIlRvb2xzL1NjcmlwdHMvY29weS13
ZWJraXRsaWJyYXJpZXMtdG8tcHJvZHVjdC1kaXJlY3RvcnkiKTsKICAgICAgICAgaWYgKCRmdGxK
SVQpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0IGIvVG9vbHMvU2Ny
aXB0cy9idWlsZC13ZWJraXQKaW5kZXggYWU4MjFkZDg4YWM3ZDc0ZjQ4ZmM5YjUzNDRhMjQzYzBi
MjhkNDU4OC4uNzlhNWE3NGY2YjQzNmMyYmQyODM4ODU2NWY2MDNhZmY1MWYwYjhlYyAxMDA3NTUK
LS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMvU2NyaXB0cy9idWls
ZC13ZWJraXQKQEAgLTIxMiw2ICsyMTIsOSBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAg
ICAgICAgIHByaW50KGpvaW4oIiAiLCBAY29weUxpYnJhcmllc0FyZ3MpIC4gIlxuIik7CiAgICAg
ICAgIChzeXN0ZW0oQGNvcHlMaWJyYXJpZXNBcmdzKSA9PSAwKSBvciBkaWU7CiAgICAgfSBlbHNl
IHsKKyAgICAgICAgaWYgKHdpbGxVc2VJT1NTaW11bGF0b3JTREtXaGVuQnVpbGRpbmcoKSkgewor
ICAgICAgICAgICAgc3lzdGVtKCJwZXJsIFRvb2xzL1NjcmlwdHMvY29uZmlndXJlLVhjb2RlLXRv
LWJ1aWxkLWlPUy1TaW11bGF0b3ItY29tbWFuZC1saW5lLXRvb2wiKSA9PSAwIG9yIGRpZTsKKyAg
ICAgICAgfQogICAgICAgICBteSBAY29weUxpYnJhcmllc0FyZ3MgPSAoCiAgICAgICAgICAgICAi
cGVybCIsICJUb29scy9TY3JpcHRzL2NvcHktd2Via2l0bGlicmFyaWVzLXRvLXByb2R1Y3QtZGly
ZWN0b3J5IiwKICAgICAgICAgICAgICItLXNkayIsIHhjb2RlU0RLKCksICItLWxsdm0iLCAiLS1w
cmVmZXItc3lzdGVtLWxsdm0iLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9jb25maWd1cmUt
WGNvZGUtdG8tYnVpbGQtaU9TLVNpbXVsYXRvci1jb21tYW5kLWxpbmUtdG9vbCBiL1Rvb2xzL1Nj
cmlwdHMvY29uZmlndXJlLVhjb2RlLXRvLWJ1aWxkLWlPUy1TaW11bGF0b3ItY29tbWFuZC1saW5l
LXRvb2wKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzgxZGE1Y2ZiM2E1NGY5MGY4OWJiMGEzYTJmMmQ0MzAxNDQ1NTI0
NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvY29uZmlndXJlLVhjb2RlLXRvLWJ1
aWxkLWlPUy1TaW11bGF0b3ItY29tbWFuZC1saW5lLXRvb2wKQEAgLTAsMCArMSwxNjggQEAKKyMh
L3Vzci9iaW4vcGVybCAtdworCisjIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMgQ2hlY2tzIGlmIFhjb2RlIHN1cHBvcnRzIGJ1aWxkaW5nIGEgY29tbWFuZCBsaW5lIHRv
b2wgZm9yIHRoZSBpT1MgU2ltdWxhdG9yLgorIyBJZiBub3QsIHRoZW4gY3JlYXRlcyB4Y3NwZWMg
ZmlsZXMgaW4gdGhlIGlPUyBTaW11bGF0b3IgU0RLIGZvciBhIGNvbW1hbmQgbGluZQorIyB0b29s
IHByb2R1Y3QtIGFuZCBwYWNrYWdlLSB0eXBlIHVzaW5nIHRoZSBkZWZpbml0aW9ucyBpbiB0aGUg
T1MgWCBTREsgZm9yIHRoZQorIyBzYW1lIHR5cGVzLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p
bmdzOworCit1c2UgRmlsZTo6RmluZDsKK3VzZSBGaWxlOjpTcGVjOwordXNlIEZpbGU6OlRlbXAg
cXcodGVtcGZpbGUpOworCitzdWIgY3JlYXRlWGNvZGVTcGVjaWZpY2F0aW9uRnJvbVNwZWNpZmlj
YXRpb25BbmRJZCgkJCQpOworc3ViIHJlYWRYY29kZVNwZWNpZmljYXRpb25CeUlkKCQkKTsKK3N1
YiB4Y29kZVNES1NwZWNpZmljYXRpb25zUGF0aCgkKTsKKwordXNlIGNvbnN0YW50IENPTU1BTkRf
TElORV9QQUNLQUdFX1RZUEUgPT4gImNvbS5hcHBsZS5wYWNrYWdlLXR5cGUubWFjaC1vLWV4ZWN1
dGFibGUiOwordXNlIGNvbnN0YW50IENPTU1BTkRfTElORV9QUk9EVUNUX1RZUEUgPT4gImNvbS5h
cHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisKK215ICRpb3NTaW11bGF0b3JTREtTcGVjaWZpY2F0
aW9uc1BhdGggPSB4Y29kZVNES1NwZWNpZmljYXRpb25zUGF0aCgiaXBob25lc2ltdWxhdG9yIik7
CisKK215IEB4Y29kZVNwZWNpZmljYXRpb25GaWxlczsKK3N1YiB3YW50ZWQKK3sKKyAgICBteSAk
ZmlsZSA9ICRfOworCisgICAgIyBJZ25vcmUgaGlkZGVuIGZpbGVzL2RpcmVjdG9yaWVzLgorICAg
IGlmICgkZmlsZSA9fiAvXlwuLi8pIHsKKyAgICAgICAgJEZpbGU6OkZpbmQ6OnBydW5lID0gMTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJldHVybiBpZiAtZCAkZmlsZSB8fCAkZmls
ZSAhfiAvXC54Y3NwZWMkLzsKKworICAgIHB1c2ggQHhjb2RlU3BlY2lmaWNhdGlvbkZpbGVzLCAk
RmlsZTo6RmluZDo6bmFtZTsKK30KKworZmluZChcJndhbnRlZCwgJGlvc1NpbXVsYXRvclNES1Nw
ZWNpZmljYXRpb25zUGF0aCk7CisKK215ICRoYXNQYWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9v
bDsKK215ICRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbDsKK2ZvcmVhY2ggbXkgJHNw
ZWNpZmljYXRpb25GaWxlIChAeGNvZGVTcGVjaWZpY2F0aW9uRmlsZXMpIHsKKyAgICBsYXN0IGlm
ICRoYXNQYWNrYWdlVHlwZUZvckNvbW1hbmRMaW5lVG9vbCAmJiAkaGFzUHJvZHVjdFR5cGVGb3JD
b21tYW5kTGluZVRvb2w7CisgICAgaWYgKCEkaGFzUGFja2FnZVR5cGVGb3JDb21tYW5kTGluZVRv
b2wgJiYgcmVhZFhjb2RlU3BlY2lmaWNhdGlvbkJ5SWQoJHNwZWNpZmljYXRpb25GaWxlLCBDT01N
QU5EX0xJTkVfUEFDS0FHRV9UWVBFKSkgeworICAgICAgICAkaGFzUGFja2FnZVR5cGVGb3JDb21t
YW5kTGluZVRvb2wgPSAxOworICAgICAgICBuZXh0OworICAgIH0KKyAgICBpZiAoISRoYXNQcm9k
dWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbCAmJiByZWFkWGNvZGVTcGVjaWZpY2F0aW9uQnlJZCgk
c3BlY2lmaWNhdGlvbkZpbGUsIENPTU1BTkRfTElORV9QUk9EVUNUX1RZUEUpKSB7CisgICAgICAg
ICRoYXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbCA9IDE7CisgICAgICAgIG5leHQ7Cisg
ICAgfQorfQorCitpZiAoJGhhc1BhY2thZ2VUeXBlRm9yQ29tbWFuZExpbmVUb29sICYmICRoYXNQ
cm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbCkgeworICAgIGV4aXQoMCk7ICMgWGNvZGUga25v
d3MgaG93IHRvIGJ1aWxkIGEgY29tbWFuZCBsaW5lIHRvb2wgZm9yIHRoZSBpT1MgU2ltdWxhdG9y
LgorfQorCitteSAkbWFjb3N4U0RLU3BlY2lmaWNhdGlvbnNQYXRoID0geGNvZGVTREtTcGVjaWZp
Y2F0aW9uc1BhdGgoIm1hY29zeCIpOworaWYgKCEkaGFzUGFja2FnZVR5cGVGb3JDb21tYW5kTGlu
ZVRvb2wpIHsKKyAgICBteSAkcGFja2FnZVR5cGVzRm9yTWFjT1NYUGF0aCA9IEZpbGU6OlNwZWMt
PmNhdGZpbGUoJG1hY29zeFNES1NwZWNpZmljYXRpb25zUGF0aCwgIk1hY09TWCBQYWNrYWdlIFR5
cGVzLnhjc3BlYyIpOworICAgIG15ICRwYWNrYWdlVHlwZXNGb3JXZWJLaXREZXZlbG9wbWVudFBh
dGggPSBGaWxlOjpTcGVjLT5jYXRmaWxlKCRpb3NTaW11bGF0b3JTREtTcGVjaWZpY2F0aW9uc1Bh
dGgsICJpUGhvbmUgU2ltdWxhdG9yIFBhY2thZ2VUeXBlcyBGb3IgV2ViS2l0IERldmVsb3BtZW50
Lnhjc3BlYyIpOworICAgIGNyZWF0ZVhjb2RlU3BlY2lmaWNhdGlvbkZyb21TcGVjaWZpY2F0aW9u
QW5kSWQoJHBhY2thZ2VUeXBlc0ZvcldlYktpdERldmVsb3BtZW50UGF0aCwgJHBhY2thZ2VUeXBl
c0Zvck1hY09TWFBhdGgsIENPTU1BTkRfTElORV9QQUNLQUdFX1RZUEUpOworfQorCitpZiAoISRo
YXNQcm9kdWN0VHlwZUZvckNvbW1hbmRMaW5lVG9vbCkgeworICAgIG15ICRwcm9kdWN0VHlwZXNG
b3JNYWNPU1hQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbWFjb3N4U0RLU3BlY2lmaWNhdGlv
bnNQYXRoLCAiTWFjT1NYIFByb2R1Y3QgVHlwZXMueGNzcGVjIik7CisgICAgbXkgJHByb2R1Y3RU
eXBlc0ZvcldlYktpdERldmVsb3BtZW50UGF0aCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJGlvc1Np
bXVsYXRvclNES1NwZWNpZmljYXRpb25zUGF0aCwgImlQaG9uZSBTaW11bGF0b3IgUHJvZHVjdFR5
cGVzIEZvciBXZWJLaXQgRGV2ZWxvcG1lbnQueGNzcGVjIik7CisgICAgY3JlYXRlWGNvZGVTcGVj
aWZpY2F0aW9uRnJvbVNwZWNpZmljYXRpb25BbmRJZCgkcHJvZHVjdFR5cGVzRm9yV2ViS2l0RGV2
ZWxvcG1lbnRQYXRoLCAkcHJvZHVjdFR5cGVzRm9yTWFjT1NYUGF0aCwgQ09NTUFORF9MSU5FX1BS
T0RVQ1RfVFlQRSk7Cit9CisKK3N1YiB3cml0ZVhjb2RlU3BlY2lmaWNhdGlvbigkJCkKK3sKKyAg
ICBteSAoJHhjb2RlU3BlY2lmaWNhdGlvbkZpbGUsICRzcGVjaWZpY2F0aW9uKSA9IEBfOworICAg
IG15ICgkdGVtcEZpbGVIYW5kbGUsICR0ZW1wRmlsZW5hbWUpID0gdGVtcGZpbGUoIndlYmtpdC14
Y3NwZWNYWFhYWFhYIiwgVU5MSU5LID0+IDEpOworICAgIHByaW50ICR0ZW1wRmlsZUhhbmRsZSAk
c3BlY2lmaWNhdGlvbjsKKyAgICBjbG9zZSgkdGVtcEZpbGVIYW5kbGUpOworICAgIHN5c3RlbSgi
L3Vzci9saWJleGVjL1BsaXN0QnVkZHkgLXggLWMgJ2NsZWFyIGFycmF5JyAnJHhjb2RlU3BlY2lm
aWNhdGlvbkZpbGUnID4gL2Rldi9udWxsIikgPT0gMCBvciBkaWUgIlBsaXN0QnVkZHkgZXhpdGVk
IHdpdGggJD86ICQhIjsKKyAgICBzeXN0ZW0oIi91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IC14IC1j
ICdhZGQgMCBkaWN0JyAnJHhjb2RlU3BlY2lmaWNhdGlvbkZpbGUnID4gL2Rldi9udWxsIikgPT0g
MCBvciBkaWUgIlBsaXN0QnVkZHkgZXhpdGVkIHdpdGggJD86ICQhIjsKKyAgICBzeXN0ZW0oIi91
c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IC14IC1jICdtZXJnZSAkdGVtcEZpbGVuYW1lIDAnICckeGNv
ZGVTcGVjaWZpY2F0aW9uRmlsZScgPiAvZGV2L251bGwiKSA9PSAwIG9yIGRpZSAiUGxpc3RCdWRk
eSBleGl0ZWQgd2l0aCAkPzogJCEiOworfQorCitzdWIgcmVhZFhjb2RlU3BlY2lmaWNhdGlvbkJ5
SWQoJCQpCit7CisgICAgbXkgKCR4Y29kZVNwZWNpZmljYXRpb25GaWxlLCAkaWQpID0gQF87Cisg
ICAgb3BlbihQTElTVF9CVUREWSwgIi18IiwgIi91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IiwgIi14
IiwgIi1jIiwgIlByaW50IiwgJHhjb2RlU3BlY2lmaWNhdGlvbkZpbGUpIG9yIGRpZSAiRmFpbGVk
IHRvIHJ1biBQbGlzdEJ1ZGR5OiAkISI7CisgICAgbXkgJGZvdW5kU3RhcnRPZlNwZWNpZmljYXRp
b25zQXJyYXk7CisgICAgd2hpbGUgKDxQTElTVF9CVUREWT4pIHsKKyAgICAgICAgaWYgKC9ePGFy
cmF5PiQvKSB7CisgICAgICAgICAgICAkZm91bmRTdGFydE9mU3BlY2lmaWNhdGlvbnNBcnJheSA9
IDE7CisgICAgICAgICAgICBsYXN0OworICAgICAgICB9CisgICAgfQorICAgIGlmICghJGZvdW5k
U3RhcnRPZlNwZWNpZmljYXRpb25zQXJyYXkpIHsKKyAgICAgICByZXR1cm4gIiI7ICMgTm90IGEg
WGNvZGUgc3BlY2lmaWNhdGlvbiBmaWxlLgorICAgIH0KKyAgICBteSAkcG9zaXRpb24gPSAtMTsK
KyAgICBteSAkZm91bmRJZGVudGZpZXJLZXkgPSAwOworICAgIG15ICRmb3VuZFNwZWNpZmljYXRp
b24gPSAwOworICAgIHdoaWxlICg8UExJU1RfQlVERFk+KSB7CisgICAgICAgIGlmICgvXlxzPGRp
Y3Q+JC8pIHsKKyAgICAgICAgICAgICsrJHBvc2l0aW9uOworICAgICAgICAgICAgbmV4dDsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoISRmb3VuZElkZW50ZmllcktleSAmJiAvXlxzXHM8a2V5Pklk
ZW50aWZpZXI8XC9rZXk+JC8pIHsKKyAgICAgICAgICAgICRmb3VuZElkZW50ZmllcktleSA9IDE7
CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAgICAgIGlmICgkZm91bmRJZGVudGZp
ZXJLZXkgJiYgL15cc1xzPHN0cmluZz4oW148XSspPFwvc3RyaW5nPiQvKSB7CisgICAgICAgICAg
ICBpZiAoJDEgZXEgJGlkKSB7CisgICAgICAgICAgICAgICAgJGZvdW5kU3BlY2lmaWNhdGlvbiA9
IDE7CisgICAgICAgICAgICAgICAgbGFzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICRm
b3VuZElkZW50ZmllcktleSA9IDA7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAg
fQorICAgIGNsb3NlKFBMSVNUX0JVRERZKTsKKyAgICBpZiAoJGZvdW5kU3BlY2lmaWNhdGlvbikg
eworICAgICAgICBjaG9tcChteSAkcmVzdWx0ID0gYC91c3IvbGliZXhlYy9QbGlzdEJ1ZGR5IC14
IC1jICdQcmludCAkcG9zaXRpb24nICckeGNvZGVTcGVjaWZpY2F0aW9uRmlsZSdgKTsKKyAgICAg
ICAgZGllICJGYWlsZWQgdG8gcnVuIFBsaXN0QnVkZHkiIGlmICQ/OworICAgICAgICByZXR1cm4g
JHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuICIiOyAjIERpZCBub3QgZmluZCBpZC4KK30KKwor
c3ViIHhjb2RlU0RLU3BlY2lmaWNhdGlvbnNQYXRoKCQpCit7CisgICAgbXkgKCRzZGtOYW1lKSA9
IEBfOworICAgIGNob21wKG15ICRzZGtQbGF0Zm9ybURpcmVjdG9yeSA9IGB4Y3J1biAtLXNkayAn
JHNka05hbWUnIC0tc2hvdy1zZGstcGxhdGZvcm0tcGF0aGApOworICAgIGRpZSAiRmFpbGVkIHRv
IGdldCBTREsgcGxhdGZvcm0gcGF0aCBmcm9tIHhjcnVuIiBpZiAkPzsKKworICAgIHJldHVybiBG
aWxlOjpTcGVjLT5jYXRkaXIoJHNka1BsYXRmb3JtRGlyZWN0b3J5LCAiRGV2ZWxvcGVyIiwgIkxp
YnJhcnkiLCAiWGNvZGUiLCAiU3BlY2lmaWNhdGlvbnMiKTsKK30KKworc3ViIGNyZWF0ZVhjb2Rl
U3BlY2lmaWNhdGlvbkZyb21TcGVjaWZpY2F0aW9uQW5kSWQoJCQkKQoreworICAgIG15ICgkdGFy
Z2V0WGNvZGVTcGVjaWZpY2F0aW9uRmlsZSwgJHNvdXJjZVhjb2RlU3BlY2lmaWNhdGlvbkZpbGUs
ICRpZCkgPSBAXzsKKyAgICBteSAkc3BlY2lmaWNhdGlvbiA9IHJlYWRYY29kZVNwZWNpZmljYXRp
b25CeUlkKCRzb3VyY2VYY29kZVNwZWNpZmljYXRpb25GaWxlLCAkaWQpOworICAgIGlmICghJHNw
ZWNpZmljYXRpb24pIHsKKyAgICAgICAgZGllICJGYWlsZWQgdG8gZmluZCAnJGlkJyBpbiAnJHNv
dXJjZVhjb2RlU3BlY2lmaWNhdGlvbkZpbGUnLlxuIjsKKyAgICB9CisgICAgd3JpdGVYY29kZVNw
ZWNpZmljYXRpb24oJHRhcmdldFhjb2RlU3BlY2lmaWNhdGlvbkZpbGUsICRzcGVjaWZpY2F0aW9u
KTsKKyAgICBwcmludCAiU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgJyR0YXJnZXRYY29kZVNwZWNpZmlj
YXRpb25GaWxlJy5cbiI7Cit9Cg==
</data>
<flag name="review"
          id="262106"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>