<?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>135035</bug_id>
          
          <creation_ts>2014-07-17 18:05:18 -0700</creation_ts>
          <short_desc>Clean up WKOriginDataManager and get it messaging to the DatabaseProcess</short_desc>
          <delta_ts>2014-07-25 15:35:58 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>135029</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jberlin</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1023154</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-17 18:05:18 -0700</bug_when>
    <thetext>Clean up WKOriginDataManager and get it messaging to the DatabaseProcess

First functional step of https://bugs.webkit.org/show_bug.cgi?id=135029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023159</commentid>
    <comment_count>1</comment_count>
      <attachid>235104</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-17 18:10:46 -0700</bug_when>
    <thetext>Created attachment 235104
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023160</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-17 18:12:18 -0700</bug_when>
    <thetext>Attachment 235104 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:111:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:144:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 4 in 18 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>1023271</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-18 09:42:46 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 235104 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
&gt; ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
&gt; ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:111:  Extra space before ( in function call  [whitespace/parens] [4]
&gt; ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:144:  Extra space before ( in function call  [whitespace/parens] [4]
&gt; Total errors found: 4 in 18 files
&gt; 
&gt; 

These are the same old &quot;check-webkit-style doesn&apos;t understand our style for C++ lambdas&quot; which has been filed already</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023338</commentid>
    <comment_count>4</comment_count>
      <attachid>235143</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-18 13:27:34 -0700</bug_when>
    <thetext>Created attachment 235143
Patch v2 - Also added a new API we&apos;ll need very soon anyways</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023340</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-18 13:29:33 -0700</bug_when>
    <thetext>Attachment 235143 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:111:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:171:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 6 in 18 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>1023344</commentid>
    <comment_count>6</comment_count>
      <attachid>235143</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-18 13:32:51 -0700</bug_when>
    <thetext>Comment on attachment 235143
Patch v2 - Also added a new API we&apos;ll need very soon anyways

NM this, v3 coming soon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023350</commentid>
    <comment_count>7</comment_count>
      <attachid>235145</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-18 13:46:11 -0700</bug_when>
    <thetext>Created attachment 235145
Patch v3 - Okay for real this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023351</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-07-18 13:47:26 -0700</bug_when>
    <thetext>Attachment 235145 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:57:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:58:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.h:59:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:111:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:138:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:166:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 6 in 18 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>1023386</commentid>
    <comment_count>9</comment_count>
      <attachid>235145</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-18 16:16:07 -0700</bug_when>
    <thetext>Comment on attachment 235145
Patch v3 - Okay for real this time

Nevermind...  one more change.  *sigh*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1023392</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-18 16:50:35 -0700</bug_when>
    <thetext>NM, yes let&apos;s do it this way for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024622</commentid>
    <comment_count>11</comment_count>
      <attachid>235145</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-07-24 14:44:50 -0700</bug_when>
    <thetext>Comment on attachment 235145
Patch v3 - Okay for real this time

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

&gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:55
&gt; +    m_webOriginDataManager = std::make_unique&lt;WebOriginDataManager&gt;(this);

why not in the initializer list?

&gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.messages.in:25
&gt; +messages -&gt; DatabaseProcess LegacyReceiver {

why are we adding *new* &quot;Legacy&quot; message receivers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024641</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-24 15:45:14 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 235145 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235145&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:55
&gt; &gt; +    m_webOriginDataManager = std::make_unique&lt;WebOriginDataManager&gt;(this);
&gt; 
&gt; why not in the initializer list?

Leftover from an earlier iteration where it wasn&apos;t feasible for some reason.  Will fix.

&gt; &gt; Source/WebKit2/DatabaseProcess/DatabaseProcess.messages.in:25
&gt; &gt; +messages -&gt; DatabaseProcess LegacyReceiver {
&gt; 
&gt; why are we adding *new* &quot;Legacy&quot; message receivers?

It appears that the only way to get your ChildProcessSupplements to have a chance at handling messages is to be a LegacyReceiver and have your custom didReceiveMessage check the messageReceiverMap() first.

This is one reason why I really really want Anders to review this patch, because I can find no alternative, but if there is one he&apos;d know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024907</commentid>
    <comment_count>13</comment_count>
      <attachid>235145</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-07-25 13:55:17 -0700</bug_when>
    <thetext>Comment on attachment 235145
Patch v3 - Okay for real this time

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

&gt; Source/WebKit2/UIProcess/API/C/WKOriginDataManager.h:-78
&gt; -typedef struct WKOriginDataManagerChangeClient {
&gt; -    int                                                                 version;
&gt; -    const void *                                                        clientInfo;
&gt; -
&gt; -    // Version 0.
&gt; -    WKOriginDataManagerChangeCallback                                   didChange;
&gt; -} WKOriginDataManagerChangeClient WK_DEPRECATED(&quot;Use an explicit versioned struct instead&quot;);

Why is it okay to get rid of this client?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024911</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-25 14:22:56 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 235145 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=235145&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/WKOriginDataManager.h:-78
&gt; &gt; -typedef struct WKOriginDataManagerChangeClient {
&gt; &gt; -    int                                                                 version;
&gt; &gt; -    const void *                                                        clientInfo;
&gt; &gt; -
&gt; &gt; -    // Version 0.
&gt; &gt; -    WKOriginDataManagerChangeCallback                                   didChange;
&gt; &gt; -} WKOriginDataManagerChangeClient WK_DEPRECATED(&quot;Use an explicit versioned struct instead&quot;);
&gt; 
&gt; Why is it okay to get rid of this client?

It was never used outside the project, and we&apos;re not positive it needs to be around.
It was never even used within the project - just a big no-op.

It clutters up things right now, and can be brought back whenever it&apos;s actually needed and someone has time to make it actually do something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024934</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-07-25 15:35:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/171622</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235104</attachid>
            <date>2014-07-17 18:10:46 -0700</date>
            <delta_ts>2014-07-18 13:27:34 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>42851</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMmRlZjkyLi42MTc0ZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMTQtMDctMTcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIENsZWFuIHVwIFdLT3JpZ2luRGF0YU1hbmFnZXIgYW5kIGdldCBpdCBtZXNzYWdpbmcgdG8g
dGhlIERhdGFiYXNlUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpEYXRhYmFzZVByb2Nlc3MpOiBJbnN0YW50aWF0
ZSB0aGUgV2ViT3JpZ2luRGF0YU1hbmFnZXIsIGluc3RhbGxpbmcgaXRzIG1lc3NhZ2UgaGFuZGxl
ci4KKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
IFRyeSB0aGUgbWVzc2FnZSByZWNlaXZlciBtYXAsIHdoaWNoIHdpbGwgdHJ5IHRoZSBXZWJPcmln
aW5EYXRhTWFuYWdlci4KKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
Lmg6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKTogVXBk
YXRlZCB0byBhbHNvIHRha2UgYSBjYWxsYmFjay4KKyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFn
ZXJEZWxldGVBbGxFbnRyaWVzKTogRGl0dG8uCisgICAgICAgIChXS09yaWdpbkRhdGFNYW5hZ2Vy
U3RhcnRPYnNlcnZpbmdDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdLT3JpZ2luRGF0YU1h
bmFnZXJTdG9wT2JzZXJ2aW5nQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXS09yaWdpbkRh
dGFNYW5hZ2VyU2V0Q2hhbmdlQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0RhdGFi
YXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNl
UHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6IFNlbmQgbWVzc2FnZXMgdG8gdGhlIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkgc3VwcGxlbWVudCBpZiBhcHByb3ByaWF0ZS4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoK
KworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29udGV4dDo6V2ViQ29udGV4dCk6IEluc3RhbnRpYXRlIHRoZSBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5IHN1cHBsZW1lbnQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dDo6c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVu
Y2hpbmdJZk5lY2Vzc2FyeSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHk6OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5OjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6IFNldHVwIGEgY2FsbGJh
Y2sgd2l0aCB0aGUgbWVzc2FnZS4KKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eTo6ZGlkRGVsZXRlRW50cmllc0Zvck9yaWdpbik6IENhbGwgdGhlIGNhbGxiYWNrLgor
ICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkZWxldGVBbGxFbnRy
aWVzKTogU2V0dXAgYSBjYWxsYmFjayB3aXRoIHRoZSBtZXNzYWdlLgorICAgICAgICAoV2ViS2l0
OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWREZWxldGVBbGxFbnRyaWVzKTogQ2FsbCB0
aGUgY2FsbGJhY2suCisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6
OnN0YXJ0T2JzZXJ2aW5nQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDaGFuZ2VzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6c2V0Q2hhbmdlQ2xpZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6
ZGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHlDaGFuZ2VDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50Lmg6IFJlbW92ZWQuCisKKyAgICAg
ICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6IFNlbmQg
dGhlIGNhbGxiYWNrIHJlcGx5LgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdl
cjo6ZGVsZXRlQWxsRW50cmllcyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5E
YXRhTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmdDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OnN0b3BPYnNlcnZpbmdDaGFuZ2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIu
bWVzc2FnZXMuaW46CisKIDIwMTQtMDctMTcgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxl
LmNvbT4KIAogICAgICAgICBbUkVHUkVTU0lPTiBXSzJdVGhlIG1lbnUgYmFyIGRvZXMgbm90IHNo
b3cgdXAgd2hlbiB0YXBwaW5nIG9uIHRoZSBjYXJldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIv
RGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggODM1NDQ2Zi4uZTcyNTcz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJv
Y2Vzcy5jcHAKQEAgLTMwLDkgKzMwLDEyIEBACiAKICNpbmNsdWRlICJBc3luY1Rhc2suaCIKICNp
bmNsdWRlICJEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlICJE
YXRhYmFzZVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZS5oIgorI2luY2x1ZGUgIldlYk9yaWdpbkRhdGFN
YW5hZ2VyLmgiCisjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKQEAgLTQ5LDYgKzUyLDcgQEAgRGF0YWJhc2VQcm9jZXNzJiBEYXRhYmFzZVByb2Nlc3M6OnNo
YXJlZCgpCiBEYXRhYmFzZVByb2Nlc3M6OkRhdGFiYXNlUHJvY2VzcygpCiAgICAgOiBtX3F1ZXVl
KGFkb3B0UmVmKCpXb3JrUXVldWU6OmNyZWF0ZSgiY29tLmFwcGxlLldlYktpdC5EYXRhYmFzZVBy
b2Nlc3MiKS5sZWFrUmVmKCkpKQogeworICAgIG1fd2ViT3JpZ2luRGF0YU1hbmFnZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdlYk9yaWdpbkRhdGFNYW5hZ2VyPih0aGlzKTsKIH0KIAogRGF0YWJhc2VQ
cm9jZXNzOjp+RGF0YWJhc2VQcm9jZXNzKCkKQEAgLTcwLDYgKzc0LDE3IEBAIHZvaWQgRGF0YWJh
c2VQcm9jZXNzOjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKQogICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5zdG9wKCk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29k
ZXIpCit7CisgICAgaWYgKG1lc3NhZ2VSZWNlaXZlck1hcCgpLmRpc3BhdGNoTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRlY29kZXIubWVz
c2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3M6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSkgeworICAgICAgICBkaWRSZWNlaXZlRGF0YWJhc2VQcm9jZXNzTWVzc2Fn
ZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogdm9p
ZCBEYXRhYmFzZVByb2Nlc3M6OmRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24qLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpCiB7CiAgICAg
UnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAppbmRleCBhMzY0ZTIwLi5iMTRjMWE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCkBAIC0z
OSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgQXN5bmNUYXNrOwogY2xhc3Mg
RGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uOwogY2xhc3MgVW5pcXVlSURCRGF0YWJhc2U7
CitjbGFzcyBXZWJPcmlnaW5EYXRhTWFuYWdlcjsKIAogc3RydWN0IERhdGFiYXNlUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVyczsKIApAQCAtNDcsNiArNDgsNyBAQCBjbGFzcyBEYXRhYmFzZVByb2Nl
c3MgOiBwdWJsaWMgQ2hpbGRQcm9jZXNzICB7CiAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJv
eWVkPERhdGFiYXNlUHJvY2Vzcz47CiBwdWJsaWM6CiAgICAgc3RhdGljIERhdGFiYXNlUHJvY2Vz
cyYgc2hhcmVkKCk7CisgICAgfkRhdGFiYXNlUHJvY2VzcygpOwogCiAgICAgY29uc3QgU3RyaW5n
JiBpbmRleGVkRGF0YWJhc2VEaXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiBtX2luZGV4ZWREYXRh
YmFzZURpcmVjdG9yeTsgfQogCkBAIC01OCw4ICs2MCw2IEBAIHB1YmxpYzoKIAogICAgIFdvcmtR
dWV1ZSYgcXVldWUoKSB7IHJldHVybiBtX3F1ZXVlLmdldCgpOyB9CiAKLSAgICB+RGF0YWJhc2VQ
cm9jZXNzKCk7Ci0KIHByaXZhdGU6CiAgICAgRGF0YWJhc2VQcm9jZXNzKCk7CiAKQEAgLTc0LDYg
Kzc0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uKiwgSVBDOjpNZXNzYWdlRGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlY2VpdmVEYXRhYmFzZVByb2Nlc3NN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKTsKIAogICAgIC8v
IE1lc3NhZ2UgSGFuZGxlcnMKICAgICB2b2lkIGluaXRpYWxpemVEYXRhYmFzZVByb2Nlc3MoY29u
c3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CkBAIC05NSw2ICs5Niw4IEBA
IHByaXZhdGU6CiAKICAgICBEZXF1ZTxzdGQ6OnVuaXF1ZV9wdHI8QXN5bmNUYXNrPj4gbV9kYXRh
YmFzZVRhc2tzOwogICAgIE11dGV4IG1fZGF0YWJhc2VUYXNrTXV0ZXg7CisKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViT3JpZ2luRGF0YU1hbmFnZXI+IG1fd2ViT3JpZ2luRGF0YU1hbmFnZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0Rh
dGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGMwZGEw
NzkuLjQzYmU3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiAj
aWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAKLW1lc3NhZ2VzIC0+IERhdGFiYXNlUHJvY2Vz
cyB7CittZXNzYWdlcyAtPiBEYXRhYmFzZVByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgICMg
SW5pdGlhbGl6ZXMgdGhlIERhdGFiYXNlUHJvY2VzcyB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRl
cnMKICAgICBJbml0aWFsaXplRGF0YWJhc2VQcm9jZXNzKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzIHByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMpCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNw
cAppbmRleCBjZTlkM2IyLi4xY2Q5ZTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuY3BwCkBAIC00MSwyNyArNDEsMTYg
QEAgdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyR2V0T3JpZ2lucyhXS09yaWdpbkRhdGFNYW5hZ2Vy
UmVmIG9yaWdpbkRhdGFNYW5hZ2VyUmVmLAogICAgIHRvSW1wbChvcmlnaW5EYXRhTWFuYWdlclJl
ZiktPmdldE9yaWdpbnModHlwZXMsIHRvR2VuZXJpY0NhbGxiYWNrRnVuY3Rpb24oY29udGV4dCwg
Y2FsbGJhY2spKTsKIH0KIAotdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyRGVsZXRlRW50cmllc0Zv
ck9yaWdpbihXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyUmVmLCBXS09y
aWdpbkRhdGFUeXBlcyB0eXBlcywgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW5SZWYpCit2b2lk
IFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YU1h
bmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXJSZWYsIFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBX
S1NlY3VyaXR5T3JpZ2luUmVmIG9yaWdpblJlZiwgdm9pZCogY29udGV4dCwgV0tPcmlnaW5EYXRh
TWFuYWdlckRlbGV0ZUVudHJpZXNDYWxsYmFja0Z1bmN0aW9uIGNhbGxiYWNrKQogewotICAgIHRv
SW1wbChvcmlnaW5EYXRhTWFuYWdlclJlZiktPmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4odHlwZXMs
IHRvSW1wbChvcmlnaW5SZWYpKTsKKyAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5k
ZWxldGVFbnRyaWVzRm9yT3JpZ2luKHR5cGVzLCB0b0ltcGwob3JpZ2luUmVmKSwgW2NvbnRleHQs
IGNhbGxiYWNrXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGNhbGxiYWNr
KGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpj
cmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0KTsKKyAgICB9KTsKIH0KIAotdm9pZCBXS09yaWdp
bkRhdGFNYW5hZ2VyRGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdp
bkRhdGFNYW5hZ2VyUmVmLCBXS09yaWdpbkRhdGFUeXBlcyB0eXBlcykKK3ZvaWQgV0tPcmlnaW5E
YXRhTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5E
YXRhTWFuYWdlclJlZiwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHZvaWQqIGNvbnRleHQsIFdL
T3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykK
IHsKLSAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5kZWxldGVBbGxFbnRyaWVzKHR5
cGVzKTsKLX0KLQotdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyU3RhcnRPYnNlcnZpbmdDaGFuZ2Vz
KFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXJSZWYsIFdLT3JpZ2luRGF0
YVR5cGVzIHR5cGVzKQotewotICAgIHRvSW1wbChvcmlnaW5EYXRhTWFuYWdlclJlZiktPnN0YXJ0
T2JzZXJ2aW5nQ2hhbmdlcyh0eXBlcyk7Ci19Ci0KLXZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlclN0
b3BPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFn
ZXJSZWYsIFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzKQotewotICAgIHRvSW1wbChvcmlnaW5EYXRh
TWFuYWdlclJlZiktPnN0b3BPYnNlcnZpbmdDaGFuZ2VzKHR5cGVzKTsKLX0KLQotdm9pZCBXS09y
aWdpbkRhdGFNYW5hZ2VyU2V0Q2hhbmdlQ2xpZW50KFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3Jp
Z2luRGF0YU1hbmFnZXJSZWYsIGNvbnN0IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRC
YXNlICpjbGllbnQpCi17Ci0gICAgdG9JbXBsKG9yaWdpbkRhdGFNYW5hZ2VyUmVmKS0+c2V0Q2hh
bmdlQ2xpZW50KGNsaWVudCk7CisgICAgdG9JbXBsKG9yaWdpbkRhdGFNYW5hZ2VyUmVmKS0+ZGVs
ZXRlQWxsRW50cmllcyh0eXBlcywgW2NvbnRleHQsIGNhbGxiYWNrXShDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgICAgIGNhbGxiYWNrKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUgPyB0b0FQSShBUEk6OkVycm9yOjpjcmVhdGUoKS5nZXQoKSkgOiAwLCBjb250ZXh0
KTsKKyAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS09yaWdpbkRhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tPcmlnaW5EYXRhTWFuYWdlci5oCmluZGV4IDgyN2JkNTUuLjYyZDAwYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuaApA
QCAtMzUsMTMgKzM1LDE0IEBAIGV4dGVybiAiQyIgewogZW51bSB7CiAgICAga1dLQXBwbGljYXRp
b25DYWNoZU9yaWdpbkRhdGEgPSAxIDw8IDAsCiAgICAga1dLQ29va2llT3JpZ2luRGF0YSA9IDEg
PDwgMSwKLSAgICBrV0tEYXRhYmFzZU9yaWdpbkRhdGEgPSAxIDw8IDIsCisgICAga1dLSW5kZXhl
ZERhdGFiYXNlRGF0YSA9IDEgPDwgMiwKICAgICBrV0tLZXlWYWx1ZVN0b3JhZ2VPcmlnaW5EYXRh
ID0gMSA8PCAzLAogICAgIGtXS01lZGlhQ2FjaGVPcmlnaW5EYXRhID0gMSA8PCA0LAogICAgIGtX
S1BsdWdpbkRhdGFPcmlnaW5EYXRhID0gMSA8PCA1LAogICAgIGtXS1Jlc291cmNlQ2FjaGVPcmln
aW5EYXRhID0gMSA8PCA2LAorICAgIGtXS1dlYlNRTERhdGFiYXNlT3JpZ2luRGF0YSA9IDEgPDwg
NywKIAotICAgIGtXS0FsbE9yaWdpbkRhdGEgPSAoMSA8PCA3KSAtIDEKKyAgICBrV0tBbGxPcmln
aW5EYXRhID0gMHhGRkZGRkZGRgogfTsKIHR5cGVkZWYgdWludDMyX3QgV0tPcmlnaW5EYXRhVHlw
ZXM7CiAKQEAgLTUwLDM2ICs1MSwxMCBAQCBXS19FWFBPUlQgV0tUeXBlSUQgV0tPcmlnaW5EYXRh
TWFuYWdlckdldFR5cGVJRCgpOwogdHlwZWRlZiB2b2lkICgqV0tPcmlnaW5EYXRhTWFuYWdlckdl
dE9yaWdpbnNGdW5jdGlvbikoV0tBcnJheVJlZiwgV0tFcnJvclJlZiwgdm9pZCopOwogV0tfRVhQ
T1JUIHZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlckdldE9yaWdpbnMoV0tPcmlnaW5EYXRhTWFuYWdl
clJlZiBvcmlnaW5EYXRhTWFuYWdlciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHZvaWQqIGNv
bnRleHQsIFdLT3JpZ2luRGF0YU1hbmFnZXJHZXRPcmlnaW5zRnVuY3Rpb24gZnVuY3Rpb24pOwog
Ci1XS19FWFBPUlQgdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdp
bihXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyLCBXS09yaWdpbkRhdGFU
eXBlcyB0eXBlcywgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4pOwotV0tfRVhQT1JUIHZvaWQg
V0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJl
ZiBvcmlnaW5EYXRhTWFuYWdlciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMpOwordHlwZWRlZiB2
b2lkICgqV0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUVudHJpZXNDYWxsYmFja0Z1bmN0aW9uKShX
S0Vycm9yUmVmLCB2b2lkKik7CitXS19FWFBPUlQgdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyRGVs
ZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5h
Z2VyLCBXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4s
IHZvaWQqIGNvbnRleHQsIFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzQ2FsbGJhY2tG
dW5jdGlvbiBmdW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyRGVs
ZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyLCBX
S09yaWdpbkRhdGFUeXBlcyB0eXBlcywgdm9pZCogY29udGV4dCwgV0tPcmlnaW5EYXRhTWFuYWdl
ckRlbGV0ZUVudHJpZXNDYWxsYmFja0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIAotLy8gT3JpZ2luRGF0
YU1hbmFnZXIgQ2xpZW50Ci10eXBlZGVmIHZvaWQgKCpXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdl
Q2FsbGJhY2spKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXIsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS09yaWdpbkRhdGFNYW5hZ2Vy
Q2hhbmdlQ2xpZW50QmFzZSB7Ci0gICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotICAgIGludCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmVyc2lvbjsKLX0gV0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2U7Ci0K
LXR5cGVkZWYgc3RydWN0IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRWMCB7Ci0gICAg
V0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLT3JpZ2luRGF0YU1h
bmFnZXJDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlk
Q2hhbmdlOwotfSBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50VjA7Ci0KLWVudW0geyBr
V0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudFZlcnNpb24gPSAwIH07Ci10eXBlZGVmIHN0
cnVjdCBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50IHsKLSAgICBpbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl
cnNpb247Ci0gICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotCi0gICAgLy8gVmVyc2lvbiAwLgot
ICAgIFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGlkQ2hhbmdlOwotfSBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xp
ZW50IFdLX0RFUFJFQ0FURUQoIlVzZSBhbiBleHBsaWNpdCB2ZXJzaW9uZWQgc3RydWN0IGluc3Rl
YWQiKTsKLQotV0tfRVhQT1JUIHZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlclN0YXJ0T2JzZXJ2aW5n
Q2hhbmdlcyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyLCBXS09yaWdp
bkRhdGFUeXBlcyB0eXBlcyk7Ci1XS19FWFBPUlQgdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyU3Rv
cE9ic2VydmluZ0NoYW5nZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWFuYWdl
ciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMpOwotV0tfRVhQT1JUIHZvaWQgV0tPcmlnaW5EYXRh
TWFuYWdlclNldENoYW5nZUNsaWVudChXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFN
YW5nZXIsIGNvbnN0IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRCYXNlKiBjbGllbnQp
OwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKaW5k
ZXggYmI5ZDUzNC4uZjI0NDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKQEAgLTI3LDcgKzI3
LDEwIEBACiAjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzUHJveHkuaCIKIAogI2luY2x1ZGUgIkRh
dGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzUHJveHlN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1l
c3NhZ2VzLmgiCiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIApAQCAtNjYsNiArNjks
MTkgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6Y29ubmVjdGlvbldpbGxDbG9zZShJUEM6
OkNvbm5lY3Rpb24qKQogewogfQogCit2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29k
ZXImIGRlY29kZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09
IE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7
CisgICAgICAgIGRpZFJlY2VpdmVEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2UoY29ubmVjdGlv
biwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX3dlYkNvbnRleHQtPnN1cHBs
ZW1lbnQ8V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eT4oKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29u
bmVjdGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIHZvaWQgRGF0
YWJhc2VQcm9jZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHk+IHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVz
LmFwcGVuZChyZXBseSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0
YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmgKaW5kZXggYmQ3NTU1ZC4uNTRkOTQwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0
YWJhc2VQcm9jZXNzUHJveHkuaApAQCAtNTcsNiArNTcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VOYW1lKSBvdmVycmlkZTsKIAorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFiYXNlUHJvY2Vz
c1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRDcmVhdGVEYXRhYmFzZVRvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNl
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM0NDViZjUuLjZiYzYyMjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9E
YXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYg
RU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCiAKLW1lc3NhZ2VzIC0+IERhdGFiYXNlUHJvY2Vzc1By
b3h5IHsKK21lc3NhZ2VzIC0+IERhdGFiYXNlUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBEaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
Q29udGV4dC5jcHAKaW5kZXggYzg3YjY0Yi4uYTIzMTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2lmIEVOQUJMRShEQVRBQkFT
RV9QUk9DRVNTKQogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
IgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eS5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQpAQCAtMjE3LDYgKzIxOCw5IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoV2ViQ29udGV4
dENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbikKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMp
CiAgICAgYWRkU3VwcGxlbWVudDxXZWJCYXR0ZXJ5TWFuYWdlclByb3h5PigpOwogI2VuZGlmCisj
aWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCisgICAgYWRkU3VwcGxlbWVudDxXZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5PigpOworI2VuZGlmCiAKICAgICBjb250ZXh0cygpLmFwcGVuZCh0aGlz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZDYwZWRlZS4uNDY1
MzYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0zMDIsNiArMzAy
LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5z
dXJlRGF0YWJhc2VQcm9jZXNzKCk7CiAgICAgdm9pZCBnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0
aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9j
ZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5Pik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
dm9pZCBzZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNz
YWdlKTsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC02MTEsNiArNjEyLDE1IEBA
IHZvaWQgV2ViQ29udGV4dDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVj
ZXNzYXJ5KFQmJiBtZXNzYWdlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCisjaWYg
RU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBXZWJD
b250ZXh0OjpzZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBt
ZXNzYWdlKQoreworICAgIGVuc3VyZURhdGFiYXNlUHJvY2VzcygpOworICAgIG1fZGF0YWJhc2VQ
cm9jZXNzLT5zZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Cit9CisjZW5kaWYKKwog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgV2ViQ29udGV4dDo6c2VuZFRvQWxsUHJvY2Vzc2Vz
KGNvbnN0IFQmIG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmQyYzUzMi4uZDUyMDUyZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5LmNwcApAQCAtNTQsMTUgKzU0LDE1IEBAIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHk6On5XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5KCkKIHsKIH0KIAotCiB2b2lkIFdlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHk6OmNvbnRleHREZXN0cm95ZWQoKQogewogICAgIGludmFsaWRhdGVD
YWxsYmFja01hcChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldh
c0ludmFsaWRhdGVkKTsKKyAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tz
LCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKIH0KIAogdm9pZCBX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5
KikKIHsKLSAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcywgQ2FsbGJh
Y2tCYXNlOjpFcnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgLy8gRklYTUU6IEludmFsaWRhdGUg
b25seSB0aGUgY2FsbGJhY2tzIGZvciB0aGUgV2ViUHJvY2Vzc1Byb3h5IHRoYXQgY2xvc2VkLgog
fQogCiBib29sIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnNob3VsZFRlcm1pbmF0ZShXZWJQ
cm9jZXNzUHJveHkqKSBjb25zdApAQCAtODIsNiArODIsMTMgQEAgdm9pZCBXZWJPcmlnaW5EYXRh
TWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5OjpnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBz
dGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2Fs
bGJhY2tGdW5jdGlvbikKIHsKKyAgICBpZiAoISh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURh
dGEpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogUmlnaHQgbm93IHdlIG9ubHkg
c3VwcG9ydCBJbmRleGVkRGF0YWJhc2UgZGF0YSBzbyB3ZSBrbm93IHRoYXQgd2UncmUgb25seSBz
ZW5kaW5nIHRoaXMgcmVxdWVzdCB0byB0aGUgRGF0YWJhc2VQcm9jZXNzLgorICAgIC8vIFRoYXQn
cyB3aHkgaGF2aW5nIG9uZSBzaW5nbGUgY2FsbGJhY2sgd29ya3MuCisgICAgLy8gSW4gdGhlIGZ1
dHVyZSB3aGVuIHdlIG1lc3NhZ2UgTi1wcm9jZXNzZXMgd2UnbGwgaGF2ZSB0byB3YWl0IGZvciBh
bGwgTiByZXBsaWVzIGJlZm9yZSByZXNwb25kaW5nIHRvIHRoZSBjbGllbnQuCisKICAgICBSZWZQ
dHI8QXJyYXlDYWxsYmFjaz4gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGOjpt
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIAogICAgIGlmICghY29udGV4dCgpKSB7CkBAIC05Miw4
ICs5OSw3IEBAIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6Z2V0T3JpZ2lucyhXS09y
aWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvCiAgICAgdWludDY0X3QgY2FsbGJhY2tJ
RCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKIAotICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQ
cm9jZXNzKTogPHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBNYWtlIG1hbmlwdWxhdGluZyBjYWNo
ZSBpbmZvcm1hdGlvbiB3b3JrIHdpdGggcGVyLXRhYiBXZWJQcm9jZXNzLgotICAgIGNvbnRleHQo
KS0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpHZXRPcmlnaW5zKHR5cGVzLCBjYWxsYmFja0lEKSk7Cisg
ICAgY29udGV4dCgpLT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6R2V0T3JpZ2lucyh0eXBlcywgY2FsbGJh
Y2tJRCkpOwogfQogCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRpZEdldE9yaWdp
bnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFzLCB1aW50NjRf
dCBjYWxsYmFja0lEKQpAQCAtMTAyLDUzICsxMDgsNjUgQEAgdm9pZCBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5OjpkaWRHZXRPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+
JgogICAgIHBlcmZvcm1BUElDYWxsYmFja1dpdGhTZWN1cml0eU9yaWdpbkRhdGFWZWN0b3Iob3Jp
Z2luRGF0YXMsIGNhbGxiYWNrLmdldCgpKTsKIH0KIAotdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBX
ZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luKQordm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXZWJTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIGlmICghY29udGV4dCgpKQorICAgIGlmICgh
KHR5cGVzICYga1dLSW5kZXhlZERhdGFiYXNlRGF0YSkpCisgICAgICAgIHJldHVybjsKKworICAg
IC8vIEZJWE1FOiBSaWdodCBub3cgd2Ugb25seSBzdXBwb3J0IEluZGV4ZWREYXRhYmFzZSBkYXRh
IHNvIHdlIGtub3cgdGhhdCB3ZSdyZSBvbmx5IHNlbmRpbmcgdGhpcyByZXF1ZXN0IHRvIHRoZSBE
YXRhYmFzZVByb2Nlc3MuCisgICAgLy8gVGhhdCdzIHdoeSBoYXZpbmcgb25lIHNpbmdsZSBjYWxs
YmFjayB3b3Jrcy4KKyAgICAvLyBJbiB0aGUgZnV0dXJlIHdoZW4gd2UgbWVzc2FnZSBOLXByb2Nl
c3NlcyB3ZSdsbCBoYXZlIHRvIHdhaXQgZm9yIGFsbCBOIHJlcGxpZXMgYmVmb3JlIHJlc3BvbmRp
bmcgdG8gdGhlIGNsaWVudC4KKworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0g
Vm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKworICAg
IGlmICghY29udGV4dCgpKSB7CisgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2st
PmNhbGxiYWNrSUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxi
YWNrLnJlbGVhc2UoKSk7CiAKICAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5E
YXRhOwogICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCA9IG9yaWdpbi0+c2VjdXJpdHlP
cmlnaW4oKS5wcm90b2NvbCgpOwogICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0ID0gb3JpZ2lu
LT5zZWN1cml0eU9yaWdpbigpLmhvc3QoKTsKICAgICBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCA9
IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCk7CiAKLSAgICAvLyBGSVhNRSAoTXVsdGkt
V2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4gTWFrZSBtYW5pcHVsYXRpbmcg
Y2FjaGUgaW5mb3JtYXRpb24gd29yayB3aXRoIHBlci10YWIgV2ViUHJvY2Vzcy4KLSAgICBjb250
ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3Nh
Z2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlRW50cmllc0Zvck9yaWdpbih0eXBlcywg
c2VjdXJpdHlPcmlnaW5EYXRhKSk7CisgICAgY29udGV4dCgpLT5zZW5kVG9EYXRhYmFzZVByb2Nl
c3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6
RGVsZXRlRW50cmllc0Zvck9yaWdpbih0eXBlcywgc2VjdXJpdHlPcmlnaW5EYXRhLCBjYWxsYmFj
a0lEKSk7CiB9CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsRW50
cmllcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcykKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eTo6ZGlkRGVsZXRlRW50cmllc0Zvck9yaWdpbih1aW50NjRfdCBjYWxsYmFja0lEKQogewot
ICAgIGlmICghY29udGV4dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBGSVhNRSAoTXVs
dGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4gTWFrZSBtYW5pcHVsYXRp
bmcgY2FjaGUgaW5mb3JtYXRpb24gd29yayB3aXRoIHBlci10YWIgV2ViUHJvY2Vzcy4KLSAgICBj
b250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlQWxsRW50cmllcyh0eXBlcykpOwor
ICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gbV92b2lkQ2FsbGJhY2tzLnRha2Uo
Y2FsbGJhY2tJRCk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lk
IFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdp
bkRhdGFUeXBlcyB0eXBlcykKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBpZiAoIWNvbnRl
eHQoKSkKKyAgICBpZiAoISh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURhdGEpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5n
VGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6U3RhcnRPYnNl
cnZpbmdDaGFuZ2VzKHR5cGVzKSk7Ci19CisgICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB3ZSBvbmx5
IHN1cHBvcnQgSW5kZXhlZERhdGFiYXNlIGRhdGEgc28gd2Uga25vdyB0aGF0IHdlJ3JlIG9ubHkg
c2VuZGluZyB0aGlzIHJlcXVlc3QgdG8gdGhlIERhdGFiYXNlUHJvY2Vzcy4KKyAgICAvLyBUaGF0
J3Mgd2h5IGhhdmluZyBvbmUgc2luZ2xlIGNhbGxiYWNrIHdvcmtzLgorICAgIC8vIEluIHRoZSBm
dXR1cmUgd2hlbiB3ZSBtZXNzYWdlIE4tcHJvY2Vzc2VzIHdlJ2xsIGhhdmUgdG8gd2FpdCBmb3Ig
YWxsIE4gcmVwbGllcyBiZWZvcmUgcmVzcG9uZGluZyB0byB0aGUgY2xpZW50LgogCi12b2lkIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2luRGF0
YVR5cGVzIHR5cGVzKQotewotICAgIGlmICghY29udGV4dCgpKQorICAgIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGOjptb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKKworICAgIGlmICghY29udGV4dCgpKSB7CisgICAgICAgIGNhbGxiYWNrLT5p
bnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBjb250ZXh0KCktPnNl
bmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJP
cmlnaW5EYXRhTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDaGFuZ2VzKHR5cGVzKSk7Ci19CisgICAg
dWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lk
Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwogCi12b2lkIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnNldENoYW5nZUNsaWVudChjb25zdCBXS09yaWdpbkRh
dGFNYW5hZ2VyQ2hhbmdlQ2xpZW50QmFzZSAqY2xpZW50KQotewotICAgIG1fY2xpZW50LmluaXRp
YWxpemUoY2xpZW50KTsKKyAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1
bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpEZWxldGVB
bGxFbnRyaWVzKHR5cGVzLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eTo6ZGlkQ2hhbmdlKCkKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6
ZGlkRGVsZXRlQWxsRW50cmllcyh1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIG1fY2xpZW50
LmRpZENoYW5nZSh0aGlzKTsKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9IG1f
dm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIGNhbGxiYWNrLT5wZXJmb3JtQ2Fs
bGJhY2soKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaAppbmRleCA2ZGI0NWQ2
Li4xNjkwMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXS09yaWdpbkRhdGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
V2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5Q2hhbmdlQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTUsMjEgKzU0LDIx
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5KCk7CiAK
ICAgICB2b2lkIGdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPik7Ci0gICAgdm9pZCBkZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzLCBXZWJTZWN1cml0eU9yaWdpbiopOwot
ICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcyk7Ci0KLSAgICB2b2lk
IHN0YXJ0T2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdpbkRhdGFUeXBlcyk7Ci0gICAgdm9pZCBzdG9w
T2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdpbkRhdGFUeXBlcyk7Ci0gICAgdm9pZCBzZXRDaGFuZ2VD
bGllbnQoY29uc3QgV0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2UqKTsKKyAgICB2
b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMsIFdlYlNlY3VyaXR5
T3JpZ2luKiwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAg
IHZvaWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2
b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwogCiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJl
ZjsKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eShXZWJDb250ZXh0Kik7CiAKICAgICB2b2lk
IGRpZEdldE9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGRpZENoYW5nZSgpOworICAgIHZvaWQgZGlkRGVsZXRl
RW50cmllc0Zvck9yaWdpbih1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0
ZUFsbEVudHJpZXModWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAgICAvLyBXZWJDb250ZXh0U3Vw
cGxlbWVudAogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGU7CkBA
IC03OCwxMiArNzcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0
U3VwcGxlbWVudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRT
dXBwbGVtZW50KCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7Ci0KICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
QXJyYXlDYWxsYmFjaz4+IG1fYXJyYXlDYWxsYmFja3M7Ci0KLSAgICBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5Q2hhbmdlQ2xpZW50IG1fY2xpZW50OworICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNzZkNzZiNC4uZTUwMjY3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoQykgMjAxMSwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIyLDUgKzIyLDYgQEAKIAogbWVzc2FnZXMgLT4gV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eSB7CiAgICAgRGlkR2V0T3JpZ2lucyhWZWN0b3I8V2ViS2l0
OjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbklkZW50aWZpZXJzLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKLSAgICBEaWRDaGFuZ2UoKQorICAgIERpZERlbGV0ZUVudHJpZXNGb3JPcmlnaW4odWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgRGlkRGVsZXRlQWxsRW50cmllcyh1aW50NjRfdCBjYWxs
YmFja0lEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZjFlZTgyMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCIK
LQotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50OjpkaWRDaGFuZ2UoV2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eSogb3JpZ2luRGF0YU1hbmFnZXIpCi17Ci0gICAgaWYgKCFtX2NsaWVu
dC5kaWRDaGFuZ2UpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmRpZENoYW5nZSh0
b0FQSShvcmlnaW5EYXRhTWFuYWdlciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZWE4MDguLjAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnRfaAotI2RlZmluZSBXZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgot
I2luY2x1ZGUgIldLT3JpZ2luRGF0YU1hbmFnZXIuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotCi1uYW1lc3BhY2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS09y
aWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBs
ZTxXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk7Ci0K
LWNsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQgOiBwdWJsaWMgQVBJ
OjpDbGllbnQ8V0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2U+IHsKLXB1YmxpYzoK
LSAgICB2b2lkIGRpZENoYW5nZShXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Kik7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHlDaGFuZ2VDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDVhNzg0NzguLmY1OTgzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3NCw2ICs5NzQs
NyBAQAogCQk1MUVGQzFDRjE1MjRFNjI1MDBDOUE5MzggLyogV0tCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RkEyRDU0MTUyMTExODYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjA2MEUw
MTY1NDMxN0YwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERTE2NTQzMTc1MDBG
MzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovOyB9OwogCQk1MUYwNjBFMTE2
NTQzMTg1MDBGMzI4MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMDYwREQxNjU0
MzE3NTAwRjMyODFCIC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKKwkJNTFGMjVBMkIxOTc4OTYyOTAwNTcyNDlBIC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkJBMTgw
NjJCOUMwMDQ2RjZBOCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGN0RDNDExODBDQzkzNjAwMjEyQ0Ez
IC8qIFhQQ1NlcnZpY2VNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM4MjgzOTYxNkI0N0VDNDAwQTI3OEZFIC8qIFhQQ1NlcnZpY2VNYWluLm1t
ICovOyB9OwogCQk1MUY3REM0MzE4MENDOTM2MDAyMTJDQTMgLyogRm91bmRhdGlvbi5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNE
RTQ2ODE1QTkxNzYzMDA4RDI2RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTUx
RjdEQzQ0MTgwQ0M5MzYwMDIxMkNBMyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3Mg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOERDMkVGNUIwNDg2QTY5NDAwOThC
MjE2IC8qIFdlYktpdC5mcmFtZXdvcmsgKi87IH07CkBAIC0xMDA3LDggKzEwMDgsNiBAQAogCQk3
NTU0MjJDNDE4MDYyQkY5MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJCRTE4
MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi87IH07CiAJ
CTc1NTQyMkNCMTgwNjUwMDIwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJDNjE4MDY0
RkZDMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwICovOyB9OwogCQk3NTU0MjJD
QzE4MDc3M0NFMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkM3MTgwNjRGRkMwMDQ2RjZB
OCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5oICovOyB9OwotCQk3NTlDQ0Q1ODE4MDhGMTY0MDA3
OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTlDQ0Q1NDE4MDhGMTYw
MDA3OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5jcHAgKi87
IH07Ci0JCTc1OUNDRDU5MTgwOEYxNjkwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5Q2hhbmdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTlDQ0Q1NTE4MDhGMTYwMDA3OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eUNoYW5nZUNsaWVudC5oICovOyB9OwogCQk3NTlDQ0Q1QTE4MDhGNjE2MDA3OEU4QTggLyog
V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzU1NDIyQkYxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRh
dGFNYW5hZ2VyUHJveHkuaCAqLzsgfTsKIAkJNzVBOEQyQzgxODdDQ0ZBQjAwQzM5QzlFIC8qIF9X
S1dlYnNpdGVEYXRhU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBfV0tXZWJzaXRlRGF0YVN0b3Jl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzVB
OEQyQzkxODdDQ0ZBRjAwQzM5QzlFIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmUubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUE4RDJDNTE4N0NDRjlGMDBD
MzlDOUUgLyogX1dLV2Vic2l0ZURhdGFTdG9yZS5tbSAqLzsgfTsKQEAgLTMwNDMsOCArMzA0Miw2
IEBACiAJCTc1NTQyMkM2MTgwNjRGRkMwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJPcmlnaW5EYXRhTWFu
YWdlci5jcHA7IHBhdGggPSBPcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU1NDIyQzcxODA2NEZGQzAwNDZGNkE4IC8qIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyLmg7IHBhdGggPSBPcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkM4MTgwNjRGRkMwMDQ2
RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IG5hbWUgPSBXZWJPcmlnaW5EYXRhTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE9yaWdpbkRh
dGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTc1OUNDRDU0MTgwOEYxNjAwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5Q2hhbmdlQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk3NTlDQ0Q1NTE4MDhGMTYwMDA3OEU4QTggLyogV2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBfV0tXZWJz
aXRlRGF0YVN0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNp
dGVEYXRhU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUxODdD
Q0Y5RjAwQzM5QzlFIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJEMDE4N0QxN0JGMDBDMzlDOUUgLyogV0tTZXNzaW9u
UmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU2Vzc2lvblJl
Zi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01ODYyLDggKzU4NTksNiBAQAog
CQkJCTc1NTQyMkJGMTgwNjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
LmggKi8sCiAJCQkJNzU1NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHkuY3BwICovLAogCQkJCTc1NTQyMkMwMTgwNjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJCTc1OUNDRDU0MTgwOEYxNjAw
MDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcCAqLywK
LQkJCQk3NTlDQ0Q1NTE4MDhGMTYwMDA3OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94
eUNoYW5nZUNsaWVudC5oICovLAogCQkJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQ
YWdlQ29udGV4dE1lbnVDbGllbnQuY3BwICovLAogCQkJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlE
QyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQlCQzdCNjIwNTEyOUEwQTY3
MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwLmNwcCAqLywKQEAgLTczNDMsNiArNzMzOCw3IEBACiAJ
CQkJMUE2NDIwRTUxMkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTEyMTc0NjExNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0QkVENTEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVk
TWVtb3J5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUYyNUEyQjE5Nzg5NjI5MDA1NzI0OUEgLyog
V0tPcmlnaW5EYXRhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI3MkIyOEIxNDA2OTg1
RDAwOTZBNUQwIC8qIFN0YXRpc3RpY3NEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCREVE
MzE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTFBRDMzMDZGMTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9yYWdlQXJlYUltcGwuaCBpbiBIZWFk
ZXJzICovLApAQCAtNzc3Nyw3ICs3NzczLDYgQEAKIAkJCQkzNzNDRUFEODE4NTk1NTNGMDA4QzM2
M0QgLyogV0tQYWdlUG9saWN5Q2xpZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
NjZCRjhGMThBMDUyRUQwMDIwNzFCNCAvKiBXS1dlYlZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM0MDc2MUExMjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTc1OUNDRDU5MTgwOEYxNjkwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5Q2hhbmdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwOTk4MDEyNTZB
OTgyMDAwODM3NTYgLyogV0tTdHJpbmdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc1
MDk1QTE4OTcyNDk3MDA0MDhGQUMgLyogSURCSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEzQzg4ODAxOEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC05MzQ5LDcgKzkzNDQsNiBAQAogCQkJCTFBRTUyRjkxMTkyMDFEQTcw
MEExRkEzNyAvKiBBUElDb250ZXh0Q29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkzMzA5MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNzU5Q0NENTgxODA4RjE2NDAwNzhFOEE4IC8qIFdlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1
QjFDNTAxODk4NjA2RjAwNEZDRjlCIC8qIFdLTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAog
CQkJCUJDNDA3NUY3MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0RhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjYyQTc2NjExMkIxQUJFRDAwMDVGMUI2IC8qIFdLRGF0YWJhc2VNYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Pcmln
aW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAKaW5kZXggMDIwNjI0My4uMGQz
ZDM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dl
Yk9yaWdpbkRhdGFNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09y
aWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwCkBAIC03NiwyOCArNzYsMTkgQEAgdm9p
ZCBXZWJPcmlnaW5EYXRhTWFuYWdlcjo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKICAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6RGlkR2V0T3JpZ2lucyhpZGVudGlmaWVycywgY2FsbGJh
Y2tJRCksIDApOwogfQogCi12b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVz
Rm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9y
aWdpbkRhdGEpCit2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3Jp
Z2luKFdLT3JpZ2luRGF0YVR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCB1aW50NjRf
dCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW5EYXRhLnByb3RvY29sLCBvcmlnaW5EYXRhLmhvc3Qs
IG9yaWdpbkRhdGEucG9ydCk7Ci0gICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJldHVybjsKLQog
ICAgIC8vIEZJWE1FOiBkZWxldGUgZW50cmllcyBmb3Igb3JpZ2luCi19CiAKLXZvaWQgV2ViT3Jp
Z2luRGF0YU1hbmFnZXI6OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMpCi17Ci0g
ICAgLy8gRklYTUU6IGRlbGV0ZSBlbnRyaWVzCi19CisgICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXNGb3JP
cmlnaW4oY2FsbGJhY2tJRCksIDApOwogCi12b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpzdGFy
dE9ic2VydmluZ0NoYW5nZXMoV0tPcmlnaW5EYXRhVHlwZXMpCi17Ci0gICAgLy8gRklYTUU6IHN0
YXJ0IG9ic2VydmluZyBjaGFuZ2VzCiB9CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXI6OnN0
b3BPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2luRGF0YVR5cGVzKQordm9pZCBXZWJPcmlnaW5EYXRh
TWFuYWdlcjo6ZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKIHsKLSAgICAvLyBGSVhNRTogc3RvcCBvYnNlcnZpbmcgY2hhbmdlcworICAgIC8v
IEZJWE1FOiBkZWxldGUgZW50cmllcworCisgICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUFsbEVudHJpZXMoY2FsbGJh
Y2tJRCksIDApOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2Vy
LmgKaW5kZXggY2IxZGJkYi4uNzUwNzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmgKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI2LDkgKzI2LDkgQEAKICNpZm5kZWYgV2ViT3JpZ2luRGF0YU1hbmFnZXJfaAogI2Rl
ZmluZSBXZWJPcmlnaW5EYXRhTWFuYWdlcl9oCiAKKyNpbmNsdWRlICJDaGlsZFByb2Nlc3NTdXBw
bGVtZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV0tPcmln
aW5EYXRhTWFuYWdlci5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKQEAgLTM3LDIwICszNywxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIENoaWxkUHJv
Y2VzczsKIHN0cnVjdCBTZWN1cml0eU9yaWdpbkRhdGE7CiAKLWNsYXNzIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyIDogcHVibGljIFdlYlByb2Nlc3NTdXBwbGVtZW50LCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgeworY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFnZXIgOiBwdWJsaWMgQ2hpbGRQcm9j
ZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShXZWJPcmlnaW5EYXRhTWFuYWdlcik7CiBwdWJsaWM6CiAgICAgV2ViT3Jp
Z2luRGF0YU1hbmFnZXIoQ2hpbGRQcm9jZXNzKik7CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciog
c3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRh
dGFUeXBlcyk7Ci0KIHByaXZhdGU6Ci0gICAgdm9pZCBnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5
cGVzLCB1aW50NjRfdCk7Ci0gICAgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2lu
RGF0YVR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmKTsKLSAgICB2b2lkIHN0YXJ0T2Jz
ZXJ2aW5nQ2hhbmdlcyhXS09yaWdpbkRhdGFUeXBlcyk7Ci0gICAgdm9pZCBzdG9wT2JzZXJ2aW5n
Q2hhbmdlcyhXS09yaWdpbkRhdGFUeXBlcyk7CisgICAgdm9pZCBnZXRPcmlnaW5zKFdLT3JpZ2lu
RGF0YVR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRh
dGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24q
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1h
bmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNjk0ZTYzOC4uMDg5NjIzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJP
cmlnaW5EYXRhTWFuYWdlci5tZXNzYWdlcy5pbgpAQCAtMjIsOCArMjIsNiBAQAogCiBtZXNzYWdl
cyAtPiBXZWJPcmlnaW5EYXRhTWFuYWdlciB7CiAgICAgdm9pZCBHZXRPcmlnaW5zKHVpbnQzMl90
IHR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQotICAgIHZvaWQgRGVsZXRlRW50cmllc0Zvck9y
aWdpbih1aW50MzJfdCB0eXBlcywgV2ViS2l0OjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luSWRl
bnRpZmllcikKLSAgICB2b2lkIERlbGV0ZUFsbEVudHJpZXModWludDMyX3QgdHlwZXMpCi0gICAg
dm9pZCBTdGFydE9ic2VydmluZ0NoYW5nZXModWludDMyX3QgdHlwZXMpCi0gICAgdm9pZCBTdG9w
T2JzZXJ2aW5nQ2hhbmdlcyh1aW50MzJfdCB0eXBlcykKKyAgICB2b2lkIERlbGV0ZUVudHJpZXNG
b3JPcmlnaW4odWludDMyX3QgdHlwZXMsIFdlYktpdDo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdp
bklkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgdm9pZCBEZWxldGVBbGxFbnRy
aWVzKHVpbnQzMl90IHR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235143</attachid>
            <date>2014-07-18 13:27:34 -0700</date>
            <delta_ts>2014-07-18 13:46:11 -0700</delta_ts>
            <desc>Patch v2 - Also added a new API we&apos;ll need very soon anyways</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>46128</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMmRlZjkyLi42NDc5MzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUg
QEAKKzIwMTQtMDctMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIENsZWFuIHVwIFdLT3JpZ2luRGF0YU1hbmFnZXIgYW5kIGdldCBpdCBtZXNzYWdpbmcgdG8g
dGhlIERhdGFiYXNlUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpEYXRhYmFzZVByb2Nlc3MpOiBJbnN0YW50aWF0
ZSB0aGUgV2ViT3JpZ2luRGF0YU1hbmFnZXIsIGluc3RhbGxpbmcgaXRzIG1lc3NhZ2UgaGFuZGxl
ci4KKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
IFRyeSB0aGUgbWVzc2FnZSByZWNlaXZlciBtYXAsIHdoaWNoIHdpbGwgdHJ5IHRoZSBXZWJPcmln
aW5EYXRhTWFuYWdlci4KKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
Lmg6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKTogVXBk
YXRlZCB0byBhbHNvIHRha2UgYSBjYWxsYmFjay4KKyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFn
ZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOiBBZGRlZC4KKyAg
ICAgICAgKFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKTogVXBkYXRlZCB0byBh
bHNvIHRha2UgYSBjYWxsYmFjay4KKyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFnZXJTdGFydE9i
c2VydmluZ0NoYW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV0tPcmlnaW5EYXRhTWFuYWdlclN0
b3BPYnNlcnZpbmdDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFn
ZXJTZXRDaGFuZ2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9X
S09yaWdpbkRhdGFNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvRGF0YWJhc2VzL0Rh
dGFiYXNlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKTogU2VuZCBtZXNzYWdlcyB0byB0aGUgV2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eSBzdXBwbGVtZW50IGlmIGFwcHJvcHJpYXRlLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZXh0OjpXZWJDb250ZXh0KTogSW5zdGFudGlhdGUgdGhlIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHkgc3VwcGxlbWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZXh0OjpzZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lm
TmVjZXNzYXJ5KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6Y29u
dGV4dERlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHk6OnByb2Nlc3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHk6OmdldE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKTogU2V0dXAgYSBjYWxsYmFjayB3aXRo
IHRoZSBtZXNzYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGlkRGVsZXRlRW50cmll
c0Zvck9yaWdpbik6IENhbGwgdGhlIGNhbGxiYWNrLgorICAgICAgICAoV2ViS2l0OjpXZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5OjpkZWxldGVBbGxFbnRyaWVzKTogU2V0dXAgYSBjYWxsYmFjayB3
aXRoIHRoZSBtZXNzYWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5OjpkaWREZWxldGVBbGxFbnRyaWVzKTogQ2FsbCB0aGUgY2FsbGJhY2suCisgICAgICAgIChX
ZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ2hhbmdlcyk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnN0
b3BPYnNlcnZpbmdDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eTo6c2V0Q2hhbmdlQ2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
Q2hhbmdlQ2xpZW50Lmg6IFJlbW92ZWQuCisKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3Jp
Z2luRGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdl
cjo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6IFNlbmQgdGhlIGNhbGxiYWNrIHJlcGx5LgorICAg
ICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6ZGVsZXRlRW50cmllc0Zvck9yaWdp
bk1vZGlmaWVkQmV0d2VlbkRhdGVzKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdp
bkRhdGFNYW5hZ2VyOjpkZWxldGVBbGxFbnRyaWVzKTogU2VuZCB0aGUgY2FsbGJhY2sgcmVwbHku
CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpzdGFydE9ic2VydmluZ0No
YW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6
c3RvcE9ic2VydmluZ0NoYW5nZXMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvT3Jp
Z2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvT3Jp
Z2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5tZXNzYWdlcy5pbjoKKwogMjAxNC0wNy0xNyAg
RW5yaWNhIENhc3VjY2kgIDxlbnJpY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFtSRUdSRVNTSU9O
IFdLMl1UaGUgbWVudSBiYXIgZG9lcyBub3Qgc2hvdyB1cCB3aGVuIHRhcHBpbmcgb24gdGhlIGNh
cmV0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNl
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmNwcAppbmRleCA4MzU0NDZmLi5lNzI1NzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcApAQCAtMzAsOSArMzAsMTIgQEAK
IAogI2luY2x1ZGUgIkFzeW5jVGFzay5oIgogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmgiCiAj
aW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFi
YXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlVuaXF1ZUlEQkRhdGFiYXNl
LmgiCisjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXIuaCIKKyNpbmNsdWRlICJXZWJPcmln
aW5EYXRhTWFuYWdlck1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIApAQCAtNDksNiArNTIsNyBAQCBEYXRhYmFz
ZVByb2Nlc3MmIERhdGFiYXNlUHJvY2Vzczo6c2hhcmVkKCkKIERhdGFiYXNlUHJvY2Vzczo6RGF0
YWJhc2VQcm9jZXNzKCkKICAgICA6IG1fcXVldWUoYWRvcHRSZWYoKldvcmtRdWV1ZTo6Y3JlYXRl
KCJjb20uYXBwbGUuV2ViS2l0LkRhdGFiYXNlUHJvY2VzcyIpLmxlYWtSZWYoKSkpCiB7CisgICAg
bV93ZWJPcmlnaW5EYXRhTWFuYWdlciA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViT3JpZ2luRGF0YU1h
bmFnZXI+KHRoaXMpOwogfQogCiBEYXRhYmFzZVByb2Nlc3M6On5EYXRhYmFzZVByb2Nlc3MoKQpA
QCAtNzAsNiArNzQsMTcgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmRpZENsb3NlKElQQzo6Q29u
bmVjdGlvbiopCiAgICAgUnVuTG9vcDo6Y3VycmVudCgpLnN0b3AoKTsKIH0KIAordm9pZCBEYXRh
YmFzZVByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgSVBDOjpNZXNzYWdlRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBpZiAobWVzc2FnZVJlY2Vp
dmVyTWFwKCkuZGlzcGF0Y2hNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2Fn
ZXM6OkRhdGFiYXNlUHJvY2Vzczo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAgIGRp
ZFJlY2VpdmVEYXRhYmFzZVByb2Nlc3NNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorfQorCiB2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlkUmVjZWl2
ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJ
UEM6OlN0cmluZ1JlZmVyZW5jZSkKIHsKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3RvcCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCmlu
ZGV4IGEzNjRlMjAuLmIxNGMxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBBc3luY1Rhc2s7CiBjbGFzcyBEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b247CiBjbGFzcyBVbmlxdWVJREJEYXRhYmFzZTsKK2NsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
OwogCiBzdHJ1Y3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogCkBAIC00Nyw2
ICs0OCw3IEBAIGNsYXNzIERhdGFiYXNlUHJvY2VzcyA6IHB1YmxpYyBDaGlsZFByb2Nlc3MgIHsK
ICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8RGF0YWJhc2VQcm9jZXNzPjsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgRGF0YWJhc2VQcm9jZXNzJiBzaGFyZWQoKTsKKyAgICB+RGF0YWJhc2VQ
cm9jZXNzKCk7CiAKICAgICBjb25zdCBTdHJpbmcmIGluZGV4ZWREYXRhYmFzZURpcmVjdG9yeSgp
IGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZERhdGFiYXNlRGlyZWN0b3J5OyB9CiAKQEAgLTU4LDgg
KzYwLDYgQEAgcHVibGljOgogCiAgICAgV29ya1F1ZXVlJiBxdWV1ZSgpIHsgcmV0dXJuIG1fcXVl
dWUuZ2V0KCk7IH0KIAotICAgIH5EYXRhYmFzZVByb2Nlc3MoKTsKLQogcHJpdmF0ZToKICAgICBE
YXRhYmFzZVByb2Nlc3MoKTsKIApAQCAtNzQsNiArNzQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsb3NlKElQQzo6Q29ubmVj
dGlvbiopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZU5hbWUpIG92ZXJyaWRlOworICAgIHZv
aWQgZGlkUmVjZWl2ZURhdGFiYXNlUHJvY2Vzc01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBD
OjpNZXNzYWdlRGVjb2RlciYpOwogCiAgICAgLy8gTWVzc2FnZSBIYW5kbGVycwogICAgIHZvaWQg
aW5pdGlhbGl6ZURhdGFiYXNlUHJvY2Vzcyhjb25zdCBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMmKTsKQEAgLTk1LDYgKzk2LDggQEAgcHJpdmF0ZToKIAogICAgIERlcXVlPHN0ZDo6
dW5pcXVlX3B0cjxBc3luY1Rhc2s+PiBtX2RhdGFiYXNlVGFza3M7CiAgICAgTXV0ZXggbV9kYXRh
YmFzZVRhc2tNdXRleDsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJPcmlnaW5EYXRhTWFuYWdl
cj4gbV93ZWJPcmlnaW5EYXRhTWFuYWdlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vz
cy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVBy
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYzBkYTA3OS4uNDNiZTdkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLm1lc3Nh
Z2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykK
IAotbWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzIHsKK21lc3NhZ2VzIC0+IERhdGFiYXNlUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgIyBJbml0aWFsaXplcyB0aGUgRGF0YWJhc2VQcm9j
ZXNzIHdpdGggdGhlIGNvcnJlY3QgcGFyYW1ldGVycwogICAgIEluaXRpYWxpemVEYXRhYmFzZVBy
b2Nlc3MoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgcHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuY3BwCmluZGV4IGNlOWQzYjIuLmFkMGI2ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRh
TWFuYWdlci5jcHAKQEAgLTQxLDI3ICs0MSwyMyBAQCB2b2lkIFdLT3JpZ2luRGF0YU1hbmFnZXJH
ZXRPcmlnaW5zKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXJSZWYsCiAg
ICAgdG9JbXBsKG9yaWdpbkRhdGFNYW5hZ2VyUmVmKS0+Z2V0T3JpZ2lucyh0eXBlcywgdG9HZW5l
cmljQ2FsbGJhY2tGdW5jdGlvbihjb250ZXh0LCBjYWxsYmFjaykpOwogfQogCi12b2lkIFdLT3Jp
Z2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YU1hbmFnZXJS
ZWYgb3JpZ2luRGF0YU1hbmFnZXJSZWYsIFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXS1NlY3Vy
aXR5T3JpZ2luUmVmIG9yaWdpblJlZikKK3ZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUVu
dHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWFuYWdlclJl
ZiwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luUmVm
LCB2b2lkKiBjb250ZXh0LCBXS09yaWdpbkRhdGFNYW5hZ2VyRGVsZXRlRW50cmllc0NhbGxiYWNr
RnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBsKG9yaWdpbkRhdGFNYW5hZ2VyUmVmKS0+
ZGVsZXRlRW50cmllc0Zvck9yaWdpbih0eXBlcywgdG9JbXBsKG9yaWdpblJlZikpOworICAgIHRv
SW1wbChvcmlnaW5EYXRhTWFuYWdlclJlZiktPmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4odHlwZXMs
IHRvSW1wbChvcmlnaW5SZWYpLCBbY29udGV4dCwgY2FsbGJhY2tdKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2soZXJyb3IgIT0gQ2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSA/IHRvQVBJKEFQSTo6RXJyb3I6OmNyZWF0ZSgpLmdldCgpKSA6IDAsIGNvbnRleHQp
OworICAgIH0pOwogfQogCi12b2lkIFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVBbGxFbnRyaWVz
KFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXJSZWYsIFdLT3JpZ2luRGF0
YVR5cGVzIHR5cGVzKQordm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9y
aWdpbk1vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0
YU1hbmFnZXJSZWYsIFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXS1NlY3VyaXR5T3JpZ2luUmVm
IG9yaWdpblJlZiwgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHZvaWQqIGNvbnRl
eHQsIFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzQ2FsbGJhY2tGdW5jdGlvbiBjYWxs
YmFjaykKIHsKLSAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5kZWxldGVBbGxFbnRy
aWVzKHR5cGVzKTsKKyAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5kZWxldGVFbnRy
aWVzRm9yT3JpZ2luTW9kaWZpZWRCZXR3ZWVuRGF0ZXModHlwZXMsIHRvSW1wbChvcmlnaW5SZWYp
LCBzdGFydERhdGUsIGVuZERhdGUsIFtjb250ZXh0LCBjYWxsYmFja10oQ2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgeworICAgICAgICBjYWxsYmFjayhlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVy
cm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkuZ2V0KCkpIDogMCwgY29udGV4
dCk7CisgICAgfSk7CiB9CiAKLXZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlclN0YXJ0T2JzZXJ2aW5n
Q2hhbmdlcyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyUmVmLCBXS09y
aWdpbkRhdGFUeXBlcyB0eXBlcykKK3ZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUFsbEVu
dHJpZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWFuYWdlclJlZiwgV0tPcmln
aW5EYXRhVHlwZXMgdHlwZXMsIHZvaWQqIGNvbnRleHQsIFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxl
dGVFbnRyaWVzQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwob3JpZ2lu
RGF0YU1hbmFnZXJSZWYpLT5zdGFydE9ic2VydmluZ0NoYW5nZXModHlwZXMpOwotfQotCi12b2lk
IFdLT3JpZ2luRGF0YU1hbmFnZXJTdG9wT2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdpbkRhdGFNYW5h
Z2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyUmVmLCBXS09yaWdpbkRhdGFUeXBlcyB0eXBlcykKLXsK
LSAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5zdG9wT2JzZXJ2aW5nQ2hhbmdlcyh0
eXBlcyk7Ci19Ci0KLXZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlclNldENoYW5nZUNsaWVudChXS09y
aWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyUmVmLCBjb25zdCBXS09yaWdpbkRh
dGFNYW5hZ2VyQ2hhbmdlQ2xpZW50QmFzZSAqY2xpZW50KQotewotICAgIHRvSW1wbChvcmlnaW5E
YXRhTWFuYWdlclJlZiktPnNldENoYW5nZUNsaWVudChjbGllbnQpOworICAgIHRvSW1wbChvcmln
aW5EYXRhTWFuYWdlclJlZiktPmRlbGV0ZUFsbEVudHJpZXModHlwZXMsIFtjb250ZXh0LCBjYWxs
YmFja10oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjYWxsYmFjayhlcnJv
ciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRl
KCkuZ2V0KCkpIDogMCwgY29udGV4dCk7CisgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuaAppbmRleCA4MjdiZDU1
Li42MmEyYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tP
cmlnaW5EYXRhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S09yaWdpbkRhdGFNYW5hZ2VyLmgKQEAgLTM1LDEzICszNSwxNCBAQCBleHRlcm4gIkMiIHsKIGVu
dW0gewogICAgIGtXS0FwcGxpY2F0aW9uQ2FjaGVPcmlnaW5EYXRhID0gMSA8PCAwLAogICAgIGtX
S0Nvb2tpZU9yaWdpbkRhdGEgPSAxIDw8IDEsCi0gICAga1dLRGF0YWJhc2VPcmlnaW5EYXRhID0g
MSA8PCAyLAorICAgIGtXS0luZGV4ZWREYXRhYmFzZURhdGEgPSAxIDw8IDIsCiAgICAga1dLS2V5
VmFsdWVTdG9yYWdlT3JpZ2luRGF0YSA9IDEgPDwgMywKICAgICBrV0tNZWRpYUNhY2hlT3JpZ2lu
RGF0YSA9IDEgPDwgNCwKICAgICBrV0tQbHVnaW5EYXRhT3JpZ2luRGF0YSA9IDEgPDwgNSwKICAg
ICBrV0tSZXNvdXJjZUNhY2hlT3JpZ2luRGF0YSA9IDEgPDwgNiwKKyAgICBrV0tXZWJTUUxEYXRh
YmFzZU9yaWdpbkRhdGEgPSAxIDw8IDcsCiAKLSAgICBrV0tBbGxPcmlnaW5EYXRhID0gKDEgPDwg
NykgLSAxCisgICAga1dLQWxsT3JpZ2luRGF0YSA9IDB4RkZGRkZGRkYKIH07CiB0eXBlZGVmIHVp
bnQzMl90IFdLT3JpZ2luRGF0YVR5cGVzOwogCkBAIC01MCwzNiArNTEsMTEgQEAgV0tfRVhQT1JU
IFdLVHlwZUlEIFdLT3JpZ2luRGF0YU1hbmFnZXJHZXRUeXBlSUQoKTsKIHR5cGVkZWYgdm9pZCAo
KldLT3JpZ2luRGF0YU1hbmFnZXJHZXRPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlSZWYsIFdLRXJy
b3JSZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdLT3JpZ2luRGF0YU1hbmFnZXJHZXRPcmln
aW5zKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXIsIFdLT3JpZ2luRGF0
YVR5cGVzIHR5cGVzLCB2b2lkKiBjb250ZXh0LCBXS09yaWdpbkRhdGFNYW5hZ2VyR2V0T3JpZ2lu
c0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tPcmlnaW5EYXRhTWFuYWdl
ckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRh
TWFuYWdlciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3Jp
Z2luKTsKLVdLX0VYUE9SVCB2b2lkIFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVBbGxFbnRyaWVz
KFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXIsIFdLT3JpZ2luRGF0YVR5
cGVzIHR5cGVzKTsKK3R5cGVkZWYgdm9pZCAoKldLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRy
aWVzQ2FsbGJhY2tGdW5jdGlvbikoV0tFcnJvclJlZiwgdm9pZCopOworV0tfRVhQT1JUIHZvaWQg
V0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhTWFu
YWdlclJlZiBvcmlnaW5EYXRhTWFuYWdlciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIFdLU2Vj
dXJpdHlPcmlnaW5SZWYgb3JpZ2luLCB2b2lkKiBjb250ZXh0LCBXS09yaWdpbkRhdGFNYW5hZ2Vy
RGVsZXRlRW50cmllc0NhbGxiYWNrRnVuY3Rpb24gZnVuY3Rpb24pOworV0tfRVhQT1JUIHZvaWQg
V0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW5Nb2RpZmllZEJldHdlZW5E
YXRlcyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyLCBXS09yaWdpbkRh
dGFUeXBlcyB0eXBlcywgV0tTZWN1cml0eU9yaWdpblJlZiBvcmlnaW4sIGRvdWJsZSBzdGFydERh
dGUsIGRvdWJsZSBlbmREYXRlLCB2b2lkKiBjb250ZXh0LCBXS09yaWdpbkRhdGFNYW5hZ2VyRGVs
ZXRlRW50cmllc0NhbGxiYWNrRnVuY3Rpb24gZnVuY3Rpb24pOworV0tfRVhQT1JUIHZvaWQgV0tP
cmlnaW5EYXRhTWFuYWdlckRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBv
cmlnaW5EYXRhTWFuYWdlciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHZvaWQqIGNvbnRleHQs
IFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzQ2FsbGJhY2tGdW5jdGlvbiBmdW5jdGlv
bik7CiAKLS8vIE9yaWdpbkRhdGFNYW5hZ2VyIENsaWVudAotdHlwZWRlZiB2b2lkICgqV0tPcmln
aW5EYXRhTWFuYWdlckNoYW5nZUNhbGxiYWNrKShXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdp
bkRhdGFNYW5hZ2VyLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKLQotdHlwZWRlZiBzdHJ1Y3Qg
V0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2UgewotICAgIGNvbnN0IHZvaWQgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
ZW50SW5mbzsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247Ci19IFdLT3JpZ2luRGF0YU1hbmFnZXJD
aGFuZ2VDbGllbnRCYXNlOwotCi10eXBlZGVmIHN0cnVjdCBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hh
bmdlQ2xpZW50VjAgewotICAgIFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRCYXNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTsKLQotICAgIC8vIFZlcnNpb24gMC4K
LSAgICBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZENoYW5nZTsKLX0gV0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNs
aWVudFYwOwotCi1lbnVtIHsga1dLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRWZXJzaW9u
ID0gMCB9OwotdHlwZWRlZiBzdHJ1Y3QgV0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudCB7
Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9uOwotICAgIGNvbnN0IHZvaWQgKiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsKLQot
ICAgIC8vIFZlcnNpb24gMC4KLSAgICBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2FsbGJhY2sg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZENoYW5nZTsKLX0gV0tPcmlnaW5E
YXRhTWFuYWdlckNoYW5nZUNsaWVudCBXS19ERVBSRUNBVEVEKCJVc2UgYW4gZXhwbGljaXQgdmVy
c2lvbmVkIHN0cnVjdCBpbnN0ZWFkIik7Ci0KLVdLX0VYUE9SVCB2b2lkIFdLT3JpZ2luRGF0YU1h
bmFnZXJTdGFydE9ic2VydmluZ0NoYW5nZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5E
YXRhTWFuYWdlciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMpOwotV0tfRVhQT1JUIHZvaWQgV0tP
cmlnaW5EYXRhTWFuYWdlclN0b3BPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2luRGF0YU1hbmFnZXJS
ZWYgb3JpZ2luRGF0YU1hbmFnZXIsIFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzKTsKLVdLX0VYUE9S
VCB2b2lkIFdLT3JpZ2luRGF0YU1hbmFnZXJTZXRDaGFuZ2VDbGllbnQoV0tPcmlnaW5EYXRhTWFu
YWdlclJlZiBvcmlnaW5EYXRhTWFuZ2VyLCBjb25zdCBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdl
Q2xpZW50QmFzZSogY2xpZW50KTsKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vz
c1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IGJiOWQ1MzQuLmYyNDQ1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkuY3BwCkBAIC0yNyw3ICsyNywxMCBAQAogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc1Byb3h5
LmgiCiAKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NNZXNzYWdlcy5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHlNZXNzYWdlcy5oIgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NF
U1MpCiAKQEAgLTY2LDYgKzY5LDE5IEBAIHZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmNvbm5l
Y3Rpb25XaWxsQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikKIHsKIH0KIAordm9pZCBEYXRhYmFzZVBy
b2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9u
LCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBkaWRSZWNlaXZlRGF0YWJhc2VQcm9jZXNzUHJv
eHlNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKKyAgICAgICAg
bV93ZWJDb250ZXh0LT5zdXBwbGVtZW50PFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk+KCktPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorfQorCiB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3ND
b25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJh
c2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQocmVwbHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5oCmluZGV4
IGJkNzU1NWQuLjU0ZDk0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
YXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmgKQEAgLTU3LDYgKzU3LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24qLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6
OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFtZSkgb3ZlcnJpZGU7CiAKKyAgICB2b2lkIGRpZFJl
Y2VpdmVEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBDOjpN
ZXNzYWdlRGVjb2RlciYpOworCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlk
Q3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQQzo6QXR0YWNobWVu
dCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0Rh
dGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCAzNDQ1YmY1
Li42YmM2MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2Vz
L0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIy
LDcgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogCi1tZXNzYWdlcyAt
PiBEYXRhYmFzZVByb2Nlc3NQcm94eSB7CittZXNzYWdlcyAtPiBEYXRhYmFzZVByb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ3JlYXRlRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25u
ZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuY3BwCmluZGV4IGM4N2I2NGIuLmEyMzEyNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5jcHAKQEAgLTc4LDYgKzc4LDcgQEAK
ICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NNZXNzYWdlcy5o
IgorI2luY2x1ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCIKICNlbmRpZgogCiAjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKQEAgLTIxNyw2ICsyMTgsOSBAQCBXZWJDb250ZXh0OjpX
ZWJDb250ZXh0KFdlYkNvbnRleHRDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24pCiAjaWYgRU5B
QkxFKEJBVFRFUllfU1RBVFVTKQogICAgIGFkZFN1cHBsZW1lbnQ8V2ViQmF0dGVyeU1hbmFnZXJQ
cm94eT4oKTsKICNlbmRpZgorI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQorICAgIGFkZFN1
cHBsZW1lbnQ8V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eT4oKTsKKyNlbmRpZgogCiAgICAgY29u
dGV4dHMoKS5hcHBlbmQodGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5o
CmluZGV4IGQ2MGVkZWUuLjQ2NTM2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRl
eHQuaApAQCAtMzAyLDYgKzMwMiw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJP
Q0VTUykKICAgICB2b2lkIGVuc3VyZURhdGFiYXNlUHJvY2VzcygpOwogICAgIHZvaWQgZ2V0RGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShUJiYgbWVzc2FnZSk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtNjExLDYgKzYxMiwxNSBAQCB2b2lkIFdlYkNvbnRleHQ6OnNlbmRUb05ldHdvcmtpbmdQcm9j
ZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkKICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAorI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQordGVtcGxhdGU8dHlw
ZW5hbWUgVD4KK3ZvaWQgV2ViQ29udGV4dDo6c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hp
bmdJZk5lY2Vzc2FyeShUJiYgbWVzc2FnZSkKK3sKKyAgICBlbnN1cmVEYXRhYmFzZVByb2Nlc3Mo
KTsKKyAgICBtX2RhdGFiYXNlUHJvY2Vzcy0+c2VuZChzdGQ6OmZvcndhcmQ8VD4obWVzc2FnZSks
IDApOworfQorI2VuZGlmCisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB2b2lkIFdlYkNvbnRleHQ6
OnNlbmRUb0FsbFByb2Nlc3Nlcyhjb25zdCBUJiBtZXNzYWdlKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IDJkMmM1MzIuLjQ2YmJiODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKQEAgLTU0LDE1ICs1NCwxNSBAQCBXZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5Ojp+V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eSgpCiB7CiB9
CiAKLQogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Ojpjb250ZXh0RGVzdHJveWVkKCkK
IHsKICAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcywgQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRlZCk7CisgICAgaW52YWxpZGF0ZUNhbGxiYWNr
TWFwKG1fdm9pZENhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlk
YXRlZCk7CiB9CiAKIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6cHJvY2Vzc0RpZENs
b3NlKFdlYlByb2Nlc3NQcm94eSopCiB7Ci0gICAgaW52YWxpZGF0ZUNhbGxiYWNrTWFwKG1fYXJy
YXlDYWxsYmFja3MsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlByb2Nlc3NFeGl0ZWQpOworICAgIC8v
IEZJWE1FOiBJbnZhbGlkYXRlIG9ubHkgdGhlIGNhbGxiYWNrcyBmb3IgdGhlIFdlYlByb2Nlc3NQ
cm94eSB0aGF0IGNsb3NlZC4KIH0KIAogYm9vbCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Ojpz
aG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3QKQEAgLTgyLDYgKzgyLDEzIEBA
IHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVu
dCgpCiAKIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6Z2V0T3JpZ2lucyhXS09yaWdp
bkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7CisgICAgaWYgKCEodHlwZXMgJiBr
V0tJbmRleGVkRGF0YWJhc2VEYXRhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6
IFJpZ2h0IG5vdyB3ZSBvbmx5IHN1cHBvcnQgSW5kZXhlZERhdGFiYXNlIGRhdGEgc28gd2Uga25v
dyB0aGF0IHdlJ3JlIG9ubHkgc2VuZGluZyB0aGlzIHJlcXVlc3QgdG8gdGhlIERhdGFiYXNlUHJv
Y2Vzcy4KKyAgICAvLyBUaGF0J3Mgd2h5IGhhdmluZyBvbmUgc2luZ2xlIGNhbGxiYWNrIHdvcmtz
LgorICAgIC8vIEluIHRoZSBmdXR1cmUgd2hlbiB3ZSBtZXNzYWdlIE4tcHJvY2Vzc2VzIHdlJ2xs
IGhhdmUgdG8gd2FpdCBmb3IgYWxsIE4gcmVwbGllcyBiZWZvcmUgcmVzcG9uZGluZyB0byB0aGUg
Y2xpZW50LgorCiAgICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gQXJyYXlDYWxs
YmFjazo6Y3JlYXRlKFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiAKICAgICBpZiAoIWNv
bnRleHQoKSkgewpAQCAtOTIsOCArOTksNyBAQCB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHk6OmdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3RpbwogICAg
IHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fYXJy
YXlDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CiAKLSAgICAv
LyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4gTWFr
ZSBtYW5pcHVsYXRpbmcgY2FjaGUgaW5mb3JtYXRpb24gd29yayB3aXRoIHBlci10YWIgV2ViUHJv
Y2Vzcy4KLSAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlm
TmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6R2V0T3JpZ2lucyh0eXBl
cywgY2FsbGJhY2tJRCkpOworICAgIGNvbnRleHQoKS0+c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVs
YXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OkdldE9y
aWdpbnModHlwZXMsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5OjpkaWRHZXRPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiBv
cmlnaW5EYXRhcywgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTEwMiw1MyArMTA4LDkyIEBAIHZv
aWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGlkR2V0T3JpZ2lucyhjb25zdCBWZWN0b3I8
U2VjdXJpdHlPcmlnaW5EYXRhPiYKICAgICBwZXJmb3JtQVBJQ2FsbGJhY2tXaXRoU2VjdXJpdHlP
cmlnaW5EYXRhVmVjdG9yKG9yaWdpbkRhdGFzLCBjYWxsYmFjay5nZXQoKSk7CiB9CiAKLXZvaWQg
V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdp
bkRhdGFUeXBlcyB0eXBlcywgV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKK3ZvaWQgV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFU
eXBlcyB0eXBlcywgV2ViU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBpZiAoIWNv
bnRleHQoKSkKKyAgICBpZiAoISh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURhdGEpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogUmlnaHQgbm93IHdlIG9ubHkgc3VwcG9ydCBJ
bmRleGVkRGF0YWJhc2UgZGF0YSBzbyB3ZSBrbm93IHRoYXQgd2UncmUgb25seSBzZW5kaW5nIHRo
aXMgcmVxdWVzdCB0byB0aGUgRGF0YWJhc2VQcm9jZXNzLgorICAgIC8vIFRoYXQncyB3aHkgaGF2
aW5nIG9uZSBzaW5nbGUgY2FsbGJhY2sgd29ya3MuCisgICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVu
IHdlIG1lc3NhZ2UgTi1wcm9jZXNzZXMgd2UnbGwgaGF2ZSB0byB3YWl0IGZvciBhbGwgTiByZXBs
aWVzIGJlZm9yZSByZXNwb25kaW5nIHRvIHRoZSBjbGllbnQuCisKKyAgICBSZWZQdHI8Vm9pZENh
bGxiYWNrPiBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURjo6bW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CisKKyAgICBpZiAoIWNvbnRleHQoKSkgeworICAgICAgICBjYWxsYmFjay0+
aW52YWxpZGF0ZSgpOwogICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgbV92b2lkQ2FsbGJhY2tzLnNl
dChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwogCiAgICAgU2VjdXJpdHlPcmlnaW5E
YXRhIHNlY3VyaXR5T3JpZ2luRGF0YTsKICAgICBzZWN1cml0eU9yaWdpbkRhdGEucHJvdG9jb2wg
PSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucHJvdG9jb2woKTsKICAgICBzZWN1cml0eU9yaWdp
bkRhdGEuaG9zdCA9IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5ob3N0KCk7CiAgICAgc2VjdXJp
dHlPcmlnaW5EYXRhLnBvcnQgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpOwogCi0g
ICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjovL3Byb2JsZW0vMTIyMzk3NjU+
IE1ha2UgbWFuaXB1bGF0aW5nIGNhY2hlIGluZm9ybWF0aW9uIHdvcmsgd2l0aCBwZXItdGFiIFdl
YlByb2Nlc3MuCi0gICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1Ro
ZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OkRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW4odHlwZXMsIHNlY3VyaXR5T3JpZ2luRGF0YSkpOworICAgIGNvbnRleHQoKS0+
c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2Vi
T3JpZ2luRGF0YU1hbmFnZXI6OkRlbGV0ZUVudHJpZXNGb3JPcmlnaW4odHlwZXMsIHNlY3VyaXR5
T3JpZ2luRGF0YSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMpCit2b2lkIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW5Nb2RpZmllZEJl
dHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgV2ViU2VjdXJpdHlPcmlnaW4qIG9y
aWdpbiwgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rpb248dm9p
ZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgaWYgKCFj
b250ZXh0KCkpCisgICAgaWYgKCEodHlwZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUUgKE11bHRpLVdlYlByb2Nlc3MpOiA8cmRhcjov
L3Byb2JsZW0vMTIyMzk3NjU+IE1ha2UgbWFuaXB1bGF0aW5nIGNhY2hlIGluZm9ybWF0aW9uIHdv
cmsgd2l0aCBwZXItdGFiIFdlYlByb2Nlc3MuCi0gICAgY29udGV4dCgpLT5zZW5kVG9BbGxQcm9j
ZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1h
bmFnZXI6OkRlbGV0ZUFsbEVudHJpZXModHlwZXMpKTsKLX0KKyAgICAvLyBGSVhNRTogUmlnaHQg
bm93IHdlIG9ubHkgc3VwcG9ydCBJbmRleGVkRGF0YWJhc2UgZGF0YSBzbyB3ZSBrbm93IHRoYXQg
d2UncmUgb25seSBzZW5kaW5nIHRoaXMgcmVxdWVzdCB0byB0aGUgRGF0YWJhc2VQcm9jZXNzLgor
ICAgIC8vIFRoYXQncyB3aHkgaGF2aW5nIG9uZSBzaW5nbGUgY2FsbGJhY2sgd29ya3MuCisgICAg
Ly8gSW4gdGhlIGZ1dHVyZSB3aGVuIHdlIG1lc3NhZ2UgTi1wcm9jZXNzZXMgd2UnbGwgaGF2ZSB0
byB3YWl0IGZvciBhbGwgTiByZXBsaWVzIGJlZm9yZSByZXNwb25kaW5nIHRvIHRoZSBjbGllbnQu
CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDaGFuZ2Vz
KFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzKQotewotICAgIGlmICghY29udGV4dCgpKQorICAgIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGOjpt
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKworICAgIGlmICghY29udGV4dCgpKSB7CisgICAgICAg
IGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBj
b250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1l
c3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6U3RhcnRPYnNlcnZpbmdDaGFuZ2VzKHR5cGVz
KSk7CisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Cisg
ICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwor
CisgICAgU2VjdXJpdHlPcmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YTsKKyAgICBzZWN1cml0
eU9yaWdpbkRhdGEucHJvdG9jb2wgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucHJvdG9jb2wo
KTsKKyAgICBzZWN1cml0eU9yaWdpbkRhdGEuaG9zdCA9IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4o
KS5ob3N0KCk7CisgICAgc2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQgPSBvcmlnaW4tPnNlY3VyaXR5
T3JpZ2luKCkucG9ydCgpOworCisgICAgY29udGV4dCgpLT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NS
ZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVs
ZXRlRW50cmllc0Zvck9yaWdpbih0eXBlcywgc2VjdXJpdHlPcmlnaW5EYXRhLCBjYWxsYmFja0lE
KSk7CiB9CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0No
YW5nZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMpCit2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHk6OmRpZERlbGV0ZUVudHJpZXNGb3JPcmlnaW4odWludDY0X3QgY2FsbGJhY2tJRCkKIHsK
LSAgICBpZiAoIWNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY29udGV4dCgpLT5z
ZW5kVG9BbGxQcm9jZXNzZXNSZWxhdW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2Vi
T3JpZ2luRGF0YU1hbmFnZXI6OlN0YXJ0T2JzZXJ2aW5nQ2hhbmdlcyh0eXBlcykpOworICAgIFJl
ZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJh
Y2tJRCk7CisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCi12b2lkIFdlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHk6OnNldENoYW5nZUNsaWVudChjb25zdCBXS09yaWdpbkRhdGFN
YW5hZ2VyQ2hhbmdlQ2xpZW50QmFzZSAqY2xpZW50KQordm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5OjpkZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewot
ICAgIG1fY2xpZW50LmluaXRpYWxpemUoY2xpZW50KTsKKyAgICBpZiAoISh0eXBlcyAmIGtXS0lu
ZGV4ZWREYXRhYmFzZURhdGEpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogUmln
aHQgbm93IHdlIG9ubHkgc3VwcG9ydCBJbmRleGVkRGF0YWJhc2UgZGF0YSBzbyB3ZSBrbm93IHRo
YXQgd2UncmUgb25seSBzZW5kaW5nIHRoaXMgcmVxdWVzdCB0byB0aGUgRGF0YWJhc2VQcm9jZXNz
LgorICAgIC8vIFRoYXQncyB3aHkgaGF2aW5nIG9uZSBzaW5nbGUgY2FsbGJhY2sgd29ya3MuCisg
ICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVuIHdlIG1lc3NhZ2UgTi1wcm9jZXNzZXMgd2UnbGwgaGF2
ZSB0byB3YWl0IGZvciBhbGwgTiByZXBsaWVzIGJlZm9yZSByZXNwb25kaW5nIHRvIHRoZSBjbGll
bnQuCisKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6
Y3JlYXRlKFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisKKyAgICBpZiAoIWNvbnRleHQo
KSkgeworICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CisgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkp
OworCisgICAgY29udGV4dCgpLT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlQWxsRW50cmllcyh0
eXBlcywgY2FsbGJhY2tJRCkpOwogfQogCi12b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6
OmRpZENoYW5nZSgpCit2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUFs
bEVudHJpZXModWludDY0X3QgY2FsbGJhY2tJRCkKIHsKLSAgICBtX2NsaWVudC5kaWRDaGFuZ2Uo
dGhpcyk7CisgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX3ZvaWRDYWxsYmFj
a3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmgKaW5kZXggNmRiNDVkNi4uMmU3ODY4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eS5oCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiV0tPcmlnaW5EYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRT
dXBwbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTU1LDIxICs1NCwyMiBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eSgpOwogCiAgICAgdm9pZCBn
ZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJy
YXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4pOwotICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9y
aWdpbihXS09yaWdpbkRhdGFUeXBlcywgV2ViU2VjdXJpdHlPcmlnaW4qKTsKLSAgICB2b2lkIGRl
bGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMpOwotCi0gICAgdm9pZCBzdGFydE9ic2Vy
dmluZ0NoYW5nZXMoV0tPcmlnaW5EYXRhVHlwZXMpOwotICAgIHZvaWQgc3RvcE9ic2VydmluZ0No
YW5nZXMoV0tPcmlnaW5EYXRhVHlwZXMpOwotICAgIHZvaWQgc2V0Q2hhbmdlQ2xpZW50KGNvbnN0
IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRCYXNlKik7CisgICAgdm9pZCBkZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzLCBXZWJTZWN1cml0eU9yaWdpbiosIHN0
ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KTsKKyAgICB2b2lkIGRlbGV0
ZUVudHJpZXNGb3JPcmlnaW5Nb2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcywg
V2ViU2VjdXJpdHlPcmlnaW4qLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4pOworICAgIHZvaWQgZGVsZXRl
QWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFj
a0Jhc2U6OkVycm9yKT4pOwogCiAgICAgdXNpbmcgQVBJOjpPYmplY3Q6OnJlZjsKICAgICB1c2lu
ZyBBUEk6Ok9iamVjdDo6ZGVyZWY7CiAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1l
c3NhZ2VEZWNvZGVyJikgb3ZlcnJpZGU7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eShXZWJDb250ZXh0Kik7CiAKICAgICB2b2lkIGRpZEdldE9yaWdp
bnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKLSAgICB2b2lkIGRpZENoYW5nZSgpOworICAgIHZvaWQgZGlkRGVsZXRlRW50cmllc0Zvck9y
aWdpbih1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZERlbGV0ZUFsbEVudHJpZXMo
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAKICAgICAvLyBXZWJDb250ZXh0U3VwcGxlbWVudAogICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgb3ZlcnJpZGU7CkBAIC03OCwxMiArNzgs
OCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZWZXZWJDb250ZXh0U3VwcGxlbWVudCgp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkg
b3ZlcnJpZGU7CiAKLSAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVy
Jikgb3ZlcnJpZGU7Ci0KICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QXJyYXlDYWxsYmFj
az4+IG1fYXJyYXlDYWxsYmFja3M7Ci0KLSAgICBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hh
bmdlQ2xpZW50IG1fY2xpZW50OworICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+PiBtX3ZvaWRDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNzZkNzZiNC4uZTUwMjY3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW4KQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIyLDUgKzIyLDYgQEAKIAogbWVzc2FnZXMgLT4gV2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eSB7CiAgICAgRGlkR2V0T3JpZ2lucyhWZWN0b3I8V2ViS2l0OjpTZWN1cml0eU9y
aWdpbkRhdGE+IG9yaWdpbklkZW50aWZpZXJzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICBE
aWRDaGFuZ2UoKQorICAgIERpZERlbGV0ZUVudHJpZXNGb3JPcmlnaW4odWludDY0X3QgY2FsbGJh
Y2tJRCk7CisgICAgRGlkRGVsZXRlQWxsRW50cmllcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5Q2hhbmdlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjFlZTgyMC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCIKLQotI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJPcmlnaW5EYXRh
TWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50OjpkaWRDaGFuZ2UoV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eSogb3JpZ2luRGF0YU1hbmFnZXIpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2Up
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmRpZENoYW5nZSh0b0FQSShvcmlnaW5E
YXRhTWFuYWdlciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJmZWE4MDguLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHlDaGFuZ2VDbGllbnRfaAotI2RlZmluZSBXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5Q2hhbmdlQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgotI2luY2x1ZGUgIldL
T3JpZ2luRGF0YU1hbmFnZXIuaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotCi1uYW1lc3Bh
Y2UgQVBJIHsKLXRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS09yaWdpbkRhdGFNYW5h
Z2VyQ2hhbmdlQ2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS09yaWdpbkRh
dGFNYW5hZ2VyQ2hhbmdlQ2xpZW50VjA+IFZlcnNpb25zOwotfTsKLX0KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLWNsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk7Ci0KLWNsYXNzIFdlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tP
cmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2U+IHsKLXB1YmxpYzoKLSAgICB2b2lkIGRp
ZENoYW5nZShXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Kik7Ci19OwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGll
bnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDVhNzg0NzguLmY1OTgzMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk3NCw2ICs5NzQsNyBAQAogCQk1MUVG
QzFDRjE1MjRFNjI1MDBDOUE5MzggLyogV0tCdW5kbGVET01XaW5kb3dFeHRlbnNpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRkEyRDU0MTUyMTEx
ODYwMEMxQkEwQiAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRjA2MEUwMTY1NDMxN0YwMEYz
MjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERTE2NTQzMTc1MDBGMzI4MUIgLyogV2Vi
UmVzb3VyY2VMb2FkZXJNZXNzYWdlcy5oICovOyB9OwogCQk1MUYwNjBFMTE2NTQzMTg1MDBGMzI4
MUIgLyogV2ViUmVzb3VyY2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMDYwREQxNjU0MzE3NTAwRjMyODFC
IC8qIFdlYlJlc291cmNlTG9hZGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKKwkJNTFGMjVB
MkIxOTc4OTYyOTAwNTcyNDlBIC8qIFdLT3JpZ2luRGF0YU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkJBMTgwNjJCOUMwMDQ2RjZB
OCAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGN0RDNDExODBDQzkzNjAwMjEyQ0EzIC8qIFhQQ1NlcnZp
Y2VNYWluLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM4MjgzOTYxNkI0N0VDNDAwQTI3OEZFIC8qIFhQQ1NlcnZpY2VNYWluLm1tICovOyB9OwogCQk1
MUY3REM0MzE4MENDOTM2MDAyMTJDQTMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3
b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNERTQ2ODE1QTkxNzYz
MDA4RDI2RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCTUxRjdEQzQ0MTgwQ0M5
MzYwMDIxMkNBMyAvKiBXZWJLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOERDMkVGNUIwNDg2QTY5NDAwOThCMjE2IC8qIFdlYktp
dC5mcmFtZXdvcmsgKi87IH07CkBAIC0xMDA3LDggKzEwMDgsNiBAQAogCQk3NTU0MjJDNDE4MDYy
QkY5MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJCRTE4MDYyQkU0MDA0NkY2
QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi87IH07CiAJCTc1NTQyMkNCMTgw
NjUwMDIwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJDNjE4MDY0RkZDMDA0NkY2QTgg
LyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwICovOyB9OwogCQk3NTU0MjJDQzE4MDc3M0NFMDA0
NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkM3MTgwNjRGRkMwMDQ2RjZBOCAvKiBXZWJPcmln
aW5EYXRhTWFuYWdlci5oICovOyB9OwotCQk3NTlDQ0Q1ODE4MDhGMTY0MDA3OEU4QTggLyogV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTlDQ0Q1NDE4MDhGMTYwMDA3OEU4QTggLyog
V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5jcHAgKi87IH07Ci0JCTc1OUND
RDU5MTgwOEYxNjkwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTlD
Q0Q1NTE4MDhGMTYwMDA3OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNs
aWVudC5oICovOyB9OwogCQk3NTlDQ0Q1QTE4MDhGNjE2MDA3OEU4QTggLyogV2ViT3JpZ2luRGF0
YU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzU1NDIyQkYxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHkuaCAqLzsgfTsKIAkJNzVBOEQyQzgxODdDQ0ZBQjAwQzM5QzlFIC8qIF9XS1dlYnNpdGVEYXRh
U3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1
QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBfV0tXZWJzaXRlRGF0YVN0b3JlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzVBOEQyQzkxODdDQ0ZB
RjAwQzM5QzlFIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogX1dL
V2Vic2l0ZURhdGFTdG9yZS5tbSAqLzsgfTsKQEAgLTMwNDMsOCArMzA0Miw2IEBACiAJCTc1NTQy
MkM2MTgwNjRGRkMwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJPcmlnaW5EYXRhTWFuYWdlci5jcHA7IHBh
dGggPSBPcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzU1NDIyQzcxODA2NEZGQzAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk9yaWdpbkRhdGFN
YW5hZ2VyLmg7IHBhdGggPSBPcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NTQyMkM4MTgwNjRGRkMwMDQ2RjZBOCAvKiBXZWJP
cmlnaW5EYXRhTWFuYWdlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBXZWJP
cmlnaW5EYXRhTWFuYWdlci5tZXNzYWdlcy5pbjsgcGF0aCA9IE9yaWdpbkRhdGEvV2ViT3JpZ2lu
RGF0YU1hbmFnZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc1
OUNDRDU0MTgwOEYxNjAwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdl
Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQk3NTlDQ0Q1NTE4MDhGMTYwMDA3OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eUNoYW5nZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc1QThEMkM0MTg3Q0NGOUYwMEMzOUM5RSAvKiBfV0tXZWJzaXRlRGF0YVN0b3Jl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVEYXRhU3RvcmUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVBOEQyQzUxODdDQ0Y5RjAwQzM5QzlF
IC8qIF9XS1dlYnNpdGVEYXRhU3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBfV0tXZWJzaXRlRGF0YVN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3NUE4RDJEMDE4N0QxN0JGMDBDMzlDOUUgLyogV0tTZXNzaW9uUmVmLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLU2Vzc2lvblJlZi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01ODYyLDggKzU4NTksNiBAQAogCQkJCTc1NTQyMkJG
MTgwNjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmggKi8sCiAJCQkJ
NzU1NDIyQkUxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3Bw
ICovLAogCQkJCTc1NTQyMkMwMTgwNjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJCTc1OUNDRDU0MTgwOEYxNjAwMDc4RThBOCAvKiBX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcCAqLywKLQkJCQk3NTlDQ0Q1
NTE4MDhGMTYwMDA3OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVu
dC5oICovLAogCQkJCTUxNTM1NjlBMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1l
bnVDbGllbnQuY3BwICovLAogCQkJCTUxNTM1NjlCMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdl
Q29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQlCQzdCNjIwNTEyOUEwQTY3MDBEMTc0QTQgLyog
V2ViUGFnZUdyb3VwLmNwcCAqLywKQEAgLTczNDMsNiArNzMzOCw3IEBACiAJCQkJMUE2NDIwRTUx
MkRDRTJGRjAwQ0FBRTJDIC8qIFNoYXJlYWJsZUJpdG1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTEyMTc0NjExNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQTI0QkVENTEyMDg5NEQxMDBGQkIwNTkgLyogU2hhcmVkTWVtb3J5LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MUYyNUEyQjE5Nzg5NjI5MDA1NzI0OUEgLyogV0tPcmlnaW5EYXRh
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTI3MkIyOEIxNDA2OTg1RDAwOTZBNUQwIC8q
IFN0YXRpc3RpY3NEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCREVEMzE2Qzk4RUREMDBF
NEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDMzMDZG
MTZCMUQ5OTEwMDRGNjBFNyAvKiBTdG9yYWdlQXJlYUltcGwuaCBpbiBIZWFkZXJzICovLApAQCAt
Nzc3Nyw3ICs3NzczLDYgQEAKIAkJCQkzNzNDRUFEODE4NTk1NTNGMDA4QzM2M0QgLyogV0tQYWdl
UG9saWN5Q2xpZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNjZCRjhGMThBMDUy
RUQwMDIwNzFCNCAvKiBXS1dlYlZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0
MDc2MUExMjRGRjAzNzAwNjhGMjBBIC8qIFdLU3RyaW5nQ0YuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTc1OUNDRDU5MTgwOEYxNjkwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hh
bmdlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzkwOTk4MDEyNTZBOTgyMDAwODM3NTYg
LyogV0tTdHJpbmdQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc1MDk1QTE4OTcyNDk3
MDA0MDhGQUMgLyogSURCSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzQzg4ODAx
OEE1QUJBRTAwQzRDOTYyIC8qIFdLUHJlZmVyZW5jZXNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CkBAIC05MzQ5LDcgKzkzNDQsNiBAQAogCQkJCTFBRTUyRjkxMTkyMDFEQTcwMEExRkEzNyAvKiBB
UElDb250ZXh0Q29uZmlndXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMzA5MzQ1QTEz
MTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMkY1OEY5MTJBODhBNTQwMDYyOTUzMCAvKiBXS0NyZWRlbnRpYWwuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJNzU5Q0NENTgxODA4RjE2NDAwNzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHlDaGFuZ2VDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1QjFDNTAxODk4NjA2
RjAwNEZDRjlCIC8qIFdLTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDNDA3NUY3
MTI0RkYwMjcwMDY4RjIwQSAvKiBXS0RhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjYyQTc2
NjExMkIxQUJFRDAwMDVGMUI2IC8qIFdLRGF0YWJhc2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9y
aWdpbkRhdGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0
YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5jcHAKaW5kZXggMDIwNjI0My4uZGI3M2JiNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2Vi
T3JpZ2luRGF0YU1hbmFnZXIuY3BwCkBAIC03NiwyOCArNzYsMjUgQEAgdm9pZCBXZWJPcmlnaW5E
YXRhTWFuYWdlcjo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywgdWludDY0X3QgY2FsbGJh
Y2tJRCkKICAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eTo6RGlkR2V0T3JpZ2lucyhpZGVudGlmaWVycywgY2FsbGJhY2tJRCksIDApOwog
fQogCi12b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdL
T3JpZ2luRGF0YVR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbkRhdGEpCit2
b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2lu
RGF0YVR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCB1aW50NjRfdCBjYWxsYmFja0lE
KQogewotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShvcmlnaW5EYXRhLnByb3RvY29sLCBvcmlnaW5EYXRhLmhvc3QsIG9yaWdpbkRhdGEu
cG9ydCk7Ci0gICAgaWYgKCFvcmlnaW4pCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIEZJWE1F
OiBkZWxldGUgZW50cmllcyBmb3Igb3JpZ2luCi19CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1hbmFn
ZXI6OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMpCi17Ci0gICAgLy8gRklYTUU6
IGRlbGV0ZSBlbnRyaWVzCisgICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXNGb3JPcmlnaW4oY2FsbGJhY2tJ
RCksIDApOwogfQogCi12b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpzdGFydE9ic2VydmluZ0No
YW5nZXMoV0tPcmlnaW5EYXRhVHlwZXMpCit2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxl
dGVFbnRyaWVzRm9yT3JpZ2luTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIGRvdWJsZSwgZG91YmxlLCB1aW50NjRfdCBjYWxs
YmFja0lEKQogewotICAgIC8vIEZJWE1FOiBzdGFydCBvYnNlcnZpbmcgY2hhbmdlcworICAgIC8v
IEZJWE1FOiBkZWxldGUgZW50cmllcyBmb3Igb3JpZ2luIG1vZGlmaWVkIGJldHdlZW4gdGhlIHN0
YXJ0IGFuZCBlbmQgZGF0ZQorCisgICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
Yk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXNGb3JPcmlnaW4oY2FsbGJh
Y2tJRCksIDApOwogfQogCi12b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5n
Q2hhbmdlcyhXS09yaWdpbkRhdGFUeXBlcykKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXI6OmRl
bGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7
Ci0gICAgLy8gRklYTUU6IHN0b3Agb2JzZXJ2aW5nIGNoYW5nZXMKKyAgICAvLyBGSVhNRTogZGVs
ZXRlIGVudHJpZXMKKworICAgIG1fY2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5OjpEaWREZWxldGVBbGxFbnRyaWVzKGNhbGxiYWNrSUQpLCAwKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5oCmluZGV4IGNi
MWRiZGIuLjFjYTEwZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3Jp
Z2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw5
ICsyNiw5IEBACiAjaWZuZGVmIFdlYk9yaWdpbkRhdGFNYW5hZ2VyX2gKICNkZWZpbmUgV2ViT3Jp
Z2luRGF0YU1hbmFnZXJfaAogCisjaW5jbHVkZSAiQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldLT3JpZ2luRGF0YU1hbmFn
ZXIuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNywy
MCArMzcsMTggQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBDaGlsZFByb2Nlc3M7CiBzdHJ1
Y3QgU2VjdXJpdHlPcmlnaW5EYXRhOwogCi1jbGFzcyBXZWJPcmlnaW5EYXRhTWFuYWdlciA6IHB1
YmxpYyBXZWJQcm9jZXNzU3VwcGxlbWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
K2NsYXNzIFdlYk9yaWdpbkRhdGFNYW5hZ2VyIDogcHVibGljIENoaWxkUHJvY2Vzc1N1cHBsZW1l
bnQsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoV2ViT3JpZ2luRGF0YU1hbmFnZXIpOwogcHVibGljOgogICAgIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyKENoaWxkUHJvY2VzcyopOwogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnRO
YW1lKCk7CiAKLSAgICB2b2lkIGRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMpOwot
CiBwcml2YXRlOgotICAgIHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywgdWludDY0
X3QpOwotICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFUeXBlcywg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJik7Ci0gICAgdm9pZCBzdGFydE9ic2VydmluZ0NoYW5n
ZXMoV0tPcmlnaW5EYXRhVHlwZXMpOwotICAgIHZvaWQgc3RvcE9ic2VydmluZ0NoYW5nZXMoV0tP
cmlnaW5EYXRhVHlwZXMpOworICAgIHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywg
dWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdL
T3JpZ2luRGF0YVR5cGVzLCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW5Nb2RpZmllZEJldHdlZW5E
YXRlcyhXS09yaWdpbkRhdGFUeXBlcywgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiwgZG91Ymxl
IHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEv
V2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNjk0
ZTYzOC4uOTRhZWNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Pcmln
aW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5tZXNzYWdlcy5p
bgpAQCAtMjIsOCArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJPcmlnaW5EYXRhTWFuYWdlciB7
CiAgICAgdm9pZCBHZXRPcmlnaW5zKHVpbnQzMl90IHR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lE
KQotICAgIHZvaWQgRGVsZXRlRW50cmllc0Zvck9yaWdpbih1aW50MzJfdCB0eXBlcywgV2ViS2l0
OjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luSWRlbnRpZmllcikKLSAgICB2b2lkIERlbGV0ZUFs
bEVudHJpZXModWludDMyX3QgdHlwZXMpCi0gICAgdm9pZCBTdGFydE9ic2VydmluZ0NoYW5nZXMo
dWludDMyX3QgdHlwZXMpCi0gICAgdm9pZCBTdG9wT2JzZXJ2aW5nQ2hhbmdlcyh1aW50MzJfdCB0
eXBlcykKKyAgICB2b2lkIERlbGV0ZUVudHJpZXNGb3JPcmlnaW4odWludDMyX3QgdHlwZXMsIFdl
YktpdDo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgdm9pZCBEZWxldGVFbnRyaWVzRm9yT3JpZ2luTW9kaWZpZWRCZXR3ZWVuRGF0
ZXModWludDMyX3QgdHlwZXMsIFdlYktpdDo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbklkZW50
aWZpZXIsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIHZvaWQgRGVsZXRlQWxsRW50cmllcyh1aW50MzJfdCB0eXBlcywgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235145</attachid>
            <date>2014-07-18 13:46:11 -0700</date>
            <delta_ts>2014-07-25 14:26:15 -0700</delta_ts>
            <desc>Patch v3 - Okay for real this time</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>45504</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyMmRlZjkyLi4xOWU2NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUg
QEAKKzIwMTQtMDctMTggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIENsZWFuIHVwIFdLT3JpZ2luRGF0YU1hbmFnZXIgYW5kIGdldCBpdCBtZXNzYWdpbmcgdG8g
dGhlIERhdGFiYXNlUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM1MDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpEYXRhYmFzZVByb2Nlc3MpOiBJbnN0YW50aWF0
ZSB0aGUgV2ViT3JpZ2luRGF0YU1hbmFnZXIsIGluc3RhbGxpbmcgaXRzIG1lc3NhZ2UgaGFuZGxl
ci4KKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZSk6
IFRyeSB0aGUgbWVzc2FnZSByZWNlaXZlciBtYXAsIHdoaWNoIHdpbGwgdHJ5IHRoZSBXZWJPcmln
aW5EYXRhTWFuYWdlci4KKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNz
Lmg6CisgICAgICAgICogRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5p
bjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzRm9yT3JpZ2luKTogVXBk
YXRlZCB0byBhbHNvIHRha2UgYSBjYWxsYmFjay4KKyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFn
ZXJEZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOiBBZGRlZC4KKyAgICAgICAgKFdL
T3JpZ2luRGF0YU1hbmFnZXJEZWxldGVBbGxFbnRyaWVzKTogVXBkYXRlZCB0byBhbHNvIHRha2Ug
YSBjYWxsYmFjay4KKyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFnZXJTdGFydE9ic2VydmluZ0No
YW5nZXMpOiBEZWxldGVkLgorICAgICAgICAoV0tPcmlnaW5EYXRhTWFuYWdlclN0b3BPYnNlcnZp
bmdDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdLT3JpZ2luRGF0YU1hbmFnZXJTZXRDaGFu
Z2VDbGllbnQpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS09yaWdpbkRh
dGFNYW5hZ2VyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJv
Y2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVNZXNzYWdlKTogU2VuZCBtZXNzYWdlcyB0byB0aGUgV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eSBzdXBwbGVtZW50IGlmIGFwcHJvcHJpYXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9E
YXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvRGF0
YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpXZWJD
b250ZXh0KTogSW5zdGFudGlhdGUgdGhlIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkgc3VwcGxl
bWVudC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4dC5oOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZXh0OjpzZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5
KToKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6Y29udGV4dERlc3Ry
b3llZCk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnByb2Nl
c3NEaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6
OmdldE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKTogU2V0dXAgYSBjYWxsYmFjayB3aXRoIHRoZSBtZXNz
YWdlLgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkZWxldGVF
bnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOiBBZGRlZAorICAgICAgICAoV2ViS2l0OjpXZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWREZWxldGVFbnRyaWVzKTogQ2FsbCB0aGUgY2FsbGJh
Y2suCisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUFs
bEVudHJpZXMpOiBTZXR1cCBhIGNhbGxiYWNrIHdpdGggdGhlIG1lc3NhZ2UuCisgICAgICAgIChX
ZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRpZERlbGV0ZUFsbEVudHJpZXMpOiBD
YWxsIHRoZSBjYWxsYmFjay4KKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eTo6c3RhcnRPYnNlcnZpbmdDaGFuZ2VzKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6c3RvcE9ic2VydmluZ0NoYW5nZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpzZXRDaGFuZ2VD
bGllbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5OjpkaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViT3JpZ2luRGF0
YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaDogUmVtb3ZlZC4KKwor
ICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAq
IFdlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKTog
U2VuZCB0aGUgY2FsbGJhY2sgcmVwbHkuCisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFN
YW5hZ2VyOjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OmRlbGV0ZUFsbEVudHJpZXMpOiBTZW5k
IHRoZSBjYWxsYmFjayByZXBseS4KKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFn
ZXI6OnN0YXJ0T2JzZXJ2aW5nQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
Yk9yaWdpbkRhdGFNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ2hhbmdlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLm1lc3NhZ2Vz
LmluOgorCiAyMDE0LTA3LTE3ICBFbnJpY2EgQ2FzdWNjaSAgPGVucmljYUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1JFR1JFU1NJT04gV0syXVRoZSBtZW51IGJhciBkb2VzIG5vdCBzaG93IHVwIHdo
ZW4gdGFwcGluZyBvbiB0aGUgY2FyZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRh
YmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNl
UHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwCmluZGV4IDgzNTQ0NmYuLmU3MjU3M2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3Bw
CkBAIC0zMCw5ICszMCwxMiBAQAogCiAjaW5jbHVkZSAiQXN5bmNUYXNrLmgiCiAjaW5jbHVkZSAi
RGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2VUb1dlYlByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiVW5pcXVlSURCRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlci5o
IgorI2luY2x1ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0ZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCkBAIC00
OSw2ICs1Miw3IEBAIERhdGFiYXNlUHJvY2VzcyYgRGF0YWJhc2VQcm9jZXNzOjpzaGFyZWQoKQog
RGF0YWJhc2VQcm9jZXNzOjpEYXRhYmFzZVByb2Nlc3MoKQogICAgIDogbV9xdWV1ZShhZG9wdFJl
ZigqV29ya1F1ZXVlOjpjcmVhdGUoImNvbS5hcHBsZS5XZWJLaXQuRGF0YWJhc2VQcm9jZXNzIiku
bGVha1JlZigpKSkKIHsKKyAgICBtX3dlYk9yaWdpbkRhdGFNYW5hZ2VyID0gc3RkOjptYWtlX3Vu
aXF1ZTxXZWJPcmlnaW5EYXRhTWFuYWdlcj4odGhpcyk7CiB9CiAKIERhdGFiYXNlUHJvY2Vzczo6
fkRhdGFiYXNlUHJvY2VzcygpCkBAIC03MCw2ICs3NCwxNyBAQCB2b2lkIERhdGFiYXNlUHJvY2Vz
czo6ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikKICAgICBSdW5Mb29wOjpjdXJyZW50KCkuc3Rv
cCgpOwogfQogCit2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIGlmIChtZXNzYWdlUmVjZWl2ZXJNYXAoKS5kaXNwYXRjaE1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2RlcikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNl
aXZlck5hbWUoKSA9PSBNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCkpIHsKKyAgICAgICAgZGlkUmVjZWl2ZURhdGFiYXNlUHJvY2Vzc01lc3NhZ2UoY29ubmVj
dGlvbiwgZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIHZvaWQgRGF0YWJh
c2VQcm9jZXNzOjpkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uKiwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKQogewogICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3Mv
RGF0YWJhc2VQcm9jZXNzLmgKaW5kZXggYTM2NGUyMC4uYjE0YzFhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtMzksNiArMzks
NyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIEFzeW5jVGFzazsKIGNsYXNzIERhdGFiYXNl
VG9XZWJQcm9jZXNzQ29ubmVjdGlvbjsKIGNsYXNzIFVuaXF1ZUlEQkRhdGFiYXNlOworY2xhc3Mg
V2ViT3JpZ2luRGF0YU1hbmFnZXI7CiAKIHN0cnVjdCBEYXRhYmFzZVByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnM7CiAKQEAgLTQ3LDYgKzQ4LDcgQEAgY2xhc3MgRGF0YWJhc2VQcm9jZXNzIDogcHVi
bGljIENoaWxkUHJvY2VzcyAgewogICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxEYXRh
YmFzZVByb2Nlc3M+OwogcHVibGljOgogICAgIHN0YXRpYyBEYXRhYmFzZVByb2Nlc3MmIHNoYXJl
ZCgpOworICAgIH5EYXRhYmFzZVByb2Nlc3MoKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5kZXhl
ZERhdGFiYXNlRGlyZWN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleGVkRGF0YWJhc2VEaXJl
Y3Rvcnk7IH0KIApAQCAtNTgsOCArNjAsNiBAQCBwdWJsaWM6CiAKICAgICBXb3JrUXVldWUmIHF1
ZXVlKCkgeyByZXR1cm4gbV9xdWV1ZS5nZXQoKTsgfQogCi0gICAgfkRhdGFiYXNlUHJvY2Vzcygp
OwotCiBwcml2YXRlOgogICAgIERhdGFiYXNlUHJvY2VzcygpOwogCkBAIC03NCw2ICs3NCw3IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2xvc2UoSVBDOjpDb25uZWN0aW9uKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlTmFt
ZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWNlaXZlRGF0YWJhc2VQcm9jZXNzTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CiAKICAgICAvLyBNZXNzYWdl
IEhhbmRsZXJzCiAgICAgdm9pZCBpbml0aWFsaXplRGF0YWJhc2VQcm9jZXNzKGNvbnN0IERhdGFi
YXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwpAQCAtOTUsNiArOTYsOCBAQCBwcml2YXRl
OgogCiAgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPEFzeW5jVGFzaz4+IG1fZGF0YWJhc2VUYXNr
czsKICAgICBNdXRleCBtX2RhdGFiYXNlVGFza011dGV4OworCisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYk9yaWdpbkRhdGFNYW5hZ2VyPiBtX3dlYk9yaWdpbkRhdGFNYW5hZ2VyOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVBy
b2Nlc3MvRGF0YWJhc2VQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBjMGRhMDc5Li40M2Jl
N2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogI2lmIEVOQUJM
RShEQVRBQkFTRV9QUk9DRVNTKQogCi1tZXNzYWdlcyAtPiBEYXRhYmFzZVByb2Nlc3MgeworbWVz
c2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICAjIEluaXRpYWxp
emVzIHRoZSBEYXRhYmFzZVByb2Nlc3Mgd2l0aCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzCiAgICAg
SW5pdGlhbGl6ZURhdGFiYXNlUHJvY2VzcyhXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycyBwcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5jcHAKaW5kZXgg
Y2U5ZDNiMi4uY2JjZjVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmNwcApAQCAtNDEsMjcgKzQxLDIzIEBAIHZvaWQg
V0tPcmlnaW5EYXRhTWFuYWdlckdldE9yaWdpbnMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmln
aW5EYXRhTWFuYWdlclJlZiwKICAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5nZXRP
cmlnaW5zKHR5cGVzLCB0b0dlbmVyaWNDYWxsYmFja0Z1bmN0aW9uKGNvbnRleHQsIGNhbGxiYWNr
KSk7CiB9CiAKLXZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4o
V0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWFuYWdlclJlZiwgV0tPcmlnaW5EYXRh
VHlwZXMgdHlwZXMsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luUmVmKQordm9pZCBXS09yaWdp
bkRhdGFNYW5hZ2VyRGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFNYW5hZ2VyUmVm
IG9yaWdpbkRhdGFNYW5hZ2VyUmVmLCBXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgV0tTZWN1cml0
eU9yaWdpblJlZiBvcmlnaW5SZWYsIHZvaWQqIGNvbnRleHQsIFdLT3JpZ2luRGF0YU1hbmFnZXJE
ZWxldGVFbnRyaWVzQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0ltcGwob3Jp
Z2luRGF0YU1hbmFnZXJSZWYpLT5kZWxldGVFbnRyaWVzRm9yT3JpZ2luKHR5cGVzLCB0b0ltcGwo
b3JpZ2luUmVmKSk7CisgICAgdG9JbXBsKG9yaWdpbkRhdGFNYW5hZ2VyUmVmKS0+ZGVsZXRlRW50
cmllc0Zvck9yaWdpbih0eXBlcywgdG9JbXBsKG9yaWdpblJlZiksIFtjb250ZXh0LCBjYWxsYmFj
a10oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjYWxsYmFjayhlcnJvciAh
PSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCku
Z2V0KCkpIDogMCwgY29udGV4dCk7CisgICAgfSk7CiB9CiAKLXZvaWQgV0tPcmlnaW5EYXRhTWFu
YWdlckRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWFu
YWdlclJlZiwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMpCit2b2lkIFdLT3JpZ2luRGF0YU1hbmFn
ZXJEZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJl
ZiBvcmlnaW5EYXRhTWFuYWdlclJlZiwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIGRvdWJsZSBz
dGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCB2b2lkKiBjb250ZXh0LCBXS09yaWdpbkRhdGFNYW5h
Z2VyRGVsZXRlRW50cmllc0NhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgdG9JbXBs
KG9yaWdpbkRhdGFNYW5hZ2VyUmVmKS0+ZGVsZXRlQWxsRW50cmllcyh0eXBlcyk7CisgICAgdG9J
bXBsKG9yaWdpbkRhdGFNYW5hZ2VyUmVmKS0+ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRh
dGVzKHR5cGVzLCBzdGFydERhdGUsIGVuZERhdGUsIFtjb250ZXh0LCBjYWxsYmFja10oQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjYWxsYmFjayhlcnJvciAhPSBDYWxsYmFj
a0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJvcjo6Y3JlYXRlKCkuZ2V0KCkpIDog
MCwgY29udGV4dCk7CisgICAgfSk7CiB9CiAKLXZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlclN0YXJ0
T2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2Vy
UmVmLCBXS09yaWdpbkRhdGFUeXBlcyB0eXBlcykKK3ZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlckRl
bGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWFuYWdlclJl
ZiwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHZvaWQqIGNvbnRleHQsIFdLT3JpZ2luRGF0YU1h
bmFnZXJEZWxldGVFbnRyaWVzQ2FsbGJhY2tGdW5jdGlvbiBjYWxsYmFjaykKIHsKLSAgICB0b0lt
cGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5zdGFydE9ic2VydmluZ0NoYW5nZXModHlwZXMpOwot
fQotCi12b2lkIFdLT3JpZ2luRGF0YU1hbmFnZXJTdG9wT2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdp
bkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyUmVmLCBXS09yaWdpbkRhdGFUeXBlcyB0
eXBlcykKLXsKLSAgICB0b0ltcGwob3JpZ2luRGF0YU1hbmFnZXJSZWYpLT5zdG9wT2JzZXJ2aW5n
Q2hhbmdlcyh0eXBlcyk7Ci19Ci0KLXZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlclNldENoYW5nZUNs
aWVudChXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyUmVmLCBjb25zdCBX
S09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50QmFzZSAqY2xpZW50KQotewotICAgIHRvSW1w
bChvcmlnaW5EYXRhTWFuYWdlclJlZiktPnNldENoYW5nZUNsaWVudChjbGllbnQpOworICAgIHRv
SW1wbChvcmlnaW5EYXRhTWFuYWdlclJlZiktPmRlbGV0ZUFsbEVudHJpZXModHlwZXMsIFtjb250
ZXh0LCBjYWxsYmFja10oQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBjYWxs
YmFjayhlcnJvciAhPSBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lID8gdG9BUEkoQVBJOjpFcnJv
cjo6Y3JlYXRlKCkuZ2V0KCkpIDogMCwgY29udGV4dCk7CisgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLT3JpZ2luRGF0YU1hbmFnZXIuaAppbmRl
eCA4MjdiZDU1Li5jY2U0NmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tPcmlnaW5EYXRhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS09yaWdpbkRhdGFNYW5hZ2VyLmgKQEAgLTM1LDEzICszNSwxNCBAQCBleHRlcm4g
IkMiIHsKIGVudW0gewogICAgIGtXS0FwcGxpY2F0aW9uQ2FjaGVPcmlnaW5EYXRhID0gMSA8PCAw
LAogICAgIGtXS0Nvb2tpZU9yaWdpbkRhdGEgPSAxIDw8IDEsCi0gICAga1dLRGF0YWJhc2VPcmln
aW5EYXRhID0gMSA8PCAyLAorICAgIGtXS0luZGV4ZWREYXRhYmFzZURhdGEgPSAxIDw8IDIsCiAg
ICAga1dLS2V5VmFsdWVTdG9yYWdlT3JpZ2luRGF0YSA9IDEgPDwgMywKICAgICBrV0tNZWRpYUNh
Y2hlT3JpZ2luRGF0YSA9IDEgPDwgNCwKICAgICBrV0tQbHVnaW5EYXRhT3JpZ2luRGF0YSA9IDEg
PDwgNSwKICAgICBrV0tSZXNvdXJjZUNhY2hlT3JpZ2luRGF0YSA9IDEgPDwgNiwKKyAgICBrV0tX
ZWJTUUxEYXRhYmFzZU9yaWdpbkRhdGEgPSAxIDw8IDcsCiAKLSAgICBrV0tBbGxPcmlnaW5EYXRh
ID0gKDEgPDwgNykgLSAxCisgICAga1dLQWxsT3JpZ2luRGF0YSA9IDB4RkZGRkZGRkYKIH07CiB0
eXBlZGVmIHVpbnQzMl90IFdLT3JpZ2luRGF0YVR5cGVzOwogCkBAIC01MCwzNiArNTEsMTEgQEAg
V0tfRVhQT1JUIFdLVHlwZUlEIFdLT3JpZ2luRGF0YU1hbmFnZXJHZXRUeXBlSUQoKTsKIHR5cGVk
ZWYgdm9pZCAoKldLT3JpZ2luRGF0YU1hbmFnZXJHZXRPcmlnaW5zRnVuY3Rpb24pKFdLQXJyYXlS
ZWYsIFdLRXJyb3JSZWYsIHZvaWQqKTsKIFdLX0VYUE9SVCB2b2lkIFdLT3JpZ2luRGF0YU1hbmFn
ZXJHZXRPcmlnaW5zKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXIsIFdL
T3JpZ2luRGF0YVR5cGVzIHR5cGVzLCB2b2lkKiBjb250ZXh0LCBXS09yaWdpbkRhdGFNYW5hZ2Vy
R2V0T3JpZ2luc0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIAotV0tfRVhQT1JUIHZvaWQgV0tPcmlnaW5E
YXRhTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBv
cmlnaW5EYXRhTWFuYWdlciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIFdLU2VjdXJpdHlPcmln
aW5SZWYgb3JpZ2luKTsKLVdLX0VYUE9SVCB2b2lkIFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVB
bGxFbnRyaWVzKFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXIsIFdLT3Jp
Z2luRGF0YVR5cGVzIHR5cGVzKTsKK3R5cGVkZWYgdm9pZCAoKldLT3JpZ2luRGF0YU1hbmFnZXJE
ZWxldGVFbnRyaWVzQ2FsbGJhY2tGdW5jdGlvbikoV0tFcnJvclJlZiwgdm9pZCopOworV0tfRVhQ
T1JUIHZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmln
aW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWFuYWdlciwgV0tPcmlnaW5EYXRhVHlwZXMgdHlw
ZXMsIFdLU2VjdXJpdHlPcmlnaW5SZWYgb3JpZ2luLCB2b2lkKiBjb250ZXh0LCBXS09yaWdpbkRh
dGFNYW5hZ2VyRGVsZXRlRW50cmllc0NhbGxiYWNrRnVuY3Rpb24gZnVuY3Rpb24pOworV0tfRVhQ
T1JUIHZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5E
YXRlcyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyLCBXS09yaWdpbkRh
dGFUeXBlcyB0eXBlcywgZG91YmxlIHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHZvaWQqIGNv
bnRleHQsIFdLT3JpZ2luRGF0YU1hbmFnZXJEZWxldGVFbnRyaWVzQ2FsbGJhY2tGdW5jdGlvbiBm
dW5jdGlvbik7CitXS19FWFBPUlQgdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyRGVsZXRlQWxsRW50
cmllcyhXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyLCBXS09yaWdpbkRh
dGFUeXBlcyB0eXBlcywgdm9pZCogY29udGV4dCwgV0tPcmlnaW5EYXRhTWFuYWdlckRlbGV0ZUVu
dHJpZXNDYWxsYmFja0Z1bmN0aW9uIGZ1bmN0aW9uKTsKIAotLy8gT3JpZ2luRGF0YU1hbmFnZXIg
Q2xpZW50Ci10eXBlZGVmIHZvaWQgKCpXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2FsbGJhY2sp
KFdLT3JpZ2luRGF0YU1hbmFnZXJSZWYgb3JpZ2luRGF0YU1hbmFnZXIsIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pOwotCi10eXBlZGVmIHN0cnVjdCBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xp
ZW50QmFzZSB7Ci0gICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnRJbmZvOwotICAgIGludCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
c2lvbjsKLX0gV0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2U7Ci0KLXR5cGVkZWYg
c3RydWN0IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRWMCB7Ci0gICAgV0tPcmlnaW5E
YXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBiYXNlOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFu
Z2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkQ2hhbmdlOwot
fSBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50VjA7Ci0KLWVudW0geyBrV0tPcmlnaW5E
YXRhTWFuYWdlckNoYW5nZUNsaWVudFZlcnNpb24gPSAwIH07Ci10eXBlZGVmIHN0cnVjdCBXS09y
aWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50IHsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247Ci0g
ICAgY29uc3Qgdm9pZCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRJbmZvOwotCi0gICAgLy8gVmVyc2lvbiAwLgotICAgIFdLT3Jp
Z2luRGF0YU1hbmFnZXJDaGFuZ2VDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlkQ2hhbmdlOwotfSBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hhbmdlQ2xpZW50IFdLX0RF
UFJFQ0FURUQoIlVzZSBhbiBleHBsaWNpdCB2ZXJzaW9uZWQgc3RydWN0IGluc3RlYWQiKTsKLQot
V0tfRVhQT1JUIHZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlclN0YXJ0T2JzZXJ2aW5nQ2hhbmdlcyhX
S09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5hZ2VyLCBXS09yaWdpbkRhdGFUeXBl
cyB0eXBlcyk7Ci1XS19FWFBPUlQgdm9pZCBXS09yaWdpbkRhdGFNYW5hZ2VyU3RvcE9ic2Vydmlu
Z0NoYW5nZXMoV0tPcmlnaW5EYXRhTWFuYWdlclJlZiBvcmlnaW5EYXRhTWFuYWdlciwgV0tPcmln
aW5EYXRhVHlwZXMgdHlwZXMpOwotV0tfRVhQT1JUIHZvaWQgV0tPcmlnaW5EYXRhTWFuYWdlclNl
dENoYW5nZUNsaWVudChXS09yaWdpbkRhdGFNYW5hZ2VyUmVmIG9yaWdpbkRhdGFNYW5nZXIsIGNv
bnN0IFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGllbnRCYXNlKiBjbGllbnQpOwogI2lmZGVm
IF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKaW5kZXggYmI5ZDUz
NC4uZjI0NDU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNl
cy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAKQEAgLTI3LDcgKzI3LDEwIEBACiAj
aW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzUHJveHkuaCIKIAogI2luY2x1ZGUgIkRhdGFiYXNlUHJv
Y2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VQcm9jZXNzUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5LmgiCisjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgi
CiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKIApAQCAtNjYsNiArNjksMTkgQEAgdm9p
ZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6Y29ubmVjdGlvbldpbGxDbG9zZShJUEM6OkNvbm5lY3Rp
b24qKQogewogfQogCit2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIElQQzo6TWVzc2FnZURlY29kZXImIGRlY29k
ZXIpCit7CisgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2Vz
OjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7CisgICAgICAg
IGRpZFJlY2VpdmVEYXRhYmFzZVByb2Nlc3NQcm94eU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rl
cik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSkgeworICAgICAgICBtX3dlYkNvbnRleHQtPnN1cHBsZW1lbnQ8V2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eT4oKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwg
ZGVjb2Rlcik7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIHZvaWQgRGF0YWJhc2VQcm9j
ZXNzUHJveHk6OmdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+IHJlcGx5KQogewogICAgIG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmFwcGVuZChy
ZXBseSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0Rh
dGFiYXNlUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2Vz
L0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmgKaW5kZXggYmQ3NTU1ZC4uNTRkOTQwMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9j
ZXNzUHJveHkuaApAQCAtNTcsNiArNTcsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBk
aWRDbG9zZShJUEM6OkNvbm5lY3Rpb24qKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VOYW1l
KSBvdmVycmlkZTsKIAorICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFiYXNlUHJvY2Vzc1Byb3h5TWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJik7CisKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2htZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM0NDViZjUuLjZiYzYyMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVBy
b2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiAjaWYgRU5BQkxFKERB
VEFCQVNFX1BST0NFU1MpCiAKLW1lc3NhZ2VzIC0+IERhdGFiYXNlUHJvY2Vzc1Byb3h5IHsKK21l
c3NhZ2VzIC0+IERhdGFiYXNlUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRD
cmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5j
cHAKaW5kZXggYzg3YjY0Yi4uYTIzMTI0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJD
b250ZXh0LmNwcApAQCAtNzgsNiArNzgsNyBAQAogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNT
KQogI2luY2x1ZGUgIkRhdGFiYXNlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1
ZGUgIkRhdGFiYXNlUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViT3JpZ2luRGF0YU1h
bmFnZXJQcm94eS5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQpAQCAt
MjE3LDYgKzIxOCw5IEBAIFdlYkNvbnRleHQ6OldlYkNvbnRleHQoV2ViQ29udGV4dENvbmZpZ3Vy
YXRpb24gY29uZmlndXJhdGlvbikKICNpZiBFTkFCTEUoQkFUVEVSWV9TVEFUVVMpCiAgICAgYWRk
U3VwcGxlbWVudDxXZWJCYXR0ZXJ5TWFuYWdlclByb3h5PigpOwogI2VuZGlmCisjaWYgRU5BQkxF
KERBVEFCQVNFX1BST0NFU1MpCisgICAgYWRkU3VwcGxlbWVudDxXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5PigpOworI2VuZGlmCiAKICAgICBjb250ZXh0cygpLmFwcGVuZCh0aGlzKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmgKaW5kZXggZDYwZWRlZS4uNDY1MzYzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCkBAIC0zMDIsNiArMzAyLDcgQEAgcHVi
bGljOgogI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQogICAgIHZvaWQgZW5zdXJlRGF0YWJh
c2VQcm9jZXNzKCk7CiAgICAgdm9pZCBnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NS
ZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVj
dGlvbjo6RGVsYXllZFJlcGx5Pik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5k
VG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNzYWdlKTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC02MTEsNiArNjEyLDE1IEBAIHZvaWQgV2Vi
Q29udGV4dDo6c2VuZFRvTmV0d29ya2luZ1Byb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQm
JiBtZXNzYWdlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCisjaWYgRU5BQkxFKERB
VEFCQVNFX1BST0NFU1MpCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgordm9pZCBXZWJDb250ZXh0Ojpz
ZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KFQmJiBtZXNzYWdlKQor
eworICAgIGVuc3VyZURhdGFiYXNlUHJvY2VzcygpOworICAgIG1fZGF0YWJhc2VQcm9jZXNzLT5z
ZW5kKHN0ZDo6Zm9yd2FyZDxUPihtZXNzYWdlKSwgMCk7Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHZvaWQgV2ViQ29udGV4dDo6c2VuZFRvQWxsUHJvY2Vzc2VzKGNvbnN0IFQm
IG1lc3NhZ2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eS5jcHAKaW5kZXggMmQyYzUzMi4uNWE4NDZiZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
LmNwcApAQCAtNTQsMTUgKzU0LDE1IEBAIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6On5XZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5KCkKIHsKIH0KIAotCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHk6OmNvbnRleHREZXN0cm95ZWQoKQogewogICAgIGludmFsaWRhdGVDYWxsYmFja01h
cChtX2FycmF5Q2FsbGJhY2tzLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRh
dGVkKTsKKyAgICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV92b2lkQ2FsbGJhY2tzLCBDYWxsYmFj
a0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKIH0KIAogdm9pZCBXZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5Ojpwcm9jZXNzRGlkQ2xvc2UoV2ViUHJvY2Vzc1Byb3h5KikKIHsKLSAg
ICBpbnZhbGlkYXRlQ2FsbGJhY2tNYXAobV9hcnJheUNhbGxiYWNrcywgQ2FsbGJhY2tCYXNlOjpF
cnJvcjo6UHJvY2Vzc0V4aXRlZCk7CisgICAgLy8gRklYTUU6IEludmFsaWRhdGUgb25seSB0aGUg
Y2FsbGJhY2tzIGZvciB0aGUgV2ViUHJvY2Vzc1Byb3h5IHRoYXQgY2xvc2VkLgogfQogCiBib29s
IFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJv
eHkqKSBjb25zdApAQCAtODIsNiArODIsMTMgQEAgdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5OjpnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5j
dGlvbikKIHsKKyAgICBpZiAoISh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURhdGEpKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogUmlnaHQgbm93IHdlIG9ubHkgc3VwcG9ydCBJ
bmRleGVkRGF0YWJhc2UgZGF0YSBzbyB3ZSBrbm93IHRoYXQgd2UncmUgb25seSBzZW5kaW5nIHRo
aXMgcmVxdWVzdCB0byB0aGUgRGF0YWJhc2VQcm9jZXNzLgorICAgIC8vIFRoYXQncyB3aHkgaGF2
aW5nIG9uZSBzaW5nbGUgY2FsbGJhY2sgd29ya3MuCisgICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVu
IHdlIG1lc3NhZ2UgTi1wcm9jZXNzZXMgd2UnbGwgaGF2ZSB0byB3YWl0IGZvciBhbGwgTiByZXBs
aWVzIGJlZm9yZSByZXNwb25kaW5nIHRvIHRoZSBjbGllbnQuCisKICAgICBSZWZQdHI8QXJyYXlD
YWxsYmFjaz4gY2FsbGJhY2sgPSBBcnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGOjptb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pKTsKIAogICAgIGlmICghY29udGV4dCgpKSB7CkBAIC05Miw4ICs5OSw3IEBA
IHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFU
eXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxi
YWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwg
Y2FsbGJhY2sucmVsZWFzZSgpKTsKIAotICAgIC8vIEZJWE1FIChNdWx0aS1XZWJQcm9jZXNzKTog
PHJkYXI6Ly9wcm9ibGVtLzEyMjM5NzY1PiBNYWtlIG1hbmlwdWxhdGluZyBjYWNoZSBpbmZvcm1h
dGlvbiB3b3JrIHdpdGggcGVyLXRhYiBXZWJQcm9jZXNzLgotICAgIGNvbnRleHQoKS0+c2VuZFRv
QWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdp
bkRhdGFNYW5hZ2VyOjpHZXRPcmlnaW5zKHR5cGVzLCBjYWxsYmFja0lEKSk7CisgICAgY29udGV4
dCgpLT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6R2V0T3JpZ2lucyh0eXBlcywgY2FsbGJhY2tJRCkpOwog
fQogCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRpZEdldE9yaWdpbnMoY29uc3Qg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbkRhdGFzLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQpAQCAtMTAyLDUzICsxMDgsODcgQEAgdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
OjpkaWRHZXRPcmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JgogICAgIHBl
cmZvcm1BUElDYWxsYmFja1dpdGhTZWN1cml0eU9yaWdpbkRhdGFWZWN0b3Iob3JpZ2luRGF0YXMs
IGNhbGxiYWNrLmdldCgpKTsKIH0KIAotdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Ojpk
ZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXZWJTZWN1cml0
eU9yaWdpbiogb3JpZ2luKQordm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkZWxldGVF
bnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXZWJTZWN1cml0eU9yaWdp
biogb3JpZ2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxs
YmFja0Z1bmN0aW9uKQogewotICAgIGlmICghY29udGV4dCgpKQorICAgIGlmICghKHR5cGVzICYg
a1dLSW5kZXhlZERhdGFiYXNlRGF0YSkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1F
OiBSaWdodCBub3cgd2Ugb25seSBzdXBwb3J0IEluZGV4ZWREYXRhYmFzZSBkYXRhIHNvIHdlIGtu
b3cgdGhhdCB3ZSdyZSBvbmx5IHNlbmRpbmcgdGhpcyByZXF1ZXN0IHRvIHRoZSBEYXRhYmFzZVBy
b2Nlc3MuCisgICAgLy8gVGhhdCdzIHdoeSBoYXZpbmcgb25lIHNpbmdsZSBjYWxsYmFjayB3b3Jr
cy4KKyAgICAvLyBJbiB0aGUgZnV0dXJlIHdoZW4gd2UgbWVzc2FnZSBOLXByb2Nlc3NlcyB3ZSds
bCBoYXZlIHRvIHdhaXQgZm9yIGFsbCBOIHJlcGxpZXMgYmVmb3JlIHJlc3BvbmRpbmcgdG8gdGhl
IGNsaWVudC4KKworICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gVm9pZENhbGxi
YWNrOjpjcmVhdGUoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKworICAgIGlmICghY29u
dGV4dCgpKSB7CisgICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVh
c2UoKSk7CisKICAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRhOwogICAg
IHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCA9IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5w
cm90b2NvbCgpOwogICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0ID0gb3JpZ2luLT5zZWN1cml0
eU9yaWdpbigpLmhvc3QoKTsKICAgICBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCA9IG9yaWdpbi0+
c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCk7CiAKLSAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vz
cyk6IDxyZGFyOi8vcHJvYmxlbS8xMjIzOTc2NT4gTWFrZSBtYW5pcHVsYXRpbmcgY2FjaGUgaW5m
b3JtYXRpb24gd29yayB3aXRoIHBlci10YWIgV2ViUHJvY2Vzcy4KLSAgICBjb250ZXh0KCktPnNl
bmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJP
cmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlRW50cmllc0Zvck9yaWdpbih0eXBlcywgc2VjdXJpdHlP
cmlnaW5EYXRhKSk7CisgICAgY29udGV4dCgpLT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlRW50
cmllc0Zvck9yaWdpbih0eXBlcywgc2VjdXJpdHlPcmlnaW5EYXRhLCBjYWxsYmFja0lEKSk7CiB9
CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsRW50cmllcyhXS09y
aWdpbkRhdGFUeXBlcyB0eXBlcykKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVs
ZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBk
b3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBpZiAoIWNvbnRleHQo
KSkKKyAgICBpZiAoISh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURhdGEpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICAvLyBGSVhNRSAoTXVsdGktV2ViUHJvY2Vzcyk6IDxyZGFyOi8vcHJvYmxl
bS8xMjIzOTc2NT4gTWFrZSBtYW5pcHVsYXRpbmcgY2FjaGUgaW5mb3JtYXRpb24gd29yayB3aXRo
IHBlci10YWIgV2ViUHJvY2Vzcy4KLSAgICBjb250ZXh0KCktPnNlbmRUb0FsbFByb2Nlc3Nlc1Jl
bGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6
RGVsZXRlQWxsRW50cmllcyh0eXBlcykpOwotfQorICAgIC8vIEZJWE1FOiBSaWdodCBub3cgd2Ug
b25seSBzdXBwb3J0IEluZGV4ZWREYXRhYmFzZSBkYXRhIHNvIHdlIGtub3cgdGhhdCB3ZSdyZSBv
bmx5IHNlbmRpbmcgdGhpcyByZXF1ZXN0IHRvIHRoZSBEYXRhYmFzZVByb2Nlc3MuCisgICAgLy8g
VGhhdCdzIHdoeSBoYXZpbmcgb25lIHNpbmdsZSBjYWxsYmFjayB3b3Jrcy4KKyAgICAvLyBJbiB0
aGUgZnV0dXJlIHdoZW4gd2UgbWVzc2FnZSBOLXByb2Nlc3NlcyB3ZSdsbCBoYXZlIHRvIHdhaXQg
Zm9yIGFsbCBOIHJlcGxpZXMgYmVmb3JlIHJlc3BvbmRpbmcgdG8gdGhlIGNsaWVudC4KIAotdm9p
ZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0NoYW5nZXMoV0tPcmln
aW5EYXRhVHlwZXMgdHlwZXMpCi17Ci0gICAgaWYgKCFjb250ZXh0KCkpCisgICAgUmVmUHRyPFZv
aWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEY6Om1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOworCisgICAgaWYgKCFjb250ZXh0KCkpIHsKKyAgICAgICAgY2FsbGJh
Y2stPmludmFsaWRhdGUoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGNvbnRleHQo
KS0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6
OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpTdGFydE9ic2VydmluZ0NoYW5nZXModHlwZXMpKTsKKyAg
ICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICBtX3Zv
aWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CisKKyAgICBj
b250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVz
c2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpEZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVu
RGF0ZXModHlwZXMsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsbGJhY2tJRCkpOwogfQogCi12b2lk
IFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OnN0b3BPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2lu
RGF0YVR5cGVzIHR5cGVzKQordm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWREZWxl
dGVFbnRyaWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgaWYgKCFjb250ZXh0KCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGNvbnRleHQoKS0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVu
Y2hpbmdUaGVtSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpTdGFy
dE9ic2VydmluZ0NoYW5nZXModHlwZXMpKTsKKyAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxs
YmFjayA9IG1fdm9pZENhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIGNhbGxiYWNrLT5w
ZXJmb3JtQ2FsbGJhY2soKTsKIH0KIAotdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Ojpz
ZXRDaGFuZ2VDbGllbnQoY29uc3QgV0tPcmlnaW5EYXRhTWFuYWdlckNoYW5nZUNsaWVudEJhc2Ug
KmNsaWVudCkKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsRW50cmll
cyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jh
c2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBtX2NsaWVudC5pbml0aWFsaXpl
KGNsaWVudCk7CisgICAgaWYgKCEodHlwZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB3ZSBvbmx5IHN1cHBvcnQg
SW5kZXhlZERhdGFiYXNlIGRhdGEgc28gd2Uga25vdyB0aGF0IHdlJ3JlIG9ubHkgc2VuZGluZyB0
aGlzIHJlcXVlc3QgdG8gdGhlIERhdGFiYXNlUHJvY2Vzcy4KKyAgICAvLyBUaGF0J3Mgd2h5IGhh
dmluZyBvbmUgc2luZ2xlIGNhbGxiYWNrIHdvcmtzLgorICAgIC8vIEluIHRoZSBmdXR1cmUgd2hl
biB3ZSBtZXNzYWdlIE4tcHJvY2Vzc2VzIHdlJ2xsIGhhdmUgdG8gd2FpdCBmb3IgYWxsIE4gcmVw
bGllcyBiZWZvcmUgcmVzcG9uZGluZyB0byB0aGUgY2xpZW50LgorCisgICAgUmVmUHRyPFZvaWRD
YWxsYmFjaz4gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEY6Om1vdmUoY2FsbGJh
Y2tGdW5jdGlvbikpOworCisgICAgaWYgKCFjb250ZXh0KCkpIHsKKyAgICAgICAgY2FsbGJhY2st
PmludmFsaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQ2NF90IGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fdm9pZENhbGxiYWNrcy5z
ZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKworICAgIGNvbnRleHQoKS0+c2Vu
ZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViT3Jp
Z2luRGF0YU1hbmFnZXI6OkRlbGV0ZUFsbEVudHJpZXModHlwZXMsIGNhbGxiYWNrSUQpKTsKIH0K
IAotdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWRDaGFuZ2UoKQordm9pZCBXZWJP
cmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWREZWxldGVBbGxFbnRyaWVzKHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7Ci0gICAgbV9jbGllbnQuZGlkQ2hhbmdlKHRoaXMpOworICAgIFJlZlB0cjxWb2lk
Q2FsbGJhY2s+IGNhbGxiYWNrID0gbV92b2lkQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7Cisg
ICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFjaygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eS5oCmluZGV4IDZkYjQ1ZDYuLjkwMTA5MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaApAQCAtMzEsNyArMzEs
NiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldLT3JpZ2luRGF0
YU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgotI2luY2x1ZGUg
IldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC01NSwyMSArNTQsMjIgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfldlYk9yaWdp
bkRhdGFNYW5hZ2VyUHJveHkoKTsKIAogICAgIHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdpbkRhdGFU
eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+KTsKLSAgICB2b2lkIGRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMs
IFdlYlNlY3VyaXR5T3JpZ2luKik7Ci0gICAgdm9pZCBkZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2lu
RGF0YVR5cGVzKTsKLQotICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2luRGF0
YVR5cGVzKTsKLSAgICB2b2lkIHN0b3BPYnNlcnZpbmdDaGFuZ2VzKFdLT3JpZ2luRGF0YVR5cGVz
KTsKLSAgICB2b2lkIHNldENoYW5nZUNsaWVudChjb25zdCBXS09yaWdpbkRhdGFNYW5hZ2VyQ2hh
bmdlQ2xpZW50QmFzZSopOworICAgIHZvaWQgZGVsZXRlRW50cmllc0Zvck9yaWdpbihXS09yaWdp
bkRhdGFUeXBlcywgV2ViU2VjdXJpdHlPcmlnaW4qLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxi
YWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVu
RGF0ZXMoV0tPcmlnaW5EYXRhVHlwZXMsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRl
LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPik7CisgICAgdm9pZCBk
ZWxldGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPik7CiAKICAgICB1c2luZyBBUEk6Ok9iamVjdDo6cmVmOwogICAg
IHVzaW5nIEFQSTo6T2JqZWN0OjpkZXJlZjsKIAorICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQ
Qzo6TWVzc2FnZURlY29kZXImKSBvdmVycmlkZTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5KFdlYkNvbnRleHQqKTsKIAogICAgIHZvaWQgZGlkR2V0
T3JpZ2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgZGlkQ2hhbmdlKCk7CisgICAgdm9pZCBkaWREZWxldGVFbnRyaWVz
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkRGVsZXRlQWxsRW50cmllcyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CiAgICAgdmly
dHVhbCB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSBvdmVycmlkZTsKQEAgLTc4LDEyICs3OCw4IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKSBvdmVy
cmlkZTsKIAotICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiosIElQQzo6TWVzc2FnZURlY29kZXImKSBv
dmVycmlkZTsKLQogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxBcnJheUNhbGxiYWNrPj4g
bV9hcnJheUNhbGxiYWNrczsKLQotICAgIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VD
bGllbnQgbV9jbGllbnQ7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFZvaWRDYWxsYmFj
az4+IG1fdm9pZENhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA3NmQ3NmI0Li5jZjM4YTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjIsNSArMjIsNiBAQAogCiBtZXNzYWdlcyAtPiBXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5IHsKICAgICBEaWRHZXRPcmlnaW5zKFZlY3RvcjxXZWJLaXQ6OlNlY3VyaXR5T3JpZ2lu
RGF0YT4gb3JpZ2luSWRlbnRpZmllcnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIERpZENo
YW5nZSgpCisgICAgRGlkRGVsZXRlRW50cmllcyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICBE
aWREZWxldGVBbGxFbnRyaWVzKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHlDaGFuZ2VDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWVl
ODIwLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRh
TWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViT3JpZ2lu
RGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlD
aGFuZ2VDbGllbnQ6OmRpZENoYW5nZShXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5KiBvcmlnaW5E
YXRhTWFuYWdlcikKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9jbGllbnQuZGlkQ2hhbmdlKHRvQVBJKG9yaWdpbkRhdGFNYW5hZ2VyKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eUNoYW5nZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRh
dGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMmZlYTgwOC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3Jp
Z2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsNTAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNo
YW5nZUNsaWVudF9oCi0jZGVmaW5lIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGll
bnRfaAotCi0jaW5jbHVkZSAiQVBJQ2xpZW50LmgiCi0jaW5jbHVkZSAiV0tPcmlnaW5EYXRhTWFu
YWdlci5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewotdGVt
cGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFuZ2VDbGll
bnRCYXNlPiB7Ci0gICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLT3JpZ2luRGF0YU1hbmFnZXJDaGFu
Z2VDbGllbnRWMD4gVmVyc2lvbnM7Ci19OwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTsKLQotY2xhc3MgV2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eUNoYW5nZUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS09yaWdpbkRhdGFNYW5h
Z2VyQ2hhbmdlQ2xpZW50QmFzZT4gewotcHVibGljOgotICAgIHZvaWQgZGlkQ2hhbmdlKFdlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHkqKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0j
ZW5kaWYgLy8gV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNsaWVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWE3
ODQ3OC4uZjU5ODMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtOTc0LDYgKzk3NCw3IEBACiAJCTUxRUZDMUNGMTUyNEU2MjUw
MEM5QTkzOCAvKiBXS0J1bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGQTJENTQxNTIxMTE4NjAwQzFCQTBCIC8q
IFdLQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGMDYwRTAxNjU0MzE3RjAwRjMyODFCIC8qIFdlYlJl
c291cmNlTG9hZGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxRjA2MERFMTY1NDMxNzUwMEYzMjgxQiAvKiBXZWJSZXNvdXJjZUxvYWRl
ck1lc3NhZ2VzLmggKi87IH07CiAJCTUxRjA2MEUxMTY1NDMxODUwMEYzMjgxQiAvKiBXZWJSZXNv
dXJjZUxvYWRlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYwNjBERDE2NTQzMTc1MDBGMzI4MUIgLyogV2ViUmVzb3Vy
Y2VMb2FkZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OworCQk1MUYyNUEyQjE5Nzg5NjI5MDA1
NzI0OUEgLyogV0tPcmlnaW5EYXRhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzU1NDIyQkExODA2MkI5QzAwNDZGNkE4IC8qIFdLT3JpZ2lu
RGF0YU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk1MUY3REM0MTE4MENDOTM2MDAyMTJDQTMgLyogWFBDU2VydmljZU1haW4ubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyODM5NjE2QjQ3
RUM0MDBBMjc4RkUgLyogWFBDU2VydmljZU1haW4ubW0gKi87IH07CiAJCTUxRjdEQzQzMTgwQ0M5
MzYwMDIxMkNBMyAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0RFNDY4MTVBOTE3NjMwMDhEMjZGQyAvKiBG
b3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJNTFGN0RDNDQxODBDQzkzNjAwMjEyQ0EzIC8q
IFdlYktpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4REMyRUY1QjA0ODZBNjk0MDA5OEIyMTYgLyogV2ViS2l0LmZyYW1ld29yayAq
LzsgfTsKQEAgLTEwMDcsOCArMTAwOCw2IEBACiAJCTc1NTQyMkM0MTgwNjJCRjkwMDQ2RjZBOCAv
KiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkJFMTgwNjJCRTQwMDQ2RjZBOCAvKiBXZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5LmNwcCAqLzsgfTsKIAkJNzU1NDIyQ0IxODA2NTAwMjAwNDZGNkE4
IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc1NTQyMkM2MTgwNjRGRkMwMDQ2RjZBOCAvKiBXZWJPcmlnaW5E
YXRhTWFuYWdlci5jcHAgKi87IH07CiAJCTc1NTQyMkNDMTgwNzczQ0UwMDQ2RjZBOCAvKiBXZWJP
cmlnaW5EYXRhTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzU1NDIyQzcxODA2NEZGQzAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
LmggKi87IH07Ci0JCTc1OUNDRDU4MTgwOEYxNjQwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc1OUNDRDU0MTgwOEYxNjAwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRh
TWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmNwcCAqLzsgfTsKLQkJNzU5Q0NENTkxODA4RjE2OTAw
NzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1OUNDRDU1MTgwOEYxNjAw
MDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmggKi87IH07
CiAJCTc1OUNDRDVBMTgwOEY2MTYwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTU0MjJC
RjE4MDYyQkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5oICovOyB9Owog
CQk3NUE4RDJDODE4N0NDRkFCMDBDMzlDOUUgLyogX1dLV2Vic2l0ZURhdGFTdG9yZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzVBOEQyQzQxODdDQ0Y5
RjAwQzM5QzlFIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NUE4RDJDOTE4N0NDRkFGMDBDMzlDOUUgLyog
X1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1QThEMkM1MTg3Q0NGOUYwMEMzOUM5RSAvKiBfV0tXZWJzaXRlRGF0YVN0
b3JlLm1tICovOyB9OwpAQCAtMzA0Myw4ICszMDQyLDYgQEAKIAkJNzU1NDIyQzYxODA2NEZGQzAw
NDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYk9yaWdpbkRhdGFNYW5hZ2VyLmNwcDsgcGF0aCA9IE9yaWdpbkRh
dGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NTU0MjJDNzE4MDY0RkZDMDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViT3JpZ2luRGF0YU1hbmFnZXIuaDsgcGF0
aCA9IE9yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzU1NDIyQzgxODA2NEZGQzAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5h
Z2VyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IFdlYk9yaWdpbkRhdGFNYW5h
Z2VyLm1lc3NhZ2VzLmluOyBwYXRoID0gT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5t
ZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzU5Q0NENTQxODA4RjE2
MDAwNzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViT3JpZ2luRGF0YU1hbmFnZXJQ
cm94eUNoYW5nZUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTc1OUND
RDU1MTgwOEYxNjAwMDc4RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk9yaWdpbkRhdGFNYW5h
Z2VyUHJveHlDaGFuZ2VDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVB
OEQyQzQxODdDQ0Y5RjAwQzM5QzlFIC8qIF9XS1dlYnNpdGVEYXRhU3RvcmUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZURhdGFTdG9yZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3NUE4RDJDNTE4N0NDRjlGMDBDMzlDOUUgLyogX1dLV2Vic2l0
ZURhdGFTdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9X
S1dlYnNpdGVEYXRhU3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1QThE
MkQwMTg3RDE3QkYwMEMzOUM5RSAvKiBXS1Nlc3Npb25SZWYuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tTZXNzaW9uUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTU4NjIsOCArNTg1OSw2IEBACiAJCQkJNzU1NDIyQkYxODA2MkJFNDAwNDZG
NkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCAqLywKIAkJCQk3NTU0MjJCRTE4MDYy
QkU0MDA0NkY2QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgKi8sCiAJCQkJNzU1
NDIyQzAxODA2MkJFNDAwNDZGNkE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkubWVzc2Fn
ZXMuaW4gKi8sCi0JCQkJNzU5Q0NENTQxODA4RjE2MDAwNzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuY3BwICovLAotCQkJCTc1OUNDRDU1MTgwOEYxNjAwMDc4
RThBOCAvKiBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5Q2hhbmdlQ2xpZW50LmggKi8sCiAJCQkJ
NTE1MzU2OUExMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAg
Ki8sCiAJCQkJNTE1MzU2OUIxMjkxQjFEMjAwMDc0OURDIC8qIFdlYlBhZ2VDb250ZXh0TWVudUNs
aWVudC5oICovLAogCQkJCUJDN0I2MjA1MTI5QTBBNjcwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXAu
Y3BwICovLApAQCAtNzM0Myw2ICs3MzM4LDcgQEAKIAkJCQkxQTY0MjBFNTEyRENFMkZGMDBDQUFF
MkMgLyogU2hhcmVhYmxlQml0bWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTIxNzQ2MTE2NEMy
MEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
MjRCRUQ1MTIwODk0RDEwMEZCQjA1OSAvKiBTaGFyZWRNZW1vcnkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTUxRjI1QTJCMTk3ODk2MjkwMDU3MjQ5QSAvKiBXS09yaWdpbkRhdGFNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MjcyQjI4QjE0MDY5ODVEMDA5NkE1RDAgLyogU3RhdGlzdGljc0Rh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNEJERUQzMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0
aXN0aWNzUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEMzMwNkYxNkIxRDk5MTAwNEY2
MEU3IC8qIFN0b3JhZ2VBcmVhSW1wbC5oIGluIEhlYWRlcnMgKi8sCkBAIC03Nzc3LDcgKzc3NzMs
NiBAQAogCQkJCTM3M0NFQUQ4MTg1OTU1M0YwMDhDMzYzRCAvKiBXS1BhZ2VQb2xpY3lDbGllbnRJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE2NkJGOEYxOEEwNTJFRDAwMjA3MUI0IC8q
IFdLV2ViVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYxQTEyNEZGMDM3
MDA2OEYyMEEgLyogV0tTdHJpbmdDRi5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzU5Q0NENTkxODA4
RjE2OTAwNzhFOEE4IC8qIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHlDaGFuZ2VDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDOTA5OTgwMTI1NkE5ODIwMDA4Mzc1NiAvKiBXS1N0cmluZ1By
aXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzUwOTVBMTg5NzI0OTcwMDQwOEZBQyAvKiBJ
REJJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTNDODg4MDE4QTVBQkFFMDBDNEM5
NjIgLyogV0tQcmVmZXJlbmNlc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTkzNDksNyAr
OTM0NCw2IEBACiAJCQkJMUFFNTJGOTExOTIwMURBNzAwQTFGQTM3IC8qIEFQSUNvbnRleHRDb25m
aWd1cmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzMDkzNDVBMTMxNUI5OTgwMDk3QTdC
QyAvKiBXS0Nvb2tpZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyRjU4RjkxMkE4
OEE1NDAwNjI5NTMwIC8qIFdLQ3JlZGVudGlhbC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk3NTlD
Q0Q1ODE4MDhGMTY0MDA3OEU4QTggLyogV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eUNoYW5nZUNs
aWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTVCMUM1MDE4OTg2MDZGMDA0RkNGOUIgLyog
V0tOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0MDc1RjcxMjRGRjAyNzAwNjhG
MjBBIC8qIFdLRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjJBNzY2MTEyQjFBQkVEMDAw
NUYxQjYgLyogV0tEYXRhYmFzZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9PcmlnaW5EYXRhL1dlYk9yaWdpbkRh
dGFNYW5hZ2VyLmNwcAppbmRleCAwMjA2MjQzLi45NTdlNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFu
YWdlci5jcHAKQEAgLTc2LDI4ICs3NiwyNSBAQCB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpn
ZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIG1f
Y2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpE
aWRHZXRPcmlnaW5zKGlkZW50aWZpZXJzLCBjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
T3JpZ2luRGF0YU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlw
ZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luRGF0YSkKK3ZvaWQgV2ViT3JpZ2lu
RGF0YU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMsIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdp
bkRhdGEucHJvdG9jb2wsIG9yaWdpbkRhdGEuaG9zdCwgb3JpZ2luRGF0YS5wb3J0KTsKLSAgICBp
ZiAoIW9yaWdpbikKLSAgICAgICAgcmV0dXJuOwotCiAgICAgLy8gRklYTUU6IGRlbGV0ZSBlbnRy
aWVzIGZvciBvcmlnaW4KLX0KIAotdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlcjo6ZGVsZXRlQWxs
RW50cmllcyhXS09yaWdpbkRhdGFUeXBlcykKLXsKLSAgICAvLyBGSVhNRTogZGVsZXRlIGVudHJp
ZXMKKyAgICBtX2NoaWxkUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eTo6RGlkRGVsZXRlRW50cmllcyhjYWxsYmFja0lEKSwgMCk7CiB9CiAKLXZvaWQgV2Vi
T3JpZ2luRGF0YU1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdpbkRhdGFUeXBl
cykKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXI6OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdl
ZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcywgZG91YmxlLCBkb3VibGUsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7Ci0gICAgLy8gRklYTUU6IHN0YXJ0IG9ic2VydmluZyBjaGFuZ2VzCisgICAgLy8g
RklYTUU6IGRlbGV0ZSBlbnRyaWVzIG1vZGlmaWVkIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQg
ZGF0ZQorCisgICAgbV9jaGlsZFByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHk6OkRpZERlbGV0ZUVudHJpZXMoY2FsbGJhY2tJRCksIDApOwogfQogCi12b2lk
IFdlYk9yaWdpbkRhdGFNYW5hZ2VyOjpzdG9wT2JzZXJ2aW5nQ2hhbmdlcyhXS09yaWdpbkRhdGFU
eXBlcykKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXI6OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmln
aW5EYXRhVHlwZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7Ci0gICAgLy8gRklYTUU6IHN0b3Ag
b2JzZXJ2aW5nIGNoYW5nZXMKKyAgICAvLyBGSVhNRTogZGVsZXRlIGVudHJpZXMKKworICAgIG1f
Y2hpbGRQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpE
aWREZWxldGVBbGxFbnRyaWVzKGNhbGxiYWNrSUQpLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEv
V2ViT3JpZ2luRGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2lu
RGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5oCmluZGV4IGNiMWRiZGIuLmE5Y2VmOGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRh
TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJP
cmlnaW5EYXRhTWFuYWdlci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw5ICsyNiw5IEBACiAjaWZuZGVmIFdl
Yk9yaWdpbkRhdGFNYW5hZ2VyX2gKICNkZWZpbmUgV2ViT3JpZ2luRGF0YU1hbmFnZXJfaAogCisj
aW5jbHVkZSAiQ2hpbGRQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIldLT3JpZ2luRGF0YU1hbmFnZXIuaCIKLSNpbmNsdWRlICJXZWJQ
cm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0zNywyMCArMzcsMTggQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiBjbGFzcyBDaGlsZFByb2Nlc3M7CiBzdHJ1Y3QgU2VjdXJpdHlPcmlnaW5EYXRh
OwogCi1jbGFzcyBXZWJPcmlnaW5EYXRhTWFuYWdlciA6IHB1YmxpYyBXZWJQcm9jZXNzU3VwcGxl
bWVudCwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFdlYk9yaWdpbkRhdGFN
YW5hZ2VyIDogcHVibGljIENoaWxkUHJvY2Vzc1N1cHBsZW1lbnQsIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViT3JpZ2luRGF0YU1hbmFn
ZXIpOwogcHVibGljOgogICAgIFdlYk9yaWdpbkRhdGFNYW5hZ2VyKENoaWxkUHJvY2VzcyopOwog
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7CiAKLSAgICB2b2lkIGRl
bGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMpOwotCiBwcml2YXRlOgotICAgIHZvaWQg
Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywgdWludDY0X3QpOwotICAgIHZvaWQgZGVsZXRl
RW50cmllc0Zvck9yaWdpbihXS09yaWdpbkRhdGFUeXBlcywgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJik7Ci0gICAgdm9pZCBzdGFydE9ic2VydmluZ0NoYW5nZXMoV0tPcmlnaW5EYXRhVHlwZXMp
OwotICAgIHZvaWQgc3RvcE9ic2VydmluZ0NoYW5nZXMoV0tPcmlnaW5EYXRhVHlwZXMpOworICAg
IHZvaWQgZ2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7
CisgICAgdm9pZCBkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzLCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRl
bGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcywgZG91Ymxl
IHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcywgdWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24qLCBJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL09yaWdpbkRhdGEv
V2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL09yaWdpbkRhdGEvV2ViT3JpZ2luRGF0YU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggNjk0
ZTYzOC4uYThlN2EzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Pcmln
aW5EYXRhL1dlYk9yaWdpbkRhdGFNYW5hZ2VyLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvT3JpZ2luRGF0YS9XZWJPcmlnaW5EYXRhTWFuYWdlci5tZXNzYWdlcy5p
bgpAQCAtMjIsOCArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJPcmlnaW5EYXRhTWFuYWdlciB7
CiAgICAgdm9pZCBHZXRPcmlnaW5zKHVpbnQzMl90IHR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lE
KQotICAgIHZvaWQgRGVsZXRlRW50cmllc0Zvck9yaWdpbih1aW50MzJfdCB0eXBlcywgV2ViS2l0
OjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luSWRlbnRpZmllcikKLSAgICB2b2lkIERlbGV0ZUFs
bEVudHJpZXModWludDMyX3QgdHlwZXMpCi0gICAgdm9pZCBTdGFydE9ic2VydmluZ0NoYW5nZXMo
dWludDMyX3QgdHlwZXMpCi0gICAgdm9pZCBTdG9wT2JzZXJ2aW5nQ2hhbmdlcyh1aW50MzJfdCB0
eXBlcykKKyAgICB2b2lkIERlbGV0ZUVudHJpZXNGb3JPcmlnaW4odWludDMyX3QgdHlwZXMsIFdl
YktpdDo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisgICAgdm9pZCBEZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXModWludDMy
X3QgdHlwZXMsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIHZvaWQgRGVsZXRlQWxsRW50cmllcyh1aW50MzJfdCB0eXBlcywgdWludDY0
X3QgY2FsbGJhY2tJRCkKIH0K
</data>
<flag name="review"
          id="259709"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>