<?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>134522</bug_id>
          
          <creation_ts>2014-07-01 16:30:38 -0700</creation_ts>
          <short_desc>Remove duplication in code that prepares the user agent string on Mac and iOS</short_desc>
          <delta_ts>2014-07-02 16:10:15 -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>WebKit Misc.</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>
          
          <blocked>134524</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Rowe (bdash)">mrowe</reporter>
          <assigned_to name="Mark Rowe (bdash)">mrowe</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1019823</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-07-01 16:30:38 -0700</bug_when>
    <thetext>We have three copies of the code that formats the WebKit version for use in the user agent string. We should move the logic to WebCore so it can be shared between WebKit and WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1019826</commentid>
    <comment_count>1</comment_count>
      <attachid>234216</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-07-01 16:40:59 -0700</bug_when>
    <thetext>Created attachment 234216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020052</commentid>
    <comment_count>2</comment_count>
      <attachid>234216</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-07-02 14:50:05 -0700</bug_when>
    <thetext>Comment on attachment 234216
Patch

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

&gt; Source/WebCore/page/cocoa/UserAgent.mm:51
&gt; +    // If the version is longer than 3 digits then the leading digits represent the version of the OS. Our user agent
&gt; +    // string should not include the leading digits, so strip them off and report the rest as the version. &lt;rdar://problem/4997547&gt;
&gt; +    NSRange nonDigitRange = [fullWebKitVersion rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]];
&gt; +    if (nonDigitRange.location == NSNotFound &amp;&amp; fullWebKitVersion.length &gt; 3)
&gt; +        return [fullWebKitVersion substringFromIndex:fullWebKitVersion.length - 3];
&gt; +    if (nonDigitRange.location != NSNotFound &amp;&amp; nonDigitRange.location &gt; 3)
&gt; +        return [fullWebKitVersion substringFromIndex:nonDigitRange.location - 3];

Sad that we go to NSString and back.

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:66
&gt; +    return [[NSBundle bundleForClass:NSClassFromString(@&quot;WKView&quot;)] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];

There&apos;s a WKView in WebCore. Is that really the one we want?

&gt; Source/WebKit2/UIProcess/mac/WebPageProxyMac.mm:102
&gt; +    return [[NSBundle bundleForClass:NSClassFromString(@&quot;WKView&quot;)] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];

WKView again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020063</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-07-02 15:09:00 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:66
&gt; &gt; +    return [[NSBundle bundleForClass:NSClassFromString(@&quot;WKView&quot;)] objectForInfoDictionaryKey:(NSString *)kCFBundleVersionKey];
&gt; 
&gt; There&apos;s a WKView in WebCore. Is that really the one we want?

The WKView class lives in WebKit2. I&apos;ll change to WKWebView though since that&apos;s now WebKit2&apos;s primary class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1020089</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2014-07-02 16:10:15 -0700</bug_when>
    <thetext>Landed in r170734.
&lt;https://trac.webkit.org/r170734&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>234216</attachid>
            <date>2014-07-01 16:40:59 -0700</date>
            <delta_ts>2014-07-02 14:50:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134522-20140701164040.patch</filename>
            <type>text/plain</type>
            <size>12520</size>
            <attacher name="Mark Rowe (bdash)">mrowe</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwNTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk0ZmVlOTg3MDI5ODRm
