<?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>146567</bug_id>
          
          <creation_ts>2015-07-02 17:44:47 -0700</creation_ts>
          <short_desc>Allow UIDelegate to customize link actions in preview.</short_desc>
          <delta_ts>2015-07-06 14:32:13 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yongjun Zhang">yongjun_zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1106554</commentid>
    <comment_count>0</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2015-07-02 17:44:47 -0700</bug_when>
    <thetext>The link sheet actions should be customizable in preview view controller.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106566</commentid>
    <comment_count>1</comment_count>
      <attachid>256061</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2015-07-02 18:06:32 -0700</bug_when>
    <thetext>Created attachment 256061
Patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106567</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-02 18:07:48 -0700</bug_when>
    <thetext>Attachment 256061 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:3222:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 8 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>1106568</commentid>
    <comment_count>3</comment_count>
      <attachid>256062</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2015-07-02 18:11:04 -0700</bug_when>
    <thetext>Created attachment 256062
Patch, fixed style violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1106647</commentid>
    <comment_count>4</comment_count>
      <attachid>256062</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-07-03 00:22:01 -0700</bug_when>
    <thetext>Comment on attachment 256062
Patch, fixed style violation.

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

&gt; Source/WebKit2/ChangeLog:7
&gt; +        the client customize the actions based on the element. Also add a new SPI runActionWithElementInfo:

...allow the client [to] customize...

&gt; Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:313
&gt; +    NSURL *targetURL = [NSURL URLWithString:positionInformation.url];

_web_URLWithWTFString, no?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107185</commentid>
    <comment_count>5</comment_count>
      <attachid>256062</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2015-07-06 12:36:16 -0700</bug_when>
    <thetext>Comment on attachment 256062
Patch, fixed style violation.

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

&gt;&gt; Source/WebKit2/UIProcess/ios/WKActionSheetAssistant.mm:313
&gt;&gt; +    NSURL *targetURL = [NSURL URLWithString:positionInformation.url];
&gt; 
&gt; _web_URLWithWTFString, no?

Even though this is existing code, this would be a good change to make.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107213</commentid>
    <comment_count>6</comment_count>
      <attachid>256236</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2015-07-06 13:32:54 -0700</bug_when>
    <thetext>Created attachment 256236
Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107228</commentid>
    <comment_count>7</comment_count>
      <attachid>256236</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-06 14:32:09 -0700</bug_when>
    <thetext>Comment on attachment 256236
Patch for landing.

Clearing flags on attachment: 256236

Committed r186377: &lt;http://trac.webkit.org/changeset/186377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1107229</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-07-06 14:32:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256061</attachid>
            <date>2015-07-02 18:06:32 -0700</date>
            <delta_ts>2015-07-02 18:11:04 -0700</delta_ts>
            <desc>Patch.</desc>
            <filename>link_actions.patch</filename>
            <type>text/plain</type>
            <size>13979</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">Y29tbWl0IDdkNzY3YTNlMTM1NjU1ODY3MGMxZDEwZjU0NjQ0MDkzOTRlODk2MTUKQXV0aG9yOiBZ
