<?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>146658</bug_id>
          
          <creation_ts>2015-07-06 15:56:56 -0700</creation_ts>
          <short_desc>Update default link action sheets for app links</short_desc>
          <delta_ts>2015-07-11 16:00:44 -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>WebKit2</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>adele</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1107253</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-06 15:56:56 -0700</bug_when>
    <thetext>* SUMMARY
Update the default action sheets for links to include an &quot;Open in “App Name&quot;&quot; action in addition to the usual &quot;Open&quot; action for links that have an associated app link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107254</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-06 15:57:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/21221902&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107258</commentid>
    <comment_count>2</comment_count>
      <attachid>256249</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-06 16:11:22 -0700</bug_when>
    <thetext>Created attachment 256249
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107259</commentid>
    <comment_count>3</comment_count>
      <attachid>256249</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-06 16:12:30 -0700</bug_when>
    <thetext>Comment on attachment 256249
[PATCH] Proposed Fix

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementAction.h:40
&gt; +    _WKElementActionTypeOpenInExternalApplication,

We could wrap this enum value in a HAVE(APP_LINKS) guard, kind of like the AddToReadingList value below. Let me know what you think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107328</commentid>
    <comment_count>4</comment_count>
      <attachid>256249</attachid>
    <who name="Enrica Casucci">enrica</who>
    <bug_when>2015-07-06 18:23:44 -0700</bug_when>
    <thetext>Comment on attachment 256249
[PATCH] Proposed Fix

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

The patch looks good to me.

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementAction.h:40
&gt;&gt; +    _WKElementActionTypeOpenInExternalApplication,
&gt; 
&gt; We could wrap this enum value in a HAVE(APP_LINKS) guard, kind of like the AddToReadingList value below. Let me know what you think.

That sounds right.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107329</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-07-06 18:26:53 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 256249 [details]
&gt; [PATCH] Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=256249&amp;action=review
&gt; 
&gt; The patch looks good to me.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementAction.h:40
&gt; &gt;&gt; +    _WKElementActionTypeOpenInExternalApplication,
&gt; &gt; 
&gt; &gt; We could wrap this enum value in a HAVE(APP_LINKS) guard, kind of like the AddToReadingList value below. Let me know what you think.
&gt; 
&gt; That sounds right.

We can’t use the HAVE macro in a framework header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107330</commentid>
    <comment_count>6</comment_count>
      <attachid>256249</attachid>
    <who name="">mitz</who>
    <bug_when>2015-07-06 18:29:50 -0700</bug_when>
    <thetext>Comment on attachment 256249
[PATCH] Proposed Fix

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

&gt; Source/WebCore/English.lproj/Localizable.strings:413
&gt; +&quot;Open in External Application ActionSheet Link&quot; = &quot;Open in â%@â&quot;;

This is not an appropriate key. The key should generally be the same as the value. If there’s ambiguity, the key should be the same as the value plus a disambiguating parenthetical, but in this case there’s no ambiguity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107331</commentid>
    <comment_count>7</comment_count>
      <attachid>256249</attachid>
    <who name="">mitz</who>
    <bug_when>2015-07-06 18:31:54 -0700</bug_when>
    <thetext>Comment on attachment 256249
[PATCH] Proposed Fix

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

&gt;&gt;&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKElementAction.h:40
&gt;&gt;&gt;&gt; +    _WKElementActionTypeOpenInExternalApplication,
&gt;&gt;&gt; 
&gt;&gt;&gt; We could wrap this enum value in a HAVE(APP_LINKS) guard, kind of like the AddToReadingList value below. Let me know what you think.
&gt;&gt; 
&gt;&gt; That sounds right.
&gt; 
&gt; We can’t use the HAVE macro in a framework header.

An availability annotation is required here.

&gt; Source/WebKit2/UIProcess/ApplicationStateTracker.h:44
&gt; +    bool hasEntitlement(NSString *entitlement) const;

Why is this a member function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107332</commentid>
    <comment_count>8</comment_count>
      <attachid>256249</attachid>
    <who name="">mitz</who>
    <bug_when>2015-07-06 18:35:54 -0700</bug_when>
    <thetext>Comment on attachment 256249
[PATCH] Proposed Fix

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

&gt; Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:89
&gt; +static _WKElementAction *openInExternalApplicationElementActionForURL(NSURL *url)
&gt; +{
&gt; +    if (!applicationHasCanGetAppLinkEntitlement())
&gt; +        return nil;
&gt; +
&gt; +    __block _WKElementAction *action = nil;
&gt; +
&gt; +    dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
&gt; +    [LSAppLink getAppLinkWithURL:url completionHandler:^(LSAppLink *appLink, NSError *error) {
&gt; +        if (appLink) {
&gt; +            NSString *localizedAppName = [appLink.targetApplicationProxy localizedNameForContext:nil];
&gt; +            NSString *title = [NSString stringWithFormat:WEB_UI_STRING_KEY(&quot;Open in â%@â&quot;, &quot;Open in External Application ActionSheet Link&quot;, &quot;Title for Open in External Application Link action button&quot;), localizedAppName];
&gt; +            action = [[_WKElementAction elementActionWithType:_WKElementActionTypeOpenInExternalApplication customTitle:title] retain];
&gt; +        }
&gt; +        dispatch_semaphore_signal(semaphore);
&gt; +    }];
&gt; +    dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
&gt; +
&gt; +    return [action autorelease];
&gt; +}

Can we start doing this work at the touch down time so that by the time we need to show a sheet we may already have this information and not need to wait for it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107387</commentid>
    <comment_count>9</comment_count>
      <attachid>256249</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-06 23:21:17 -0700</bug_when>
    <thetext>Comment on attachment 256249
[PATCH] Proposed Fix

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

&gt;&gt; Source/WebCore/English.lproj/Localizable.strings:413
&gt;&gt; +&quot;Open in External Application ActionSheet Link&quot; = &quot;Open in â%@â&quot;;
&gt; 
&gt; This is not an appropriate key. The key should generally be the same as the value. If there’s ambiguity, the key should be the same as the value plus a disambiguating parenthetical, but in this case there’s no ambiguity.

I&apos;ll update this. I was following the pattern of all the other ActionSheet links which had this style:

  /* Title for Copy Link or Image action button */
  &quot;Copy ActionSheet Link&quot; = &quot;Copy&quot;;

  /* Title for Open Link action button */
  &quot;Open ActionSheet Link&quot; = &quot;Open&quot;;

&gt;&gt; Source/WebKit2/UIProcess/ApplicationStateTracker.h:44
&gt;&gt; +    bool hasEntitlement(NSString *entitlement) const;
&gt; 
&gt; Why is this a member function?

Laziness. Is there a more appropriate place to put a general hasEntitlement function, or would just a static method on this class be fine?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108920</commentid>
    <comment_count>10</comment_count>
      <attachid>256653</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-11 03:33:39 -0700</bug_when>
    <thetext>Created attachment 256653
[PATCH] Proposed Fix

Newer version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108921</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-11 03:36:37 -0700</bug_when>
    <thetext>Attachment 256653 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:76:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:301:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:303:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:310:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:312:  Missing space inside { }.  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/API/Cocoa/_WKElementAction.mm:95:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 6 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108995</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-11 16:00:19 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=146658</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1108996</commentid>
    <comment_count>13</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-07-11 16:00:44 -0700</bug_when>
    <thetext>Wrong link! I meant to paste: r186718

http://trac.webkit.org/changeset/186718</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256249</attachid>
            <date>2015-07-06 16:11:22 -0700</date>
            <delta_ts>2015-07-11 03:33:39 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>webkit.patch</filename>
            <type>text/plain</type>
            <size>11751</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0NTZlMmM1Li5iNTBiZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTUtMDctMDYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBVcGRhdGUgZGVmYXVsdCBsaW5rIGFjdGlvbiBzaGVldHMgZm9yIGFwcCBsaW5rcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NjU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTIyMTkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5nczoKKwogMjAxNS0wNy0wMiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBbTWFjXSBDbGVhciBjdXJyZW50IEFpclBsYXkgc291cmNlIGJlZm9yZSBz
