<?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>196149</bug_id>
          
          <creation_ts>2019-03-22 08:39:53 -0700</creation_ts>
          <short_desc>Implement WebProcess freezer opt-in completely on WebContent process side</short_desc>
          <delta_ts>2019-03-25 08:41:40 -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>WebKit 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>
          
          <blocked>196062</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1520318</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 08:39:53 -0700</bug_when>
    <thetext>Implement WebProcess freezer opt-in completely on WebContent process side, we do not need to involve the UIProcess with this and rely on IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520329</commentid>
    <comment_count>1</comment_count>
      <attachid>365730</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:03:35 -0700</bug_when>
    <thetext>Created attachment 365730
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520333</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-22 09:08:36 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #0)
&gt; Implement WebProcess freezer opt-in completely on WebContent process side,
&gt; we do not need to involve the UIProcess with this and rely on IPC.

I think we actually want the UIProcess to be the *only one* in charge of this, and I&apos;ve actually asked to make that possible.

I think that&apos;s the best way to get rid of this silly IPC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520342</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:19:55 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #2)
&gt; (In reply to Chris Dumez from comment #0)
&gt; &gt; Implement WebProcess freezer opt-in completely on WebContent process side,
&gt; &gt; we do not need to involve the UIProcess with this and rely on IPC.
&gt; 
&gt; I think we actually want the UIProcess to be the *only one* in charge of
&gt; this, and I&apos;ve actually asked to make that possible.
&gt; 
&gt; I think that&apos;s the best way to get rid of this silly IPC.

If and when we get the API to do this from the UIProcess, we can always move the 2 lines of code in the UIProcess. In the mean time, I still think than doing this purely on the WebProcess is more reliable and way less code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520343</commentid>
    <comment_count>4</comment_count>
      <attachid>365732</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:21:59 -0700</bug_when>
    <thetext>Created attachment 365732
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520350</commentid>
    <comment_count>5</comment_count>
      <attachid>365730</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-22 09:29:31 -0700</bug_when>
    <thetext>Comment on attachment 365730
WIP Patch

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

I think this lets prewarmed processes be freezable, which we definitely don&apos;t want.

&gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:696
&gt; +    auto result = memorystatus_set_process_is_freezable(getpid(), shouldFreezeOnSuspension() ? 1 : 0);

Shouldn&apos;t use this directly. Please use the form of the code that you removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520351</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:29:57 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #5)
&gt; Comment on attachment 365730 [details]
&gt; WIP Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=365730&amp;action=review
&gt; 
&gt; I think this lets prewarmed processes be freezable, which we definitely
&gt; don&apos;t want.
&gt; 
&gt; &gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:696
&gt; &gt; +    auto result = memorystatus_set_process_is_freezable(getpid(), shouldFreezeOnSuspension() ? 1 : 0);
&gt; 
&gt; Shouldn&apos;t use this directly. Please use the form of the code that you
&gt; removed.

Yes, that&apos;s already fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520357</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:41:20 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #5)
&gt; Comment on attachment 365730 [details]
&gt; WIP Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=365730&amp;action=review
&gt; 
&gt; I think this lets prewarmed processes be freezable, which we definitely
&gt; don&apos;t want.

I will explicitly opt these out but Antti confirmed that prewarmed WebProcess do not have a WebPage and therefore would not be freezable with my current heuristic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520358</commentid>
    <comment_count>8</comment_count>
      <attachid>365735</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:41:42 -0700</bug_when>
    <thetext>Created attachment 365735
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520359</commentid>
    <comment_count>9</comment_count>
      <attachid>365736</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:48:27 -0700</bug_when>
    <thetext>Created attachment 365736
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520365</commentid>
    <comment_count>10</comment_count>
      <attachid>365738</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:56:39 -0700</bug_when>
    <thetext>Created attachment 365738
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520366</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 09:56:56 -0700</bug_when>
    <thetext>Tested it on device.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520387</commentid>
    <comment_count>12</comment_count>
      <attachid>365738</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-03-22 10:16:40 -0700</bug_when>
    <thetext>Comment on attachment 365738
Patch

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

&gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:693
&gt; +    switch (m_processType) {
&gt; +    case ProcessType::Inspector:
&gt; +    case ProcessType::ServiceWorker:
&gt; +    case ProcessType::PrewarmedWebContent:
&gt; +    case ProcessType::CachedWebContent:
&gt; +        return false;
&gt; +    case ProcessType::WebContent:
&gt; +        break;
&gt; +    }

I like how explicitly this is about prewarmed/cached. 👍</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520391</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 10:22:20 -0700</bug_when>
    <thetext>(In reply to Brady Eidson from comment #12)
&gt; Comment on attachment 365738 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=365738&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm:693
&gt; &gt; +    switch (m_processType) {
&gt; &gt; +    case ProcessType::Inspector:
&gt; &gt; +    case ProcessType::ServiceWorker:
&gt; &gt; +    case ProcessType::PrewarmedWebContent:
&gt; &gt; +    case ProcessType::CachedWebContent:
&gt; &gt; +        return false;
&gt; &gt; +    case ProcessType::WebContent:
&gt; &gt; +        break;
&gt; &gt; +    }
&gt; 
&gt; I like how explicitly this is about prewarmed/cached. 👍

Agreed, this is more robust and clearer when reading the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520409</commentid>
    <comment_count>14</comment_count>
      <attachid>365738</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-22 10:40:57 -0700</bug_when>
    <thetext>Comment on attachment 365738
Patch

Clearing flags on attachment: 365738

Committed r243388: &lt;https://trac.webkit.org/changeset/243388&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520410</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-22 10:40:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520415</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-22 10:44:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/49159474&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520444</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-22 11:49:52 -0700</bug_when>
    <thetext>Follow-up build fix: &lt;https://trac.webkit.org/changeset/243395&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520478</commentid>
    <comment_count>18</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2019-03-22 14:40:12 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #14)
&gt; Comment on attachment 365738 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 365738
&gt; 
&gt; Committed r243388: &lt;https://trac.webkit.org/changeset/243388&gt;
This change caused ~60 ProcessSwap API tests to fail an assertion on iOS Simulator:
https://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Debug%20WK2%20(Tests)/builds/2943/steps/run-api-tests/logs/stdio

ASSERTION FAILED: m_processType == ProcessType::PrewarmedWebContent
        /Volumes/Data/slave/ios-simulator-12-debug/build/Source/WebKit/WebProcess/WebProcess.cpp(524) : void WebKit::WebProcess::markIsNoLongerPrewarmed()
        1   0x11bcdcf39 WTFCrash
        2   0x11009a06b WTFCrashWithInfo(int, char const*, char const*, int)
        3   0x110e3aacb WebKit::WebProcess::markIsNoLongerPrewarmed()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520859</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-25 08:23:32 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #18)
&gt; (In reply to WebKit Commit Bot from comment #14)
&gt; &gt; Comment on attachment 365738 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 365738
&gt; &gt; 
&gt; &gt; Committed r243388: &lt;https://trac.webkit.org/changeset/243388&gt;
&gt; This change caused ~60 ProcessSwap API tests to fail an assertion on iOS
&gt; Simulator:
&gt; https://build.webkit.org/builders/
&gt; Apple%20iOS%2012%20Simulator%20Debug%20WK2%20(Tests)/builds/2943/steps/run-
&gt; api-tests/logs/stdio
&gt; 
&gt; ASSERTION FAILED: m_processType == ProcessType::PrewarmedWebContent
&gt;        
&gt; /Volumes/Data/slave/ios-simulator-12-debug/build/Source/WebKit/WebProcess/
&gt; WebProcess.cpp(524) : void WebKit::WebProcess::markIsNoLongerPrewarmed()
&gt;         1   0x11bcdcf39 WTFCrash
&gt;         2   0x11009a06b WTFCrashWithInfo(int, char const*, char const*, int)
&gt;         3   0x110e3aacb WebKit::WebProcess::markIsNoLongerPrewarmed()

Looking now. Probably a minor issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520864</commentid>
    <comment_count>20</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-03-25 08:41:40 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #19)
&gt; (In reply to Ryan Haddad from comment #18)
&gt; &gt; (In reply to WebKit Commit Bot from comment #14)
&gt; &gt; &gt; Comment on attachment 365738 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Clearing flags on attachment: 365738
&gt; &gt; &gt; 
&gt; &gt; &gt; Committed r243388: &lt;https://trac.webkit.org/changeset/243388&gt;
&gt; &gt; This change caused ~60 ProcessSwap API tests to fail an assertion on iOS
&gt; &gt; Simulator:
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20iOS%2012%20Simulator%20Debug%20WK2%20(Tests)/builds/2943/steps/run-
&gt; &gt; api-tests/logs/stdio
&gt; &gt; 
&gt; &gt; ASSERTION FAILED: m_processType == ProcessType::PrewarmedWebContent
&gt; &gt;        
&gt; &gt; /Volumes/Data/slave/ios-simulator-12-debug/build/Source/WebKit/WebProcess/
&gt; &gt; WebProcess.cpp(524) : void WebKit::WebProcess::markIsNoLongerPrewarmed()
&gt; &gt;         1   0x11bcdcf39 WTFCrash
&gt; &gt;         2   0x11009a06b WTFCrashWithInfo(int, char const*, char const*, int)
&gt; &gt;         3   0x110e3aacb WebKit::WebProcess::markIsNoLongerPrewarmed()
&gt; 
&gt; Looking now. Probably a minor issue.

Fix for API tests landed in &lt;https://trac.webkit.org/changeset/243439&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365730</attachid>
            <date>2019-03-22 09:03:35 -0700</date>
            <delta_ts>2019-03-22 09:30:03 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>196149_wip.patch</filename>
            <type>text/plain</type>
            <size>9025</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ0ZDlm
NjhkMzc1Li4yZjQ0OGRjNjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xMTUsMTAgKzExNSwxMCBAQCB1aW50NjRfdCBXZWJQcm9jZXNzUHJv
eHk6OmdlbmVyYXRlUGFnZUlEKCkKICAgICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CiB9CiAKLXN0
YXRpYyBXZWJQcm9jZXNzUHJveHk6OldlYlBhZ2VQcm94eU1hcDo6TWFwVHlwZSYgZ2xvYmFsUGFn
ZU1hcCgpCitzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBh
Z2VNYXAoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWRPckNoZWNrRGlzYWJsZWQoKSk7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFw
OjpNYXBUeXBlPiBwYWdlTWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJQcm9jZXNz
UHJveHk6OldlYlBhZ2VQcm94eU1hcD4gcGFnZU1hcDsKICAgICByZXR1cm4gcGFnZU1hcDsKIH0K
IApAQCAtMTM2LDcgKzEzNiw2IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSYKICAgICAsIG1fYmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKnRoaXMpCiAgICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sLCBpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzID8gSXNXZWFrOjpZZXMg
OiBJc1dlYWs6Ok5vKQogICAgICwgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0
ZW5zaW9uKGZhbHNlKQotICAgICwgbV9wYWdlTWFwKCp0aGlzKQogICAgICwgbV9udW1iZXJPZlRp
bWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZCgwKQogICAgICwgbV90aHJvdHRsZXIoKnRo
aXMsIHByb2Nlc3NQb29sLnNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oKSkKICAgICAs
IG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUpCkBAIC0xODgsMTggKzE4Nyw2IEBAIFdl
YlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnZhbGlkYXRlRnJlZXplclN0YXR1cygpCi17Ci0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBib29sIHZhbHVlID0gIW1faXNQcmV3YXJtZWQgJiYgIW1faXNJblByb2Nl
c3NDYWNoZSAmJiAhbV9wYWdlTWFwLmlzRW1wdHkoKSAmJiAhaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOwotICAgIGlmIChtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlICE9IFdURjo6bnVsbG9wdCAm
JiBtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlID09IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlID0gdmFsdWU7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U2V0RnJlZXphYmxlKHZhbHVlKSwgMCk7Ci0jZW5kaWYKLX0KLQogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQobV9pc0luUHJvY2Vzc0NhY2hlICE9IHZhbHVlKTsKQEAgLTIxNSw4ICsyMDIsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIHZhbHVlKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICAgICAgbV9wcm9jZXNz
UG9vbC5zZXRJc1dlYWsoSXNXZWFrOjpObyk7CiAgICAgfQotICAgIAotICAgIHZhbGlkYXRlRnJl
ZXplclN0YXR1cygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9u
cyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCkBAIC0zOTQs
OCArMzc5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om1hcmtJc05vTG9uZ2VySW5QcmV3YXJt
ZWRQb29sKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICBtX3Byb2Nl
c3NQb29sLnNldElzV2VhayhJc1dlYWs6Ok5vKTsKIAotICAgIHZhbGlkYXRlRnJlZXplclN0YXR1
cygpOwotCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6TWFya0lzTm9Mb25nZXJQcmV3
YXJtZWQoKSwgMCk7CiB9CiAKQEAgLTc4OSw4ICs3NzIsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29u
bmVjdAogCiAgICAgdW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCgpOwogI2VuZGlm
Ci0KLSAgICB2YWxpZGF0ZUZyZWV6ZXJTdGF0dXMoKTsKIH0KIAogV2ViRnJhbWVQcm94eSogV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA0NzdlYmE1ZWUxYy4uMzdkZGY0
MjFmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC05
Niw2ICs5Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dQcm9jZXNzQ2FjaGluZyB7IE5vLCBZZXMgfTsK
IGNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHB1
YmxpYyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxXZWJQcm9jZXNzUHJveHk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1By
b3h5PiwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gV2ViRnJhbWVQcm94
eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFdlYlBhZ2VQcm94eSo+IFdlYlBh
Z2VQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBUEk6OlVz
ZXJJbml0aWF0ZWRBY3Rpb24+PiBVc2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCiAgICAgZW51bSBj
bGFzcyBJc1ByZXdhcm1lZCB7CkBAIC0xMzUsNDUgKzEzNiw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lv
bmFsUGFnZSkgeyBBU1NFUlQoIW1fcHJvdmlzaW9uYWxQYWdlcy5jb250YWlucygmcHJvdmlzaW9u
YWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5hZGQoJnByb3Zpc2lvbmFsUGFnZSk7IH0KICAg
ICB2b2lkIHJlbW92ZVByb3Zpc2lvbmFsUGFnZVByb3h5KFByb3Zpc2lvbmFsUGFnZVByb3h5JiBw
cm92aXNpb25hbFBhZ2UpIHsgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlcy5jb250YWlucygmcHJv
dmlzaW9uYWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5yZW1vdmUoJnByb3Zpc2lvbmFsUGFn
ZSk7IH0KLQotICAgIGNsYXNzIFdlYlBhZ2VQcm94eU1hcCB7Ci0gICAgcHVibGljOgotICAgICAg
ICBXZWJQYWdlUHJveHlNYXAoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKLSAgICAgICAgICAgIDog
bV9wcm94eShwcm94eSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdHlwZWRlZiBI
YXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBNYXBUeXBlOwotICAgICAgICB1c2luZyBW
YWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UgPSBNYXBUeXBlOjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFu
Z2U7Ci0KLSAgICAgICAgYXV0byBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9
Ci0gICAgICAgIGF1dG8gdmFsdWVzKCkgeyByZXR1cm4gbV9tYXAudmFsdWVzKCk7IH0KLSAgICAg
ICAgYXV0byB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX21hcC52YWx1ZXMoKTsgfQotICAgICAg
ICBhdXRvIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgICAgICBhdXRvIGVu
ZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9Ci0gICAgICAgIGF1dG8gZ2V0KHVpbnQ2NF90IGtl
eSkgeyByZXR1cm4gbV9tYXAuZ2V0KGtleSk7IH0KLSAgICAgICAgYXV0byBjb250YWlucyh1aW50
NjRfdCBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGtleSk7IH0KLSAgICAgICAg
YXV0byBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9Ci0KLSAgICAg
ICAgYXV0byBzZXQodWludDY0X3Qga2V5LCBXZWJQYWdlUHJveHkqIHZhbHVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWFwLnNldChrZXksIHZhbHVlKTsKLSAgICAg
ICAgICAgIG1fcHJveHkudmFsaWRhdGVGcmVlemVyU3RhdHVzKCk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0YWtlKHVpbnQ2NF90IGtleSkK
LSAgICAgICAgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX21hcC50YWtlKGtleSk7Ci0g
ICAgICAgICAgICBtX3Byb3h5LnZhbGlkYXRlRnJlZXplclN0YXR1cygpOwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgV2ViUHJv
Y2Vzc1Byb3h5JiBtX3Byb3h5OwotICAgICAgICBNYXBUeXBlIG1fbWFwOwotICAgIH07Ci0KICAg
ICAKICAgICB0eXBlbmFtZSBXZWJQYWdlUHJveHlNYXA6OlZhbHVlc0NvbnN0SXRlcmF0b3JSYW5n
ZSBwYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC52YWx1ZXMoKTsgfQogICAgIHVuc2ln
bmVkIHBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC5zaXplKCk7IH0KQEAgLTUw
OSw3ICs0NzEsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3VzcGVuZGVkUGFnZUNvdW50
IHsgMCB9OwogICAgIGJvb2wgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNQcmV3YXJtZWQ7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9jdXJy
ZW50SXNGcmVlemFibGVWYWx1ZTsKIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggOWYzNmViODU2ODAuLmM3MDI3NGRlZjRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDYwLDYgKzE0NjAsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVh
ZHlUb1N1c3BlbmQgc2hvdQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhY2Nlc3Np
YmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNhdGlvbih0cnVlKTsKKyAgICB1cGRhdGVGcmVl
emVyU3RhdHVzKCk7CiAjZW5kaWYKIAogICAgIG1hcmtBbGxMYXllcnNWb2xhdGlsZShbdGhpcywg
c2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmRdKGJvb2wgc3VjY2VzcykgewpAQCAt
MTg3NSwxNCArMTg3Niw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJDdXJyZW50TW9kaWZpZXJT
dGF0ZUZvclRlc3RpbmcoKQogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6c2V0Q3VycmVudE1v
ZGlmaWVyU3RhdGUoeyB9KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpzZXRGcmVlemFibGUoYm9v
bCBmcmVlemFibGUpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIHJlc3Vs
dCA9IG1lbW9yeXN0YXR1c19jb250cm9sKE1FTU9SWVNUQVRVU19DTURfU0VUX1BST0NFU1NfSVNf
RlJFRVpBQkxFLCBnZXRwaWQoKSwgZnJlZXphYmxlID8gMSA6IDAsIG51bGxwdHIsIDApOwotICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKLSNlbmRpZgotfQotCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViUHJvY2Vzczo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2
ZXIoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBoYW5kbGUpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAyOTUyMGU0MWEwMC4uYWRlMjBiOTYyNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNDE4LDYgKzQxOCw5IEBAIHBy
aXZhdGU6CiAKICNpZiBQTEFURk9STShJT1MpCiAgICAgdm9pZCBiYWNrbGlnaHRMZXZlbERpZENo
YW5nZShmbG9hdCBiYWNrbGlnaHRMZXZlbCk7CisKKyAgICBib29sIHNob3VsZEZyZWV6ZU9uU3Vz
cGVuc2lvbigpIGNvbnN0OworICAgIHZvaWQgdXBkYXRlRnJlZXplclN0YXR1cygpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoVklERU8pCkBAIC00MjYsNyArNDI5LDYgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgdm9pZCBjbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpOwotICAg
IHZvaWQgc2V0RnJlZXphYmxlKGJvb2wpOwogCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1VJ
UHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCkBAIC01MDAsOSArNTAyLDkgQEAgcHJpdmF0ZToK
ICNpZiBQTEFURk9STShNQUMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNQVU1vbml0
b3I+IG1fY3B1TW9uaXRvcjsKICAgICBPcHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7Ci0KICAg
ICBlbnVtIGNsYXNzIFByb2Nlc3NUeXBlIHsgSW5zcGVjdG9yLCBTZXJ2aWNlV29ya2VyLCBQcmV3
YXJtZWRXZWJDb250ZW50LCBDYWNoZWRXZWJDb250ZW50LCBXZWJDb250ZW50IH07CiAgICAgUHJv
Y2Vzc1R5cGUgbV9wcm9jZXNzVHlwZSB7IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50IH07CisKICAg
ICBTdHJpbmcgbV91aVByb2Nlc3NOYW1lOwogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IG1fcmVnaXN0cmFibGVEb21haW47CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMTI0Mjg1ZDZkYWYuLjk1ZTM4Y2UyNzdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMTYxLDYgKzE2MSw0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2
ZXIgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlT
ZXJ2ZXIoV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCi0K
LSAgICBTZXRGcmVlemFibGUoYm9vbCBmcmVlemFibGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBlNjBmZGFkOTc1OS4u
N2NjYTE3NzI2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dl
YlByb2Nlc3NDb2NvYS5tbQpAQCAtNjc0LDYgKzY3NCwyOCBAQCB2b2lkIFdlYlByb2Nlc3M6OmFj
Y2Vzc2liaWxpdHlQcm9jZXNzU3VzcGVuZGVkTm90aWZpY2F0aW9uKGJvb2wgc3VzcGVuZGVkKQog
ewogICAgIFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24oa0FYUGlkU3RhdHVzQ2hhbmdl
ZE5vdGlmaWNhdGlvbiwgQHsgQCJwaWQiIDogQChnZXRwaWQoKSksIEAic3VzcGVuZGVkIiA6IEAo
c3VzcGVuZGVkKSB9KTsKIH0KKworYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRGcmVlemVPblN1c3Bl
bnNpb24oKSBjb25zdAoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBib29sIGlz
U2VydmljZVdvcmtlclByb2Nlc3MgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25u
ZWN0aW9uKCk7CisgICAgaWYgKGlzU2VydmljZVdvcmtlclByb2Nlc3MpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgorCisgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwLnZhbHVl
cygpKSB7CisgICAgICAgIGlmICghcGFnZS0+aXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJQcm9j
ZXNzOjp1cGRhdGVGcmVlemVyU3RhdHVzKCkKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1lbW9yeXN0
YXR1c19zZXRfcHJvY2Vzc19pc19mcmVlemFibGUoZ2V0cGlkKCksIHNob3VsZEZyZWV6ZU9uU3Vz
cGVuc2lvbigpID8gMSA6IDApOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsK
K30KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5E
T1dTRVJWRVJfQkxPQ0tJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365732</attachid>
            <date>2019-03-22 09:21:59 -0700</date>
            <delta_ts>2019-03-22 09:41:42 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>196149_wip.patch</filename>
            <type>text/plain</type>
            <size>9493</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ0ZDlm
NjhkMzc1Li4yZjQ0OGRjNjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xMTUsMTAgKzExNSwxMCBAQCB1aW50NjRfdCBXZWJQcm9jZXNzUHJv
eHk6OmdlbmVyYXRlUGFnZUlEKCkKICAgICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CiB9CiAKLXN0
YXRpYyBXZWJQcm9jZXNzUHJveHk6OldlYlBhZ2VQcm94eU1hcDo6TWFwVHlwZSYgZ2xvYmFsUGFn
ZU1hcCgpCitzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBh
Z2VNYXAoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWRPckNoZWNrRGlzYWJsZWQoKSk7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFw
OjpNYXBUeXBlPiBwYWdlTWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJQcm9jZXNz
UHJveHk6OldlYlBhZ2VQcm94eU1hcD4gcGFnZU1hcDsKICAgICByZXR1cm4gcGFnZU1hcDsKIH0K
IApAQCAtMTM2LDcgKzEzNiw2IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSYKICAgICAsIG1fYmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKnRoaXMpCiAgICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sLCBpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzID8gSXNXZWFrOjpZZXMg
OiBJc1dlYWs6Ok5vKQogICAgICwgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0
ZW5zaW9uKGZhbHNlKQotICAgICwgbV9wYWdlTWFwKCp0aGlzKQogICAgICwgbV9udW1iZXJPZlRp
bWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZCgwKQogICAgICwgbV90aHJvdHRsZXIoKnRo
aXMsIHByb2Nlc3NQb29sLnNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oKSkKICAgICAs
IG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUpCkBAIC0xODgsMTggKzE4Nyw2IEBAIFdl
YlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnZhbGlkYXRlRnJlZXplclN0YXR1cygpCi17Ci0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBib29sIHZhbHVlID0gIW1faXNQcmV3YXJtZWQgJiYgIW1faXNJblByb2Nl
c3NDYWNoZSAmJiAhbV9wYWdlTWFwLmlzRW1wdHkoKSAmJiAhaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOwotICAgIGlmIChtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlICE9IFdURjo6bnVsbG9wdCAm
JiBtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlID09IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlID0gdmFsdWU7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U2V0RnJlZXphYmxlKHZhbHVlKSwgMCk7Ci0jZW5kaWYKLX0KLQogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQobV9pc0luUHJvY2Vzc0NhY2hlICE9IHZhbHVlKTsKQEAgLTIxNSw4ICsyMDIsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIHZhbHVlKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICAgICAgbV9wcm9jZXNz
UG9vbC5zZXRJc1dlYWsoSXNXZWFrOjpObyk7CiAgICAgfQotICAgIAotICAgIHZhbGlkYXRlRnJl
ZXplclN0YXR1cygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9u
cyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCkBAIC0zOTQs
OCArMzc5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om1hcmtJc05vTG9uZ2VySW5QcmV3YXJt
ZWRQb29sKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICBtX3Byb2Nl
c3NQb29sLnNldElzV2VhayhJc1dlYWs6Ok5vKTsKIAotICAgIHZhbGlkYXRlRnJlZXplclN0YXR1
cygpOwotCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6TWFya0lzTm9Mb25nZXJQcmV3
YXJtZWQoKSwgMCk7CiB9CiAKQEAgLTc4OSw4ICs3NzIsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29u
bmVjdAogCiAgICAgdW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCgpOwogI2VuZGlm
Ci0KLSAgICB2YWxpZGF0ZUZyZWV6ZXJTdGF0dXMoKTsKIH0KIAogV2ViRnJhbWVQcm94eSogV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA0NzdlYmE1ZWUxYy4uMzdkZGY0
MjFmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC05
Niw2ICs5Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dQcm9jZXNzQ2FjaGluZyB7IE5vLCBZZXMgfTsK
IGNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHB1
YmxpYyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxXZWJQcm9jZXNzUHJveHk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1By
b3h5PiwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gV2ViRnJhbWVQcm94
eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFdlYlBhZ2VQcm94eSo+IFdlYlBh
Z2VQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBUEk6OlVz
ZXJJbml0aWF0ZWRBY3Rpb24+PiBVc2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCiAgICAgZW51bSBj
bGFzcyBJc1ByZXdhcm1lZCB7CkBAIC0xMzUsNDUgKzEzNiw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lv
bmFsUGFnZSkgeyBBU1NFUlQoIW1fcHJvdmlzaW9uYWxQYWdlcy5jb250YWlucygmcHJvdmlzaW9u
YWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5hZGQoJnByb3Zpc2lvbmFsUGFnZSk7IH0KICAg
ICB2b2lkIHJlbW92ZVByb3Zpc2lvbmFsUGFnZVByb3h5KFByb3Zpc2lvbmFsUGFnZVByb3h5JiBw
cm92aXNpb25hbFBhZ2UpIHsgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlcy5jb250YWlucygmcHJv
dmlzaW9uYWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5yZW1vdmUoJnByb3Zpc2lvbmFsUGFn
ZSk7IH0KLQotICAgIGNsYXNzIFdlYlBhZ2VQcm94eU1hcCB7Ci0gICAgcHVibGljOgotICAgICAg
ICBXZWJQYWdlUHJveHlNYXAoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKLSAgICAgICAgICAgIDog
bV9wcm94eShwcm94eSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdHlwZWRlZiBI
YXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBNYXBUeXBlOwotICAgICAgICB1c2luZyBW
YWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UgPSBNYXBUeXBlOjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFu
Z2U7Ci0KLSAgICAgICAgYXV0byBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9
Ci0gICAgICAgIGF1dG8gdmFsdWVzKCkgeyByZXR1cm4gbV9tYXAudmFsdWVzKCk7IH0KLSAgICAg
ICAgYXV0byB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX21hcC52YWx1ZXMoKTsgfQotICAgICAg
ICBhdXRvIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgICAgICBhdXRvIGVu
ZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9Ci0gICAgICAgIGF1dG8gZ2V0KHVpbnQ2NF90IGtl
eSkgeyByZXR1cm4gbV9tYXAuZ2V0KGtleSk7IH0KLSAgICAgICAgYXV0byBjb250YWlucyh1aW50
NjRfdCBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGtleSk7IH0KLSAgICAgICAg
YXV0byBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9Ci0KLSAgICAg
ICAgYXV0byBzZXQodWludDY0X3Qga2V5LCBXZWJQYWdlUHJveHkqIHZhbHVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWFwLnNldChrZXksIHZhbHVlKTsKLSAgICAg
ICAgICAgIG1fcHJveHkudmFsaWRhdGVGcmVlemVyU3RhdHVzKCk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0YWtlKHVpbnQ2NF90IGtleSkK
LSAgICAgICAgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX21hcC50YWtlKGtleSk7Ci0g
ICAgICAgICAgICBtX3Byb3h5LnZhbGlkYXRlRnJlZXplclN0YXR1cygpOwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgV2ViUHJv
Y2Vzc1Byb3h5JiBtX3Byb3h5OwotICAgICAgICBNYXBUeXBlIG1fbWFwOwotICAgIH07Ci0KICAg
ICAKICAgICB0eXBlbmFtZSBXZWJQYWdlUHJveHlNYXA6OlZhbHVlc0NvbnN0SXRlcmF0b3JSYW5n
ZSBwYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC52YWx1ZXMoKTsgfQogICAgIHVuc2ln
bmVkIHBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC5zaXplKCk7IH0KQEAgLTUw
OSw3ICs0NzEsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3VzcGVuZGVkUGFnZUNvdW50
IHsgMCB9OwogICAgIGJvb2wgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNQcmV3YXJtZWQ7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9jdXJy
ZW50SXNGcmVlemFibGVWYWx1ZTsKIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggOWYzNmViODU2ODAuLjdhYTI3MjEyZGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDksMTAgKzE0OSw2IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSA8Ym1hbGxvYy9NZW1vcnlTdGF0dXNTUEkuaD4KLSNl
bmRpZgotCiAvLyBUaGlzIHNob3VsZCBiZSBsZXNzIHRoYW4gcGx1Z0luQXV0b1N0YXJ0RXhwaXJh
dGlvblRpbWVUaHJlc2hvbGQgaW4gUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuCiBzdGF0aWMgY29u
c3QgU2Vjb25kcyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVVwZGF0ZVRocmVzaG9sZCB7
IDI5ICogMjQgKiA2MCAqIDYwIH07CiAKQEAgLTE0NjAsNiArMTQ1Niw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRv
U3VzcGVuZCBzaG91CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFjY2Vzc2liaWxp
dHlQcm9jZXNzU3VzcGVuZGVkTm90aWZpY2F0aW9uKHRydWUpOworICAgIHVwZGF0ZUZyZWV6ZXJT
dGF0dXMoKTsKICNlbmRpZgogCiAgICAgbWFya0FsbExheWVyc1ZvbGF0aWxlKFt0aGlzLCBzaG91
bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZF0oYm9vbCBzdWNjZXNzKSB7CkBAIC0xODc1
LDE0ICsxODcyLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjbGVhckN1cnJlbnRNb2RpZmllclN0YXRl
Rm9yVGVzdGluZygpCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzZXRDdXJyZW50TW9kaWZp
ZXJTdGF0ZSh7IH0pOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnNldEZyZWV6YWJsZShib29sIGZy
ZWV6YWJsZSkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGF1dG8gcmVzdWx0ID0g
bWVtb3J5c3RhdHVzX2NvbnRyb2woTUVNT1JZU1RBVFVTX0NNRF9TRVRfUFJPQ0VTU19JU19GUkVF
WkFCTEUsIGdldHBpZCgpLCBmcmVlemFibGUgPyAxIDogMCwgbnVsbHB0ciwgMCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwotI2VuZGlmCi19Ci0KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogdm9pZCBXZWJQcm9jZXNzOjp1bmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcihj
b25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDI5NTIwZTQxYTAwLi4zNDc2N2NlOGQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00MTgsNiArNDE4LDkgQEAgcHJpdmF0
ZToKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGJhY2tsaWdodExldmVsRGlkQ2hhbmdl
KGZsb2F0IGJhY2tsaWdodExldmVsKTsKKworICAgIGJvb2wgc2hvdWxkRnJlZXplT25TdXNwZW5z
aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFTykKQEAgLTQyNiw3ICs0MjksNiBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICB2b2lkIGNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7Ci0gICAgdm9p
ZCBzZXRGcmVlemFibGUoYm9vbCk7CiAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMTI0Mjg1ZDZkYWYuLjk1ZTM4Y2UyNzdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MTYxLDYgKzE2MSw0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXIo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCi0KLSAgICBT
ZXRGcmVlemFibGUoYm9vbCBmcmVlemFibGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBlNjBmZGFkOTc1OS4uMmRiM2Q4
ZDdlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQpAQCAtNjEsNiArNjEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVy
SW1wRGV0YWlscy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbXBvcnQgPGFsZ29yaXRobT4KICNpbXBvcnQgPGRp
c3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTc4LDYgKzc5
LDEwIEBACiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2luY2x1ZGUgPGJtYWxsb2MvTWVtb3J5U3RhdHVzU1BJLmg+CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0SU9TLmgiCiAjaW1wb3J0IDxVSUtpdC9VSUFjY2Vzc2liaWxpdHkuaD4KQEAgLTY3NCw2
ICs2NzksMjggQEAgdm9pZCBXZWJQcm9jZXNzOjphY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRl
ZE5vdGlmaWNhdGlvbihib29sIHN1c3BlbmRlZCkKIHsKICAgICBVSUFjY2Vzc2liaWxpdHlQb3N0
Tm90aWZpY2F0aW9uKGtBWFBpZFN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIEB7IEAicGlkIiA6
IEAoZ2V0cGlkKCkpLCBAInN1c3BlbmRlZCIgOiBAKHN1c3BlbmRlZCkgfSk7CiB9CisKK2Jvb2wg
V2ViUHJvY2Vzczo6c2hvdWxkRnJlZXplT25TdXNwZW5zaW9uKCkgY29uc3QKK3sKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIGZv
ciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBhZ2Ut
PmlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlRnJlZXplclN0YXR1cygp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtZW1vcnlzdGF0dXNfY29udHJvbChNRU1PUllTVEFUVVNf
Q01EX1NFVF9QUk9DRVNTX0lTX0ZSRUVaQUJMRSwgZ2V0cGlkKCksIHNob3VsZEZyZWV6ZU9uU3Vz
cGVuc2lvbigpID8gMSA6IDAsIG51bGxwdHIsIDApOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCAhcmVzdWx0KTsKK30KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VC
UFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365735</attachid>
            <date>2019-03-22 09:41:42 -0700</date>
            <delta_ts>2019-03-22 09:48:27 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>196149_wip.patch</filename>
            <type>text/plain</type>
            <size>9493</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ0ZDlm
NjhkMzc1Li4yZjQ0OGRjNjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xMTUsMTAgKzExNSwxMCBAQCB1aW50NjRfdCBXZWJQcm9jZXNzUHJv
eHk6OmdlbmVyYXRlUGFnZUlEKCkKICAgICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CiB9CiAKLXN0
YXRpYyBXZWJQcm9jZXNzUHJveHk6OldlYlBhZ2VQcm94eU1hcDo6TWFwVHlwZSYgZ2xvYmFsUGFn
ZU1hcCgpCitzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBh
Z2VNYXAoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWRPckNoZWNrRGlzYWJsZWQoKSk7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFw
OjpNYXBUeXBlPiBwYWdlTWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJQcm9jZXNz
UHJveHk6OldlYlBhZ2VQcm94eU1hcD4gcGFnZU1hcDsKICAgICByZXR1cm4gcGFnZU1hcDsKIH0K
IApAQCAtMTM2LDcgKzEzNiw2IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSYKICAgICAsIG1fYmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKnRoaXMpCiAgICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sLCBpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzID8gSXNXZWFrOjpZZXMg
OiBJc1dlYWs6Ok5vKQogICAgICwgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0
ZW5zaW9uKGZhbHNlKQotICAgICwgbV9wYWdlTWFwKCp0aGlzKQogICAgICwgbV9udW1iZXJPZlRp
bWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZCgwKQogICAgICwgbV90aHJvdHRsZXIoKnRo
aXMsIHByb2Nlc3NQb29sLnNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oKSkKICAgICAs
IG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUpCkBAIC0xODgsMTggKzE4Nyw2IEBAIFdl
YlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnZhbGlkYXRlRnJlZXplclN0YXR1cygpCi17Ci0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBib29sIHZhbHVlID0gIW1faXNQcmV3YXJtZWQgJiYgIW1faXNJblByb2Nl
c3NDYWNoZSAmJiAhbV9wYWdlTWFwLmlzRW1wdHkoKSAmJiAhaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOwotICAgIGlmIChtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlICE9IFdURjo6bnVsbG9wdCAm
JiBtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlID09IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlID0gdmFsdWU7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U2V0RnJlZXphYmxlKHZhbHVlKSwgMCk7Ci0jZW5kaWYKLX0KLQogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQobV9pc0luUHJvY2Vzc0NhY2hlICE9IHZhbHVlKTsKQEAgLTIxNSw4ICsyMDIsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIHZhbHVlKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICAgICAgbV9wcm9jZXNz
UG9vbC5zZXRJc1dlYWsoSXNXZWFrOjpObyk7CiAgICAgfQotICAgIAotICAgIHZhbGlkYXRlRnJl
ZXplclN0YXR1cygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9u
cyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCkBAIC0zOTQs
OCArMzc5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om1hcmtJc05vTG9uZ2VySW5QcmV3YXJt
ZWRQb29sKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICBtX3Byb2Nl
c3NQb29sLnNldElzV2VhayhJc1dlYWs6Ok5vKTsKIAotICAgIHZhbGlkYXRlRnJlZXplclN0YXR1
cygpOwotCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6TWFya0lzTm9Mb25nZXJQcmV3
YXJtZWQoKSwgMCk7CiB9CiAKQEAgLTc4OSw4ICs3NzIsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29u
bmVjdAogCiAgICAgdW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCgpOwogI2VuZGlm
Ci0KLSAgICB2YWxpZGF0ZUZyZWV6ZXJTdGF0dXMoKTsKIH0KIAogV2ViRnJhbWVQcm94eSogV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA0NzdlYmE1ZWUxYy4uMzdkZGY0
MjFmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC05
Niw2ICs5Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dQcm9jZXNzQ2FjaGluZyB7IE5vLCBZZXMgfTsK
IGNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHB1
YmxpYyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxXZWJQcm9jZXNzUHJveHk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1By
b3h5PiwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gV2ViRnJhbWVQcm94
eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFdlYlBhZ2VQcm94eSo+IFdlYlBh
Z2VQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBUEk6OlVz
ZXJJbml0aWF0ZWRBY3Rpb24+PiBVc2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCiAgICAgZW51bSBj
bGFzcyBJc1ByZXdhcm1lZCB7CkBAIC0xMzUsNDUgKzEzNiw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lv
bmFsUGFnZSkgeyBBU1NFUlQoIW1fcHJvdmlzaW9uYWxQYWdlcy5jb250YWlucygmcHJvdmlzaW9u
YWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5hZGQoJnByb3Zpc2lvbmFsUGFnZSk7IH0KICAg
ICB2b2lkIHJlbW92ZVByb3Zpc2lvbmFsUGFnZVByb3h5KFByb3Zpc2lvbmFsUGFnZVByb3h5JiBw
cm92aXNpb25hbFBhZ2UpIHsgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlcy5jb250YWlucygmcHJv
dmlzaW9uYWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5yZW1vdmUoJnByb3Zpc2lvbmFsUGFn
ZSk7IH0KLQotICAgIGNsYXNzIFdlYlBhZ2VQcm94eU1hcCB7Ci0gICAgcHVibGljOgotICAgICAg
ICBXZWJQYWdlUHJveHlNYXAoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKLSAgICAgICAgICAgIDog
bV9wcm94eShwcm94eSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdHlwZWRlZiBI
YXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBNYXBUeXBlOwotICAgICAgICB1c2luZyBW
YWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UgPSBNYXBUeXBlOjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFu
Z2U7Ci0KLSAgICAgICAgYXV0byBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9
Ci0gICAgICAgIGF1dG8gdmFsdWVzKCkgeyByZXR1cm4gbV9tYXAudmFsdWVzKCk7IH0KLSAgICAg
ICAgYXV0byB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX21hcC52YWx1ZXMoKTsgfQotICAgICAg
ICBhdXRvIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgICAgICBhdXRvIGVu
ZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9Ci0gICAgICAgIGF1dG8gZ2V0KHVpbnQ2NF90IGtl
eSkgeyByZXR1cm4gbV9tYXAuZ2V0KGtleSk7IH0KLSAgICAgICAgYXV0byBjb250YWlucyh1aW50
NjRfdCBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGtleSk7IH0KLSAgICAgICAg
YXV0byBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9Ci0KLSAgICAg
ICAgYXV0byBzZXQodWludDY0X3Qga2V5LCBXZWJQYWdlUHJveHkqIHZhbHVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWFwLnNldChrZXksIHZhbHVlKTsKLSAgICAg
ICAgICAgIG1fcHJveHkudmFsaWRhdGVGcmVlemVyU3RhdHVzKCk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0YWtlKHVpbnQ2NF90IGtleSkK
LSAgICAgICAgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX21hcC50YWtlKGtleSk7Ci0g
ICAgICAgICAgICBtX3Byb3h5LnZhbGlkYXRlRnJlZXplclN0YXR1cygpOwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgV2ViUHJv
Y2Vzc1Byb3h5JiBtX3Byb3h5OwotICAgICAgICBNYXBUeXBlIG1fbWFwOwotICAgIH07Ci0KICAg
ICAKICAgICB0eXBlbmFtZSBXZWJQYWdlUHJveHlNYXA6OlZhbHVlc0NvbnN0SXRlcmF0b3JSYW5n
ZSBwYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC52YWx1ZXMoKTsgfQogICAgIHVuc2ln
bmVkIHBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC5zaXplKCk7IH0KQEAgLTUw
OSw3ICs0NzEsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3VzcGVuZGVkUGFnZUNvdW50
IHsgMCB9OwogICAgIGJvb2wgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNQcmV3YXJtZWQ7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9jdXJy
ZW50SXNGcmVlemFibGVWYWx1ZTsKIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggOWYzNmViODU2ODAuLjdhYTI3MjEyZGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDksMTAgKzE0OSw2IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSA8Ym1hbGxvYy9NZW1vcnlTdGF0dXNTUEkuaD4KLSNl
bmRpZgotCiAvLyBUaGlzIHNob3VsZCBiZSBsZXNzIHRoYW4gcGx1Z0luQXV0b1N0YXJ0RXhwaXJh
dGlvblRpbWVUaHJlc2hvbGQgaW4gUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuCiBzdGF0aWMgY29u
c3QgU2Vjb25kcyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVVwZGF0ZVRocmVzaG9sZCB7
IDI5ICogMjQgKiA2MCAqIDYwIH07CiAKQEAgLTE0NjAsNiArMTQ1Niw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRv
U3VzcGVuZCBzaG91CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFjY2Vzc2liaWxp
dHlQcm9jZXNzU3VzcGVuZGVkTm90aWZpY2F0aW9uKHRydWUpOworICAgIHVwZGF0ZUZyZWV6ZXJT
dGF0dXMoKTsKICNlbmRpZgogCiAgICAgbWFya0FsbExheWVyc1ZvbGF0aWxlKFt0aGlzLCBzaG91
bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZF0oYm9vbCBzdWNjZXNzKSB7CkBAIC0xODc1
LDE0ICsxODcyLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjbGVhckN1cnJlbnRNb2RpZmllclN0YXRl
Rm9yVGVzdGluZygpCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzZXRDdXJyZW50TW9kaWZp
ZXJTdGF0ZSh7IH0pOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnNldEZyZWV6YWJsZShib29sIGZy
ZWV6YWJsZSkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGF1dG8gcmVzdWx0ID0g
bWVtb3J5c3RhdHVzX2NvbnRyb2woTUVNT1JZU1RBVFVTX0NNRF9TRVRfUFJPQ0VTU19JU19GUkVF
WkFCTEUsIGdldHBpZCgpLCBmcmVlemFibGUgPyAxIDogMCwgbnVsbHB0ciwgMCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwotI2VuZGlmCi19Ci0KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogdm9pZCBXZWJQcm9jZXNzOjp1bmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcihj
b25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDI5NTIwZTQxYTAwLi4zNDc2N2NlOGQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00MTgsNiArNDE4LDkgQEAgcHJpdmF0
ZToKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGJhY2tsaWdodExldmVsRGlkQ2hhbmdl
KGZsb2F0IGJhY2tsaWdodExldmVsKTsKKworICAgIGJvb2wgc2hvdWxkRnJlZXplT25TdXNwZW5z
aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFTykKQEAgLTQyNiw3ICs0MjksNiBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICB2b2lkIGNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7Ci0gICAgdm9p
ZCBzZXRGcmVlemFibGUoYm9vbCk7CiAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMTI0Mjg1ZDZkYWYuLjk1ZTM4Y2UyNzdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MTYxLDYgKzE2MSw0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXIo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCi0KLSAgICBT
ZXRGcmVlemFibGUoYm9vbCBmcmVlemFibGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBlNjBmZGFkOTc1OS4uMmRiM2Q4
ZDdlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQpAQCAtNjEsNiArNjEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVy
SW1wRGV0YWlscy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbXBvcnQgPGFsZ29yaXRobT4KICNpbXBvcnQgPGRp
c3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTc4LDYgKzc5
LDEwIEBACiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2luY2x1ZGUgPGJtYWxsb2MvTWVtb3J5U3RhdHVzU1BJLmg+CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0SU9TLmgiCiAjaW1wb3J0IDxVSUtpdC9VSUFjY2Vzc2liaWxpdHkuaD4KQEAgLTY3NCw2
ICs2NzksMjggQEAgdm9pZCBXZWJQcm9jZXNzOjphY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRl
ZE5vdGlmaWNhdGlvbihib29sIHN1c3BlbmRlZCkKIHsKICAgICBVSUFjY2Vzc2liaWxpdHlQb3N0
Tm90aWZpY2F0aW9uKGtBWFBpZFN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIEB7IEAicGlkIiA6
IEAoZ2V0cGlkKCkpLCBAInN1c3BlbmRlZCIgOiBAKHN1c3BlbmRlZCkgfSk7CiB9CisKK2Jvb2wg
V2ViUHJvY2Vzczo6c2hvdWxkRnJlZXplT25TdXNwZW5zaW9uKCkgY29uc3QKK3sKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIGZv
ciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBhZ2Ut
PmlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlRnJlZXplclN0YXR1cygp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtZW1vcnlzdGF0dXNfY29udHJvbChNRU1PUllTVEFUVVNf
Q01EX1NFVF9QUk9DRVNTX0lTX0ZSRUVaQUJMRSwgZ2V0cGlkKCksIHNob3VsZEZyZWV6ZU9uU3Vz
cGVuc2lvbigpID8gMSA6IDAsIG51bGxwdHIsIDApOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCAhcmVzdWx0KTsKK30KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VC
UFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365736</attachid>
            <date>2019-03-22 09:48:27 -0700</date>
            <delta_ts>2019-03-22 09:56:38 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>196149_wip.patch</filename>
            <type>text/plain</type>
            <size>9493</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ0ZDlm
NjhkMzc1Li4yZjQ0OGRjNjg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCkBAIC0xMTUsMTAgKzExNSwxMCBAQCB1aW50NjRfdCBXZWJQcm9jZXNzUHJv
eHk6OmdlbmVyYXRlUGFnZUlEKCkKICAgICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CiB9CiAKLXN0
YXRpYyBXZWJQcm9jZXNzUHJveHk6OldlYlBhZ2VQcm94eU1hcDo6TWFwVHlwZSYgZ2xvYmFsUGFn
ZU1hcCgpCitzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBh
Z2VNYXAoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWRPckNoZWNrRGlzYWJsZWQoKSk7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFw
OjpNYXBUeXBlPiBwYWdlTWFwOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXZWJQcm9jZXNz
UHJveHk6OldlYlBhZ2VQcm94eU1hcD4gcGFnZU1hcDsKICAgICByZXR1cm4gcGFnZU1hcDsKIH0K
IApAQCAtMTM2LDcgKzEzNiw2IEBAIFdlYlByb2Nlc3NQcm94eTo6V2ViUHJvY2Vzc1Byb3h5KFdl
YlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgV2Vic2l0ZURhdGFTdG9yZSYKICAgICAsIG1fYmFj
a2dyb3VuZFJlc3BvbnNpdmVuZXNzVGltZXIoKnRoaXMpCiAgICAgLCBtX3Byb2Nlc3NQb29sKHBy
b2Nlc3NQb29sLCBpc1ByZXdhcm1lZCA9PSBJc1ByZXdhcm1lZDo6WWVzID8gSXNXZWFrOjpZZXMg
OiBJc1dlYWs6Ok5vKQogICAgICwgbV9tYXlIYXZlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0
ZW5zaW9uKGZhbHNlKQotICAgICwgbV9wYWdlTWFwKCp0aGlzKQogICAgICwgbV9udW1iZXJPZlRp
bWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZCgwKQogICAgICwgbV90aHJvdHRsZXIoKnRo
aXMsIHByb2Nlc3NQb29sLnNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24oKSkKICAgICAs
IG1faXNSZXNwb25zaXZlKE5vT3JNYXliZTo6TWF5YmUpCkBAIC0xODgsMTggKzE4Nyw2IEBAIFdl
YlByb2Nlc3NQcm94eTo6fldlYlByb2Nlc3NQcm94eSgpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnZhbGlkYXRlRnJlZXplclN0YXR1cygpCi17Ci0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBib29sIHZhbHVlID0gIW1faXNQcmV3YXJtZWQgJiYgIW1faXNJblByb2Nl
c3NDYWNoZSAmJiAhbV9wYWdlTWFwLmlzRW1wdHkoKSAmJiAhaXNTZXJ2aWNlV29ya2VyUHJvY2Vz
cygpOwotICAgIGlmIChtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlICE9IFdURjo6bnVsbG9wdCAm
JiBtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlID09IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2N1cnJlbnRJc0ZyZWV6YWJsZVZhbHVlID0gdmFsdWU7Ci0gICAgc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U2V0RnJlZXphYmxlKHZhbHVlKSwgMCk7Ci0jZW5kaWYKLX0KLQogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldElzSW5Qcm9jZXNzQ2FjaGUoYm9vbCB2YWx1ZSkKIHsKICAg
ICBBU1NFUlQobV9pc0luUHJvY2Vzc0NhY2hlICE9IHZhbHVlKTsKQEAgLTIxNSw4ICsyMDIsNiBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIHZhbHVlKQog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICAgICAgbV9wcm9jZXNz
UG9vbC5zZXRJc1dlYWsoSXNXZWFrOjpObyk7CiAgICAgfQotICAgIAotICAgIHZhbGlkYXRlRnJl
ZXplclN0YXR1cygpOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9u
cyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCkBAIC0zOTQs
OCArMzc5LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om1hcmtJc05vTG9uZ2VySW5QcmV3YXJt
ZWRQb29sKCkKICAgICBSRUxFQVNFX0FTU0VSVChtX3Byb2Nlc3NQb29sKTsKICAgICBtX3Byb2Nl
c3NQb29sLnNldElzV2VhayhJc1dlYWs6Ok5vKTsKIAotICAgIHZhbGlkYXRlRnJlZXplclN0YXR1
cygpOwotCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6TWFya0lzTm9Mb25nZXJQcmV3
YXJtZWQoKSwgMCk7CiB9CiAKQEAgLTc4OSw4ICs3NzIsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29u
bmVjdAogCiAgICAgdW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCgpOwogI2VuZGlm
Ci0KLSAgICB2YWxpZGF0ZUZyZWV6ZXJTdGF0dXMoKTsKIH0KIAogV2ViRnJhbWVQcm94eSogV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA0NzdlYmE1ZWUxYy4uMzdkZGY0
MjFmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC05
Niw2ICs5Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dQcm9jZXNzQ2FjaGluZyB7IE5vLCBZZXMgfTsK
IGNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHB1
YmxpYyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxXZWJQcm9jZXNzUHJveHk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1By
b3h5PiwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gV2ViRnJhbWVQcm94
eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFdlYlBhZ2VQcm94eSo+IFdlYlBh
Z2VQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBUEk6OlVz
ZXJJbml0aWF0ZWRBY3Rpb24+PiBVc2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCiAgICAgZW51bSBj
bGFzcyBJc1ByZXdhcm1lZCB7CkBAIC0xMzUsNDUgKzEzNiw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lv
bmFsUGFnZSkgeyBBU1NFUlQoIW1fcHJvdmlzaW9uYWxQYWdlcy5jb250YWlucygmcHJvdmlzaW9u
YWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5hZGQoJnByb3Zpc2lvbmFsUGFnZSk7IH0KICAg
ICB2b2lkIHJlbW92ZVByb3Zpc2lvbmFsUGFnZVByb3h5KFByb3Zpc2lvbmFsUGFnZVByb3h5JiBw
cm92aXNpb25hbFBhZ2UpIHsgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlcy5jb250YWlucygmcHJv
dmlzaW9uYWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5yZW1vdmUoJnByb3Zpc2lvbmFsUGFn
ZSk7IH0KLQotICAgIGNsYXNzIFdlYlBhZ2VQcm94eU1hcCB7Ci0gICAgcHVibGljOgotICAgICAg
ICBXZWJQYWdlUHJveHlNYXAoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkKLSAgICAgICAgICAgIDog
bV9wcm94eShwcm94eSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgdHlwZWRlZiBI
YXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBNYXBUeXBlOwotICAgICAgICB1c2luZyBW
YWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UgPSBNYXBUeXBlOjpWYWx1ZXNDb25zdEl0ZXJhdG9yUmFu
Z2U7Ci0KLSAgICAgICAgYXV0byBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXAuc2l6ZSgpOyB9
Ci0gICAgICAgIGF1dG8gdmFsdWVzKCkgeyByZXR1cm4gbV9tYXAudmFsdWVzKCk7IH0KLSAgICAg
ICAgYXV0byB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX21hcC52YWx1ZXMoKTsgfQotICAgICAg
ICBhdXRvIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQotICAgICAgICBhdXRvIGVu
ZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9Ci0gICAgICAgIGF1dG8gZ2V0KHVpbnQ2NF90IGtl
eSkgeyByZXR1cm4gbV9tYXAuZ2V0KGtleSk7IH0KLSAgICAgICAgYXV0byBjb250YWlucyh1aW50
NjRfdCBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGtleSk7IH0KLSAgICAgICAg
YXV0byBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuaXNFbXB0eSgpOyB9Ci0KLSAgICAg
ICAgYXV0byBzZXQodWludDY0X3Qga2V5LCBXZWJQYWdlUHJveHkqIHZhbHVlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWFwLnNldChrZXksIHZhbHVlKTsKLSAgICAg
ICAgICAgIG1fcHJveHkudmFsaWRhdGVGcmVlemVyU3RhdHVzKCk7Ci0gICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0YWtlKHVpbnQ2NF90IGtleSkK
LSAgICAgICAgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX21hcC50YWtlKGtleSk7Ci0g
ICAgICAgICAgICBtX3Byb3h5LnZhbGlkYXRlRnJlZXplclN0YXR1cygpOwotICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgV2ViUHJv
Y2Vzc1Byb3h5JiBtX3Byb3h5OwotICAgICAgICBNYXBUeXBlIG1fbWFwOwotICAgIH07Ci0KICAg
ICAKICAgICB0eXBlbmFtZSBXZWJQYWdlUHJveHlNYXA6OlZhbHVlc0NvbnN0SXRlcmF0b3JSYW5n
ZSBwYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC52YWx1ZXMoKTsgfQogICAgIHVuc2ln
bmVkIHBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC5zaXplKCk7IH0KQEAgLTUw
OSw3ICs0NzEsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3VzcGVuZGVkUGFnZUNvdW50
IHsgMCB9OwogICAgIGJvb2wgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNpb25hbExvYWRzIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNQcmV3YXJtZWQ7Ci0gICAgT3B0aW9uYWw8Ym9vbD4gbV9jdXJy
ZW50SXNGcmVlemFibGVWYWx1ZTsKIAogI2lmIFBMQVRGT1JNKFdBVENIT1MpCiAgICAgUHJvY2Vz
c1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggOWYzNmViODU2ODAuLjdhYTI3MjEyZGRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0xNDksMTAgKzE0OSw2IEBACiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yLmg+CiAjZW5kaWYKIAotI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSA8Ym1hbGxvYy9NZW1vcnlTdGF0dXNTUEkuaD4KLSNl
bmRpZgotCiAvLyBUaGlzIHNob3VsZCBiZSBsZXNzIHRoYW4gcGx1Z0luQXV0b1N0YXJ0RXhwaXJh
dGlvblRpbWVUaHJlc2hvbGQgaW4gUGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuCiBzdGF0aWMgY29u
c3QgU2Vjb25kcyBwbHVnSW5BdXRvU3RhcnRFeHBpcmF0aW9uVGltZVVwZGF0ZVRocmVzaG9sZCB7
IDI5ICogMjQgKiA2MCAqIDYwIH07CiAKQEAgLTE0NjAsNiArMTQ1Niw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6YWN0dWFsUHJlcGFyZVRvU3VzcGVuZChTaG91bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRv
U3VzcGVuZCBzaG91CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGFjY2Vzc2liaWxp
dHlQcm9jZXNzU3VzcGVuZGVkTm90aWZpY2F0aW9uKHRydWUpOworICAgIHVwZGF0ZUZyZWV6ZXJT
dGF0dXMoKTsKICNlbmRpZgogCiAgICAgbWFya0FsbExheWVyc1ZvbGF0aWxlKFt0aGlzLCBzaG91
bGRBY2tub3dsZWRnZVdoZW5SZWFkeVRvU3VzcGVuZF0oYm9vbCBzdWNjZXNzKSB7CkBAIC0xODc1
LDE0ICsxODcyLDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpjbGVhckN1cnJlbnRNb2RpZmllclN0YXRl
Rm9yVGVzdGluZygpCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpzZXRDdXJyZW50TW9kaWZp
ZXJTdGF0ZSh7IH0pOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnNldEZyZWV6YWJsZShib29sIGZy
ZWV6YWJsZSkKLXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGF1dG8gcmVzdWx0ID0g
bWVtb3J5c3RhdHVzX2NvbnRyb2woTUVNT1JZU1RBVFVTX0NNRF9TRVRfUFJPQ0VTU19JU19GUkVF
WkFCTEUsIGdldHBpZCgpLCBmcmVlemFibGUgPyAxIDogMCwgbnVsbHB0ciwgMCk7Ci0gICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsICFyZXN1bHQpOwotI2VuZGlmCi19Ci0KICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogdm9pZCBXZWJQcm9jZXNzOjp1bmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcihj
b25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIGhhbmRsZSkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDI5NTIwZTQxYTAwLi4zNDc2N2NlOGQ5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC00MTgsNiArNDE4LDkgQEAgcHJpdmF0
ZToKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGJhY2tsaWdodExldmVsRGlkQ2hhbmdl
KGZsb2F0IGJhY2tsaWdodExldmVsKTsKKworICAgIGJvb2wgc2hvdWxkRnJlZXplT25TdXNwZW5z
aW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFTykKQEAgLTQyNiw3ICs0MjksNiBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICB2b2lkIGNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7Ci0gICAgdm9p
ZCBzZXRGcmVlemFibGUoYm9vbCk7CiAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMTI0Mjg1ZDZkYWYuLjk1ZTM4Y2UyNzdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAt
MTYxLDYgKzE2MSw0IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXIo
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlKQogI2VuZGlmCi0KLSAgICBT
ZXRGcmVlemFibGUoYm9vbCBmcmVlemFibGUpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCBlNjBmZGFkOTc1OS4uMmRiM2Q4
ZDdlYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQpAQCAtNjEsNiArNjEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9sbGVy
SW1wRGV0YWlscy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbXBvcnQgPGFsZ29yaXRobT4KICNpbXBvcnQgPGRp
c3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTc4LDYgKzc5
LDEwIEBACiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorI2luY2x1ZGUgPGJtYWxsb2MvTWVtb3J5U3RhdHVzU1BJLmg+CisjZW5kaWYKKwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0SU9TLmgiCiAjaW1wb3J0IDxVSUtpdC9VSUFjY2Vzc2liaWxpdHkuaD4KQEAgLTY3NCw2
ICs2NzksMjggQEAgdm9pZCBXZWJQcm9jZXNzOjphY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRl
ZE5vdGlmaWNhdGlvbihib29sIHN1c3BlbmRlZCkKIHsKICAgICBVSUFjY2Vzc2liaWxpdHlQb3N0
Tm90aWZpY2F0aW9uKGtBWFBpZFN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIEB7IEAicGlkIiA6
IEAoZ2V0cGlkKCkpLCBAInN1c3BlbmRlZCIgOiBAKHN1c3BlbmRlZCkgfSk7CiB9CisKK2Jvb2wg
V2ViUHJvY2Vzczo6c2hvdWxkRnJlZXplT25TdXNwZW5zaW9uKCkgY29uc3QKK3sKKyNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCisgICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzID0gU1dD
b250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgIGlmIChpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKworICAgIGZv
ciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkgeworICAgICAgICBpZiAoIXBhZ2Ut
PmlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlRnJlZXplclN0YXR1cygp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtZW1vcnlzdGF0dXNfY29udHJvbChNRU1PUllTVEFUVVNf
Q01EX1NFVF9QUk9DRVNTX0lTX0ZSRUVaQUJMRSwgZ2V0cGlkKCksIHNob3VsZEZyZWV6ZU9uU3Vz
cGVuc2lvbigpID8gMSA6IDAsIG51bGxwdHIsIDApOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCAhcmVzdWx0KTsKK30KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VC
UFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxPQ0tJTkcpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365738</attachid>
            <date>2019-03-22 09:56:39 -0700</date>
            <delta_ts>2019-03-22 10:40:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196149-20190322095638.patch</filename>
            <type>text/plain</type>
            <size>15340</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMzc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJkZjVlZTliNTgwZmU1ZTYy
ZDc4Mjg3NzQ3MDY1OGYwZDMxMzVhYjYuLjU1NDUzNmExNjExZGI1NjYwOGU3MWE5MjMwNjdlZDVm
MDRiNzdiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTktMDMtMjIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgV2ViUHJvY2VzcyBm
cmVlemVyIG9wdC1pbiBjb21wbGV0ZWx5IG9uIFdlYkNvbnRlbnQgcHJvY2VzcyBzaWRlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYxNDkKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgV2Vi
UHJvY2VzcyBmcmVlemVyIG9wdC1pbiBjb21wbGV0ZWx5IG9uIFdlYkNvbnRlbnQgcHJvY2VzcyBz
aWRlLCB3ZSBkbyBub3QgbmVlZAorICAgICAgICB0byBpbnZvbHZlIHRoZSBVSVByb2Nlc3Mgd2l0
aCB0aGlzIGFuZCByZWx5IG9uIElQQyB3aGljaCBtYXkgYmUgZnJhZ2lsZS4KKworICAgICAgICBJ
biB0aGUgZnV0dXJlLCB3ZSBtYXkgd2FudCB0byBzZXQgZnJlZXphYmxlIHN0YXRlIGZyb20gdGhl
IFVJUHJvY2VzcyB3aGVuIHRoZSBBUEkgc3VwcG9ydHMKKyAgICAgICAgaXQuIFdlIGNhbiBtb3Zl
IHRoZSBsb2dpYyB0byBiZSBmdWxseSBvbiB0aGUgVUlQcm9jZXNzIHNpZGUgdGhlbi4gSW4gdGhl
IG1lYW4gdGltZSwgaXQgaXMKKyAgICAgICAgbGlrZWx5IGJlc3Qgbm90IHRvIHJlbHkgb24gSVBD
IGFuZCBwcm9jZXNzIGNvb3JkaW5hdGlvbiBmb3IgdGhpcy4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpnbG9iYWxQYWdlTWFwKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNldElzSW5Qcm9jZXNzQ2FjaGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1hcmtJc05vTG9uZ2VySW5QcmV3YXJtZWRQ
b29sKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hp
bmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnZhbGlkYXRlRnJlZXplclN0
YXR1cyk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVByb3Zpc2lvbmFsUGFnZVBy
b3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXA6
OldlYlBhZ2VQcm94eU1hcCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6V2ViUGFnZVByb3h5TWFwOjpzaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXA6OnZhbHVlcyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwOjp2YWx1
ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Oldl
YlBhZ2VQcm94eU1hcDo6YmVnaW4pOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUHJveHk6OldlYlBhZ2VQcm94eU1hcDo6ZW5kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXA6OmdldCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwOjpjb250YWlucyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUGFn
ZVByb3h5TWFwOjppc0VtcHR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXA6OnNldCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwOjp0YWtlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzOjpzZXRJc0luUHJvY2Vzc0NhY2hlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6bWFya0lzTm9Mb25nZXJQcmV3YXJtZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjphY3R1YWxQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6c2V0RnJlZXphYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2hvdWxkRnJlZXplT25TdXNwZW5zaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6dXBkYXRlRnJlZXplclN0YXR1cyk6CisKIDIwMTktMDMtMjIgIFlvdXN1
a2UgS2ltb3RvICA8WW91c3VrZS5LaW1vdG9Ac29ueS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCBkNGQ5ZjY4ZDM3NWMyNzY2YmRiY2RmZmI1ZDVlMzA1NGUzNjE3NDIyLi4yZjQ0OGRj
Njg1ZGI2ZGFlZTk3ZDY1NzQ2NjcxZjFhMzE4MDRiNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTExNSwxMCArMTE1LDEwIEBAIHVpbnQ2NF90
IFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQogICAgIHJldHVybiArK3VuaXF1ZVBh
Z2VJRDsKIH0KIAotc3RhdGljIFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwOjpNYXBU
eXBlJiBnbG9iYWxQYWdlTWFwKCkKK3N0YXRpYyBXZWJQcm9jZXNzUHJveHk6OldlYlBhZ2VQcm94
eU1hcCYgZ2xvYmFsUGFnZU1hcCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZE9yQ2hlY2tE
aXNhYmxlZCgpKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V2ViUHJvY2Vzc1Byb3h5OjpX
ZWJQYWdlUHJveHlNYXA6Ok1hcFR5cGU+IHBhZ2VNYXA7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwPiBwYWdlTWFwOwogICAgIHJldHVy
biBwYWdlTWFwOwogfQogCkBAIC0xMzYsNyArMTM2LDYgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQ
cm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBXZWJzaXRlRGF0YVN0b3Jl
JgogICAgICwgbV9iYWNrZ3JvdW5kUmVzcG9uc2l2ZW5lc3NUaW1lcigqdGhpcykKICAgICAsIG1f
cHJvY2Vzc1Bvb2wocHJvY2Vzc1Bvb2wsIGlzUHJld2FybWVkID09IElzUHJld2FybWVkOjpZZXMg
PyBJc1dlYWs6OlllcyA6IElzV2Vhazo6Tm8pCiAgICAgLCBtX21heUhhdmVVbml2ZXJzYWxGaWxl
UmVhZFNhbmRib3hFeHRlbnNpb24oZmFsc2UpCi0gICAgLCBtX3BhZ2VNYXAoKnRoaXMpCiAgICAg
LCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVkKDApCiAgICAgLCBt
X3Rocm90dGxlcigqdGhpcywgcHJvY2Vzc1Bvb2wuc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2Vy
dGlvbigpKQogICAgICwgbV9pc1Jlc3BvbnNpdmUoTm9Pck1heWJlOjpNYXliZSkKQEAgLTE4OCwx
OCArMTg3LDYgQEAgV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKICNlbmRpZgog
fQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6dmFsaWRhdGVGcmVlemVyU3RhdHVzKCkKLXsKLSNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGJvb2wgdmFsdWUgPSAhbV9pc1ByZXdhcm1lZCAm
JiAhbV9pc0luUHJvY2Vzc0NhY2hlICYmICFtX3BhZ2VNYXAuaXNFbXB0eSgpICYmICFpc1NlcnZp
Y2VXb3JrZXJQcm9jZXNzKCk7Ci0gICAgaWYgKG1fY3VycmVudElzRnJlZXphYmxlVmFsdWUgIT0g
V1RGOjpudWxsb3B0ICYmIG1fY3VycmVudElzRnJlZXphYmxlVmFsdWUgPT0gdmFsdWUpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIG1fY3VycmVudElzRnJlZXphYmxlVmFsdWUgPSB2YWx1ZTsKLSAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRGcmVlemFibGUodmFsdWUpLCAwKTsKLSNl
bmRpZgotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0SXNJblByb2Nlc3NDYWNoZShib29s
IHZhbHVlKQogewogICAgIEFTU0VSVChtX2lzSW5Qcm9jZXNzQ2FjaGUgIT0gdmFsdWUpOwpAQCAt
MjE1LDggKzIwMiw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRJc0luUHJvY2Vzc0NhY2hl
KGJvb2wgdmFsdWUpCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOwogICAg
ICAgICBtX3Byb2Nlc3NQb29sLnNldElzV2VhayhJc1dlYWs6Ok5vKTsKICAgICB9Ci0gICAgCi0g
ICAgdmFsaWRhdGVGcmVlemVyU3RhdHVzKCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpn
ZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0
aW9ucykKQEAgLTM5NCw4ICszNzksNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bWFya0lzTm9M
b25nZXJJblByZXdhcm1lZFBvb2woKQogICAgIFJFTEVBU0VfQVNTRVJUKG1fcHJvY2Vzc1Bvb2wp
OwogICAgIG1fcHJvY2Vzc1Bvb2wuc2V0SXNXZWFrKElzV2Vhazo6Tm8pOwogCi0gICAgdmFsaWRh
dGVGcmVlemVyU3RhdHVzKCk7Ci0KICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpNYXJr
SXNOb0xvbmdlclByZXdhcm1lZCgpLCAwKTsKIH0KIApAQCAtNzg5LDggKzc3Miw2IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVu
Y2hlciwgSVBDOjpDb25uZWN0CiAKICAgICB1bmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcklmTmVl
ZGVkKCk7CiAjZW5kaWYKLQotICAgIHZhbGlkYXRlRnJlZXplclN0YXR1cygpOwogfQogCiBXZWJG
cmFtZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6OndlYkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDQ3N2Vi
YTVlZTFjMmZkZTU5NmFkYTA0NjYyNjIxODNkYzk4YmYwZTUuLjM3ZGRmNDIxZmRmYzBjZDAzYzY2
ZWMwYTc5NmU1MDMxNDI0MTAyNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCkBAIC05Niw2ICs5Niw3IEBAIGVudW0gY2xhc3MgQWxsb3dQcm9jZXNzQ2FjaGlu
ZyB7IE5vLCBZZXMgfTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBBdXhpbGlhcnlQ
cm9jZXNzUHJveHksIHB1YmxpYyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxXZWJQcm9jZXNzUHJveHk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViUHJvY2Vzc1Byb3h5PiwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1
YmxpYzoKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5
Pj4gV2ViRnJhbWVQcm94eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFdlYlBh
Z2VQcm94eSo+IFdlYlBhZ2VQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+PiBVc2VySW5pdGlhdGVkQWN0aW9uTWFw
OwogCiAgICAgZW51bSBjbGFzcyBJc1ByZXdhcm1lZCB7CkBAIC0xMzUsNDUgKzEzNiw2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoUHJvdmlzaW9uYWxQYWdl
UHJveHkmIHByb3Zpc2lvbmFsUGFnZSkgeyBBU1NFUlQoIW1fcHJvdmlzaW9uYWxQYWdlcy5jb250
YWlucygmcHJvdmlzaW9uYWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5hZGQoJnByb3Zpc2lv
bmFsUGFnZSk7IH0KICAgICB2b2lkIHJlbW92ZVByb3Zpc2lvbmFsUGFnZVByb3h5KFByb3Zpc2lv
bmFsUGFnZVByb3h5JiBwcm92aXNpb25hbFBhZ2UpIHsgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdl
cy5jb250YWlucygmcHJvdmlzaW9uYWxQYWdlKSk7IG1fcHJvdmlzaW9uYWxQYWdlcy5yZW1vdmUo
JnByb3Zpc2lvbmFsUGFnZSk7IH0KLQotICAgIGNsYXNzIFdlYlBhZ2VQcm94eU1hcCB7Ci0gICAg
cHVibGljOgotICAgICAgICBXZWJQYWdlUHJveHlNYXAoV2ViUHJvY2Vzc1Byb3h5JiBwcm94eSkK
LSAgICAgICAgICAgIDogbV9wcm94eShwcm94eSkKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBNYXBUeXBlOwot
ICAgICAgICB1c2luZyBWYWx1ZXNDb25zdEl0ZXJhdG9yUmFuZ2UgPSBNYXBUeXBlOjpWYWx1ZXND
b25zdEl0ZXJhdG9yUmFuZ2U7Ci0KLSAgICAgICAgYXV0byBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9tYXAuc2l6ZSgpOyB9Ci0gICAgICAgIGF1dG8gdmFsdWVzKCkgeyByZXR1cm4gbV9tYXAudmFs
dWVzKCk7IH0KLSAgICAgICAgYXV0byB2YWx1ZXMoKSBjb25zdCB7IHJldHVybiBtX21hcC52YWx1
ZXMoKTsgfQotICAgICAgICBhdXRvIGJlZ2luKCkgeyByZXR1cm4gbV9tYXAuYmVnaW4oKTsgfQot
ICAgICAgICBhdXRvIGVuZCgpIHsgcmV0dXJuIG1fbWFwLmVuZCgpOyB9Ci0gICAgICAgIGF1dG8g
Z2V0KHVpbnQ2NF90IGtleSkgeyByZXR1cm4gbV9tYXAuZ2V0KGtleSk7IH0KLSAgICAgICAgYXV0
byBjb250YWlucyh1aW50NjRfdCBrZXkpIGNvbnN0IHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKGtl
eSk7IH0KLSAgICAgICAgYXV0byBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9tYXAuaXNFbXB0
eSgpOyB9Ci0KLSAgICAgICAgYXV0byBzZXQodWludDY0X3Qga2V5LCBXZWJQYWdlUHJveHkqIHZh
bHVlKQotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IG1fbWFwLnNldChrZXks
IHZhbHVlKTsKLSAgICAgICAgICAgIG1fcHJveHkudmFsaWRhdGVGcmVlemVyU3RhdHVzKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0KLSAgICAgICAgYXV0byB0YWtl
KHVpbnQ2NF90IGtleSkKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBtX21h
cC50YWtlKGtleSk7Ci0gICAgICAgICAgICBtX3Byb3h5LnZhbGlkYXRlRnJlZXplclN0YXR1cygp
OwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgV2ViUHJvY2Vzc1Byb3h5JiBtX3Byb3h5OwotICAgICAgICBNYXBUeXBlIG1fbWFw
OwotICAgIH07Ci0KICAgICAKICAgICB0eXBlbmFtZSBXZWJQYWdlUHJveHlNYXA6OlZhbHVlc0Nv
bnN0SXRlcmF0b3JSYW5nZSBwYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC52YWx1ZXMo
KTsgfQogICAgIHVuc2lnbmVkIHBhZ2VDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZU1hcC5z
aXplKCk7IH0KQEAgLTUwOSw3ICs0NzEsNiBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fc3Vz
cGVuZGVkUGFnZUNvdW50IHsgMCB9OwogICAgIGJvb2wgbV9oYXNDb21taXR0ZWRBbnlQcm92aXNp
b25hbExvYWRzIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQcmV3YXJtZWQ7Ci0gICAgT3B0aW9u
YWw8Ym9vbD4gbV9jdXJyZW50SXNGcmVlemFibGVWYWx1ZTsKIAogI2lmIFBMQVRGT1JNKFdBVENI
T1MpCiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4gbV9iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbkZvckZ1bGxzY3JlZW5Gb3JtQ29udHJvbHM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggOWYzNmViODU2ODAzN2U3ZjE0MTRiMjlk
YWJmNGFmMTAxMzkyOWU5Yi4uY2U2OWNiMzE5ZjkxMDY3ZDNmNDhiMDc5NWE0ZTA5YTczMjkyOGVl
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMTQ5LDEwICsx
NDksNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1JlbW90ZUluc3BlY3Rvci5oPgogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgPGJtYWxsb2MvTWVtb3J5
U3RhdHVzU1BJLmg+Ci0jZW5kaWYKLQogLy8gVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHBsdWdJ
bkF1dG9TdGFydEV4cGlyYXRpb25UaW1lVGhyZXNob2xkIGluIFBsdWdJbkF1dG9TdGFydFByb3Zp
ZGVyLgogc3RhdGljIGNvbnN0IFNlY29uZHMgcGx1Z0luQXV0b1N0YXJ0RXhwaXJhdGlvblRpbWVV
cGRhdGVUaHJlc2hvbGQgeyAyOSAqIDI0ICogNjAgKiA2MCB9OwogCkBAIC00OTgsNyArNDk0LDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRIYXNTdXNwZW5kZWRQYWdlUHJveHkoYm9vbCBoYXNTdXNw
ZW5kZWRQYWdlUHJveHkpCiAKIHZvaWQgV2ViUHJvY2Vzczo6c2V0SXNJblByb2Nlc3NDYWNoZShi
b29sIGlzSW5Qcm9jZXNzQ2FjaGUpCiB7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGlmIChpc0luUHJvY2Vzc0NhY2hlKSB7CiAgICAgICAgIEFTU0VSVChtX3By
b2Nlc3NUeXBlID09IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50KTsKICAgICAgICAgbV9wcm9jZXNz
VHlwZSA9IFByb2Nlc3NUeXBlOjpDYWNoZWRXZWJDb250ZW50OwpAQCAtNTE1LDcgKzUxMSw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6c2V0SXNJblByb2Nlc3NDYWNoZShib29sIGlzSW5Qcm9jZXNzQ2Fj
aGUpCiAKIHZvaWQgV2ViUHJvY2Vzczo6bWFya0lzTm9Mb25nZXJQcmV3YXJtZWQoKQogewotI2lm
IFBMQVRGT1JNKE1BQykKKyNpZiBQTEFURk9STShDT0NPQSkKICAgICBBU1NFUlQobV9wcm9jZXNz
VHlwZSA9PSBQcm9jZXNzVHlwZTo6UHJld2FybWVkV2ViQ29udGVudCk7CiAgICAgbV9wcm9jZXNz
VHlwZSA9IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50OwogCkBAIC0xNDYwLDYgKzE0NTYsNyBAQCB2
b2lkIFdlYlByb2Nlc3M6OmFjdHVhbFByZXBhcmVUb1N1c3BlbmQoU2hvdWxkQWNrbm93bGVkZ2VX
aGVuUmVhZHlUb1N1c3BlbmQgc2hvdQogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBh
Y2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNhdGlvbih0cnVlKTsKKyAgICB1cGRh
dGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYKIAogICAgIG1hcmtBbGxMYXllcnNWb2xhdGlsZShb
dGhpcywgc2hvdWxkQWNrbm93bGVkZ2VXaGVuUmVhZHlUb1N1c3BlbmRdKGJvb2wgc3VjY2Vzcykg
ewpAQCAtMTg3NSwxNCArMTg3Miw2IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJDdXJyZW50TW9k
aWZpZXJTdGF0ZUZvclRlc3RpbmcoKQogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6c2V0Q3Vy
cmVudE1vZGlmaWVyU3RhdGUoeyB9KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpzZXRGcmVlemFi
bGUoYm9vbCBmcmVlemFibGUpCi17Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRv
IHJlc3VsdCA9IG1lbW9yeXN0YXR1c19jb250cm9sKE1FTU9SWVNUQVRVU19DTURfU0VUX1BST0NF
U1NfSVNfRlJFRVpBQkxFLCBnZXRwaWQoKSwgZnJlZXphYmxlID8gMSA6IDAsIG51bGxwdHIsIDAp
OwotICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCAhcmVzdWx0KTsKLSNlbmRpZgotfQotCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgV2ViUHJvY2Vzczo6dW5ibG9ja0FjY2Vzc2liaWxp
dHlTZXJ2ZXIoY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBoYW5kbGUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCAyOTUyMGU0MWEwMDUyMTE4ZmUxYTcx
MjMzODBhMjczZGYxMDUwZWVkLi5mYjgyZjg4ZTA1OGRkNzA3Yzk1MzkyZjAzODM1YTc5MjY3NTcz
OTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTQwNyw3ICs0MDcs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgdXBkYXRlUHJvY2Vzc05hbWUo
KTsKICAgICB2b2lkIHNldFNjcmVlblByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6U2NyZWVuUHJv
cGVydGllcyYpOwogI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykK
ICAgICB2b2lkIHNjcm9sbGVyU3R5bGVQcmVmZXJlbmNlQ2hhbmdlZChib29sIHVzZU92ZXJsYXlT
Y3JvbGxiYXJzKTsKQEAgLTQxNiw4ICs0MTUsMTUgQEAgcHJpdmF0ZToKICNlbmRpZgogI2VuZGlm
CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICB2b2lkIHVwZGF0ZVByb2Nlc3NOYW1lKCk7Cisj
ZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICB2b2lkIGJhY2tsaWdodExldmVsRGlkQ2hh
bmdlKGZsb2F0IGJhY2tsaWdodExldmVsKTsKKworICAgIGJvb2wgc2hvdWxkRnJlZXplT25TdXNw
ZW5zaW9uKCkgY29uc3Q7CisgICAgdm9pZCB1cGRhdGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWSURFTykKQEAgLTQyNiw3ICs0MzIsNiBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICB2b2lkIGNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7Ci0gICAg
dm9pZCBzZXRGcmVlemFibGUoYm9vbCk7CiAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQ
cm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKQEAgLTUwMSwxMiArNTA2LDE1IEBAIHByaXZhdGU6
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNQVU1vbml0b3I+IG1fY3B1TW9uaXRvcjsK
ICAgICBPcHRpb25hbDxkb3VibGU+IG1fY3B1TGltaXQ7CiAKLSAgICBlbnVtIGNsYXNzIFByb2Nl
c3NUeXBlIHsgSW5zcGVjdG9yLCBTZXJ2aWNlV29ya2VyLCBQcmV3YXJtZWRXZWJDb250ZW50LCBD
YWNoZWRXZWJDb250ZW50LCBXZWJDb250ZW50IH07Ci0gICAgUHJvY2Vzc1R5cGUgbV9wcm9jZXNz
VHlwZSB7IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50IH07CiAgICAgU3RyaW5nIG1fdWlQcm9jZXNz
TmFtZTsKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWlu
OwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBlbnVtIGNsYXNzIFByb2Nlc3NU
eXBlIHsgSW5zcGVjdG9yLCBTZXJ2aWNlV29ya2VyLCBQcmV3YXJtZWRXZWJDb250ZW50LCBDYWNo
ZWRXZWJDb250ZW50LCBXZWJDb250ZW50IH07CisgICAgUHJvY2Vzc1R5cGUgbV9wcm9jZXNzVHlw
ZSB7IFByb2Nlc3NUeXBlOjpXZWJDb250ZW50IH07CisjZW5kaWYKKwogICAgIEhhc2hNYXA8V2Vi
Q29yZTo6VXNlckdlc3R1cmVUb2tlbiAqLCB1aW50NjRfdD4gbV91c2VyR2VzdHVyZVRva2VuczsK
IAogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDEyNDI4NWQ2ZGFmNTAwMjI4ZTZhM2ZhMmEyZDAy
YTQ1ZDdkNDA0NDEuLjk1ZTM4Y2UyNzdlYmI1YmE4NWI5ZjViZDIzNjY5NDZiNzNmZGYzN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBA
IC0xNjEsNiArMTYxLDQgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBVbmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZl
cihXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUpCiAjZW5kaWYKLQotICAg
IFNldEZyZWV6YWJsZShib29sIGZyZWV6YWJsZSkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IGU2MGZkYWQ5NzU5YWRkMzhk
NmUxYTgzNzBmMmZjZDY5MGUwODE4NDIuLjI3NWM0MWM1Njc2NDE0YjA0NzViMWFjZTUxZTk2NGIw
YmEwYzdhYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQ
cm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbQpAQCAtNjEsNiArNjEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9OU1Njcm9s
bGVySW1wRGV0YWlscy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0aW9uQ2hlY2tzLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1NXQ29udGV4dE1hbmFnZXIuaD4KICNpbXBvcnQgPGFsZ29yaXRobT4KICNpbXBvcnQg
PGRpc3BhdGNoL2Rpc3BhdGNoLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KQEAgLTc4LDYg
Kzc5LDEwIEBACiAjaW1wb3J0ICJVSUtpdFNQSS5oIgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorI2luY2x1ZGUgPGJtYWxsb2MvTWVtb3J5U3RhdHVzU1BJLmg+CisjZW5kaWYK
KwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0SU9TLmgiCiAjaW1wb3J0IDxVSUtpdC9VSUFjY2Vzc2liaWxpdHkuaD4KQEAgLTIz
MCw5ICsyMzUsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OmluaXRpYWxpemVQcm9jZXNzTmFtZShjb25z
dCBBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbQogI2VuZGlmCiB9CiAKLSNpZiBQ
TEFURk9STShNQUMpCiB2b2lkIFdlYlByb2Nlc3M6OnVwZGF0ZVByb2Nlc3NOYW1lKCkKIHsKKyNp
ZiBQTEFURk9STShNQUMpCiAgICAgTlNTdHJpbmcgKmFwcGxpY2F0aW9uTmFtZTsKICAgICBzd2l0
Y2ggKG1fcHJvY2Vzc1R5cGUpIHsKICAgICBjYXNlIFByb2Nlc3NUeXBlOjpJbnNwZWN0b3I6CkBA
IC0yNjYsOCArMjcxLDggQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVQcm9jZXNzTmFtZSgpCiAg
ICAgICAgIEFTU0VSVCghYWN0dWFsQXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSk7CiAjZW5kaWYK
ICAgICB9KTsKLX0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCit9CiAKIHN0YXRpYyB2b2lkIHJl
Z2lzdGVyV2l0aEFjY2Vzc2liaWxpdHkoKQogewpAQCAtNjc0LDYgKzY3OSwzNiBAQCB2b2lkIFdl
YlByb2Nlc3M6OmFjY2Vzc2liaWxpdHlQcm9jZXNzU3VzcGVuZGVkTm90aWZpY2F0aW9uKGJvb2wg
c3VzcGVuZGVkKQogewogICAgIFVJQWNjZXNzaWJpbGl0eVBvc3ROb3RpZmljYXRpb24oa0FYUGlk
U3RhdHVzQ2hhbmdlZE5vdGlmaWNhdGlvbiwgQHsgQCJwaWQiIDogQChnZXRwaWQoKSksIEAic3Vz
cGVuZGVkIiA6IEAoc3VzcGVuZGVkKSB9KTsKIH0KKworYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRG
cmVlemVPblN1c3BlbnNpb24oKSBjb25zdAoreworICAgIHN3aXRjaCAobV9wcm9jZXNzVHlwZSkg
eworICAgIGNhc2UgUHJvY2Vzc1R5cGU6Okluc3BlY3RvcjoKKyAgICBjYXNlIFByb2Nlc3NUeXBl
OjpTZXJ2aWNlV29ya2VyOgorICAgIGNhc2UgUHJvY2Vzc1R5cGU6OlByZXdhcm1lZFdlYkNvbnRl
bnQ6CisgICAgY2FzZSBQcm9jZXNzVHlwZTo6Q2FjaGVkV2ViQ29udGVudDoKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGNhc2UgUHJvY2Vzc1R5cGU6OldlYkNvbnRlbnQ6CisgICAgICAgIGJy
ZWFrOworICAgIH0KKworICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcC52YWx1ZXMoKSkg
eworICAgICAgICBpZiAoIXBhZ2UtPmlzU3VzcGVuZGVkKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzczo6
dXBkYXRlRnJlZXplclN0YXR1cygpCit7CisgICAgYm9vbCBpc0ZyZWV6YWJsZSA9IHNob3VsZEZy
ZWV6ZU9uU3VzcGVuc2lvbigpOworICAgIGF1dG8gcmVzdWx0ID0gbWVtb3J5c3RhdHVzX2NvbnRy
b2woTUVNT1JZU1RBVFVTX0NNRF9TRVRfUFJPQ0VTU19JU19GUkVFWkFCTEUsIGdldHBpZCgpLCBp
c0ZyZWV6YWJsZSA/IDEgOiAwLCBudWxscHRyLCAwKTsKKyAgICBpZiAocmVzdWx0KQorICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6
dXBkYXRlRnJlZXplclN0YXR1cygpIGlzRnJlZXphYmxlOiAlZCwgZXJyb3I6ICVkIiwgdGhpcywg
aXNGcmVlemFibGUsIHJlc3VsdCk7CisgICAgZWxzZQorICAgICAgICBSRUxFQVNFX0xPRyhQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzczo6dXBkYXRlRnJlZXplclN0YXR1cygpIGlz
RnJlZXphYmxlOiAlZCwgc3VjY2VzcyIsIHRoaXMsIGlzRnJlZXphYmxlKTsKK30KICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxP
Q0tJTkcpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>