b25nanVuIFpoYW5nIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgSnVsIDIg
MTc6MDc6NTIgMjAxNSAtMDcwMAoKICAgIEFsbG93IFVJRGVsZWdhdGUgdG8gY3VzdG9taXplIGxp
bmsgYWN0aW9ucyBpbiBwcmV2aWV3LgogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NjU2NwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmMjBlZTQ1Li4zNjA0ZDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMDctMDIgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVu
X3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBVSURlbGVnYXRlIHRvIGN1c3RvbWl6
ZSBsaW5rIGFjdGlvbnMgaW4gcHJldmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NjU2NworCisgICAgICAgIEFkZCBhIG5ldyBVSURlbGVnYXRl
IG1ldGhvZCB0byBwYXNzIHRoZSBkZWZhdWx0QWN0aW9ucyBhbmQgZWxlbWVudEluZm8gdG8gY2xp
ZW50IHRvIGFsbG93CisgICAgICAgIHRoZSBjbGllbnQgY3VzdG9taXplIHRoZSBhY3Rpb25zIGJh
c2VkIG9uIHRoZSBlbGVtZW50LiBBbHNvIGFkZCBhIG5ldyBTUEkgcnVuQWN0aW9uV2l0aEVsZW1l
bnRJbmZvOgorICAgICAgICB0byBfV0tFbGVtZW50QWN0aW9uIGFuZCBtYWtlIGl0IGF3YXJlIG9m
IHRoZSBXS0FjdGlvblNoZWV0QXNzaXN0YW50IHRoYXQgY3JlYXRlcyBpdCwgc28gdGhhdAorICAg
ICAgICB0aGUgY2xpZW50IGNhbiBydW4gdGhlIGFjdGlvbiB3aXRob3V0IGtub3dpbmcgV0tBY3Rp
b25TaGVldEFzc2lzdGFudC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOiBB
ZGQgZGVsZWdhdGUgbWV0aG9kIF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDpk
ZWZhdWx0QWN0aW9uczplbGVtZW50SW5mbzouCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tFbGVtZW50QWN0aW9uLmg6IEFkZCBhIFNQSSBydW5BY3Rpb25XaXRoRWxlbWVudEluZm86
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbToKKyAg
ICAgICAgKC1bX1dLRWxlbWVudEFjdGlvbiBfaW5pdFdpdGhUaXRsZTphY3Rpb25IYW5kbGVyOnR5
cGU6YXNzaXN0YW50Ol0pOiBNb2RpZmllZCBpbml0aWFsaXplciwgYWxzbyBpbml0aWFsaXplIF9k
ZWZhdWx0QWN0aW9uU2hlZXRBc3Npc3RhbnQKKyAgICAgICAgICAgIGlWYXIgaWYgdGhlIGNhbGxl
ciBwcm92aWRlcyB0aGF0LgorICAgICAgICAoK1tfV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rp
b25XaXRoVGl0bGU6YWN0aW9uSGFuZGxlcjpdKTogVXNlIHRoZSBuZXcgaW5pdGlhbGl6ZXIuCisg
ICAgICAgICgrW19XS0VsZW1lbnRBY3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTpjdXN0b21U
aXRsZTphc3Npc3RhbnQ6XSk6IEEgbmV3IGhlbHBlciBtZXRob2QgdG8gY3JlYXRlIF9XS0VsZW1l
bnRBY3Rpb24gd2l0aCBhc3Npc3RhbnQuCisgICAgICAgICgrW19XS0VsZW1lbnRBY3Rpb24gX2Vs
ZW1lbnRBY3Rpb25XaXRoVHlwZTphc3Npc3RhbnQ6XSk6CisgICAgICAgICgrW19XS0VsZW1lbnRB
Y3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOmN1c3RvbVRpdGxlOl0pOgorICAgICAgICAoLVtf
V0tFbGVtZW50QWN0aW9uIHJ1bkFjdGlvbldpdGhFbGVtZW50SW5mbzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oOiBBZGQgYSBtZXRob2QgZGVm
YXVsdEFjdGlvbnNGb3JMaW5rU2hlZXQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlv
blNoZWV0QXNzaXN0YW50Lm1tOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IGRl
ZmF1bHRBY3Rpb25zRm9yTGlua1NoZWV0XSk6IEdldCBkZWZhdWx0IGFjdGlvbnMgZm9yIGN1cnJl
bnQgbGluayB0aGF0IGlzIGFjdGl2YXRlZC4KKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lz
dGFudCBzaG93TGlua1NoZWV0XSk6IFVzZSBkZWZhdWx0QWN0aW9uc0ZvckxpbmtTaGVldC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JQb3NpdGlvbjppblNv
dXJjZVZpZXc6XSk6IFBhc3MgZGVmYXVsdEFjdGlvbnMgYW5kIGVsZW1lbnRJbmZvIHRvIFVJRGVs
ZWdhdGUgd2hlbiBxdWVyeWluZworICAgICAgICAgICAgZm9yIHByZXZpZXcgdmlldyBjb250cm9s
bGVyLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpZERpc21pc3NQcmV2aWV3Vmlld0NvbnRy
b2xsZXI6Y29tbWl0dGluZzpdKToKKwogMjAxNS0wNy0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgQVBJIHRvIGNsZWFyIHRoZSBIU1RT
IGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDE0MzJhYmUuLmQxNmY5OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJp
dmF0ZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKIEBjbGFzcyBVSVNjcm9sbFZpZXc7CiBAY2xhc3Mg
VUlWaWV3Q29udHJvbGxlcjsKK0BjbGFzcyBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbzsKIEBjbGFz
cyBfV0tGcmFtZUhhbmRsZTsKIAogQHByb3RvY29sIFdLVUlEZWxlZ2F0ZVByaXZhdGUgPFdLVUlE
ZWxlZ2F0ZT4KQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tbWl0UHJldmlld2VkSW1hZ2VXaXRoVVJM
OihOU1VSTCAqKWltYWdlVVJMIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRGlzbWlzc1ByZXZpZXdW
aWV3Q29udHJvbGxlcjooVUlWaWV3Q29udHJvbGxlciAqKXByZXZpZXdlZFZpZXdDb250cm9sbGVy
OwogLSAoVUlFZGdlSW5zZXRzKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZpbmFsT2Jz
Y3VyZWRJbnNldHNGb3JTY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhW
ZWxvY2l0eTooQ0dQb2ludCl2ZWxvY2l0eSB0YXJnZXRDb250ZW50T2Zmc2V0Oihpbm91dCBDR1Bv
aW50ICopdGFyZ2V0Q29udGVudE9mZnNldDsKKy0gKFVJVmlld0NvbnRyb2xsZXIgKilfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6KE5TVVJM
ICopdXJsIGRlZmF1bHRBY3Rpb25zOihOU0FycmF5ICopYWN0aW9ucyBlbGVtZW50SW5mbzooX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50SW5mbyBXS19BVkFJTEFCTEUoV0tfTUFDX1RC
QSwgV0tfSU9TX1RCQSk7CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24uaAppbmRleCBmNWU3YzBkLi5h
OWM4NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0VsZW1lbnRBY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0VsZW1lbnRBY3Rpb24uaApAQCAtNTIsNiArNTIsOCBAQCBXS19DTEFTU19BVkFJTEFCTEUo
MTBfMTAsIDhfMCkKIAogKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5k
bGVyOwogCistICh2b2lkKXJ1bkFjdGlvbldpdGhFbGVtZW50SW5mbzooX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gKilpbmZvIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tFbGVtZW50QWN0aW9uVHlwZSB0eXBl
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyogdGl0bGU7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgV0tFbGVtZW50QWN0aW9uRGlzbWlzc2FsSGFuZGxlciBk
aXNtaXNzYWxIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCmluZGV4IDI2NzRiYWEuLmE0MjYxOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRB
Y3Rpb24ubW0KQEAgLTUxLDkgKzUxLDEwIEBAIHR5cGVkZWYgdm9pZCAoXldLRWxlbWVudEFjdGlv
bkhhbmRsZXJJbnRlcm5hbCkoV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3RpCiAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBfdGl0bGU7CiAgICAgV0tFbGVtZW50QWN0aW9uSGFuZGxlcklu
dGVybmFsIF9hY3Rpb25IYW5kbGVyOwogICAgIFdLRWxlbWVudEFjdGlvbkRpc21pc3NhbEhhbmRs
ZXIgX2Rpc21pc3NhbEhhbmRsZXI7CisgICAgX193ZWFrIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQg
Kl9kZWZhdWx0QWN0aW9uU2hlZXRBc3Npc3RhbnQ7CiB9CiAKLS0gKGlkKV9pbml0V2l0aFRpdGxl
OihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJ
bnRlcm5hbCloYW5kbGVyIHR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUKKy0gKGlkKV9p
bml0V2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxlbWVudEFj
dGlvbkhhbmRsZXJJbnRlcm5hbCloYW5kbGVyIHR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5
cGUgYXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CiB7CiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC02MSw2
ICs2Miw3IEBAIHR5cGVkZWYgdm9pZCAoXldLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCko
V0tBY3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3RpCiAgICAgX3RpdGxlID0gYWRvcHROUyhb
dGl0bGUgY29weV0pOwogICAgIF90eXBlID0gdHlwZTsKICAgICBfYWN0aW9uSGFuZGxlciA9IFto
YW5kbGVyIGNvcHldOworICAgIF9kZWZhdWx0QWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhc3Npc3Rh
bnQ7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTc1LDcgKzc3LDcgQEAgdHlwZWRlZiB2b2lk
ICheV0tFbGVtZW50QWN0aW9uSGFuZGxlckludGVybmFsKShXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICosIF9XS0FjdGkKICsgKGluc3RhbmNldHlwZSllbGVtZW50QWN0aW9uV2l0aFRpdGxlOihOU1N0
cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXIpaGFuZGxl
cgogewogICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTp0aXRsZSBhY3Rp
b25IYW5kbGVyOl4oV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mbyAqYWN0aW9uSW5mbykgeyBoYW5kbGVyKGFjdGlvbkluZm8pOyB9Ci0gICAgICAgdHlwZTpf
V0tFbGVtZW50QWN0aW9uVHlwZUN1c3RvbV0gYXV0b3JlbGVhc2VdOworICAgICAgICB0eXBlOl9X
S0VsZW1lbnRBY3Rpb25UeXBlQ3VzdG9tIGFzc2lzdGFudDpuaWxdIGF1dG9yZWxlYXNlXTsKIH0K
IAogI2lmIEhBVkUoU0FGQVJJX1NFUlZJQ0VTX0ZSQU1FV09SSykKQEAgLTg4LDcgKzkwLDcgQEAg
c3RhdGljIHZvaWQgYWRkVG9SZWFkaW5nTGlzdChOU1VSTCAqdGFyZ2V0VVJMLCBOU1N0cmluZyAq
dGl0bGUpCiB9CiAjZW5kaWYKIAotKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVHlw
ZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKiljdXN0
b21UaXRsZQorKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1l
bnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE5TU3RyaW5nICopY3VzdG9tVGl0bGUgYXNz
aXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CiB7CiAgICAgTlNTdHJp
bmcgKnRpdGxlOwogICAgIFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCBoYW5kbGVyOwpA
QCAtMTI0LDcgKzEyNiwxNyBAQCBzdGF0aWMgdm9pZCBhZGRUb1JlYWRpbmdMaXN0KE5TVVJMICp0
YXJnZXRVUkwsIE5TU3RyaW5nICp0aXRsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAK
LSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoVGl0bGU6KGN1c3RvbVRpdGxlID8g
Y3VzdG9tVGl0bGUgOiB0aXRsZSkgYWN0aW9uSGFuZGxlcjpoYW5kbGVyIHR5cGU6dHlwZV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTooY3Vz
dG9tVGl0bGUgPyBjdXN0b21UaXRsZSA6IHRpdGxlKSBhY3Rpb25IYW5kbGVyOmhhbmRsZXIgdHlw
ZTp0eXBlIGFzc2lzdGFudDphc3Npc3RhbnRdIGF1dG9yZWxlYXNlXTsKK30KKworKyAoaW5zdGFu
Y2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUg
YXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50Cit7CisgICAgcmV0
dXJuIFtzZWxmIF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6dHlwZSBjdXN0b21UaXRsZTpuaWwgYXNz
aXN0YW50OmFzc2lzdGFudF07Cit9CisKKysgKGluc3RhbmNldHlwZSllbGVtZW50QWN0aW9uV2l0
aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE5TU3RyaW5nICop
Y3VzdG9tVGl0bGUKK3sKKyAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTp0
eXBlIGN1c3RvbVRpdGxlOmN1c3RvbVRpdGxlIGFzc2lzdGFudDpuaWxdOwogfQogCiArIChpbnN0
YW5jZXR5cGUpZWxlbWVudEFjdGlvbldpdGhUeXBlOihfV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBl
CkBAIC0xNDIsNiArMTU0LDExIEBAIHN0YXRpYyB2b2lkIGFkZFRvUmVhZGluZ0xpc3QoTlNVUkwg
KnRhcmdldFVSTCwgTlNTdHJpbmcgKnRpdGxlKQogICAgIF9hY3Rpb25IYW5kbGVyKGFzc2lzdGFu
dCwgaW5mbyk7CiB9CiAKKy0gKHZvaWQpcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyAqKWluZm8KK3sKKyAgICBbc2VsZiBfcnVuQWN0aW9uV2l0aEVsZW1l
bnRJbmZvOmluZm8gZm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6X2RlZmF1bHRBY3Rpb25TaGVldEFz
c2lzdGFudF07Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbklu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRB
Y3Rpb25JbnRlcm5hbC5oCmluZGV4IDgyYmJkZDEuLmEyZmU1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9u
SW50ZXJuYWwuaApAQCAtMzQsNiArMzQsNyBAQAogCiBAaW50ZXJmYWNlIF9XS0VsZW1lbnRBY3Rp
b24gKCkKIAorKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1l
bnRBY3Rpb25UeXBlKXR5cGUgYXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNz
aXN0YW50OwogLSAodm9pZClfcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mbyAqKWluZm8gZm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRB
c3Npc3RhbnQgKilhc3Npc3RhbnQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKaW5kZXggMDNlYjE5ZS4uMzZi
NGMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0QXNzaXN0YW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlv
blNoZWV0QXNzaXN0YW50LmgKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uOwogLSAodm9pZClzaG93RGF0YURldGVjdG9yc1NoZWV0OwogLSAo
dm9pZCljbGVhbnVwU2hlZXQ7CiAtICh2b2lkKXVwZGF0ZVNoZWV0UG9zaXRpb247CistIChSZXRh
aW5QdHI8TlNBcnJheT4pZGVmYXVsdEFjdGlvbnNGb3JMaW5rU2hlZXQ7CiBAZW5kCiAKICNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXggNGViNDQyNC4uMjE4MzhkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFz
c2lzdGFudC5tbQpAQCAtMjc1LDMwICsyNzUsNDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICAgICAgICAgW3NlbGYgY2xlYW51cFNoZWV0XTsKIH0KIAotLSAodm9pZClzaG93TGlua1NoZWV0
CistIChSZXRhaW5QdHI8TlNBcnJheT4pZGVmYXVsdEFjdGlvbnNGb3JMaW5rU2hlZXQKIHsKLSAg
ICBBU1NFUlQoIV9pbnRlcmFjdGlvblNoZWV0KTsKLSAgICBBU1NFUlQoIV9lbGVtZW50SW5mbyk7
Ci0KICAgICBhdXRvIGRlbGVnYXRlID0gX2RlbGVnYXRlLmdldCgpOwogICAgIGlmICghZGVsZWdh
dGUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGNvbnN0IGF1
dG8mIHBvc2l0aW9uSW5mb3JtYXRpb24gPSBbZGVsZWdhdGUgcG9zaXRpb25JbmZvcm1hdGlvbkZv
ckFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGZdOwogCiAgICAgTlNVUkwgKnRhcmdldFVSTCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOnBvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKICAgICBpZiAoIXRh
cmdldFVSTCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgYXV0
byBkZWZhdWx0QWN0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwotICAgIFtkZWZhdWx0QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVu
dEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlT3Blbl1dOworICAgIFtkZWZhdWx0
QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlw
ZTpfV0tFbGVtZW50QWN0aW9uVHlwZU9wZW4gYXNzaXN0YW50OnNlbGZdXTsKICNpZiBIQVZFKFNB
RkFSSV9TRVJWSUNFU19GUkFNRVdPUkspCiAgICAgaWYgKFtnZXRTU1JlYWRpbmdMaXN0Q2xhc3Mo
KSBzdXBwb3J0c1VSTDp0YXJnZXRVUkxdKQotICAgICAgICBbZGVmYXVsdEFjdGlvbnMgYWRkT2Jq
ZWN0OltfV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rpb25XaXRoVHlwZTpfV0tFbGVtZW50QWN0
aW9uVHlwZUFkZFRvUmVhZGluZ0xpc3RdXTsKKyAgICAgICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9i
amVjdDpbX1dLRWxlbWVudEFjdGlvbiBfZWxlbWVudEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRB
Y3Rpb25UeXBlQWRkVG9SZWFkaW5nTGlzdCBhc3Npc3RhbnQ6c2VsZl1dOwogI2VuZGlmCiAgICAg
aWYgKCFbW3RhcmdldFVSTCBzY2hlbWVdIGxlbmd0aF0gfHwgW1t0YXJnZXRVUkwgc2NoZW1lXSBj
YXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiamF2YXNjcmlwdCJdICE9IE5TT3JkZXJlZFNhbWUpCi0g
ICAgICAgIFtkZWZhdWx0QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVu
dEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlQ29weV1dOworICAgICAgICBbZGVm
YXVsdEFjdGlvbnMgYWRkT2JqZWN0OltfV0tFbGVtZW50QWN0aW9uIF9lbGVtZW50QWN0aW9uV2l0
aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVDb3B5IGFzc2lzdGFudDpzZWxmXV07CisKKyAgICBy
ZXR1cm4gZGVmYXVsdEFjdGlvbnM7Cit9CisKKy0gKHZvaWQpc2hvd0xpbmtTaGVldAoreworICAg
IEFTU0VSVCghX2ludGVyYWN0aW9uU2hlZXQpOworICAgIEFTU0VSVCghX2VsZW1lbnRJbmZvKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBfZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgYXV0byYgcG9zaXRpb25JbmZvcm1hdGlv
biA9IFtkZWxlZ2F0ZSBwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6
c2VsZl07CisKKyAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6cG9z
aXRpb25JbmZvcm1hdGlvbi51cmxdOworICAgIGlmICghdGFyZ2V0VVJMKQorICAgICAgICByZXR1
cm47CiAKKyAgICBhdXRvIGRlZmF1bHRBY3Rpb25zID0gW3NlbGYgZGVmYXVsdEFjdGlvbnNGb3JM
aW5rU2hlZXRdOwogICAgIFJldGFpblB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4gZWxlbWVu
dEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0
aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVMaW5rCiAgICAgICAgIFVSTDp0YXJnZXRVUkwg
bG9jYXRpb246cG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCB0aXRsZTpwb3NpdGlvbkluZm9ybWF0
aW9uLnRpdGxlIHJlY3Q6cG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6cG9zaXRpb25J
bmZvcm1hdGlvbi5pbWFnZS5nZXQoKV0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGM2MzA1MmMu
LmUwYjllNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC01Miw2ICs1Miw3IEBACiAjaW1wb3J0ICJX
ZWJJT1NFdmVudEZhY3RvcnkuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0lu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGb3JtRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Zvcm1J
bnB1dFNlc3Npb24uaCIKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udC5oPgpAQCAtMzIxOCw3ICsz
MjE5LDEyIEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlw
ZSkKICAgICBpZiAoY2FuU2hvd0xpbmtQcmV2aWV3KSB7CiAgICAgICAgIF9wcmV2aWV3VHlwZSA9
IFByZXZpZXdFbGVtZW50VHlwZTo6TGluazsKICAgICAgICAgTlNVUkwgKnRhcmdldFVSTCA9IFtO
U1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6X3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKLSAg
ICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6cHJldmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOildKSB7CisgICAgICAgIGlmIChbdWlEZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdWaWV3Q29u
dHJvbGxlckZvclVSTDpkZWZhdWx0QWN0aW9uczplbGVtZW50SW5mbzopXSkgeworICAgICAgICAg
ICAgX2hpZ2hsaWdodExvbmdQcmVzc0NhbkNsaWNrID0gTk87CisgICAgICAgICAgICBSZXRhaW5Q
dHI8X1dLQWN0aXZhdGVkRWxlbWVudEluZm8+IGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0Fj
dGl2YXRlZEVsZW1lbnRJbmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1l
bnRUeXBlTGluayBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnBv
aW50IHRpdGxlOl9wb3NpdGlvbkluZm9ybWF0aW9uLnRpdGxlIHJlY3Q6X3Bvc2l0aW9uSW5mb3Jt
YXRpb24uYm91bmRzIGltYWdlOl9wb3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgpXSk7Cisg
ICAgICAgICAgICBfcGFnZS0+c3RhcnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihf
cG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCk7CisgICAgICAgICAgICByZXR1cm4gW3VpRGVsZWdh
dGUgX3dlYlZpZXc6X3dlYlZpZXcgcHJldmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOnRhcmdldFVS
TCBkZWZhdWx0QWN0aW9uczpbX2FjdGlvblNoZWV0QXNzaXN0YW50IGRlZmF1bHRBY3Rpb25zRm9y
TGlua1NoZWV0XS5nZXQoKSBlbGVtZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV07CisgICAgICAg
IH0gZWxzZSBpZiAoW3VpRGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
VmlldzpwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6KV0pIHsKICAgICAgICAgICAgIF9oaWdo
bGlnaHRMb25nUHJlc3NDYW5DbGljayA9IE5POwogICAgICAgICAgICAgcmV0dXJuIFt1aURlbGVn
YXRlIF93ZWJWaWV3Ol93ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDp0YXJnZXRV
UkxdOwogICAgICAgICB9CkBAIC0zMjkwLDYgKzMyOTYsNyBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lz
dGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAtICh2b2lkKWRpZERpc21pc3NQcmV2aWV3
Vmlld0NvbnRyb2xsZXI6KFVJVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJvbGxlciBjb21taXR0
aW5nOihCT09MKWNvbW1pdHRpbmcKIHsKICAgICBbc2VsZiBfYWRkRGVmYXVsdEdlc3R1cmVSZWNv
Z25pemVyc107CisgICAgX3BhZ2UtPnN0b3BJbnRlcmFjdGlvbigpOwogCiAgICAgaWQ8V0tVSURl
bGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQ
cml2YXRlPj4oW193ZWJWaWV3IFVJRGVsZWdhdGVdKTsKICAgICBpZiAoW3VpRGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWREaXNtaXNzUHJldmlld1ZpZXdD
b250cm9sbGVyOildKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256062</attachid>
            <date>2015-07-02 18:11:04 -0700</date>
            <delta_ts>2015-07-06 13:32:54 -0700</delta_ts>
            <desc>Patch, fixed style violation.</desc>
            <filename>link_actions.patch</filename>
            <type>text/plain</type>
            <size>13877</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">Y29tbWl0IDk2MzE1NjRkZTdlNDg5NGVjNmRhNTY5ZTg0NThiOTc3NWUzNzg3ZjMKQXV0aG9yOiBZ