ZXR0aW5nIGFub3RoZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxp
emFibGUuc3RyaW5ncwppbmRleCA3M2NlMDA1Li5hMGJlZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dl
YkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC00MDksNiArNDA5LDkg
QEAKIC8qIE9wZW4gVmlkZW8gaW4gTmV3IFdpbmRvdyBjb250ZXh0IG1lbnUgaXRlbSAqLwogIk9w
ZW4gVmlkZW8gaW4gTmV3IFdpbmRvdyIgPSAiT3BlbiBWaWRlbyBpbiBOZXcgV2luZG93IjsKIAor
LyogVGl0bGUgZm9yIE9wZW4gaW4gRXh0ZXJuYWwgQXBwbGljYXRpb24gTGluayBhY3Rpb24gYnV0
dG9uICovCisiT3BlbiBpbiBFeHRlcm5hbCBBcHBsaWNhdGlvbiBBY3Rpb25TaGVldCBMaW5rIiA9
ICJPcGVuIGluIOKAnCVA4oCdIjsKKwogLyogY29udGV4dCBtZW51IGl0ZW0gZm9yIFBERiAqLwog
Ik9wZW4gd2l0aCAlQCIgPSAiT3BlbiB3aXRoICVAIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDAw
YTRlN2EuLjM2NDMyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0w
Ny0wNiAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFVw
ZGF0ZSBkZWZhdWx0IGxpbmsgYWN0aW9uIHNoZWV0cyBmb3IgYXBwIGxpbmtzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY2NTgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzIxMjIxOTAyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06
CisgICAgICAgIChzaG91bGRUcnlBcHBMaW5rKToKKyAgICAgICAgUmVzcGVjdCB0aGUgTmF2aWdh
dGlvbkFjdGlvbidzIGV4dGVybmFsIFVSTCBsb2FkIHBvbGljeSBpbnN0ZWFkIG9mCisgICAgICAg
IGEgdXNlciBnZXN0dXJlLiBUaGlzIG1hdGNoZXMgV2ViS2l0MidzIGJlaGF2aW9yLgorCiAyMDE1
LTA3LTAyICBUaW1vdGh5IEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA0MWQwMTljLi40YTM1ZmIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQpAQCAtODgyLDcgKzg4Miw3IEBAIHN0YXRpYyBCT09MIHNob3Vs
ZFRyeUFwcExpbmsoV2ViVmlldyAqd2ViVmlldywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0
aW9uLCBGCiAgICAgaWYgKCFtYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gTk87
CiAKLSAgICBpZiAoIWFjdGlvbi5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSkKKyAgICBpZiAoYWN0
aW9uLnNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koKSA9PSBTaG91bGRPcGVuRXh0ZXJuYWxV
UkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykKICAgICAgICAgcmV0dXJuIE5POwogCiAgICAgcmV0
dXJuIFlFUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1M2E2MDg0Li5mMDQzOWI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMTUtMDctMDYgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxl
LmNvbT4KKworICAgICAgICBVcGRhdGUgZGVmYXVsdCBsaW5rIGFjdGlvbiBzaGVldHMgZm9yIGFw
cCBsaW5rcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ2NjU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTIyMTkwMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tBY3Rp
b25TaGVldEFzc2lzdGFudC5tbToKKyAgICAgICAgKGFwcGxpY2F0aW9uSGFzQ2FuR2V0QXBwTGlu
a0VudGl0bGVtZW50KToKKyAgICAgICAgKG9wZW5JbkV4dGVybmFsQXBwbGljYXRpb25FbGVtZW50
QWN0aW9uRm9yVVJMKToKKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lzdGFudCBzaG93SW1h
Z2VTaGVldF0pOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IHNob3dMaW5rU2hl
ZXRdKToKKyAgICAgICAgSW5jbHVkZSBhbiBhY3Rpb24gZm9yIG9wZW5pbmcgaW4gYW4gZXh0ZXJu
YWwgYXBwbGljYXRpb24KKyAgICAgICAgaWYgd2UgY2FuIGRldGVybWluZSB0aGF0IHdpbGwgaGFw
cGVuLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tOgorICAg
ICAgICAoK1tfV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rpb25XaXRoVHlwZTpjdXN0b21UaXRs
ZTpdKToKKyAgICAgICAgSGFuZGxlciBmb3IgdGhlIGFjdGlvbiB3aWxsIG9wZW4gdGhlIFVSTC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGFjdGlvblNoZWV0QXNzaXN0YW50Om9wZW5FbGVtZW50
QXRMb2NhdGlvbjpdKToKKyAgICAgICAgVGhlIG9wZW4gYWN0aW9uIHNob3VsZCBub3QgYWxsb3cg
b3BlbmluZyBleHRlcm5hbCBVUkxzLCBpdAorICAgICAgICBzaG91bGQganVzdCBiZSBhIG5hdmln
YXRpb24gd2l0aGluIHRoaXMgd2ViIHZpZXcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGlj
YXRpb25TdGF0ZVRyYWNrZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0
ZVRyYWNrZXIubW06CisgICAgICAgIChXZWJLaXQ6OkFwcGxpY2F0aW9uU3RhdGVUcmFja2VyOjpo
YXNFbnRpdGxlbWVudCk6CisgICAgICAgIEhlbHBlciBmb3IgY2hlY2tpbmcgZW50aXRsZW1lbnRz
LgorCiAyMDE1LTA3LTAyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIENvcnJlY3QgKmFub3RoZXIqIHR5cG8gaW4gcjE4NjIzOC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLmgKaW5kZXgg
ZjVlN2MwZC4uZTdjNmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLmgKQEAgLTM3LDYgKzM3LDcgQEAgdHlwZWRlZiBC
T09MICheV0tFbGVtZW50QWN0aW9uRGlzbWlzc2FsSGFuZGxlcikodm9pZCk7CiB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBfV0tFbGVtZW50QWN0aW9uVHlwZSkgewogICAgIF9XS0VsZW1lbnRB
Y3Rpb25UeXBlQ3VzdG9tLAogICAgIF9XS0VsZW1lbnRBY3Rpb25UeXBlT3BlbiwKKyAgICBfV0tF
bGVtZW50QWN0aW9uVHlwZU9wZW5JbkV4dGVybmFsQXBwbGljYXRpb24sCiAgICAgX1dLRWxlbWVu
dEFjdGlvblR5cGVDb3B5LAogICAgIF9XS0VsZW1lbnRBY3Rpb25UeXBlU2F2ZUltYWdlLAogI2lm
ICFkZWZpbmVkKFRBUkdFVF9PU19JT1MpIHx8IFRBUkdFVF9PU19JT1MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbQppbmRl
eCAyNjc0YmFhLi44MzhmOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCkBAIC0xMDUsNiArMTA1LDE0IEBAICsg
KGluc3RhbmNldHlwZSllbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBl
KXR5cGUgY3VzdG9tVGl0bGU6KE5TCiAgICAgICAgICAgICBbYXNzaXN0YW50LmRlbGVnYXRlIGFj
dGlvblNoZWV0QXNzaXN0YW50OmFzc2lzdGFudCBvcGVuRWxlbWVudEF0TG9jYXRpb246YWN0aW9u
SW5mby5faW50ZXJhY3Rpb25Mb2NhdGlvbl07CiAgICAgICAgIH07CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgX1dLRWxlbWVudEFjdGlvblR5cGVPcGVuSW5FeHRlcm5hbEFwcGxpY2F0aW9uOgor
ICAgICAgICBBU1NFUlQoY3VzdG9tVGl0bGUpOworICAgICAgICBoYW5kbGVyID0gXihXS0FjdGlv
blNoZWV0QXNzaXN0YW50ICphc3Npc3RhbnQsIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICphY3Rp
b25JbmZvKSB7CisjaWYgSEFWRShBUFBfTElOS1MpCisgICAgICAgICAgICBbTFNBcHBMaW5rIG9w
ZW5XaXRoVVJMOmFjdGlvbkluZm8uVVJMIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CisjZW5kaWYK
KyAgICAgICAgfTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBfV0tFbGVtZW50QWN0aW9uVHlw
ZVNhdmVJbWFnZToKICAgICAgICAgdGl0bGUgPSBXRUJfVUlfU1RSSU5HX0tFWSgiU2F2ZSBJbWFn
ZSIsICJTYXZlIEltYWdlIiwgIlRpdGxlIGZvciBTYXZlIEltYWdlIGFjdGlvbiBidXR0b24iKTsK
ICAgICAgICAgaGFuZGxlciA9IF4oV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqYXNzaXN0YW50LCBf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5mbykgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIuaAppbmRleCBjMjUyNTRmLi41
MGQ5ZWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGljYXRpb25T
dGF0ZVRyYWNrZXIuaApAQCAtNDEsNiArNDEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEFwcGxp
Y2F0aW9uU3RhdGVUcmFja2VyJiBzaW5nbGV0b24oKTsKIAogICAgIGJvb2wgaXNJbkJhY2tncm91
bmQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5CYWNrZ3JvdW5kOyB9CisgICAgYm9vbCBoYXNFbnRp
dGxlbWVudChOU1N0cmluZyAqZW50aXRsZW1lbnQpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRMaXN0
ZW5lcihpZCwgU0VMIHdpbGxFbnRlckZvcmVncm91bmRTZWxlY3RvciwgU0VMIGRpZEVudGVyQmFj
a2dyb3VuZFNlbGVjdG9yKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Fw
cGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tCmluZGV4IGY3MmQzYWEuLjdjZmNlMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNrZXIubW0K
QEAgLTEzNCw2ICsxMzQsMTEgQEAgdm9pZCBBcHBsaWNhdGlvblN0YXRlVHJhY2tlcjo6YWRkTGlz
dGVuZXIoaWQgb2JqZWN0LCBTRUwgd2lsbEVudGVyRm9yZWdyb3VuZFNlbGUKICAgICBtX2xpc3Rl
bmVycy5hcHBlbmQoeyBvYmplY3QsIHdpbGxFbnRlckZvcmVncm91bmRTZWxlY3RvciwgZGlkRW50
ZXJCYWNrZ3JvdW5kU2VsZWN0b3IgfSk7CiB9CiAKK2Jvb2wgQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXI6Omhhc0VudGl0bGVtZW50KE5TU3RyaW5nICplbnRpdGxlbWVudCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV2ViS2l0OjpoYXNFbnRpdGxlbWVudChlbnRpdGxlbWVudCk7Cit9CisKIHZvaWQgQXBw
bGljYXRpb25TdGF0ZVRyYWNrZXI6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKIHsK
ICAgICBtX2lzSW5CYWNrZ3JvdW5kID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRleCA0ZWI0NDI0Li4z
ZmRlMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9u
U2hlZXRBc3Npc3RhbnQubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Fj
dGlvblNoZWV0QXNzaXN0YW50Lm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgUExBVEZPUk0oSU9T
KQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9ydCAiQXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIuaCIKICNpbXBvcnQgIlRDQ1NQSS5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKICNpbXBv
cnQgIldLQWN0aW9uU2hlZXQuaCIKQEAgLTQzLDYgKzQ0LDEwIEBACiAjaW1wb3J0IDxXZWJDb3Jl
L1dlYkNvcmVOU1VSTEV4dHJhcy5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
KyNpZiBIQVZFKEFQUF9MSU5LUykKKyNpbXBvcnQgPFdlYkNvcmUvTGF1bmNoU2VydmljZXNTUEku
aD4KKyNlbmRpZgorCiAjaWYgSEFWRShTQUZBUklfU0VSVklDRVNfRlJBTUVXT1JLKQogI2ltcG9y
dCA8U2FmYXJpU2VydmljZXMvU1NSZWFkaW5nTGlzdC5oPgogU09GVF9MSU5LX0ZSQU1FV09SSyhT
YWZhcmlTZXJ2aWNlcykKQEAgLTU1LDYgKzYwLDM1IEBAIFNPRlRfTElOS19DT05TVEFOVChUQ0Ms
IGtUQ0NTZXJ2aWNlUGhvdG9zLCBDRlN0cmluZ1JlZikKIAogdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKIAorI2lmIEhBVkUoQVBQX0xJTktTKQorc3RhdGljIGJvb2wgYXBwbGljYXRpb25IYXNDYW5H
ZXRBcHBMaW5rRW50aXRsZW1lbnQoKQoreworICAgIHN0YXRpYyBib29sIGhhc0VudGl0bGVtZW50
ID0gQXBwbGljYXRpb25TdGF0ZVRyYWNrZXI6OnNpbmdsZXRvbigpLmhhc0VudGl0bGVtZW50KEAi
Y29tLmFwcGxlLnByaXZhdGUuY2FuR2V0QXBwTGlua0luZm8iKTsKKyAgICByZXR1cm4gaGFzRW50
aXRsZW1lbnQ7Cit9CisKK3N0YXRpYyBfV0tFbGVtZW50QWN0aW9uICpvcGVuSW5FeHRlcm5hbEFw
cGxpY2F0aW9uRWxlbWVudEFjdGlvbkZvclVSTChOU1VSTCAqdXJsKQoreworICAgIGlmICghYXBw
bGljYXRpb25IYXNDYW5HZXRBcHBMaW5rRW50aXRsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIF9fYmxvY2sgX1dLRWxlbWVudEFjdGlvbiAqYWN0aW9uID0gbmlsOworCisgICAg
ZGlzcGF0Y2hfc2VtYXBob3JlX3Qgc2VtYXBob3JlID0gZGlzcGF0Y2hfc2VtYXBob3JlX2NyZWF0
ZSgwKTsKKyAgICBbTFNBcHBMaW5rIGdldEFwcExpbmtXaXRoVVJMOnVybCBjb21wbGV0aW9uSGFu
ZGxlcjpeKExTQXBwTGluayAqYXBwTGluaywgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgaWYg
KGFwcExpbmspIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpsb2NhbGl6ZWRBcHBOYW1lID0gW2Fw
cExpbmsudGFyZ2V0QXBwbGljYXRpb25Qcm94eSBsb2NhbGl6ZWROYW1lRm9yQ29udGV4dDpuaWxd
OworICAgICAgICAgICAgTlNTdHJpbmcgKnRpdGxlID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6V0VCX1VJX1NUUklOR19LRVkoIk9wZW4gaW4g4oCcJUDigJ0iLCAiT3BlbiBpbiBFeHRlcm5h
bCBBcHBsaWNhdGlvbiBBY3Rpb25TaGVldCBMaW5rIiwgIlRpdGxlIGZvciBPcGVuIGluIEV4dGVy
bmFsIEFwcGxpY2F0aW9uIExpbmsgYWN0aW9uIGJ1dHRvbiIpLCBsb2NhbGl6ZWRBcHBOYW1lXTsK
KyAgICAgICAgICAgIGFjdGlvbiA9IFtbX1dLRWxlbWVudEFjdGlvbiBlbGVtZW50QWN0aW9uV2l0
aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVPcGVuSW5FeHRlcm5hbEFwcGxpY2F0aW9uIGN1c3Rv
bVRpdGxlOnRpdGxlXSByZXRhaW5dOworICAgICAgICB9CisgICAgICAgIGRpc3BhdGNoX3NlbWFw
aG9yZV9zaWduYWwoc2VtYXBob3JlKTsKKyAgICB9XTsKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVf
d2FpdChzZW1hcGhvcmUsIERJU1BBVENIX1RJTUVfRk9SRVZFUik7CisKKyAgICByZXR1cm4gW2Fj
dGlvbiBhdXRvcmVsZWFzZV07Cit9CisjZW5kaWYKKwogQGltcGxlbWVudGF0aW9uIFdLQWN0aW9u
U2hlZXRBc3Npc3RhbnQgewogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0FjdGlvblNoZWV0QXNzaXN0
YW50RGVsZWdhdGU+PiBfZGVsZWdhdGU7CiAgICAgUmV0YWluUHRyPFdLQWN0aW9uU2hlZXQ+IF9p
bnRlcmFjdGlvblNoZWV0OwpAQCAtMjQ2LDggKzI4MCwxMyBAQCAtICh2b2lkKXNob3dJbWFnZVNo
ZWV0CiAKICAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6cG9zaXRp
b25JbmZvcm1hdGlvbi51cmxdOwogICAgIGF1dG8gZGVmYXVsdEFjdGlvbnMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBpZiAoIXBvc2l0aW9uSW5mb3JtYXRp
b24udXJsLmlzRW1wdHkoKSkKLSAgICAgICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9iamVjdDpbX1dL
RWxlbWVudEFjdGlvbiBlbGVtZW50QWN0aW9uV2l0aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVP
cGVuXV07CisgICAgaWYgKCFwb3NpdGlvbkluZm9ybWF0aW9uLnVybC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9iamVjdDpbX1dLRWxlbWVudEFjdGlvbiBlbGVtZW50
QWN0aW9uV2l0aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVPcGVuXV07ICAgICAgICAKKyNpZiBI
QVZFKEFQUF9MSU5LUykKKyAgICAgICAgaWYgKF9XS0VsZW1lbnRBY3Rpb24gKm9wZW5JbkV4dGVy
bmFsQXBwbGljYXRpb25BY3Rpb24gPSBvcGVuSW5FeHRlcm5hbEFwcGxpY2F0aW9uRWxlbWVudEFj
dGlvbkZvclVSTCh0YXJnZXRVUkwpKQorICAgICAgICAgICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9i
amVjdDpvcGVuSW5FeHRlcm5hbEFwcGxpY2F0aW9uQWN0aW9uXTsKKyNlbmRpZgorICAgIH0KICNp
ZiBIQVZFKFNBRkFSSV9TRVJWSUNFU19GUkFNRVdPUkspCiAgICAgaWYgKFtnZXRTU1JlYWRpbmdM
aXN0Q2xhc3MoKSBzdXBwb3J0c1VSTDp0YXJnZXRVUkxdKQogICAgICAgICBbZGVmYXVsdEFjdGlv
bnMgYWRkT2JqZWN0OltfV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rpb25XaXRoVHlwZTpfV0tF
bGVtZW50QWN0aW9uVHlwZUFkZFRvUmVhZGluZ0xpc3RdXTsKQEAgLTI5Miw2ICszMzEsMTIgQEAg
LSAodm9pZClzaG93TGlua1NoZWV0CiAKICAgICBhdXRvIGRlZmF1bHRBY3Rpb25zID0gYWRvcHRO
UyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgW2RlZmF1bHRBY3Rpb25zIGFk
ZE9iamVjdDpbX1dLRWxlbWVudEFjdGlvbiBlbGVtZW50QWN0aW9uV2l0aFR5cGU6X1dLRWxlbWVu
dEFjdGlvblR5cGVPcGVuXV07CisKKyNpZiBIQVZFKEFQUF9MSU5LUykKKyAgICBpZiAoX1dLRWxl
bWVudEFjdGlvbiAqb3BlbkluRXh0ZXJuYWxBcHBsaWNhdGlvbkFjdGlvbiA9IG9wZW5JbkV4dGVy
bmFsQXBwbGljYXRpb25FbGVtZW50QWN0aW9uRm9yVVJMKHRhcmdldFVSTCkpCisgICAgICAgIFtk
ZWZhdWx0QWN0aW9ucyBhZGRPYmplY3Q6b3BlbkluRXh0ZXJuYWxBcHBsaWNhdGlvbkFjdGlvbl07
CisjZW5kaWYKKwogI2lmIEhBVkUoU0FGQVJJX1NFUlZJQ0VTX0ZSQU1FV09SSykKICAgICBpZiAo
W2dldFNTUmVhZGluZ0xpc3RDbGFzcygpIHN1cHBvcnRzVVJMOnRhcmdldFVSTF0pCiAgICAgICAg
IFtkZWZhdWx0QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlv
bldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlQWRkVG9SZWFkaW5nTGlzdF1dOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQppbmRleCBjNjMwNTJjLi43OTcyZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMzE1
Niw3ICszMTU2LDcgQEAgLSAodm9pZClhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVl
dEFzc2lzdGFudCAqKWFzc2lzdGFudCBwZXJmb3JtQWN0aW9uOigKIAogLSAodm9pZClhY3Rpb25T
aGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lzdGFudCBvcGVuRWxl
bWVudEF0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb24KIHsKLSAgICBbc2VsZiBfYXR0ZW1wdENs
aWNrQXRMb2NhdGlvbjpsb2NhdGlvbl07CisgICAgX3BhZ2UtPmxvYWRSZXF1ZXN0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdChfcG9zaXRpb25JbmZvcm1hdGlvbi51cmwpLCBXZWJDb3JlOjpTaG91
bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdyk7CiB9CiAKIC0gKFJldGFp
blB0cjxOU0FycmF5PilhY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFu
dCAqKWFzc2lzdGFudCBkZWNpZGVBY3Rpb25zRm9yRWxlbWVudDooX1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8gKillbGVtZW50IGRlZmF1bHRBY3Rpb25zOihSZXRhaW5QdHI8TlNBcnJheT4pZGVmYXVs
dEFjdGlvbnMK
</data>
<flag name="review"
          id="281322"
          type_id="1"
          status="+"
          setter="enrica"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256653</attachid>
            <date>2015-07-11 03:33:39 -0700</date>
            <delta_ts>2015-07-11 08:23:36 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>version-2.patch</filename>
            <type>text/plain</type>
            <size>22416</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNjhiZmY2Li5mZDQzYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTUtMDctMTEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBVcGRhdGUgZGVmYXVsdCBsaW5rIGFjdGlvbiBzaGVldHMgZm9yIGFwcCBsaW5rcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NjU4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTIyMTkwMj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3Ry