OWQxYTIwYmUwY2Y0Y2EwM2ExNDQwM2M2NC4uYjM3YTNmMDI3MmRiNDkwMDAyNGU1OTI2OWI3NzQ0
YjYzMTQ4NmE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE0LTA3LTAxICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKKyAgICAgICAgPGh0dHBzOi8vd2Via2l0Lm9yZy9i
LzEzNDUyMj4gUmVtb3ZlIGR1cGxpY2F0aW9uIGluIGNvZGUgdGhhdCBwcmVwYXJlcyB0aGUgdXNl
ciBhZ2VudCBzdHJpbmcgb24gTWFjIGFuZCBpT1MKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhZ2UvY29jb2EvVXNlckFnZW50Lmg6CisgICAgICAg
ICogcGFnZS9jb2NvYS9Vc2VyQWdlbnQubW06CisgICAgICAgIChXZWJDb3JlOjp1c2VyVmlzaWJs
ZVdlYktpdEJ1bmRsZVZlcnNpb25Gcm9tRnVsbFZlcnNpb24pOiBNb3ZlZCBmcm9tIFdlYktpdDIu
CisgICAgICAgICogcGFnZS9pb3MvVXNlckFnZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKTogUGFzcyB0aGUgV2ViS2l0IGJ1
bmRsZSB2ZXJzaW9uIHRocm91Z2ggdXNlclZpc2libGVXZWJLaXRCdW5kbGVWZXJzaW9uRnJvbUZ1
bGxWZXJzaW9uCisgICAgICAgIGJlZm9yZSBpbmNsdWRpbmcgaXQgaW4gdGhlIHVzZXIgYWdlbnQg
c3RyaW5nLgorICAgICAgICAqIHBhZ2UvbWFjL1VzZXJBZ2VudE1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6IERpdHRvLgorCisy
MDE0LTA3LTAxICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CisKICAgICAgICAgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzEzNDUyMT4gaU9TIHNob3VsZCB1c2Ugc2hhcmVkIGNvZGUgdG8gZGV0
ZXJtaW5lIHRoZSBzeXN0ZW0gbWFya2V0aW5nIHZlcnNpb24KIAogICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA5MTRjNWVmMTBjODRmOWNjZjhm
MmQzNWZmNTcyYmFiYjBiNjNiYzc2Li5mNTE0YTZiMjlkZGFhM2U5NjQ0YWNiM2I3YmZkNzFmZWQ1
ZDI4NzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTQtMDctMDEgIE1h
cmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KKworICAgICAgICA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTM0NTIyPiBSZW1vdmUgZHVwbGljYXRpb24gaW4gY29kZSB0aGF0IHByZXBhcmVzIHRoZSB1
c2VyIGFnZW50IHN0cmluZyBvbiBNYWMgYW5kIGlPUworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
d2ViS2l0QnVuZGxlVmVyc2lvblN0cmluZyk6IFJldHVybiB0aGUgZW50aXJlIENGQnVuZGxlVmVy
c2lvbiBub3cgdGhhdCBXZWJDb3JlIGhhbmRsZXMgZm9ybWF0dGluZyBpdC4KKyAgICAgICAgKCtb
V2ViVmlldyBfc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lOl0pOgorCiAyMDE0
LTA2LTI5ICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2LndzPgogCiAgICAgICAgIEFkZCBzdXBwb3J0
IGZvciBIVE1MSW1hZ2VFbGVtZW50J3Mgc2l6ZXMgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTI5
M2MzOGQyOGI3OTYyYzA4Mzg5NGZlMjlhOGMxOWMzNWU3NTY4OS4uN2E2YTc5ZTZlNzY1MjBlYjU3
NDA3Y2Y0MzNhNjk2NzU3ZmRlM2NhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE4IEBACiAyMDE0
LTA3LTAxICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKKyAgICAgICAgPGh0dHBzOi8v
d2Via2l0Lm9yZy9iLzEzNDUyMj4gUmVtb3ZlIGR1cGxpY2F0aW9uIGluIGNvZGUgdGhhdCBwcmVw
YXJlcyB0aGUgdXNlciBhZ2VudCBzdHJpbmcgb24gTWFjIGFuZCBpT1MKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0Ojp3ZWJLaXRCdW5kbGVWZXJzaW9uU3RyaW5n
KTogUmV0dXJuIHRoZSBlbnRpcmUgQ0ZCdW5kbGVWZXJzaW9uIG5vdyB0aGF0IFdlYkNvcmUgaGFu
ZGxlcyBmb3JtYXR0aW5nIGl0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YW5k
YXJkVXNlckFnZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bToKKyAgICAgICAgKFdlYktpdDo6d2ViS2l0QnVuZGxlVmVyc2lvblN0cmluZyk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KToKKworMjAx
NC0wNy0wMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgorCiAgICAgICAgIDxodHRwczov
L3dlYmtpdC5vcmcvYi8xMzQ1MjE+IGlPUyBzaG91bGQgdXNlIHNoYXJlZCBjb2RlIHRvIGRldGVy
bWluZSB0aGUgc3lzdGVtIG1hcmtldGluZyB2ZXJzaW9uCiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1Vz
ZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9Vc2VyQWdlbnQuaAppbmRleCAx
YmZmMzQwNzhlYjBkMzM1ZjFiYjg3NDNmNTYxYzZkNDc3MjBkNGFhLi4xMDdkZGVjMTBlMGJhOGM3
YTJkNGU5ZjFiNzVkNjEzYWM2OTcxMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2NvY29hL1VzZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvVXNlckFn
ZW50LmgKQEAgLTI5LDggKzI5LDEyIEBACiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFw
cGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5n
JiB3ZWJraXRWZXJzaW9uU3RyaW5nKTsKKwogU3RyaW5nIHN5c3RlbU1hcmtldGluZ1ZlcnNpb25G
b3JVc2VyQWdlbnRTdHJpbmcoKTsKK1N0cmluZyB1c2VyVmlzaWJsZVdlYktpdEJ1bmRsZVZlcnNp
b25Gcm9tRnVsbFZlcnNpb24oY29uc3QgU3RyaW5nJik7CisKIH0KIAogI2VuZGlmIC8vIFVzZXJB
Z2VudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL1VzZXJBZ2VudC5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvVXNlckFnZW50Lm1tCmluZGV4IDk1MTY1YzY1
ZjE2MTkxYTZjYjQ3MGFkNzlhNmQ0MjUzZTk4ZTI1ZTIuLmYxMWM4MzEzM2FkZWZhMGIwNzQ5MjE2
NDhlMThmMWYxNzBlODQ2ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2Ev
VXNlckFnZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvVXNlckFnZW50Lm1t
CkBAIC0zOCw0ICszOCwxOCBAQCBTdHJpbmcgc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJB
Z2VudFN0cmluZygpCiAgICAgcmV0dXJuIFtzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uKCkgc3RyaW5n
QnlSZXBsYWNpbmdPY2N1cnJlbmNlc09mU3RyaW5nOkAiLiIgd2l0aFN0cmluZzpAIl8iXTsKIH0K
IAorU3RyaW5nIHVzZXJWaXNpYmxlV2ViS2l0QnVuZGxlVmVyc2lvbkZyb21GdWxsVmVyc2lvbihj
b25zdCBTdHJpbmcmIGZ1bGxXZWJLaXRWZXJzaW9uU3RyaW5nKQoreworICAgIE5TU3RyaW5nICpm
dWxsV2ViS2l0VmVyc2lvbiA9IGZ1bGxXZWJLaXRWZXJzaW9uU3RyaW5nOworCisgICAgLy8gSWYg
dGhlIHZlcnNpb24gaXMgbG9uZ2VyIHRoYW4gMyBkaWdpdHMgdGhlbiB0aGUgbGVhZGluZyBkaWdp
dHMgcmVwcmVzZW50IHRoZSB2ZXJzaW9uIG9mIHRoZSBPUy4gT3VyIHVzZXIgYWdlbnQKKyAgICAv
LyBzdHJpbmcgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSBsZWFkaW5nIGRpZ2l0cywgc28gc3RyaXAg
dGhlbSBvZmYgYW5kIHJlcG9ydCB0aGUgcmVzdCBhcyB0aGUgdmVyc2lvbi4gPHJkYXI6Ly9wcm9i
bGVtLzQ5OTc1NDc+CisgICAgTlNSYW5nZSBub25EaWdpdFJhbmdlID0gW2Z1bGxXZWJLaXRWZXJz
aW9uIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OltbTlNDaGFyYWN0ZXJTZXQgZGVjaW1hbERpZ2l0
Q2hhcmFjdGVyU2V0XSBpbnZlcnRlZFNldF1dOworICAgIGlmIChub25EaWdpdFJhbmdlLmxvY2F0
aW9uID09IE5TTm90Rm91bmQgJiYgZnVsbFdlYktpdFZlcnNpb24ubGVuZ3RoID4gMykKKyAgICAg
ICAgcmV0dXJuIFtmdWxsV2ViS2l0VmVyc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6ZnVsbFdlYktp
dFZlcnNpb24ubGVuZ3RoIC0gM107CisgICAgaWYgKG5vbkRpZ2l0UmFuZ2UubG9jYXRpb24gIT0g
TlNOb3RGb3VuZCAmJiBub25EaWdpdFJhbmdlLmxvY2F0aW9uID4gMykKKyAgICAgICAgcmV0dXJu
IFtmdWxsV2ViS2l0VmVyc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6bm9uRGlnaXRSYW5nZS5sb2Nh
dGlvbiAtIDNdOworICAgIHJldHVybiBmdWxsV2ViS2l0VmVyc2lvbjsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvVXNlckFn
ZW50SU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4
IDU4NjZkZWFmNjU1YmQ1ZDAyNDNjMTRhZTc2ODcxYTg3NzE2MDY2NjUuLjdmY2ZkYmI4N2ZhNGVk
NmRmZWU0MDk0OTkwNzQ3OWNmNjEyYjhiOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9Vc2Vy
QWdlbnRJT1MubW0KQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1T
dHJpbmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYg
YXBwbGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIHdlYmtpdFZlcnNpb25TdHJpbmcpCitTdHJp
bmcgc3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lLCBjb25zdCBTdHJpbmcmIGZ1bGxXZWJLaXRWZXJzaW9uU3RyaW5nKQogewog
ICAgIGlmIChDRlN0cmluZ1JlZiBvdmVycmlkZVVzZXJBZ2VudCA9IHdrR2V0VXNlckFnZW50KCkp
CiAgICAgICAgIHJldHVybiBvdmVycmlkZVVzZXJBZ2VudDsKQEAgLTQ0LDcgKzQ0LDcgQEAgU3Ry
aW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFw
cGxpY2F0aW9uTmFtZSwgY29uc3QKICAgICAgICAgQ0ZSZWxlYXNlKG92ZXJyaWRlKTsKICAgICB9
CiAKLSAgICBOU1N0cmluZyAqd2ViS2l0VmVyc2lvbiA9IHdlYmtpdFZlcnNpb25TdHJpbmc7Cisg
ICAgTlNTdHJpbmcgKndlYktpdFZlcnNpb24gPSB1c2VyVmlzaWJsZVdlYktpdEJ1bmRsZVZlcnNp
b25Gcm9tRnVsbFZlcnNpb24oZnVsbFdlYktpdFZlcnNpb25TdHJpbmcpOwogICAgIENGU3RyaW5n
UmVmIGRldmljZU5hbWUgPSB3a0dldERldmljZU5hbWUoKTsKICAgICBDRlN0cmluZ1JlZiBvc05h
bWVGb3JVc2VyQWdlbnQgPSB3a0dldE9TTmFtZUZvclVzZXJBZ2VudCgpOwogICAgIE5TU3RyaW5n
ICpvc01hcmtldGluZ1ZlcnNpb25TdHJpbmcgPSBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNl
ckFnZW50U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9Vc2Vy
QWdlbnRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9Vc2VyQWdlbnRNYWMubW0KaW5k
ZXggYTdkMDBiYWY1NGVmNDNiYjhjNzY1ZjliNjJlYjc2NGI3MWUxYzkwOC4uNmI0ZWM1NmM0Y2Jm
MmMyN2M1ZThhMWY2ZmQyYWIwZDgyYzg0YmE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvVXNlckFnZW50TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1Vz
ZXJBZ2VudE1hYy5tbQpAQCAtMzgsOSArMzgsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2Vy
cm9yIFVua25vd24gYXJjaGl0ZWN0dXJlCiAjZW5kaWYKIAotU3RyaW5nIHN0YW5kYXJkVXNlckFn
ZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29u
c3QgU3RyaW5nJiB3ZWJLaXRWZXJzaW9uU3RyaW5nKQorU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50
V2l0aEFwcGxpY2F0aW9uTmFtZShjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3Qg
U3RyaW5nJiBmdWxsV2ViS2l0VmVyc2lvblN0cmluZykKIHsKICAgICBTdHJpbmcgb3NWZXJzaW9u
ID0gc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0cmluZygpOworICAgIFN0cmlu
ZyB3ZWJLaXRWZXJzaW9uU3RyaW5nID0gdXNlclZpc2libGVXZWJLaXRCdW5kbGVWZXJzaW9uRnJv
bUZ1bGxWZXJzaW9uKGZ1bGxXZWJLaXRWZXJzaW9uU3RyaW5nKTsKIAogICAgIGlmIChhcHBsaWNh
dGlvbk5hbWUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81
LjAgKE1hY2ludG9zaDsgIiBQUk9DRVNTT1IgIiBNYWMgT1MgWCAiLCBvc1ZlcnNpb24sICIpIEFw
cGxlV2ViS2l0LyIsIHdlYktpdFZlcnNpb25TdHJpbmcsICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDM1MjgyZDlhMWJmYWFlOGU4
NDFkOGQ4YTUwMjIxYTU5NTRhZWExM2MuLjEwYzBmYWE2NmI5Y2Q1YmU5YTQzYjI4MThlNTYzY2Yy
YTRkNDJmMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTY3NywyMiAr
Njc3LDE0IEBAIHN0YXRpYyBDRk11dGFibGVTZXRSZWYgYWxsV2ViVmlld3NTZXQ7CiAKIEBpbXBs
ZW1lbnRhdGlvbiBXZWJWaWV3IChXZWJQcml2YXRlKQogCi1zdGF0aWMgU3RyaW5nIHVzZXJWaXNp
YmxlV2ViS2l0VmVyc2lvblN0cmluZygpCitzdGF0aWMgU3RyaW5nIHdlYktpdEJ1bmRsZVZlcnNp
b25TdHJpbmcoKQogewotICAgIC8vIElmIHRoZSB2ZXJzaW9uIGlzIGxvbmdlciB0aGFuIDMgZGln
aXRzIHRoZW4gdGhlIGxlYWRpbmcgZGlnaXRzIHJlcHJlc2VudCB0aGUgdmVyc2lvbiBvZiB0aGUg
T1MuIE91ciB1c2VyIGFnZW50Ci0gICAgLy8gc3RyaW5nIHNob3VsZCBub3QgaW5jbHVkZSB0aGUg
bGVhZGluZyBkaWdpdHMsIHNvIHN0cmlwIHRoZW0gb2ZmIGFuZCByZXBvcnQgdGhlIHJlc3QgYXMg
dGhlIHZlcnNpb24uIDxyZGFyOi8vcHJvYmxlbS80OTk3NTQ3PgotICAgIE5TU3RyaW5nICpmdWxs
VmVyc2lvbiA9IFtbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6W1dlYlZpZXcgY2xhc3NdXSBvYmpl
Y3RGb3JJbmZvRGljdGlvbmFyeUtleTooTlNTdHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XTsK
LSAgICBOU1JhbmdlIG5vbkRpZ2l0UmFuZ2UgPSBbZnVsbFZlcnNpb24gcmFuZ2VPZkNoYXJhY3Rl
ckZyb21TZXQ6W1tOU0NoYXJhY3RlclNldCBkZWNpbWFsRGlnaXRDaGFyYWN0ZXJTZXRdIGludmVy
dGVkU2V0XV07Ci0gICAgaWYgKG5vbkRpZ2l0UmFuZ2UubG9jYXRpb24gPT0gTlNOb3RGb3VuZCAm
JiBmdWxsVmVyc2lvbi5sZW5ndGggPiAzKQotICAgICAgICByZXR1cm4gW2Z1bGxWZXJzaW9uIHN1
YnN0cmluZ0Zyb21JbmRleDpmdWxsVmVyc2lvbi5sZW5ndGggLSAzXTsKLSAgICBpZiAobm9uRGln
aXRSYW5nZS5sb2NhdGlvbiAhPSBOU05vdEZvdW5kICYmIG5vbkRpZ2l0UmFuZ2UubG9jYXRpb24g
PiAzKQotICAgICAgICByZXR1cm4gW2Z1bGxWZXJzaW9uIHN1YnN0cmluZ0Zyb21JbmRleDpub25E
aWdpdFJhbmdlLmxvY2F0aW9uIC0gM107Ci0gICAgcmV0dXJuIGZ1bGxWZXJzaW9uOworICAgIHJl
dHVybiBbW05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOltXZWJWaWV3IGNsYXNzXV0gb2JqZWN0Rm9y
SW5mb0RpY3Rpb25hcnlLZXk6KE5TU3RyaW5nICopa0NGQnVuZGxlVmVyc2lvbktleV07CiB9CiAK
ICsgKE5TU3RyaW5nICopX3N0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZTooTlNT
dHJpbmcgKilhcHBsaWNhdGlvbk5hbWUKIHsKLSAgICByZXR1cm4gc3RhbmRhcmRVc2VyQWdlbnRX
aXRoQXBwbGljYXRpb25OYW1lKGFwcGxpY2F0aW9uTmFtZSwgdXNlclZpc2libGVXZWJLaXRWZXJz
aW9uU3RyaW5nKCkpOworICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlv
bk5hbWUoYXBwbGljYXRpb25OYW1lLCB3ZWJLaXRCdW5kbGVWZXJzaW9uU3RyaW5nKCkpOwogfQog
CiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQppbmRleCBjMzEyNWViMGIxNzQwNGUyMjgzZWY4ZDY1YWY4OGRkOTlm
NzA2YjAxLi43OWM0ODUxOWJmNWQyMGE1YWJmNWRjNjU4YTA5NGZhNjg3MjkxYWE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNjEs
MjIgKzYxLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwbGF0Zm9ybUluaXRpYWxpemUoKQogewog
fQogCi1zdGF0aWMgU3RyaW5nIHVzZXJWaXNpYmxlV2ViS2l0VmVyc2lvblN0cmluZygpCitzdGF0
aWMgU3RyaW5nIHdlYktpdEJ1bmRsZVZlcnNpb25TdHJpbmcoKQogewotICAgIC8vIElmIHRoZSB2
ZXJzaW9uIGlzIGxvbmdlciB0aGFuIDMgZGlnaXRzIHRoZW4gdGhlIGxlYWRpbmcgZGlnaXRzIHJl
cHJlc2VudCB0aGUgdmVyc2lvbiBvZiB0aGUgT1MuIE91ciB1c2VyIGFnZW50Ci0gICAgLy8gc3Ry
aW5nIHNob3VsZCBub3QgaW5jbHVkZSB0aGUgbGVhZGluZyBkaWdpdHMsIHNvIHN0cmlwIHRoZW0g
b2ZmIGFuZCByZXBvcnQgdGhlIHJlc3QgYXMgdGhlIHZlcnNpb24uIDxyZGFyOi8vcHJvYmxlbS80
OTk3NTQ3PgotICAgIE5TU3RyaW5nICpmdWxsVmVyc2lvbiA9IFtbTlNCdW5kbGUgYnVuZGxlRm9y
Q2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJXS1ZpZXciKV0gb2JqZWN0Rm9ySW5mb0RpY3Rpb25h
cnlLZXk6KE5TU3RyaW5nICopa0NGQnVuZGxlVmVyc2lvbktleV07Ci0gICAgTlNSYW5nZSBub25E
aWdpdFJhbmdlID0gW2Z1bGxWZXJzaW9uIHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OltbTlNDaGFy
YWN0ZXJTZXQgZGVjaW1hbERpZ2l0Q2hhcmFjdGVyU2V0XSBpbnZlcnRlZFNldF1dOwotICAgIGlm
IChub25EaWdpdFJhbmdlLmxvY2F0aW9uID09IE5TTm90Rm91bmQgJiYgZnVsbFZlcnNpb24ubGVu
Z3RoID4gMykKLSAgICAgICAgcmV0dXJuIFtmdWxsVmVyc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6
ZnVsbFZlcnNpb24ubGVuZ3RoIC0gM107Ci0gICAgaWYgKG5vbkRpZ2l0UmFuZ2UubG9jYXRpb24g
IT0gTlNOb3RGb3VuZCAmJiBub25EaWdpdFJhbmdlLmxvY2F0aW9uID4gMykKLSAgICAgICAgcmV0
dXJuIFtmdWxsVmVyc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6bm9uRGlnaXRSYW5nZS5sb2NhdGlv
biAtIDNdOwotICAgIHJldHVybiBmdWxsVmVyc2lvbjsKKyAgICByZXR1cm4gW1tOU0J1bmRsZSBi
dW5kbGVGb3JDbGFzczpOU0NsYXNzRnJvbVN0cmluZyhAIldLVmlldyIpXSBvYmplY3RGb3JJbmZv
RGljdGlvbmFyeUtleTooTlNTdHJpbmcgKilrQ0ZCdW5kbGVWZXJzaW9uS2V5XTsKIH0KIAotU3Ry
aW5nIFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNh
dGlvbk5hbWUpCitTdHJpbmcgV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCkKIHsKLSAgICByZXR1cm4gc3RhbmRh
cmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGFwcGxpY2F0aW9uTmFtZSwgdXNlclZpc2li
bGVXZWJLaXRWZXJzaW9uU3RyaW5nKCkpOworICAgIHJldHVybiBzdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWUoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LCB3ZWJLaXRCdW5k
bGVWZXJzaW9uU3RyaW5nKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0SXNTcGVha2lu
Zyhib29sJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KaW5kZXggNzEwMzkxOGI0NWZlZGZiNTg0MWQxYzRkNzAyNDM3NzM3ZDFhNmZkZS4uN2Ey
NmJmODdlZjA5NWY5MmEwY2I0ZWRkYmU4NDg0OGQ3Njk1YTlmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTk3LDIyICs5NywxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBzZXRTaG91bGRV
c2VJbXBsaWNpdFJ1YmJlckJhbmRDb250cm9sKGNsaWVudEV4cGVjdHNMZWdhY3lJbXBsaWNpdFJ1
YmJlckJhbmRDb250cm9sKTsKIH0KIAotc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVdlYktpdFZl
cnNpb25TdHJpbmcoKQorc3RhdGljIFN0cmluZyB3ZWJLaXRCdW5kbGVWZXJzaW9uU3RyaW5nKCkK
IHsKLSAgICAvLyBJZiB0aGUgdmVyc2lvbiBpcyBsb25nZXIgdGhhbiAzIGRpZ2l0cyB0aGVuIHRo
ZSBsZWFkaW5nIGRpZ2l0cyByZXByZXNlbnQgdGhlIHZlcnNpb24gb2YgdGhlIE9TLiBPdXIgdXNl
ciBhZ2VudAotICAgIC8vIHN0cmluZyBzaG91bGQgbm90IGluY2x1ZGUgdGhlIGxlYWRpbmcgZGln
aXRzLCBzbyBzdHJpcCB0aGVtIG9mZiBhbmQgcmVwb3J0IHRoZSByZXN0IGFzIHRoZSB2ZXJzaW9u
LiA8cmRhcjovL3Byb2JsZW0vNDk5NzU0Nz4KLSAgICBOU1N0cmluZyAqZnVsbFZlcnNpb24gPSBb
W05TQnVuZGxlIGJ1bmRsZUZvckNsYXNzOk5TQ2xhc3NGcm9tU3RyaW5nKEAiV0tWaWV3IildIG9i
amVjdEZvckluZm9EaWN0aW9uYXJ5S2V5OihOU1N0cmluZyAqKWtDRkJ1bmRsZVZlcnNpb25LZXld
OwotICAgIE5TUmFuZ2Ugbm9uRGlnaXRSYW5nZSA9IFtmdWxsVmVyc2lvbiByYW5nZU9mQ2hhcmFj
dGVyRnJvbVNldDpbW05TQ2hhcmFjdGVyU2V0IGRlY2ltYWxEaWdpdENoYXJhY3RlclNldF0gaW52
ZXJ0ZWRTZXRdXTsKLSAgICBpZiAobm9uRGlnaXRSYW5nZS5sb2NhdGlvbiA9PSBOU05vdEZvdW5k
ICYmIGZ1bGxWZXJzaW9uLmxlbmd0aCA+IDMpCi0gICAgICAgIHJldHVybiBbZnVsbFZlcnNpb24g
c3Vic3RyaW5nRnJvbUluZGV4OmZ1bGxWZXJzaW9uLmxlbmd0aCAtIDNdOwotICAgIGlmIChub25E
aWdpdFJhbmdlLmxvY2F0aW9uICE9IE5TTm90Rm91bmQgJiYgbm9uRGlnaXRSYW5nZS5sb2NhdGlv
biA+IDMpCi0gICAgICAgIHJldHVybiBbZnVsbFZlcnNpb24gc3Vic3RyaW5nRnJvbUluZGV4Om5v
bkRpZ2l0UmFuZ2UubG9jYXRpb24gLSAzXTsKLSAgICByZXR1cm4gZnVsbFZlcnNpb247CisgICAg
cmV0dXJuIFtbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJXS1Zp
ZXciKV0gb2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXk6KE5TU3RyaW5nICopa0NGQnVuZGxlVmVy
c2lvbktleV07CiB9CiAKIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNv
bnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KQogewotICAgIHJldHVybiBz
dGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50LCB1c2VyVmlzaWJsZVdlYktpdFZlcnNpb25TdHJpbmcoKSk7CisgICAgcmV0dXJuIHN0
YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShhcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQsIHdlYktpdEJ1bmRsZVZlcnNpb25TdHJpbmcoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRJc1NwZWFraW5nKGJvb2wmIGlzU3BlYWtpbmcpCg==
</data>
<flag name="review"
          id="258757"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>