b25nanVuIFpoYW5nIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgSnVsIDIg
MTc6MDc6NTIgMjAxNSAtMDcwMAoKICAgIEFsbG93IFVJRGVsZWdhdGUgdG8gY3VzdG9taXplIGxp
bmsgYWN0aW9ucyBpbiBwcmV2aWV3LgogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NjU2NwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmMjBlZTQ1Li4zNjA0ZDQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMDctMDIgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVu
X3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBVSURlbGVnYXRlIHRvIGN1c3RvbWl6
ZSBsaW5rIGFjdGlvbnMgaW4gcHJldmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NjU2NworCisgICAgICAgIEFkZCBhIG5ldyBVSURlbGVnYXRl
IG1ldGhvZCB0byBwYXNzIHRoZSBkZWZhdWx0QWN0aW9ucyBhbmQgZWxlbWVudEluZm8gdG8gY2xp
ZW50IHRvIGFsbG93CisgICAgICAgIHRoZSBjbGllbnQgY3VzdG9taXplIHRoZSBhY3Rpb25zIGJh
c2VkIG9uIHRoZSBlbGVtZW50LiBBbHNvIGFkZCBhIG5ldyBTUEkgcnVuQWN0aW9uV2l0aEVsZW1l
bnRJbmZvOgorICAgICAgICB0byBfV0tFbGVtZW50QWN0aW9uIGFuZCBtYWtlIGl0IGF3YXJlIG9m
IHRoZSBXS0FjdGlvblNoZWV0QXNzaXN0YW50IHRoYXQgY3JlYXRlcyBpdCwgc28gdGhhdAorICAg
ICAgICB0aGUgY2xpZW50IGNhbiBydW4gdGhlIGFjdGlvbiB3aXRob3V0IGtub3dpbmcgV0tBY3Rp
b25TaGVldEFzc2lzdGFudC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOiBB
ZGQgZGVsZWdhdGUgbWV0aG9kIF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDpk
ZWZhdWx0QWN0aW9uczplbGVtZW50SW5mbzouCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tFbGVtZW50QWN0aW9uLmg6IEFkZCBhIFNQSSBydW5BY3Rpb25XaXRoRWxlbWVudEluZm86
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5tbToKKyAg
ICAgICAgKC1bX1dLRWxlbWVudEFjdGlvbiBfaW5pdFdpdGhUaXRsZTphY3Rpb25IYW5kbGVyOnR5
cGU6YXNzaXN0YW50Ol0pOiBNb2RpZmllZCBpbml0aWFsaXplciwgYWxzbyBpbml0aWFsaXplIF9k
ZWZhdWx0QWN0aW9uU2hlZXRBc3Npc3RhbnQKKyAgICAgICAgICAgIGlWYXIgaWYgdGhlIGNhbGxl
ciBwcm92aWRlcyB0aGF0LgorICAgICAgICAoK1tfV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rp
b25XaXRoVGl0bGU6YWN0aW9uSGFuZGxlcjpdKTogVXNlIHRoZSBuZXcgaW5pdGlhbGl6ZXIuCisg
ICAgICAgICgrW19XS0VsZW1lbnRBY3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTpjdXN0b21U
aXRsZTphc3Npc3RhbnQ6XSk6IEEgbmV3IGhlbHBlciBtZXRob2QgdG8gY3JlYXRlIF9XS0VsZW1l
bnRBY3Rpb24gd2l0aCBhc3Npc3RhbnQuCisgICAgICAgICgrW19XS0VsZW1lbnRBY3Rpb24gX2Vs
ZW1lbnRBY3Rpb25XaXRoVHlwZTphc3Npc3RhbnQ6XSk6CisgICAgICAgICgrW19XS0VsZW1lbnRB
Y3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOmN1c3RvbVRpdGxlOl0pOgorICAgICAgICAoLVtf
V0tFbGVtZW50QWN0aW9uIHJ1bkFjdGlvbldpdGhFbGVtZW50SW5mbzpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oOiBBZGQgYSBtZXRob2QgZGVm
YXVsdEFjdGlvbnNGb3JMaW5rU2hlZXQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0FjdGlv
blNoZWV0QXNzaXN0YW50Lm1tOgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50IGRl
ZmF1bHRBY3Rpb25zRm9yTGlua1NoZWV0XSk6IEdldCBkZWZhdWx0IGFjdGlvbnMgZm9yIGN1cnJl
bnQgbGluayB0aGF0IGlzIGFjdGl2YXRlZC4KKyAgICAgICAgKC1bV0tBY3Rpb25TaGVldEFzc2lz
dGFudCBzaG93TGlua1NoZWV0XSk6IFVzZSBkZWZhdWx0QWN0aW9uc0ZvckxpbmtTaGVldC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbToKKyAgICAg
ICAgKC1bV0tDb250ZW50VmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JQb3NpdGlvbjppblNv
dXJjZVZpZXc6XSk6IFBhc3MgZGVmYXVsdEFjdGlvbnMgYW5kIGVsZW1lbnRJbmZvIHRvIFVJRGVs
ZWdhdGUgd2hlbiBxdWVyeWluZworICAgICAgICAgICAgZm9yIHByZXZpZXcgdmlldyBjb250cm9s
bGVyLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGRpZERpc21pc3NQcmV2aWV3Vmlld0NvbnRy
b2xsZXI6Y29tbWl0dGluZzpdKToKKwogMjAxNS0wNy0wMiAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFByb3ZpZGUgQVBJIHRvIGNsZWFyIHRoZSBIU1RT
IGNhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDE0MzJhYmUuLmQxNmY5OGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJp
dmF0ZS5oCkBAIC0zMiw2ICszMiw3IEBACiAKIEBjbGFzcyBVSVNjcm9sbFZpZXc7CiBAY2xhc3Mg
VUlWaWV3Q29udHJvbGxlcjsKK0BjbGFzcyBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbzsKIEBjbGFz
cyBfV0tGcmFtZUhhbmRsZTsKIAogQHByb3RvY29sIFdLVUlEZWxlZ2F0ZVByaXZhdGUgPFdLVUlE
ZWxlZ2F0ZT4KQEAgLTYzLDYgKzY0LDcgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29tbWl0UHJldmlld2VkSW1hZ2VXaXRoVVJM
OihOU1VSTCAqKWltYWdlVVJMIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRGlzbWlzc1ByZXZpZXdW
aWV3Q29udHJvbGxlcjooVUlWaWV3Q29udHJvbGxlciAqKXByZXZpZXdlZFZpZXdDb250cm9sbGVy
OwogLSAoVUlFZGdlSW5zZXRzKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGZpbmFsT2Jz
Y3VyZWRJbnNldHNGb3JTY3JvbGxWaWV3OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhW
ZWxvY2l0eTooQ0dQb2ludCl2ZWxvY2l0eSB0YXJnZXRDb250ZW50T2Zmc2V0Oihpbm91dCBDR1Bv
aW50ICopdGFyZ2V0Q29udGVudE9mZnNldDsKKy0gKFVJVmlld0NvbnRyb2xsZXIgKilfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xsZXJGb3JVUkw6KE5TVVJM
ICopdXJsIGRlZmF1bHRBY3Rpb25zOihOU0FycmF5ICopYWN0aW9ucyBlbGVtZW50SW5mbzooX1dL
QWN0aXZhdGVkRWxlbWVudEluZm8gKillbGVtZW50SW5mbyBXS19BVkFJTEFCTEUoV0tfTUFDX1RC
QSwgV0tfSU9TX1RCQSk7CiAjZW5kaWYKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24uaAppbmRleCBmNWU3YzBkLi5h
OWM4NWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0VsZW1lbnRBY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0VsZW1lbnRBY3Rpb24uaApAQCAtNTIsNiArNTIsOCBAQCBXS19DTEFTU19BVkFJTEFCTEUo
MTBfMTAsIDhfMCkKIAogKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5k
bGVyOwogCistICh2b2lkKXJ1bkFjdGlvbldpdGhFbGVtZW50SW5mbzooX1dLQWN0aXZhdGVkRWxl
bWVudEluZm8gKilpbmZvIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBXS19JT1NfVEJBKTsKKwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tFbGVtZW50QWN0aW9uVHlwZSB0eXBl
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyogdGl0bGU7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgV0tFbGVtZW50QWN0aW9uRGlzbWlzc2FsSGFuZGxlciBk
aXNtaXNzYWxIYW5kbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tCmluZGV4IDI2NzRiYWEuLmE0MjYxOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRB
Y3Rpb24ubW0KQEAgLTUxLDkgKzUxLDEwIEBAIHR5cGVkZWYgdm9pZCAoXldLRWxlbWVudEFjdGlv
bkhhbmRsZXJJbnRlcm5hbCkoV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3RpCiAgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBfdGl0bGU7CiAgICAgV0tFbGVtZW50QWN0aW9uSGFuZGxlcklu
dGVybmFsIF9hY3Rpb25IYW5kbGVyOwogICAgIFdLRWxlbWVudEFjdGlvbkRpc21pc3NhbEhhbmRs
ZXIgX2Rpc21pc3NhbEhhbmRsZXI7CisgICAgX193ZWFrIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQg
Kl9kZWZhdWx0QWN0aW9uU2hlZXRBc3Npc3RhbnQ7CiB9CiAKLS0gKGlkKV9pbml0V2l0aFRpdGxl
OihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJ
bnRlcm5hbCloYW5kbGVyIHR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUKKy0gKGlkKV9p
bml0V2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxlbWVudEFj
dGlvbkhhbmRsZXJJbnRlcm5hbCloYW5kbGVyIHR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5
cGUgYXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CiB7CiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC02MSw2
ICs2Miw3IEBAIHR5cGVkZWYgdm9pZCAoXldLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCko
V0tBY3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3RpCiAgICAgX3RpdGxlID0gYWRvcHROUyhb
dGl0bGUgY29weV0pOwogICAgIF90eXBlID0gdHlwZTsKICAgICBfYWN0aW9uSGFuZGxlciA9IFto
YW5kbGVyIGNvcHldOworICAgIF9kZWZhdWx0QWN0aW9uU2hlZXRBc3Npc3RhbnQgPSBhc3Npc3Rh
bnQ7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTc1LDcgKzc3LDcgQEAgdHlwZWRlZiB2b2lk
ICheV0tFbGVtZW50QWN0aW9uSGFuZGxlckludGVybmFsKShXS0FjdGlvblNoZWV0QXNzaXN0YW50
ICosIF9XS0FjdGkKICsgKGluc3RhbmNldHlwZSllbGVtZW50QWN0aW9uV2l0aFRpdGxlOihOU1N0
cmluZyAqKXRpdGxlIGFjdGlvbkhhbmRsZXI6KFdLRWxlbWVudEFjdGlvbkhhbmRsZXIpaGFuZGxl
cgogewogICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTp0aXRsZSBhY3Rp
b25IYW5kbGVyOl4oV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqLCBfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mbyAqYWN0aW9uSW5mbykgeyBoYW5kbGVyKGFjdGlvbkluZm8pOyB9Ci0gICAgICAgdHlwZTpf
V0tFbGVtZW50QWN0aW9uVHlwZUN1c3RvbV0gYXV0b3JlbGVhc2VdOworICAgICAgICB0eXBlOl9X
S0VsZW1lbnRBY3Rpb25UeXBlQ3VzdG9tIGFzc2lzdGFudDpuaWxdIGF1dG9yZWxlYXNlXTsKIH0K
IAogI2lmIEhBVkUoU0FGQVJJX1NFUlZJQ0VTX0ZSQU1FV09SSykKQEAgLTg4LDcgKzkwLDcgQEAg
c3RhdGljIHZvaWQgYWRkVG9SZWFkaW5nTGlzdChOU1VSTCAqdGFyZ2V0VVJMLCBOU1N0cmluZyAq
dGl0bGUpCiB9CiAjZW5kaWYKIAotKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVHlw
ZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKiljdXN0
b21UaXRsZQorKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1l
bnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE5TU3RyaW5nICopY3VzdG9tVGl0bGUgYXNz
aXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50CiB7CiAgICAgTlNTdHJp
bmcgKnRpdGxlOwogICAgIFdLRWxlbWVudEFjdGlvbkhhbmRsZXJJbnRlcm5hbCBoYW5kbGVyOwpA
QCAtMTI0LDcgKzEyNiwxNyBAQCBzdGF0aWMgdm9pZCBhZGRUb1JlYWRpbmdMaXN0KE5TVVJMICp0
YXJnZXRVUkwsIE5TU3RyaW5nICp0aXRsZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAK
LSAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gX2luaXRXaXRoVGl0bGU6KGN1c3RvbVRpdGxlID8g
Y3VzdG9tVGl0bGUgOiB0aXRsZSkgYWN0aW9uSGFuZGxlcjpoYW5kbGVyIHR5cGU6dHlwZV0gYXV0
b3JlbGVhc2VdOworICAgIHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTooY3Vz
dG9tVGl0bGUgPyBjdXN0b21UaXRsZSA6IHRpdGxlKSBhY3Rpb25IYW5kbGVyOmhhbmRsZXIgdHlw
ZTp0eXBlIGFzc2lzdGFudDphc3Npc3RhbnRdIGF1dG9yZWxlYXNlXTsKK30KKworKyAoaW5zdGFu
Y2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUg
YXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNzaXN0YW50Cit7CisgICAgcmV0
dXJuIFtzZWxmIF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6dHlwZSBjdXN0b21UaXRsZTpuaWwgYXNz
aXN0YW50OmFzc2lzdGFudF07Cit9CisKKysgKGluc3RhbmNldHlwZSllbGVtZW50QWN0aW9uV2l0
aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUgY3VzdG9tVGl0bGU6KE5TU3RyaW5nICop
Y3VzdG9tVGl0bGUKK3sKKyAgICByZXR1cm4gW3NlbGYgX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTp0
eXBlIGN1c3RvbVRpdGxlOmN1c3RvbVRpdGxlIGFzc2lzdGFudDpuaWxdOwogfQogCiArIChpbnN0
YW5jZXR5cGUpZWxlbWVudEFjdGlvbldpdGhUeXBlOihfV0tFbGVtZW50QWN0aW9uVHlwZSl0eXBl
CkBAIC0xNDIsNiArMTU0LDExIEBAIHN0YXRpYyB2b2lkIGFkZFRvUmVhZGluZ0xpc3QoTlNVUkwg
KnRhcmdldFVSTCwgTlNTdHJpbmcgKnRpdGxlKQogICAgIF9hY3Rpb25IYW5kbGVyKGFzc2lzdGFu
dCwgaW5mbyk7CiB9CiAKKy0gKHZvaWQpcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyAqKWluZm8KK3sKKyAgICBbc2VsZiBfcnVuQWN0aW9uV2l0aEVsZW1l
bnRJbmZvOmluZm8gZm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6X2RlZmF1bHRBY3Rpb25TaGVldEFz
c2lzdGFudF07Cit9CisKIEBlbmQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbklu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRB
Y3Rpb25JbnRlcm5hbC5oCmluZGV4IDgyYmJkZDEuLmEyZmU1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9u
SW50ZXJuYWwuaApAQCAtMzQsNiArMzQsNyBAQAogCiBAaW50ZXJmYWNlIF9XS0VsZW1lbnRBY3Rp
b24gKCkKIAorKyAoaW5zdGFuY2V0eXBlKV9lbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1l
bnRBY3Rpb25UeXBlKXR5cGUgYXNzaXN0YW50OihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICopYXNz
aXN0YW50OwogLSAodm9pZClfcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihfV0tBY3RpdmF0ZWRF
bGVtZW50SW5mbyAqKWluZm8gZm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRB
c3Npc3RhbnQgKilhc3Npc3RhbnQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFudC5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmgKaW5kZXggMDNlYjE5ZS4uMzZi
NGMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNo
ZWV0QXNzaXN0YW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlv
blNoZWV0QXNzaXN0YW50LmgKQEAgLTYyLDYgKzYyLDcgQEAgc3RydWN0IEludGVyYWN0aW9uSW5m
b3JtYXRpb25BdFBvc2l0aW9uOwogLSAodm9pZClzaG93RGF0YURldGVjdG9yc1NoZWV0OwogLSAo
dm9pZCljbGVhbnVwU2hlZXQ7CiAtICh2b2lkKXVwZGF0ZVNoZWV0UG9zaXRpb247CistIChSZXRh
aW5QdHI8TlNBcnJheT4pZGVmYXVsdEFjdGlvbnNGb3JMaW5rU2hlZXQ7CiBAZW5kCiAKICNlbmRp
ZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0KaW5kZXggNGViNDQyNC4uMjE4MzhkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFz
c2lzdGFudC5tbQpAQCAtMjc1LDMwICsyNzUsNDYgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
ICAgICAgICAgW3NlbGYgY2xlYW51cFNoZWV0XTsKIH0KIAotLSAodm9pZClzaG93TGlua1NoZWV0
CistIChSZXRhaW5QdHI8TlNBcnJheT4pZGVmYXVsdEFjdGlvbnNGb3JMaW5rU2hlZXQKIHsKLSAg
ICBBU1NFUlQoIV9pbnRlcmFjdGlvblNoZWV0KTsKLSAgICBBU1NFUlQoIV9lbGVtZW50SW5mbyk7
Ci0KICAgICBhdXRvIGRlbGVnYXRlID0gX2RlbGVnYXRlLmdldCgpOwogICAgIGlmICghZGVsZWdh
dGUpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIGNvbnN0IGF1
dG8mIHBvc2l0aW9uSW5mb3JtYXRpb24gPSBbZGVsZWdhdGUgcG9zaXRpb25JbmZvcm1hdGlvbkZv
ckFjdGlvblNoZWV0QXNzaXN0YW50OnNlbGZdOwogCiAgICAgTlNVUkwgKnRhcmdldFVSTCA9IFtO
U1VSTCBVUkxXaXRoU3RyaW5nOnBvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKICAgICBpZiAoIXRh
cmdldFVSTCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgYXV0
byBkZWZhdWx0QWN0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwotICAgIFtkZWZhdWx0QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVu
dEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlT3Blbl1dOworICAgIFtkZWZhdWx0
QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gX2VsZW1lbnRBY3Rpb25XaXRoVHlw
ZTpfV0tFbGVtZW50QWN0aW9uVHlwZU9wZW4gYXNzaXN0YW50OnNlbGZdXTsKICNpZiBIQVZFKFNB
RkFSSV9TRVJWSUNFU19GUkFNRVdPUkspCiAgICAgaWYgKFtnZXRTU1JlYWRpbmdMaXN0Q2xhc3Mo
KSBzdXBwb3J0c1VSTDp0YXJnZXRVUkxdKQotICAgICAgICBbZGVmYXVsdEFjdGlvbnMgYWRkT2Jq
ZWN0OltfV0tFbGVtZW50QWN0aW9uIGVsZW1lbnRBY3Rpb25XaXRoVHlwZTpfV0tFbGVtZW50QWN0
aW9uVHlwZUFkZFRvUmVhZGluZ0xpc3RdXTsKKyAgICAgICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9i
amVjdDpbX1dLRWxlbWVudEFjdGlvbiBfZWxlbWVudEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRB
Y3Rpb25UeXBlQWRkVG9SZWFkaW5nTGlzdCBhc3Npc3RhbnQ6c2VsZl1dOwogI2VuZGlmCiAgICAg
aWYgKCFbW3RhcmdldFVSTCBzY2hlbWVdIGxlbmd0aF0gfHwgW1t0YXJnZXRVUkwgc2NoZW1lXSBj
YXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiamF2YXNjcmlwdCJdICE9IE5TT3JkZXJlZFNhbWUpCi0g
ICAgICAgIFtkZWZhdWx0QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVu
dEFjdGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlQ29weV1dOworICAgICAgICBbZGVm
YXVsdEFjdGlvbnMgYWRkT2JqZWN0OltfV0tFbGVtZW50QWN0aW9uIF9lbGVtZW50QWN0aW9uV2l0
aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVDb3B5IGFzc2lzdGFudDpzZWxmXV07CisKKyAgICBy
ZXR1cm4gZGVmYXVsdEFjdGlvbnM7Cit9CisKKy0gKHZvaWQpc2hvd0xpbmtTaGVldAoreworICAg
IEFTU0VSVCghX2ludGVyYWN0aW9uU2hlZXQpOworICAgIEFTU0VSVCghX2VsZW1lbnRJbmZvKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBfZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29uc3QgYXV0byYgcG9zaXRpb25JbmZvcm1hdGlv
biA9IFtkZWxlZ2F0ZSBwb3NpdGlvbkluZm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6
c2VsZl07CisKKyAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6cG9z
aXRpb25JbmZvcm1hdGlvbi51cmxdOworICAgIGlmICghdGFyZ2V0VVJMKQorICAgICAgICByZXR1
cm47CiAKKyAgICBhdXRvIGRlZmF1bHRBY3Rpb25zID0gW3NlbGYgZGVmYXVsdEFjdGlvbnNGb3JM
aW5rU2hlZXRdOwogICAgIFJldGFpblB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4gZWxlbWVu
dEluZm8gPSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0
aFR5cGU6X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVMaW5rCiAgICAgICAgIFVSTDp0YXJnZXRVUkwg
bG9jYXRpb246cG9zaXRpb25JbmZvcm1hdGlvbi5wb2ludCB0aXRsZTpwb3NpdGlvbkluZm9ybWF0
aW9uLnRpdGxlIHJlY3Q6cG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6cG9zaXRpb25J
bmZvcm1hdGlvbi5pbWFnZS5nZXQoKV0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IGM2MzA1MmMu
LjBiYmYzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC01Miw2ICs1Miw3IEBACiAjaW1wb3J0ICJX
ZWJJT1NFdmVudEZhY3RvcnkuaCIKICNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2ltcG9y
dCAiV2ViUHJvY2Vzc1Byb3h5LmgiCisjaW1wb3J0ICJfV0tBY3RpdmF0ZWRFbGVtZW50SW5mb0lu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tGb3JtRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0Zvcm1J
bnB1dFNlc3Npb24uaCIKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udC5oPgpAQCAtMzIxOCw2ICsz
MjE5LDEzIEBAIHN0YXRpYyBib29sIGlzQXNzaXN0YWJsZUlucHV0VHlwZShJbnB1dFR5cGUgdHlw
ZSkKICAgICBpZiAoY2FuU2hvd0xpbmtQcmV2aWV3KSB7CiAgICAgICAgIF9wcmV2aWV3VHlwZSA9
IFByZXZpZXdFbGVtZW50VHlwZTo6TGluazsKICAgICAgICAgTlNVUkwgKnRhcmdldFVSTCA9IFtO
U1VSTCBfd2ViX1VSTFdpdGhXVEZTdHJpbmc6X3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKKyAg
ICAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6cHJldmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOmRlZmF1bHRBY3Rpb25zOmVsZW1lbnRJbmZv
OildKSB7CisgICAgICAgICAgICBfaGlnaGxpZ2h0TG9uZ1ByZXNzQ2FuQ2xpY2sgPSBOTzsKKyAg
ICAgICAgICAgIFJldGFpblB0cjxfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbz4gZWxlbWVudEluZm8g
PSBhZG9wdE5TKFtbX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gYWxsb2NdIF9pbml0V2l0aFR5cGU6
X1dLQWN0aXZhdGVkRWxlbWVudFR5cGVMaW5rIFVSTDp0YXJnZXRVUkwgbG9jYXRpb246X3Bvc2l0
aW9uSW5mb3JtYXRpb24ucG9pbnQgdGl0bGU6X3Bvc2l0aW9uSW5mb3JtYXRpb24udGl0bGUgcmVj
dDpfcG9zaXRpb25JbmZvcm1hdGlvbi5ib3VuZHMgaW1hZ2U6X3Bvc2l0aW9uSW5mb3JtYXRpb24u
aW1hZ2UuZ2V0KCldKTsKKyAgICAgICAgICAgIF9wYWdlLT5zdGFydEludGVyYWN0aW9uV2l0aEVs
ZW1lbnRBdFBvc2l0aW9uKF9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50KTsKKyAgICAgICAgICAg
IHJldHVybiBbdWlEZWxlZ2F0ZSBfd2ViVmlldzpfd2ViVmlldyBwcmV2aWV3Vmlld0NvbnRyb2xs
ZXJGb3JVUkw6dGFyZ2V0VVJMIGRlZmF1bHRBY3Rpb25zOltfYWN0aW9uU2hlZXRBc3Npc3RhbnQg
ZGVmYXVsdEFjdGlvbnNGb3JMaW5rU2hlZXRdLmdldCgpIGVsZW1lbnRJbmZvOmVsZW1lbnRJbmZv
LmdldCgpXTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDop
XSkgewogICAgICAgICAgICAgX2hpZ2hsaWdodExvbmdQcmVzc0NhbkNsaWNrID0gTk87CiAgICAg
ICAgICAgICByZXR1cm4gW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcgcHJldmlld1ZpZXdD
b250cm9sbGVyRm9yVVJMOnRhcmdldFVSTF07CkBAIC0zMjkwLDYgKzMyOTgsNyBAQCBzdGF0aWMg
Ym9vbCBpc0Fzc2lzdGFibGVJbnB1dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAtICh2b2lkKWRpZERp
c21pc3NQcmV2aWV3Vmlld0NvbnRyb2xsZXI6KFVJVmlld0NvbnRyb2xsZXIgKil2aWV3Q29udHJv
bGxlciBjb21taXR0aW5nOihCT09MKWNvbW1pdHRpbmcKIHsKICAgICBbc2VsZiBfYWRkRGVmYXVs
dEdlc3R1cmVSZWNvZ25pemVyc107CisgICAgX3BhZ2UtPnN0b3BJbnRlcmFjdGlvbigpOwogCiAg
ICAgaWQ8V0tVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZSA9IHN0YXRpY19jYXN0PGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPj4oW193ZWJWaWV3IFVJRGVsZWdhdGVdKTsKICAgICBpZiAoW3Vp
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWREaXNtaXNz
UHJldmlld1ZpZXdDb250cm9sbGVyOildKQo=
</data>
<flag name="review"
          id="281147"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256236</attachid>
            <date>2015-07-06 13:32:54 -0700</date>
            <delta_ts>2015-07-06 14:32:09 -0700</delta_ts>
            <desc>Patch for landing.</desc>
            <filename>linkactions.patch</filename>
            <type>text/plain</type>
            <size>14124</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">Y29tbWl0IGQwOTAwM2NiNzU3MmIzY2FlNjgxNDkzODNkNTM1MzI1ZmFhYWZiYTAKQXV0aG9yOiBZ