aW5nczoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcGkvaW9zL0xhdW5jaFNlcnZpY2VzU1BJLmg6CisK
IDIwMTUtMDctMTAgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IFNlcmlhbGl6ZWQgZGVjbGFyYXRpb24gZm9yIGJhY2tncm91bmQtc2l6ZS8td2Via2l0LW1hc2st
c2l6ZSBzaG91bGQgcHJlc2VydmUgaWRlbnRpY2FsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9Fbmds
aXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggZDYxMjU2Yi4uOTZkNjA2OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwpA
QCAtMTgyLDcgKzE4Miw3IEBACiAiQ29weSIgPSAiQ29weSI7CiAKIC8qIFRpdGxlIGZvciBDb3B5
IExpbmsgb3IgSW1hZ2UgYWN0aW9uIGJ1dHRvbiAqLwotIkNvcHkgQWN0aW9uU2hlZXQgTGluayIg
PSAiQ29weSI7CisiQ29weSAoQWN0aW9uU2hlZXQpIiA9ICJDb3B5IjsKIAogLyogQ29weSBBdWRp
byBBZGRyZXNzIExvY2F0aW9uIGNvbnRleHQgbWVudSBpdGVtICovCiAiQ29weSBBdWRpbyBBZGRy
ZXNzIiA9ICJDb3B5IEF1ZGlvIEFkZHJlc3MiOwpAQCAtMzcxLDcgKzM3MSw3IEBACiAiT2ZmIiA9
ICJPZmYiOwogCiAvKiBUaXRsZSBmb3IgT3BlbiBMaW5rIGFjdGlvbiBidXR0b24gKi8KLSJPcGVu
IEFjdGlvblNoZWV0IExpbmsiID0gIk9wZW4iOworIk9wZW4iID0gIk9wZW4iOwogCiAvKiBPcGVu
IEF1ZGlvIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0gKi8KICJPcGVuIEF1ZGlvIGlu
IE5ldyBXaW5kb3ciID0gIk9wZW4gQXVkaW8gaW4gTmV3IFdpbmRvdyI7CkBAIC0zOTEsNiArMzkx
LDEyIEBACiAvKiBPcGVuIFZpZGVvIGluIE5ldyBXaW5kb3cgY29udGV4dCBtZW51IGl0ZW0gKi8K
ICJPcGVuIFZpZGVvIGluIE5ldyBXaW5kb3ciID0gIk9wZW4gVmlkZW8gaW4gTmV3IFdpbmRvdyI7
CiAKKy8qIFRpdGxlIGZvciBPcGVuIGluIFNhZmFyaSBMaW5rIGFjdGlvbiBidXR0b24gKi8KKyJP
cGVuIGluIFNhZmFyaSIgPSAiT3BlbiBpbiBTYWZhcmkiOworCisvKiBUaXRsZSBmb3IgT3BlbiBp
biBFeHRlcm5hbCBBcHBsaWNhdGlvbiBMaW5rIGFjdGlvbiBidXR0b24gKi8KKyJPcGVuIGluIOKA
nCVA4oCdIiA9ICJPcGVuIGluIOKAnCVA4oCdIjsKKwogLyogY29udGV4dCBtZW51IGl0ZW0gZm9y
IFBERiAqLwogIk9wZW4gd2l0aCAlQCIgPSAiT3BlbiB3aXRoICVAIjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9MYXVuY2hTZXJ2aWNlc1NQSS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3BpL2lvcy9MYXVuY2hTZXJ2aWNlc1NQSS5oCmluZGV4IDBm
NDA0N2IuLmNlODY4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NwaS9p
b3MvTGF1bmNoU2VydmljZXNTUEkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcGkv
aW9zL0xhdW5jaFNlcnZpY2VzU1BJLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgdHlwZWRlZiB2b2lkIChe
TFNBcHBMaW5rT3BlbkNvbXBsZXRpb25IYW5kbGVyKShCT09MIHN1Y2Nlc3MsIE5TRXJyb3IgKmVy
cm9yKTsKIAogQGludGVyZmFjZSBMU0FwcExpbmsgKERldGFpbHMpCiArICh2b2lkKW9wZW5XaXRo
VVJMOihOU1VSTCAqKWFVUkwgY29tcGxldGlvbkhhbmRsZXI6KExTQXBwTGlua09wZW5Db21wbGV0
aW9uSGFuZGxlciljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpb3BlbkluV2ViQnJvd3Nlcjoo
Qk9PTClpbldlYkJyb3dzZXIgc2V0QXBwcm9wcmlhdGVPcGVuU3RyYXRlZ3lBbmRXZWJCcm93c2Vy
U3RhdGU6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilzdGF0ZSBjb21wbGV0aW9uSGFu
ZGxlcjooTFNBcHBMaW5rT3BlbkNvbXBsZXRpb25IYW5kbGVyKWNvbXBsZXRpb25IYW5kbGVyOwog
QGVuZAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxMjQyMmE5Li5lYTdhMWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzkgQEAKKzIwMTUtMDctMTEgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgZGVmYXVsdCBsaW5rIGFjdGlvbiBzaGVldHMg
Zm9yIGFwcCBsaW5rcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ2NjU4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMTIyMTkwMj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9tYWMvU2Fu
ZGJveFV0aWxpdGllcy5oOgorICAgICAgICAqIFNoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGllcy5t
bTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGll
cy5jcHAuCisgICAgICAgIChXZWJLaXQ6OnByb2Nlc3NIYXNFbnRpdGxlbWVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tOgorICAgICAgICAoV2ViS2l0
OjphcHBsaWNhdGlvblR5cGUpOgorICAgICAgICAoV2ViS2l0OjpoYXNFbnRpdGxlbWVudCk6IERl
bGV0ZWQuCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICBTaGFyZSBhIGhlbHBlciBmb3IgY2hlY2tpbmcgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBo
YXMgYW4gZW50aXRsZW1lbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0Vs
ZW1lbnRBY3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRB
Y3Rpb24ubW06CisgICAgICAgICgrW19XS0VsZW1lbnRBY3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRo
VHlwZTp0aXRsZTphY3Rpb25IYW5kbGVyOl0pOgorICAgICAgICAoK1tfV0tFbGVtZW50QWN0aW9u
IF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6Y3VzdG9tVGl0bGU6YXNzaXN0YW50Ol0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmg6CisgICAg
ICAgIEFkZCBhbiBpbnRlcm5hbCB3YXkgdG8gbWFrZSBhbiBlbGVtZW50IGFjdGlvbiB3aXRoIGEg
c3RhbmRhcmQgdHlwZSBhbmQgcmVndWxhciBoYW5kbGVyLgorICAgICAgICBXZSB1c2UgdGhpcyBm
b3IgdGhlIG5ldyBzdGFuZGFyZCB0eXBlcyB0aGF0IGRvbid0IGhhdmUgYSBkZWZhdWx0IGltcGxl
bWVudGF0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50Lm1tOgorICAgICAgICAoYXBwbGljYXRpb25IYXNBcHBMaW5rRW50aXRsZW1lbnRzKToKKyAg
ICAgICAgKGFwcExpbmtGb3JVUkwpOgorICAgICAgICBIZWxwZXJzIGNoZWNraW5nIGFjY2VzcyB0
byBhcHAgbGlua3MgYW5kIGZldGNoaW5nIGFwcCBsaW5rcy4KKworICAgICAgICAoLVtXS0FjdGlv
blNoZWV0QXNzaXN0YW50IF9hcHBlbmRPcGVuQWN0aW9uc0ZvclVSTDphY3Rpb25zOl0pOgorICAg
ICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IGRlZmF1bHRBY3Rpb25zRm9yTGlua1NoZWV0
XSk6CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgZGVmYXVsdEFjdGlvbnNGb3JJ
bWFnZVNoZWV0XSk6CisgICAgICAgIENyZWF0ZSAiT3BlbiBpbiBTYWZhcmkiIGFuZCAiT3BlbiBp
biAnQXBwJyIgZGVmYXVsdCBhY3Rpb25zIGZvciBBcHBMaW5rcywKKyAgICAgICAgb3RoZXJ3aXNl
IGFkZCB0aGUgbm9ybWFsIGRlZmF1bHQgIk9wZW4iIGFjdGlvbi4KKwogMjAxNS0wNy0xMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEluY3JlYXNlIHRo
ZSBRb1Mgb2Ygc29tZSBvZiBvdXIgV29ya1F1ZXVlcyB0byBtYXRjaCB0aGUgb25lIG9mIG91ciBw
cm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJveFV0
aWxpdGllcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94VXRpbGl0aWVzLmgK
aW5kZXggZGJjNGNiMy4uYTI0ZWQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9TYW5kYm94VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9T
YW5kYm94VXRpbGl0aWVzLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgU2FuZGJveFV0aWxp
dGllc19oCiAjZGVmaW5lIFNhbmRib3hVdGlsaXRpZXNfaAogCi0jaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+Ci0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbXBvcnQgPHN5cy90eXBlcy5oPgorI2lt
cG9ydCA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM3LDYgKzM3
LDggQEAgYm9vbCBwcm9jZXNzSGFzQ29udGFpbmVyKCk7CiAvLyBSZXR1cm5zIGFuIGVtcHR5IHN0
cmluZyBpZiB0aGUgcHJvY2VzcyBpcyBub3QgaW4gYSBjb250YWluZXIuCiBTdHJpbmcgcGF0aEZv
clByb2Nlc3NDb250YWluZXIoKTsKIAorYm9vbCBwcm9jZXNzSGFzRW50aXRsZW1lbnQoTlNTdHJp
bmcgKmVudGl0bGVtZW50KTsKKwogfQogCiAjZW5kaWYgLy8gU2FuZGJveFV0aWxpdGllc19oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9TYW5kYm94VXRpbGl0aWVzLm1tCnNpbWlsYXJp
dHkgaW5kZXggNzklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJv
eFV0aWxpdGllcy5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvU2FuZGJv
eFV0aWxpdGllcy5tbQppbmRleCAzMTViODFlLi44Y2ViY2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvbWFjL1NhbmRib3hVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvU2FuZGJveFV0aWxpdGllcy5tbQpAQCAtMjMsMTIgKzIzLDEzIEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIlNhbmRib3hVdGlsaXRpZXMuaCIKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVk
ZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1NlY3VyaXR5U1BJLmg+CisjaW1wb3J0IDxhcnJheT4KKyNpbXBvcnQgPHN5cy9w
YXJhbS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBfX2hhc19pbmNs
dWRlKDxzYW5kYm94L3ByaXZhdGUuaD4pCiAjaW1wb3J0IDxzYW5kYm94L3ByaXZhdGUuaD4KQEAg
LTc4LDQgKzc5LDIwIEBAIFN0cmluZyBwYXRoRm9yUHJvY2Vzc0NvbnRhaW5lcigpCiAgICAgcmV0
dXJuIFN0cmluZzo6ZnJvbVVURjgocGF0aC5kYXRhKCkpOwogfQogCitib29sIHByb2Nlc3NIYXNF
bnRpdGxlbWVudChOU1N0cmluZyAqZW50aXRsZW1lbnQpCit7CisgICAgYXV0byB0YXNrID0gYWRv
cHRDRihTZWNUYXNrQ3JlYXRlRnJvbVNlbGYoQ0ZBbGxvY2F0b3JHZXREZWZhdWx0KCkpKTsKKyAg
ICBpZiAoIXRhc2spCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1dG8gdmFsdWUgPSBh
ZG9wdENGKFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudCh0YXNrLmdldCgpLCAoX19icmlk
Z2UgQ0ZTdHJpbmdSZWYpZW50aXRsZW1lbnQsIG51bGxwdHIpKTsKKyAgICBpZiAoIXZhbHVlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUuZ2V0KCkp
ICE9IENGQm9vbGVhbkdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gQ0ZCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZS5n
ZXQoKSkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0VsZW1lbnRBY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLRWxlbWVudEFjdGlvbi5oCmluZGV4IGE5Yzg1YzIuLjRhMzZkYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlv
bi5oCkBAIC00MSw2ICs0MSw4IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIF9XS0VsZW1l
bnRBY3Rpb25UeXBlKSB7CiAgICAgX1dLRWxlbWVudEFjdGlvblR5cGVTYXZlSW1hZ2UsCiAjaWYg
IWRlZmluZWQoVEFSR0VUX09TX0lPUykgfHwgVEFSR0VUX09TX0lPUwogICAgIF9XS0VsZW1lbnRB
Y3Rpb25UeXBlQWRkVG9SZWFkaW5nTGlzdCwKKyAgICBfV0tFbGVtZW50QWN0aW9uVHlwZU9wZW5J
bkRlZmF1bHRCcm93c2VyIFdLX0VOVU1fQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEp
LAorICAgIF9XS0VsZW1lbnRBY3Rpb25UeXBlT3BlbkluRXh0ZXJuYWxBcHBsaWNhdGlvbiBXS19F
TlVNX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKSwKICNlbmRpZgogfSBXS19FTlVN
X0FWQUlMQUJMRSgxMF8xMCwgOF8wKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCmluZGV4IGE0MjYxOGUuLmRjMjVh
YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxl
bWVudEFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0VsZW1lbnRBY3Rpb24ubW0KQEAgLTkwLDI1ICs5MCwzMSBAQCBzdGF0aWMgdm9pZCBhZGRUb1Jl
YWRpbmdMaXN0KE5TVVJMICp0YXJnZXRVUkwsIE5TU3RyaW5nICp0aXRsZSkKIH0KICNlbmRpZgog
CisrIChpbnN0YW5jZXR5cGUpX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFjdGlv
blR5cGUpdHlwZSB0aXRsZTooTlNTdHJpbmcgKil0aXRsZSBhY3Rpb25IYW5kbGVyOihXS0VsZW1l
bnRBY3Rpb25IYW5kbGVyKWFjdGlvbkhhbmRsZXIKK3sKKyAgICBXS0VsZW1lbnRBY3Rpb25IYW5k
bGVySW50ZXJuYWwgaGFuZGxlciA9IF4oV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyAqYWN0aW9uSW5mbykgeyBhY3Rpb25IYW5kbGVyKGFjdGlvbkluZm8p
OyB9OworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTp0aXRsZSBhY3Rp
b25IYW5kbGVyOmhhbmRsZXIgdHlwZTp0eXBlIGFzc2lzdGFudDpuaWxdIGF1dG9yZWxlYXNlXTsK
K30KKwogKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRB
Y3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE5TU3RyaW5nICopY3VzdG9tVGl0bGUgYXNzaXN0
YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CiB7CiAgICAgTlNTdHJpbmcg
KnRpdGxlOwogICAgIFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCBoYW5kbGVyOwogICAg
IHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgX1dLRWxlbWVudEFjdGlvblR5cGVDb3B5OgotICAg
ICAgICB0aXRsZSA9IFdFQl9VSV9TVFJJTkdfS0VZKCJDb3B5IiwgIkNvcHkgQWN0aW9uU2hlZXQg
TGluayIsICJUaXRsZSBmb3IgQ29weSBMaW5rIG9yIEltYWdlIGFjdGlvbiBidXR0b24iKTsKKyAg
ICAgICAgdGl0bGUgPSBXRUJfVUlfU1RSSU5HX0tFWSgiQ29weSIsICJDb3B5IChBY3Rpb25TaGVl
dCkiLCAiVGl0bGUgZm9yIENvcHkgTGluayBvciBJbWFnZSBhY3Rpb24gYnV0dG9uIik7CiAgICAg
ICAgIGhhbmRsZXIgPSBeKFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKmFzc2lzdGFudCwgX1dLQWN0
aXZhdGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8pIHsKICAgICAgICAgICAgIFthc3Npc3RhbnQu
ZGVsZWdhdGUgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6YXNzaXN0YW50IHBlcmZvcm1BY3Rpb246V2Vi
S2l0OjpTaGVldEFjdGlvbjo6Q29weV07CiAgICAgICAgIH07CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgX1dLRWxlbWVudEFjdGlvblR5cGVPcGVuOgotICAgICAgICB0aXRsZSA9IFdFQl9VSV9T
VFJJTkdfS0VZKCJPcGVuIiwgIk9wZW4gQWN0aW9uU2hlZXQgTGluayIsICJUaXRsZSBmb3IgT3Bl
biBMaW5rIGFjdGlvbiBidXR0b24iKTsKKyAgICAgICAgdGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJP
cGVuIiwgIlRpdGxlIGZvciBPcGVuIExpbmsgYWN0aW9uIGJ1dHRvbiIpOwogICAgICAgICBoYW5k
bGVyID0gXihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICphc3Npc3RhbnQsIF9XS0FjdGl2YXRlZEVs
ZW1lbnRJbmZvICphY3Rpb25JbmZvKSB7CiAgICAgICAgICAgICBbYXNzaXN0YW50LmRlbGVnYXRl
IGFjdGlvblNoZWV0QXNzaXN0YW50OmFzc2lzdGFudCBvcGVuRWxlbWVudEF0TG9jYXRpb246YWN0
aW9uSW5mby5faW50ZXJhY3Rpb25Mb2NhdGlvbl07CiAgICAgICAgIH07CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgX1dLRWxlbWVudEFjdGlvblR5cGVTYXZlSW1hZ2U6Ci0gICAgICAgIHRpdGxl
ID0gV0VCX1VJX1NUUklOR19LRVkoIlNhdmUgSW1hZ2UiLCAiU2F2ZSBJbWFnZSIsICJUaXRsZSBm
b3IgU2F2ZSBJbWFnZSBhY3Rpb24gYnV0dG9uIik7CisgICAgICAgIHRpdGxlID0gV0VCX1VJX1NU
UklORygiU2F2ZSBJbWFnZSIsICJUaXRsZSBmb3IgU2F2ZSBJbWFnZSBhY3Rpb24gYnV0dG9uIik7
CiAgICAgICAgIGhhbmRsZXIgPSBeKFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKmFzc2lzdGFudCwg
X1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKmFjdGlvbkluZm8pIHsKICAgICAgICAgICAgIFthc3Np
c3RhbnQuZGVsZWdhdGUgYWN0aW9uU2hlZXRBc3Npc3RhbnQ6YXNzaXN0YW50IHBlcmZvcm1BY3Rp
b246V2ViS2l0OjpTaGVldEFjdGlvbjo6U2F2ZUltYWdlXTsKICAgICAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbklu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRB
Y3Rpb25JbnRlcm5hbC5oCmluZGV4IGEyZmU1MGMuLjk4ZDE3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9u
SW50ZXJuYWwuaApAQCAtMzUsNiArMzUsNyBAQAogQGludGVyZmFjZSBfV0tFbGVtZW50QWN0aW9u
ICgpCiAKICsgKGluc3RhbmNldHlwZSlfZWxlbWVudEFjdGlvbldpdGhUeXBlOihfV0tFbGVtZW50
QWN0aW9uVHlwZSl0eXBlIGFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqKWFzc2lz
dGFudDsKKysgKGluc3RhbmNldHlwZSlfZWxlbWVudEFjdGlvbldpdGhUeXBlOihfV0tFbGVtZW50
QWN0aW9uVHlwZSl0eXBlIHRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdL
RWxlbWVudEFjdGlvbkhhbmRsZXIpYWN0aW9uSGFuZGxlcjsKIC0gKHZvaWQpX3J1bkFjdGlvbldp
dGhFbGVtZW50SW5mbzooX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKilpbmZvIGZvckFjdGlvblNo
ZWV0QXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50OwogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRy
YWNrZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXBwbGljYXRpb25TdGF0ZVRyYWNr
ZXIubW0KaW5kZXggYTFmMmJhOS4uZTEzMzU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FwcGxpY2F0aW9uU3RhdGVUcmFja2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BcHBsaWNhdGlvblN0YXRlVHJhY2tlci5tbQpAQCAtMjksNiArMjksNyBAQAog
I2lmIFBMQVRGT1JNKElPUykKIAogI2ltcG9ydCAiQXNzZXJ0aW9uU2VydmljZXNTUEkuaCIKKyNp
bXBvcnQgIlNhbmRib3hVdGlsaXRpZXMuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0
ICJXS0NvbnRlbnRWaWV3LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5U1BJLmg+CkBAIC00
MSwyMSArNDIsNiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGJvb2wgaGFzRW50
aXRsZW1lbnQoTlNTdHJpbmcgKmVudGl0bGVtZW50KQotewotICAgIGF1dG8gdGFzayA9IGFkb3B0
Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKENGQWxsb2NhdG9yR2V0RGVmYXVsdCgpKSk7Ci0gICAg
aWYgKCF0YXNrKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBhdXRvIHZhbHVlID0gYWRv
cHRDRihTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQodGFzay5nZXQoKSwgKF9fYnJpZGdl
IENGU3RyaW5nUmVmKWVudGl0bGVtZW50LCBudWxscHRyKSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlLmdldCgpKSAh
PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0
dXJuIENGQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4odmFsdWUuZ2V0
KCkpKTsKLX0KIAogZW51bSBjbGFzcyBBcHBsaWNhdGlvblR5cGUgewogICAgIEFwcGxpY2F0aW9u
LApAQCAtNzAsNyArNTYsNyBAQCBzdGF0aWMgQXBwbGljYXRpb25UeXBlIGFwcGxpY2F0aW9uVHlw
ZShVSVdpbmRvdyAqd2luZG93KQogICAgIGlmIChfVUlBcHBsaWNhdGlvbklzRXh0ZW5zaW9uKCkp
CiAgICAgICAgIHJldHVybiBBcHBsaWNhdGlvblR5cGU6OkV4dGVuc2lvbjsKIAotICAgIGlmICho
YXNFbnRpdGxlbWVudChAImNvbS5hcHBsZS5VSUtpdC52ZW5kcy12aWV3LXNlcnZpY2VzIikgJiYg
d2luZG93Ll9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3MpCisgICAgaWYgKHByb2Nlc3NIYXNFbnRp
dGxlbWVudChAImNvbS5hcHBsZS5VSUtpdC52ZW5kcy12aWV3LXNlcnZpY2VzIikgJiYgd2luZG93
Ll9pc0hvc3RlZEluQW5vdGhlclByb2Nlc3MpCiAgICAgICAgIHJldHVybiBBcHBsaWNhdGlvblR5
cGU6OlZpZXdTZXJ2aWNlOwogCiAgICAgcmV0dXJuIEFwcGxpY2F0aW9uVHlwZTo6QXBwbGljYXRp
b247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW0KaW5kZXggZmZjZjU5YS4uYjg4ZGRkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQpAQCAt
MjksMTMgKzI5LDE0IEBACiAjaWYgUExBVEZPUk0oSU9TKQogCiAjaW1wb3J0ICJBUElVSUNsaWVu
dC5oIgorI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENDU1BJLmgiCiAj
aW1wb3J0ICJVSUtpdFNQSS5oIgogI2ltcG9ydCAiV0tBY3Rpb25TaGVldC5oIgogI2ltcG9ydCAi
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgiCisjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAj
aW1wb3J0ICJXZWFrT2JqQ1B0ci5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0
ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0ludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgPFVJ
S2l0L1VJVmlldy5oPgpAQCAtNDQsNiArNDUsMTAgQEAKICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU5TVVJMRXh0cmFzLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEhB
VkUoQVBQX0xJTktTKQorI2ltcG9ydCA8V2ViQ29yZS9MYXVuY2hTZXJ2aWNlc1NQSS5oPgorI2Vu
ZGlmCisKICNpZiBIQVZFKFNBRkFSSV9TRVJWSUNFU19GUkFNRVdPUkspCiAjaW1wb3J0IDxTYWZh
cmlTZXJ2aWNlcy9TU1JlYWRpbmdMaXN0Lmg+CiBTT0ZUX0xJTktfRlJBTUVXT1JLKFNhZmFyaVNl
cnZpY2VzKQpAQCAtNTYsNiArNjEsMjggQEAgU09GVF9MSU5LX0NPTlNUQU5UKFRDQywga1RDQ1Nl
cnZpY2VQaG90b3MsIENGU3RyaW5nUmVmKQogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCisj
aWYgSEFWRShBUFBfTElOS1MpCitzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkhhc0FwcExpbmtFbnRp
dGxlbWVudHMoKQoreworICAgIHN0YXRpYyBib29sIGhhc0VudGl0bGVtZW50ID0gcHJvY2Vzc0hh
c0VudGl0bGVtZW50KEAiY29tLmFwcGxlLnByaXZhdGUuY2FuR2V0QXBwTGlua0luZm8iKSAmJiBw
cm9jZXNzSGFzRW50aXRsZW1lbnQoQCJjb20uYXBwbGUucHJpdmF0ZS5jYW5Nb2RpZnlBcHBMaW5r
UGVybWlzc2lvbnMiKTsKKyAgICByZXR1cm4gaGFzRW50aXRsZW1lbnQ7Cit9CisKK3N0YXRpYyBM
U0FwcExpbmsgKmFwcExpbmtGb3JVUkwoTlNVUkwgKnVybCkKK3sKKyAgICBfX2Jsb2NrIExTQXBw
TGluayAqc3luY0FwcExpbmsgPSBuaWw7CisKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfdCBzZW1h
cGhvcmUgPSBkaXNwYXRjaF9zZW1hcGhvcmVfY3JlYXRlKDApOworICAgIFtMU0FwcExpbmsgZ2V0
QXBwTGlua1dpdGhVUkw6dXJsIGNvbXBsZXRpb25IYW5kbGVyOl4oTFNBcHBMaW5rICphcHBMaW5r
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBzeW5jQXBwTGluayA9IFthcHBMaW5rIHJldGFp
bl07CisgICAgICAgIGRpc3BhdGNoX3NlbWFwaG9yZV9zaWduYWwoc2VtYXBob3JlKTsKKyAgICB9
XTsKKyAgICBkaXNwYXRjaF9zZW1hcGhvcmVfd2FpdChzZW1hcGhvcmUsIERJU1BBVENIX1RJTUVf
Rk9SRVZFUik7CisKKyAgICByZXR1cm4gW3N5bmNBcHBMaW5rIGF1dG9yZWxlYXNlXTsKK30KKyNl
bmRpZgorCiBAaW1wbGVtZW50YXRpb24gV0tBY3Rpb25TaGVldEFzc2lzdGFudCB7CiAgICAgV2Vh
a09iakNQdHI8aWQgPFdLQWN0aW9uU2hlZXRBc3Npc3RhbnREZWxlZ2F0ZT4+IF9kZWxlZ2F0ZTsK
ICAgICBSZXRhaW5QdHI8V0tBY3Rpb25TaGVldD4gX2ludGVyYWN0aW9uU2hlZXQ7CkBAIC0yNjQs
MjAgKzI5MSw1MiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogICAgICAgICBbc2VsZiBjbGVh
bnVwU2hlZXRdOwogfQogCi0tIChSZXRhaW5QdHI8TlNBcnJheT4pZGVmYXVsdEFjdGlvbnNGb3JM
aW5rU2hlZXQKKy0gKHZvaWQpX2FwcGVuZE9wZW5BY3Rpb25zRm9yVVJMOihOU1VSTCAqKXVybCBh
Y3Rpb25zOihOU011dGFibGVBcnJheSAqKWRlZmF1bHRBY3Rpb25zCiB7Ci0gICAgYXV0byBkZWxl
Z2F0ZSA9IF9kZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIWRlbGVnYXRlKQotICAgICAgICByZXR1
cm4gbmlsOworI2lmIEhBVkUoQVBQX0xJTktTKQorICAgIGlmIChhcHBsaWNhdGlvbkhhc0FwcExp
bmtFbnRpdGxlbWVudHMoKSkgeworICAgICAgICBMU0FwcExpbmsgKmFwcExpbmsgPSBhcHBMaW5r
Rm9yVVJMKHVybCk7CisgICAgICAgIGlmIChhcHBMaW5rKSB7CisgICAgICAgICAgICBOU1N0cmlu
ZyAqdGl0bGUgPSBXRUJfVUlfU1RSSU5HKCJPcGVuIGluIFNhZmFyaSIsICJUaXRsZSBmb3IgT3Bl
biBpbiBTYWZhcmkgTGluayBhY3Rpb24gYnV0dG9uIik7CisgICAgICAgICAgICBfV0tFbGVtZW50
QWN0aW9uICpvcGVuSW5EZWZhdWx0QnJvd3NlckFjdGlvbiA9IFtfV0tFbGVtZW50QWN0aW9uIF9l
bGVtZW50QWN0aW9uV2l0aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVPcGVuSW5EZWZhdWx0QnJv
d3NlciB0aXRsZTp0aXRsZSBhY3Rpb25IYW5kbGVyOl4oX1dLQWN0aXZhdGVkRWxlbWVudEluZm8g
KikgeworICAgICAgICAgICAgICAgIGlmIChbYXBwTGluayByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKG9wZW5JbldlYkJyb3dzZXI6c2V0QXBwcm9wcmlhdGVPcGVuU3RyYXRlZ3lBbmRXZWJC
cm93c2VyU3RhdGU6Y29tcGxldGlvbkhhbmRsZXI6KV0pCisgICAgICAgICAgICAgICAgICAgIFth
cHBMaW5rIG9wZW5JbldlYkJyb3dzZXI6WUVTIHNldEFwcHJvcHJpYXRlT3BlblN0cmF0ZWd5QW5k
V2ViQnJvd3NlclN0YXRlOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2VzcywgTlNF
cnJvciAqZXJyb3IpIHt9XTsKKyAgICAgICAgICAgIH1dOworICAgICAgICAgICAgW2RlZmF1bHRB
Y3Rpb25zIGFkZE9iamVjdDpvcGVuSW5EZWZhdWx0QnJvd3NlckFjdGlvbl07CiAKLSAgICBjb25z
dCBhdXRvJiBwb3NpdGlvbkluZm9ybWF0aW9uID0gW2RlbGVnYXRlIHBvc2l0aW9uSW5mb3JtYXRp
b25Gb3JBY3Rpb25TaGVldEFzc2lzdGFudDpzZWxmXTsKLQotICAgIE5TVVJMICp0YXJnZXRVUkwg
PSBbTlNVUkwgVVJMV2l0aFN0cmluZzpwb3NpdGlvbkluZm9ybWF0aW9uLnVybF07Ci0gICAgaWYg
KCF0YXJnZXRVUkwpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBhdXRvIGRlZmF1bHRBY3Rp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgICAgICAg
ICBOU1N0cmluZyAqZXh0ZXJuYWxBcHBsaWNhdGlvbk5hbWUgPSBbYXBwTGluay50YXJnZXRBcHBs
aWNhdGlvblByb3h5IGxvY2FsaXplZE5hbWVGb3JDb250ZXh0Om5pbF07CisgICAgICAgICAgICBp
ZiAoZXh0ZXJuYWxBcHBsaWNhdGlvbk5hbWUpIHsKKyAgICAgICAgICAgICAgICBOU1N0cmluZyAq
dGl0bGUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpXRUJfVUlfU1RSSU5HKCJPcGVuIGlu
IOKAnCVA4oCdIiwgIlRpdGxlIGZvciBPcGVuIGluIEV4dGVybmFsIEFwcGxpY2F0aW9uIExpbmsg
YWN0aW9uIGJ1dHRvbiIpLCBleHRlcm5hbEFwcGxpY2F0aW9uTmFtZV07CisgICAgICAgICAgICAg
ICAgX1dLRWxlbWVudEFjdGlvbiAqb3BlbkluRXh0ZXJuYWxBcHBsaWNhdGlvbkFjdGlvbiA9IFtf
V0tFbGVtZW50QWN0aW9uIF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5
cGVPcGVuSW5FeHRlcm5hbEFwcGxpY2F0aW9uIHRpdGxlOnRpdGxlIGFjdGlvbkhhbmRsZXI6Xihf
V0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChbYXBw
TGluayByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG9wZW5JbldlYkJyb3dzZXI6c2V0QXBw
cm9wcmlhdGVPcGVuU3RyYXRlZ3lBbmRXZWJCcm93c2VyU3RhdGU6Y29tcGxldGlvbkhhbmRsZXI6
KV0pCisgICAgICAgICAgICAgICAgICAgICAgICBbYXBwTGluayBvcGVuSW5XZWJCcm93c2VyOk5P
IHNldEFwcHJvcHJpYXRlT3BlblN0cmF0ZWd5QW5kV2ViQnJvd3NlclN0YXRlOm5pbCBjb21wbGV0
aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2VzcywgTlNFcnJvciAqZXJyb3IpIHt9XTsKKyAgICAgICAg
ICAgICAgICB9XTsKKyAgICAgICAgICAgICAgICBbZGVmYXVsdEFjdGlvbnMgYWRkT2JqZWN0Om9w
ZW5JbkV4dGVybmFsQXBwbGljYXRpb25BY3Rpb25dOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UKKyAgICAgICAgICAgIFtkZWZhdWx0QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRB
Y3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTpfV0tFbGVtZW50QWN0aW9uVHlwZU9wZW4gYXNz
aXN0YW50OnNlbGZdXTsKKyAgICB9IGVsc2UKKyAgICAgICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9i
amVjdDpbX1dLRWxlbWVudEFjdGlvbiBfZWxlbWVudEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRB
Y3Rpb25UeXBlT3BlbiBhc3Npc3RhbnQ6c2VsZl1dOworI2Vsc2UKICAgICBbZGVmYXVsdEFjdGlv
bnMgYWRkT2JqZWN0OltfV0tFbGVtZW50QWN0aW9uIF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6X1dL
RWxlbWVudEFjdGlvblR5cGVPcGVuIGFzc2lzdGFudDpzZWxmXV07CisjZW5kaWYKK30KKworLSAo
UmV0YWluUHRyPE5TQXJyYXk+KWRlZmF1bHRBY3Rpb25zRm9yTGlua1NoZWV0Cit7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgY29uc3QgYXV0byYgcG9zaXRpb25JbmZvcm1hdGlvbiA9IFtk
ZWxlZ2F0ZSBwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl07
CisKKyAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6cG9zaXRpb25J
bmZvcm1hdGlvbi51cmxdOworICAgIGlmICghdGFyZ2V0VVJMKQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgYXV0byBkZWZhdWx0QWN0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBh
bGxvY10gaW5pdF0pOworICAgIFtzZWxmIF9hcHBlbmRPcGVuQWN0aW9uc0ZvclVSTDp0YXJnZXRV
UkwgYWN0aW9uczpkZWZhdWx0QWN0aW9ucy5nZXQoKV07CisKICNpZiBIQVZFKFNBRkFSSV9TRVJW
SUNFU19GUkFNRVdPUkspCiAgICAgaWYgKFtnZXRTU1JlYWRpbmdMaXN0Q2xhc3MoKSBzdXBwb3J0
c1VSTDp0YXJnZXRVUkxdKQogICAgICAgICBbZGVmYXVsdEFjdGlvbnMgYWRkT2JqZWN0OltfV0tF
bGVtZW50QWN0aW9uIF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVB
ZGRUb1JlYWRpbmdMaXN0IGFzc2lzdGFudDpzZWxmXV07CkBAIC0yOTksNyArMzU4LDggQEAgdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKIAogICAgIGF1dG8gZGVmYXVsdEFjdGlvbnMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoIXBvc2l0aW9uSW5mb3Jt
YXRpb24udXJsLmlzRW1wdHkoKSkKLSAgICAgICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9iamVjdDpb
X1dLRWxlbWVudEFjdGlvbiBfZWxlbWVudEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25U
eXBlT3BlbiBhc3Npc3RhbnQ6c2VsZl1dOworICAgICAgICBbc2VsZiBfYXBwZW5kT3BlbkFjdGlv
bnNGb3JVUkw6dGFyZ2V0VVJMIGFjdGlvbnM6ZGVmYXVsdEFjdGlvbnMuZ2V0KCldOworCiAjaWYg
SEFWRShTQUZBUklfU0VSVklDRVNfRlJBTUVXT1JLKQogICAgIGlmIChbZ2V0U1NSZWFkaW5nTGlz
dENsYXNzKCkgc3VwcG9ydHNVUkw6dGFyZ2V0VVJMXSkKICAgICAgICAgW2RlZmF1bHRBY3Rpb25z
IGFkZE9iamVjdDpbX1dLRWxlbWVudEFjdGlvbiBfZWxlbWVudEFjdGlvbldpdGhUeXBlOl9XS0Vs
ZW1lbnRBY3Rpb25UeXBlQWRkVG9SZWFkaW5nTGlzdCBhc3Npc3RhbnQ6c2VsZl1dOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIy
YzdiNmQuLjRjYWI5ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTE3MzAsNyArMTczMCw3IEBACiAJCUUxOTU4MkQ2MTUzQ0Mw
NTQwMEI2MDg3NSAvKiBQREZLaXRJbXBvcnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5NTgyRDQxNTNDQzA1MzAwQjYwODc1IC8qIFBERktpdElt
cG9ydHMubW0gKi87IH07CiAJCUUxOUJEQTg2MTkzNjY1RTMwMEI5N0Y1NyAvKiBjb20uYXBwbGUu
YXBwc3RvcmUuQ29kZVJlZGVlbWVyTmV0c2NhcGVQbHVnaW4uc2IgaW4gQ29weSBQbHVnLWluIFNh
bmRib3ggUHJvZmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE5QkRB
ODQxOTM2NUY0QjAwQjk3RjU3IC8qIGNvbS5hcHBsZS5hcHBzdG9yZS5Db2RlUmVkZWVtZXJOZXRz
Y2FwZVBsdWdpbi5zYiAqLzsgfTsKIAkJRTE5QkRBOEExOTM2ODZBNDAwQjk3RjU3IC8qIFNhbmRi
b3hVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxOUJEQTg4MTkzNjg2QTQwMEI5N0Y1NyAvKiBTYW5kYm94VXRpbGl0aWVzLmggKi87IH07
Ci0JCUUxOUJEQThCMTkzNjhENDYwMEI5N0Y1NyAvKiBTYW5kYm94VXRpbGl0aWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOUJEQTg3MTkzNjg2
QTQwMEI5N0Y1NyAvKiBTYW5kYm94VXRpbGl0aWVzLmNwcCAqLzsgfTsKKwkJRTE5QkRBOEIxOTM2
OEQ0NjAwQjk3RjU3IC8qIFNhbmRib3hVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTlCREE4NzE5MzY4NkE0MDBCOTdGNTcgLyogU2Fu
ZGJveFV0aWxpdGllcy5tbSAqLzsgfTsKIAkJRTFBMzE3MzIxMzRDRUE2QzAwN0M5QTRGIC8qIEF0
dHJpYnV0ZWRTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQTMxNzMxMTM0Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi87
IH07CiAJCUUxQTMxNzM1MTM0Q0VBODAwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFBMzE3MzQxMzRD
RUE4MDAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gKi87IH07CiAJCUUxQTlBODUyMTY5
RTIwMjUwMDJENzE3NiAvKiBXZWJLaXQuaWNucyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzM0ZEODkxNDIzREQ3RjAwRkM3QkZCIC8qIFdlYktpdC5p
Y25zICovOyB9OwpAQCAtMzk2Niw3ICszOTY2LDcgQEAKIAkJRTE5NTgyRDQxNTNDQzA1MzAwQjYw
ODc1IC8qIFBERktpdEltcG9ydHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQREZLaXRJbXBvcnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MTk2N0UzNzE1MEFCNUUyMDBDNzMxNjkgLyogY29tLmFwcGxlLldlYlByb2Nlc3Muc2IgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gY29tLmFwcGxlLldlYlByb2Nlc3Muc2I7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxOUJEQTg0MTkzNjVGNEIwMEI5N0Y1NyAvKiBjb20uYXBwbGUuYXBw
c3RvcmUuQ29kZVJlZGVlbWVyTmV0c2NhcGVQbHVnaW4uc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gY29tLmFwcGxlLmFwcHN0b3JlLkNvZGVSZWRlZW1lck5ldHNjYXBlUGx1Z2luLnNiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMTlCREE4NzE5MzY4NkE0MDBCOTdGNTcgLyogU2Fu
ZGJveFV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
YW5kYm94VXRpbGl0aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTE5QkRB
ODcxOTM2ODZBNDAwQjk3RjU3IC8qIFNhbmRib3hVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTYW5kYm94VXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTlCREE4ODE5MzY4NkE0MDBCOTdGNTcgLyogU2FuZGJveFV0
aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5kYm94VXRpbGl0
aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQTMxNzMxMTM0Q0VBNkMwMDdD
OUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF0dHJpYnV0ZWRTdHJpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFB
MzE3MzQxMzRDRUE4MDAwN0M5QTRGIC8qIEF0dHJpYnV0ZWRTdHJpbmcubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdHRyaWJ1dGVkU3RyaW5nLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ4MSw4ICs2NDgxLDggQEAKIAkJCQkxQUYxQUM2OTE2
NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gKi8sCiAJCQkJ
MUFBQjRBQTkxMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMubW0gKi8sCiAJ
CQkJRTFFNTUyQzIxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaWF0aW9uUGFyYW1l
dGVyc01hYy5tbSAqLywKLQkJCQlFMTlCREE4NzE5MzY4NkE0MDBCOTdGNTcgLyogU2FuZGJveFV0
aWxpdGllcy5jcHAgKi8sCiAJCQkJRTE5QkRBODgxOTM2ODZBNDAwQjk3RjU3IC8qIFNhbmRib3hV
dGlsaXRpZXMuaCAqLywKKwkJCQlFMTlCREE4NzE5MzY4NkE0MDBCOTdGNTcgLyogU2FuZGJveFV0
aWxpdGllcy5tbSAqLywKIAkJCQk1MUQxMzA0RjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJl
cXVlc3REYXRhLmNwcCAqLywKIAkJCQk1MUQxMzA1MDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRl
bVJlcXVlc3REYXRhLmggKi8sCiAJCQkJNTFEMTMwNTExMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0
ZW1SZXNwb25zZURhdGEuY3BwICovLApAQCAtOTYyNCw3ICs5NjI0LDcgQEAKIAkJCQlCQzExMUIw
OTExMkY1RTNDMDAzMzdCQUIgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQUFCNEFBQTEyOTZGMTU0MDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbk1hYy5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUUxRTU1MkM0MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94
SW5pdGlhbGlhdGlvblBhcmFtZXRlcnNNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMTlCREE4
QjE5MzY4RDQ2MDBCOTdGNTcgLyogU2FuZGJveFV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFMTlCREE4QjE5MzY4RDQ2MDBCOTdGNTcgLyogU2FuZGJveFV0aWxpdGllcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTBGOTMxQzFEMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMTMwNTMx
MzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1MUQxMzA1NTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAg
aW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="281758"
          type_id="1"
          status="+"
          setter="mitz"
    />
    <flag name="commit-queue"
          id="281759"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>