b25nanVuIFpoYW5nIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KRGF0ZTogICBUaHUgSnVsIDIg
MTc6MDc6NTIgMjAxNSAtMDcwMAoKICAgIEFsbG93IFVJRGVsZWdhdGUgdG8gY3VzdG9taXplIGxp
bmsgYWN0aW9ucyBpbiBwcmV2aWV3LgogICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0NjU2NwoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmMjBlZTQ1Li4xNDAzNmU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTUtMDctMDIgIFlvbmdqdW4gWmhhbmcgIDx5b25nanVu
X3poYW5nQGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyBVSURlbGVnYXRlIHRvIGN1c3RvbWl6
ZSBsaW5rIGFjdGlvbnMgaW4gcHJldmlldy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NjU2NworCisgICAgICAgIEFkZCBhIG5ldyBVSURlbGVnYXRl
IG1ldGhvZCB0byBwYXNzIHRoZSBkZWZhdWx0QWN0aW9ucyBhbmQgZWxlbWVudEluZm8gdG8gY2xp
ZW50IHRvIGFsbG93CisgICAgICAgIHRoZSBjbGllbnQgY3VzdG9taXplIHRoZSBhY3Rpb25zIGJh
c2VkIG9uIHRoZSBlbGVtZW50LiBBbHNvIGFkZCBhIG5ldyBTUEkgcnVuQWN0aW9uV2l0aEVsZW1l
bnRJbmZvOgorICAgICAgICB0byBfV0tFbGVtZW50QWN0aW9uIGFuZCBtYWtlIGl0IGF3YXJlIG9m
IHRoZSBXS0FjdGlvblNoZWV0QXNzaXN0YW50IHRoYXQgY3JlYXRlcyBpdCwgc28gdGhhdAorICAg
ICAgICB0aGUgY2xpZW50IGNhbiBydW4gdGhlIGFjdGlvbiB3aXRob3V0IGtub3dpbmcgV0tBY3Rp
b25TaGVldEFzc2lzdGFudC4KKworICAgICAgICBSZXZpZXdlZCBieSBCZXRoIERha2luLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6IEFkZCBk
ZWxlZ2F0ZSBtZXRob2QgX3dlYlZpZXc6cHJldmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOmRlZmF1
bHRBY3Rpb25zOmVsZW1lbnRJbmZvOi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0VsZW1lbnRBY3Rpb24uaDogQWRkIGEgU1BJIHJ1bkFjdGlvbldpdGhFbGVtZW50SW5mbzouCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1tOgorICAgICAg
ICAoLVtfV0tFbGVtZW50QWN0aW9uIF9pbml0V2l0aFRpdGxlOmFjdGlvbkhhbmRsZXI6dHlwZTph
c3Npc3RhbnQ6XSk6IE1vZGlmaWVkIGluaXRpYWxpemVyLCBhbHNvIGluaXRpYWxpemUgX2RlZmF1
bHRBY3Rpb25TaGVldEFzc2lzdGFudAorICAgICAgICAgICAgaVZhciBpZiB0aGUgY2FsbGVyIHBy
b3ZpZGVzIHRoYXQuCisgICAgICAgICgrW19XS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldp
dGhUaXRsZTphY3Rpb25IYW5kbGVyOl0pOiBVc2UgdGhlIG5ldyBpbml0aWFsaXplci4KKyAgICAg
ICAgKCtbX1dLRWxlbWVudEFjdGlvbiBfZWxlbWVudEFjdGlvbldpdGhUeXBlOmN1c3RvbVRpdGxl
OmFzc2lzdGFudDpdKTogQSBuZXcgaGVscGVyIG1ldGhvZCB0byBjcmVhdGUgX1dLRWxlbWVudEFj
dGlvbiB3aXRoIGFzc2lzdGFudC4KKyAgICAgICAgKCtbX1dLRWxlbWVudEFjdGlvbiBfZWxlbWVu
dEFjdGlvbldpdGhUeXBlOmFzc2lzdGFudDpdKToKKyAgICAgICAgKCtbX1dLRWxlbWVudEFjdGlv
biBlbGVtZW50QWN0aW9uV2l0aFR5cGU6Y3VzdG9tVGl0bGU6XSk6CisgICAgICAgICgtW19XS0Vs
ZW1lbnRBY3Rpb24gcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbkludGVybmFsLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lmg6IEFkZCBhIG1ldGhvZCBkZWZhdWx0
QWN0aW9uc0ZvckxpbmtTaGVldC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW06CisgICAgICAgICgtW1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQgZGVmYXVs
dEFjdGlvbnNGb3JMaW5rU2hlZXRdKTogR2V0IGRlZmF1bHQgYWN0aW9ucyBmb3IgY3VycmVudCBs
aW5rIHRoYXQgaXMgYWN0aXZhdGVkLgorICAgICAgICAoLVtXS0FjdGlvblNoZWV0QXNzaXN0YW50
IHNob3dMaW5rU2hlZXRdKTogVXNlIGRlZmF1bHRBY3Rpb25zRm9yTGlua1NoZWV0LgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvclBvc2l0aW9uOmluU291cmNl
VmlldzpdKTogUGFzcyBkZWZhdWx0QWN0aW9ucyBhbmQgZWxlbWVudEluZm8gdG8gVUlEZWxlZ2F0
ZSB3aGVuIHF1ZXJ5aW5nCisgICAgICAgICAgICBmb3IgcHJldmlldyB2aWV3IGNvbnRyb2xsZXIu
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgZGlkRGlzbWlzc1ByZXZpZXdWaWV3Q29udHJvbGxl
cjpjb21taXR0aW5nOl0pOgorCiAyMDE1LTA3LTAyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUHJvdmlkZSBBUEkgdG8gY2xlYXIgdGhlIEhTVFMgY2Fj
aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURl
bGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmgKaW5kZXggMTQzMmFiZS4uZDE2Zjk4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRl
LmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogQGNsYXNzIFVJU2Nyb2xsVmlldzsKIEBjbGFzcyBVSVZp
ZXdDb250cm9sbGVyOworQGNsYXNzIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvOwogQGNsYXNzIF9X
S0ZyYW1lSGFuZGxlOwogCiBAcHJvdG9jb2wgV0tVSURlbGVnYXRlUHJpdmF0ZSA8V0tVSURlbGVn
YXRlPgpAQCAtNjMsNiArNjQsNyBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb21taXRQcmV2aWV3ZWRJbWFnZVdpdGhVUkw6KE5T
VVJMICopaW1hZ2VVUkwgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWREaXNtaXNzUHJldmlld1ZpZXdD
b250cm9sbGVyOihVSVZpZXdDb250cm9sbGVyICopcHJldmlld2VkVmlld0NvbnRyb2xsZXI7CiAt
IChVSUVkZ2VJbnNldHMpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZmluYWxPYnNjdXJl
ZEluc2V0c0ZvclNjcm9sbFZpZXc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9j
aXR5OihDR1BvaW50KXZlbG9jaXR5IHRhcmdldENvbnRlbnRPZmZzZXQ6KGlub3V0IENHUG9pbnQg
Kil0YXJnZXRDb250ZW50T2Zmc2V0OworLSAoVUlWaWV3Q29udHJvbGxlciAqKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDooTlNVUkwgKil1
cmwgZGVmYXVsdEFjdGlvbnM6KE5TQXJyYXkgKilhY3Rpb25zIGVsZW1lbnRJbmZvOihfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbyAqKWVsZW1lbnRJbmZvIFdLX0FWQUlMQUJMRShXS19NQUNfVEJBLCBX
S19JT1NfVEJBKTsKICNlbmRpZgogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlvbi5oCmluZGV4IGY1ZTdjMGQuLmE5Yzg1
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxl
bWVudEFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
RWxlbWVudEFjdGlvbi5oCkBAIC01Miw2ICs1Miw4IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8x
MCwgOF8wKQogCiArIChpbnN0YW5jZXR5cGUpZWxlbWVudEFjdGlvbldpdGhUaXRsZTooTlNTdHJp
bmcgKil0aXRsZSBhY3Rpb25IYW5kbGVyOihXS0VsZW1lbnRBY3Rpb25IYW5kbGVyKWhhbmRsZXI7
CiAKKy0gKHZvaWQpcnVuQWN0aW9uV2l0aEVsZW1lbnRJbmZvOihfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mbyAqKWluZm8gV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0VsZW1lbnRBY3Rpb25UeXBlIHR5cGU7CiBA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TU3RyaW5nKiB0aXRsZTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSBXS0VsZW1lbnRBY3Rpb25EaXNtaXNzYWxIYW5kbGVyIGRpc21p
c3NhbEhhbmRsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0VsZW1lbnRBY3Rpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0VsZW1lbnRBY3Rpb24ubW0KaW5kZXggMjY3NGJhYS4uYTQyNjE4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlv
bi5tbQpAQCAtNTEsOSArNTEsMTAgQEAgdHlwZWRlZiB2b2lkICheV0tFbGVtZW50QWN0aW9uSGFu
ZGxlckludGVybmFsKShXS0FjdGlvblNoZWV0QXNzaXN0YW50ICosIF9XS0FjdGkKICAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IF90aXRsZTsKICAgICBXS0VsZW1lbnRBY3Rpb25IYW5kbGVySW50ZXJu
YWwgX2FjdGlvbkhhbmRsZXI7CiAgICAgV0tFbGVtZW50QWN0aW9uRGlzbWlzc2FsSGFuZGxlciBf
ZGlzbWlzc2FsSGFuZGxlcjsKKyAgICBfX3dlYWsgV0tBY3Rpb25TaGVldEFzc2lzdGFudCAqX2Rl
ZmF1bHRBY3Rpb25TaGVldEFzc2lzdGFudDsKIH0KIAotLSAoaWQpX2luaXRXaXRoVGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlckludGVy
bmFsKWhhbmRsZXIgdHlwZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZQorLSAoaWQpX2luaXRX
aXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9u
SGFuZGxlckludGVybmFsKWhhbmRsZXIgdHlwZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSBh
c3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKIHsKICAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTYxLDYgKzYy
LDcgQEAgdHlwZWRlZiB2b2lkICheV0tFbGVtZW50QWN0aW9uSGFuZGxlckludGVybmFsKShXS0Fj
dGlvblNoZWV0QXNzaXN0YW50ICosIF9XS0FjdGkKICAgICBfdGl0bGUgPSBhZG9wdE5TKFt0aXRs
ZSBjb3B5XSk7CiAgICAgX3R5cGUgPSB0eXBlOwogICAgIF9hY3Rpb25IYW5kbGVyID0gW2hhbmRs
ZXIgY29weV07CisgICAgX2RlZmF1bHRBY3Rpb25TaGVldEFzc2lzdGFudCA9IGFzc2lzdGFudDsK
ICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtNzUsNyArNzcsNyBAQCB0eXBlZGVmIHZvaWQgKF5X
S0VsZW1lbnRBY3Rpb25IYW5kbGVySW50ZXJuYWwpKFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKiwg
X1dLQWN0aQogKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVGl0bGU6KE5TU3RyaW5n
ICopdGl0bGUgYWN0aW9uSGFuZGxlcjooV0tFbGVtZW50QWN0aW9uSGFuZGxlciloYW5kbGVyCiB7
CiAgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOnRpdGxlIGFjdGlvbkhh
bmRsZXI6XihXS0FjdGlvblNoZWV0QXNzaXN0YW50ICosIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZv
ICphY3Rpb25JbmZvKSB7IGhhbmRsZXIoYWN0aW9uSW5mbyk7IH0KLSAgICAgICB0eXBlOl9XS0Vs
ZW1lbnRBY3Rpb25UeXBlQ3VzdG9tXSBhdXRvcmVsZWFzZV07CisgICAgICAgIHR5cGU6X1dLRWxl
bWVudEFjdGlvblR5cGVDdXN0b20gYXNzaXN0YW50Om5pbF0gYXV0b3JlbGVhc2VdOwogfQogCiAj
aWYgSEFWRShTQUZBUklfU0VSVklDRVNfRlJBTUVXT1JLKQpAQCAtODgsNyArOTAsNyBAQCBzdGF0
aWMgdm9pZCBhZGRUb1JlYWRpbmdMaXN0KE5TVVJMICp0YXJnZXRVUkwsIE5TU3RyaW5nICp0aXRs
ZSkKIH0KICNlbmRpZgogCi0rIChpbnN0YW5jZXR5cGUpZWxlbWVudEFjdGlvbldpdGhUeXBlOihf
V0tFbGVtZW50QWN0aW9uVHlwZSl0eXBlIGN1c3RvbVRpdGxlOihOU1N0cmluZyAqKWN1c3RvbVRp
dGxlCisrIChpbnN0YW5jZXR5cGUpX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFj
dGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKiljdXN0b21UaXRsZSBhc3Npc3Rh
bnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKIHsKICAgICBOU1N0cmluZyAq
dGl0bGU7CiAgICAgV0tFbGVtZW50QWN0aW9uSGFuZGxlckludGVybmFsIGhhbmRsZXI7CkBAIC0x
MjQsNyArMTI2LDE3IEBAIHN0YXRpYyB2b2lkIGFkZFRvUmVhZGluZ0xpc3QoTlNVUkwgKnRhcmdl
dFVSTCwgTlNTdHJpbmcgKnRpdGxlKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIH0KIAotICAg
IHJldHVybiBbW1tzZWxmIGFsbG9jXSBfaW5pdFdpdGhUaXRsZTooY3VzdG9tVGl0bGUgPyBjdXN0
b21UaXRsZSA6IHRpdGxlKSBhY3Rpb25IYW5kbGVyOmhhbmRsZXIgdHlwZTp0eXBlXSBhdXRvcmVs
ZWFzZV07CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIF9pbml0V2l0aFRpdGxlOihjdXN0b21U
aXRsZSA/IGN1c3RvbVRpdGxlIDogdGl0bGUpIGFjdGlvbkhhbmRsZXI6aGFuZGxlciB0eXBlOnR5
cGUgYXNzaXN0YW50OmFzc2lzdGFudF0gYXV0b3JlbGVhc2VdOworfQorCisrIChpbnN0YW5jZXR5
cGUpX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSBhc3Np
c3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3RhbnQKK3sKKyAgICByZXR1cm4g
W3NlbGYgX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTp0eXBlIGN1c3RvbVRpdGxlOm5pbCBhc3Npc3Rh
bnQ6YXNzaXN0YW50XTsKK30KKworKyAoaW5zdGFuY2V0eXBlKWVsZW1lbnRBY3Rpb25XaXRoVHlw
ZTooX1dLRWxlbWVudEFjdGlvblR5cGUpdHlwZSBjdXN0b21UaXRsZTooTlNTdHJpbmcgKiljdXN0
b21UaXRsZQoreworICAgIHJldHVybiBbc2VsZiBfZWxlbWVudEFjdGlvbldpdGhUeXBlOnR5cGUg
Y3VzdG9tVGl0bGU6Y3VzdG9tVGl0bGUgYXNzaXN0YW50Om5pbF07CiB9CiAKICsgKGluc3RhbmNl
dHlwZSllbGVtZW50QWN0aW9uV2l0aFR5cGU6KF9XS0VsZW1lbnRBY3Rpb25UeXBlKXR5cGUKQEAg
LTE0Miw2ICsxNTQsMTEgQEAgc3RhdGljIHZvaWQgYWRkVG9SZWFkaW5nTGlzdChOU1VSTCAqdGFy
Z2V0VVJMLCBOU1N0cmluZyAqdGl0bGUpCiAgICAgX2FjdGlvbkhhbmRsZXIoYXNzaXN0YW50LCBp
bmZvKTsKIH0KIAorLSAodm9pZClydW5BY3Rpb25XaXRoRWxlbWVudEluZm86KF9XS0FjdGl2YXRl
ZEVsZW1lbnRJbmZvICopaW5mbworeworICAgIFtzZWxmIF9ydW5BY3Rpb25XaXRoRWxlbWVudElu
Zm86aW5mbyBmb3JBY3Rpb25TaGVldEFzc2lzdGFudDpfZGVmYXVsdEFjdGlvblNoZWV0QXNzaXN0
YW50XTsKK30KKwogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVudEFjdGlv
bkludGVybmFsLmgKaW5kZXggODJiYmRkMS4uYTJmZTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uSW50ZXJuYWwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb25JbnRl
cm5hbC5oCkBAIC0zNCw2ICszNCw3IEBACiAKIEBpbnRlcmZhY2UgX1dLRWxlbWVudEFjdGlvbiAo
KQogCisrIChpbnN0YW5jZXR5cGUpX2VsZW1lbnRBY3Rpb25XaXRoVHlwZTooX1dLRWxlbWVudEFj
dGlvblR5cGUpdHlwZSBhc3Npc3RhbnQ6KFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQgKilhc3Npc3Rh
bnQ7CiAtICh2b2lkKV9ydW5BY3Rpb25XaXRoRWxlbWVudEluZm86KF9XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvICopaW5mbyBmb3JBY3Rpb25TaGVldEFzc2lzdGFudDooV0tBY3Rpb25TaGVldEFzc2lz
dGFudCAqKWFzc2lzdGFudDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQuaAppbmRleCAwM2ViMTllLi4zNmI0YzBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRB
c3Npc3RhbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQuaApAQCAtNjIsNiArNjIsNyBAQCBzdHJ1Y3QgSW50ZXJhY3Rpb25JbmZvcm1h
dGlvbkF0UG9zaXRpb247CiAtICh2b2lkKXNob3dEYXRhRGV0ZWN0b3JzU2hlZXQ7CiAtICh2b2lk
KWNsZWFudXBTaGVldDsKIC0gKHZvaWQpdXBkYXRlU2hlZXRQb3NpdGlvbjsKKy0gKFJldGFpblB0
cjxOU0FycmF5PilkZWZhdWx0QWN0aW9uc0ZvckxpbmtTaGVldDsKIEBlbmQKIAogI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tBY3Rpb25TaGVldEFzc2lzdGFudC5tbQppbmRleCA0ZWI0NDI0Li5iZDk5NGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0
YW50Lm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaCIKICNpbXBvcnQgIldlYWtPYmpDUHRyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIK
KyNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0VsZW1lbnRBY3Rpb25JbnRlcm5hbC5oIgogI2lt
cG9ydCA8VUlLaXQvVUlWaWV3Lmg+CkBAIC0yNzUsMzAgKzI3Niw0NiBAQCB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwogICAgICAgICBbc2VsZiBjbGVhbnVwU2hlZXRdOwogfQogCi0tICh2b2lkKXNo
b3dMaW5rU2hlZXQKKy0gKFJldGFpblB0cjxOU0FycmF5PilkZWZhdWx0QWN0aW9uc0ZvckxpbmtT
aGVldAogewotICAgIEFTU0VSVCghX2ludGVyYWN0aW9uU2hlZXQpOwotICAgIEFTU0VSVCghX2Vs
ZW1lbnRJbmZvKTsKLQogICAgIGF1dG8gZGVsZWdhdGUgPSBfZGVsZWdhdGUuZ2V0KCk7CiAgICAg
aWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgY29uc3QgYXV0byYgcG9zaXRpb25JbmZvcm1hdGlvbiA9IFtkZWxlZ2F0ZSBwb3NpdGlvbklu
Zm9ybWF0aW9uRm9yQWN0aW9uU2hlZXRBc3Npc3RhbnQ6c2VsZl07CiAKICAgICBOU1VSTCAqdGFy
Z2V0VVJMID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6cG9zaXRpb25JbmZvcm1hdGlvbi51cmxdOwog
ICAgIGlmICghdGFyZ2V0VVJMKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBuaWw7
CiAKICAgICBhdXRvIGRlZmF1bHRBY3Rpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFs
bG9jXSBpbml0XSk7Ci0gICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9iamVjdDpbX1dLRWxlbWVudEFj
dGlvbiBlbGVtZW50QWN0aW9uV2l0aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVPcGVuXV07Cisg
ICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9iamVjdDpbX1dLRWxlbWVudEFjdGlvbiBfZWxlbWVudEFj
dGlvbldpdGhUeXBlOl9XS0VsZW1lbnRBY3Rpb25UeXBlT3BlbiBhc3Npc3RhbnQ6c2VsZl1dOwog
I2lmIEhBVkUoU0FGQVJJX1NFUlZJQ0VTX0ZSQU1FV09SSykKICAgICBpZiAoW2dldFNTUmVhZGlu
Z0xpc3RDbGFzcygpIHN1cHBvcnRzVVJMOnRhcmdldFVSTF0pCi0gICAgICAgIFtkZWZhdWx0QWN0
aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gZWxlbWVudEFjdGlvbldpdGhUeXBlOl9X
S0VsZW1lbnRBY3Rpb25UeXBlQWRkVG9SZWFkaW5nTGlzdF1dOworICAgICAgICBbZGVmYXVsdEFj
dGlvbnMgYWRkT2JqZWN0OltfV0tFbGVtZW50QWN0aW9uIF9lbGVtZW50QWN0aW9uV2l0aFR5cGU6
X1dLRWxlbWVudEFjdGlvblR5cGVBZGRUb1JlYWRpbmdMaXN0IGFzc2lzdGFudDpzZWxmXV07CiAj
ZW5kaWYKICAgICBpZiAoIVtbdGFyZ2V0VVJMIHNjaGVtZV0gbGVuZ3RoXSB8fCBbW3RhcmdldFVS
TCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJqYXZhc2NyaXB0Il0gIT0gTlNPcmRl
cmVkU2FtZSkKLSAgICAgICAgW2RlZmF1bHRBY3Rpb25zIGFkZE9iamVjdDpbX1dLRWxlbWVudEFj
dGlvbiBlbGVtZW50QWN0aW9uV2l0aFR5cGU6X1dLRWxlbWVudEFjdGlvblR5cGVDb3B5XV07Cisg
ICAgICAgIFtkZWZhdWx0QWN0aW9ucyBhZGRPYmplY3Q6W19XS0VsZW1lbnRBY3Rpb24gX2VsZW1l
bnRBY3Rpb25XaXRoVHlwZTpfV0tFbGVtZW50QWN0aW9uVHlwZUNvcHkgYXNzaXN0YW50OnNlbGZd
XTsKKworICAgIHJldHVybiBkZWZhdWx0QWN0aW9uczsKK30KKworLSAodm9pZClzaG93TGlua1No
ZWV0Cit7CisgICAgQVNTRVJUKCFfaW50ZXJhY3Rpb25TaGVldCk7CisgICAgQVNTRVJUKCFfZWxl
bWVudEluZm8pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IF9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBp
ZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBhdXRvJiBwb3NpdGlv
bkluZm9ybWF0aW9uID0gW2RlbGVnYXRlIHBvc2l0aW9uSW5mb3JtYXRpb25Gb3JBY3Rpb25TaGVl
dEFzc2lzdGFudDpzZWxmXTsKKworICAgIE5TVVJMICp0YXJnZXRVUkwgPSBbTlNVUkwgX3dlYl9V
UkxXaXRoV1RGU3RyaW5nOnBvc2l0aW9uSW5mb3JtYXRpb24udXJsXTsKKyAgICBpZiAoIXRhcmdl
dFVSTCkKKyAgICAgICAgcmV0dXJuOwogCisgICAgYXV0byBkZWZhdWx0QWN0aW9ucyA9IFtzZWxm
IGRlZmF1bHRBY3Rpb25zRm9yTGlua1NoZWV0XTsKICAgICBSZXRhaW5QdHI8X1dLQWN0aXZhdGVk
RWxlbWVudEluZm8+IGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvIGFsbG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlTGluawogICAg
ICAgICBVUkw6dGFyZ2V0VVJMIGxvY2F0aW9uOnBvc2l0aW9uSW5mb3JtYXRpb24ucG9pbnQgdGl0
bGU6cG9zaXRpb25JbmZvcm1hdGlvbi50aXRsZSByZWN0OnBvc2l0aW9uSW5mb3JtYXRpb24uYm91
bmRzIGltYWdlOnBvc2l0aW9uSW5mb3JtYXRpb24uaW1hZ2UuZ2V0KCldKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbQppbmRleCBjNjMwNTJjLi4wYmJmMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtNTIsNiAr
NTIsNyBAQAogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCiAjaW1wb3J0ICJXZWJQYWdl
TWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgorI2ltcG9ydCAiX1dLQWN0
aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRm9ybURlbGVnYXRlLmgi
CiAjaW1wb3J0ICJfV0tGb3JtSW5wdXRTZXNzaW9uLmgiCiAjaW1wb3J0IDxDb3JlVGV4dC9DVEZv
bnQuaD4KQEAgLTMyMTgsNiArMzIxOSwxMyBAQCBzdGF0aWMgYm9vbCBpc0Fzc2lzdGFibGVJbnB1
dFR5cGUoSW5wdXRUeXBlIHR5cGUpCiAgICAgaWYgKGNhblNob3dMaW5rUHJldmlldykgewogICAg
ICAgICBfcHJldmlld1R5cGUgPSBQcmV2aWV3RWxlbWVudFR5cGU6Okxpbms7CiAgICAgICAgIE5T
VVJMICp0YXJnZXRVUkwgPSBbTlNVUkwgX3dlYl9VUkxXaXRoV1RGU3RyaW5nOl9wb3NpdGlvbklu
Zm9ybWF0aW9uLnVybF07CisgICAgICAgIGlmIChbdWlEZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDpkZWZhdWx0
QWN0aW9uczplbGVtZW50SW5mbzopXSkgeworICAgICAgICAgICAgX2hpZ2hsaWdodExvbmdQcmVz
c0NhbkNsaWNrID0gTk87CisgICAgICAgICAgICBSZXRhaW5QdHI8X1dLQWN0aXZhdGVkRWxlbWVu
dEluZm8+IGVsZW1lbnRJbmZvID0gYWRvcHROUyhbW19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvIGFs
bG9jXSBfaW5pdFdpdGhUeXBlOl9XS0FjdGl2YXRlZEVsZW1lbnRUeXBlTGluayBVUkw6dGFyZ2V0
VVJMIGxvY2F0aW9uOl9wb3NpdGlvbkluZm9ybWF0aW9uLnBvaW50IHRpdGxlOl9wb3NpdGlvbklu
Zm9ybWF0aW9uLnRpdGxlIHJlY3Q6X3Bvc2l0aW9uSW5mb3JtYXRpb24uYm91bmRzIGltYWdlOl9w
b3NpdGlvbkluZm9ybWF0aW9uLmltYWdlLmdldCgpXSk7CisgICAgICAgICAgICBfcGFnZS0+c3Rh
cnRJbnRlcmFjdGlvbldpdGhFbGVtZW50QXRQb3NpdGlvbihfcG9zaXRpb25JbmZvcm1hdGlvbi5w
b2ludCk7CisgICAgICAgICAgICByZXR1cm4gW3VpRGVsZWdhdGUgX3dlYlZpZXc6X3dlYlZpZXcg
cHJldmlld1ZpZXdDb250cm9sbGVyRm9yVVJMOnRhcmdldFVSTCBkZWZhdWx0QWN0aW9uczpbX2Fj
dGlvblNoZWV0QXNzaXN0YW50IGRlZmF1bHRBY3Rpb25zRm9yTGlua1NoZWV0XS5nZXQoKSBlbGVt
ZW50SW5mbzplbGVtZW50SW5mby5nZXQoKV07CisgICAgICAgIH0KKwogICAgICAgICBpZiAoW3Vp
RGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpwcmV2aWV3Vmll
d0NvbnRyb2xsZXJGb3JVUkw6KV0pIHsKICAgICAgICAgICAgIF9oaWdobGlnaHRMb25nUHJlc3ND
YW5DbGljayA9IE5POwogICAgICAgICAgICAgcmV0dXJuIFt1aURlbGVnYXRlIF93ZWJWaWV3Ol93
ZWJWaWV3IHByZXZpZXdWaWV3Q29udHJvbGxlckZvclVSTDp0YXJnZXRVUkxdOwpAQCAtMzI5MCw2
ICszMjk4LDcgQEAgc3RhdGljIGJvb2wgaXNBc3Npc3RhYmxlSW5wdXRUeXBlKElucHV0VHlwZSB0
eXBlKQogLSAodm9pZClkaWREaXNtaXNzUHJldmlld1ZpZXdDb250cm9sbGVyOihVSVZpZXdDb250
cm9sbGVyICopdmlld0NvbnRyb2xsZXIgY29tbWl0dGluZzooQk9PTCljb21taXR0aW5nCiB7CiAg
ICAgW3NlbGYgX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdOworICAgIF9wYWdlLT5zdG9w
SW50ZXJhY3Rpb24oKTsKIAogICAgIGlkPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHVpRGVsZWdhdGUg
PSBzdGF0aWNfY2FzdDxpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4+KFtfd2ViVmlldyBVSURlbGVn
YXRlXSk7CiAgICAgaWYgKFt1aURlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGlkRGlzbWlzc1ByZXZpZXdWaWV3Q29udHJvbGxlcjopXSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>