<?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>211268</bug_id>
          
          <creation_ts>2020-04-30 18:20:02 -0700</creation_ts>
          <short_desc>TriState should be an enum class and use &quot;Indeterminate&quot; instead of &quot;Mixed&quot;</short_desc>
          <delta_ts>2020-04-30 22:39:14 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mifenton</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1647688</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-30 18:20:02 -0700</bug_when>
    <thetext>TriState should be an enum class and use &quot;Indeterminate&quot; instead of &quot;Mixed&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647713</commentid>
    <comment_count>1</comment_count>
      <attachid>398142</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-30 19:17:14 -0700</bug_when>
    <thetext>Created attachment 398142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647719</commentid>
    <comment_count>2</comment_count>
      <attachid>398142</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-04-30 19:38:57 -0700</bug_when>
    <thetext>Comment on attachment 398142
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647722</commentid>
    <comment_count>3</comment_count>
      <attachid>398144</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-30 19:43:35 -0700</bug_when>
    <thetext>Created attachment 398144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647723</commentid>
    <comment_count>4</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-30 19:45:24 -0700</bug_when>
    <thetext>(In reply to Mark Lam from comment #2)
&gt; Comment on attachment 398142 [details]
&gt; Patch
&gt; 
&gt; r=me

Oops, didn&apos;t see this! Will reupload without the r?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647724</commentid>
    <comment_count>5</comment_count>
      <attachid>398145</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-30 19:46:08 -0700</bug_when>
    <thetext>Created attachment 398145
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647732</commentid>
    <comment_count>6</comment_count>
      <attachid>398149</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-30 20:05:13 -0700</bug_when>
    <thetext>Created attachment 398149
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647746</commentid>
    <comment_count>7</comment_count>
      <attachid>398154</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-04-30 20:36:41 -0700</bug_when>
    <thetext>Created attachment 398154
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647767</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-30 22:38:10 -0700</bug_when>
    <thetext>Committed r260984: &lt;https://trac.webkit.org/changeset/260984&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398154.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1647768</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-04-30 22:39:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/62703576&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398142</attachid>
            <date>2020-04-30 19:17:14 -0700</date>
            <delta_ts>2020-04-30 19:43:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211268-20200430191713.patch</filename>
            <type>text/plain</type>
            <size>87656</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YThkOTUxN2RhOTBlZjZjNzMxNWM4YjljOTk1ZDEyMzZiMTEzOWJhLi44ZmYzMDQ1OTM5NWY5YmRj
NjhhMDNkZmMyNjA3MjkwYTI0NmFjOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjAtMDQtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFRyaVN0YXRlIHNob3VsZCBiZSBhbiBlbnVtIGNsYXNzIGFuZCB1
c2UgIkluZGV0ZXJtaW5hdGUiIGluc3RlYWQgb2YgIk1peGVkIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6bGVzc1RoYW5Db25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpsZXNzRXF1YWxDb25zdGFudCBjb25z
dCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6YWJvdmVDb25zdGFudCBj
b25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmJlbG93Q29uc3RhbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjphYm92ZUVxdWFsQ29uc3RhbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpiZWxvd0VxdWFsQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0NjRWYWx1ZTo6ZXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6
OkIzOjpDb25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpCMzo6Q29uc3Q2NFZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDY0VmFsdWU6Omxlc3NFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6YmVsb3dDb25zdGFudCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmJlbG93RXF1YWxDb25zdGFudCBjb25zdCk6
CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0RG91YmxlVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpC
Mzo6Q29uc3REb3VibGVWYWx1ZTo6bm90RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChK
U0M6OkIzOjpDb25zdERvdWJsZVZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFs
Q29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6ZXF1
YWxPclVub3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRW
YWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmVxdWFsQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENv
bnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6bGVzc1Ro
YW5Db25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Omdy
ZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZh
bHVlOjpsZXNzRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFk
ZEJvb2xDb25zdGFudCk6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKiBi
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OlZhbHVlOjplcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QjM6OlZhbHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpn
cmVhdGVyVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpsZXNz
RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6Z3JlYXRlckVx
dWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmJlbG93Q29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OlZhbHVlOjplcXVhbE9yVW5vcmRlcmVkQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWU6OmFzVHJpU3RhdGUgY29uc3QpOgorICAgICAgICAqIGIzL0Iz
VmFsdWUuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRocmVz
aG9sZEZvckpJVCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpDb25zdGFu
dE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJp
bmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKEpT
Qzo6QmluYXJ5T3BOb2RlOjp0cnlGb2xkVG9CcmFuY2gpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1
YWxUb1NpbmdsZUNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1YWxUb1N0cmluZ0lt
cGwpOgorICAgICAgICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbCBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURh
dGFWaWV3R2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZURhdGFWaWV3U2V0KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdEVx
dWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFib3ZlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OmFib3ZlT3JFcXVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpi
ZWxvdyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvd09yRXF1YWwpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6Z3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxl
c3NUaGFuKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbCk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2Rl
QmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6Cisg
ICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpoYXNXcml0
YWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6d3Jp
dGFibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhh
c0NvbmZpZ3VyYWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmli
dXRlczo6Y29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpoYXNFbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVBy
b3BlcnR5QXR0cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxDb2xsYXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNv
bGxhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50
aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsQm9vbGVhbk9wdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpwdXJlU3RyaWN0RXF1YWwpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlVG9Cb29s
ZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKwogMjAyMC0wNC0zMCAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gaW50bEJv
b2xlYW5PcHRpb24gc2hvdWxkIHJldHVybiBUcmlTdGF0ZSBpbnN0ZWFkIG9mIHRha2luZyBhbiBv
dXQgcGFyYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMzZjYWRhMzE2NzJjY2Y3ZGRiN2E3ZjUxMjg1Y2NlOWIzYTAxYzNkNC4u
YjgzYTg3NzNmMjQzNjEzMWEzMzA0NmI3MmNiNzZlNWFiMDczZWE4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMC0wNC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CisKKyAgICAgICAgVHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5k
ZXRlcm1pbmF0ZSIgaW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgd29yZCAiaW5kZXRlcm1pbmF0ZSIgY29tZXMgZnJv
bSBib29zdDo6dHJpYm9vbC4KKyAgICAgICAgQSB0aGlyZCBzdGF0ZSBpcyBnZW5lcmFsbHkgbm90
ICJtaXhlZCIgYnV0IHJhdGhlciB1bmtub3duLgorCisgICAgICAgICogd3RmL1RyaVN0YXRlLmg6
CisKIDIwMjAtMDQtMjkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CiAKICAgICAgICAgW1dpbl0gRGVhZGxvY2sgaW4gV1RGOjpUaHJlYWQ6OmRpZEV4aXQoKSB3aGls
ZSBXZWJLaXROZXR3b3JrUHJvY2Vzcy5leGUgaXMgZXhpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMxMzA4
OWI4ZDdhZThlNDUzNzMzYjNiZWVmNDc5Y2ViMmFlN2ExOGIuLjFmNWE4YzdiMDBkMDA0YjFlYTI2
NjQ5NjAwODQ3NTJlZGNmM2YwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0w
NC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAg
VHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1pbmF0ZSIg
aW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cXVlcnlDb21tYW5kSW5kZXRlcm0pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnF1
ZXJ5Q29tbWFuZFN0YXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Omhhc1N0eWxlKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblVub3Jk
ZXJlZExpc3RTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
bk9yZGVyZWRMaXN0U3RhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1N0eWxlUHJlc2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpzdGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlVGV4dFdyaXRpbmdEaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6c3RhdGVOb25lKToKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXRlU3R5bGVXaXRoQ1NTKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZDo6
c3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kOjp2YWx1ZSBj
b25zdCk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQg
Y29uc3QpOgorCiAyMDIwLTA0LTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhuXSBPcHRpbWl6ZSBMb2NhbEF1dGhlbnRpY2F0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMDk2NWM1ZDAwZTNkNjU4NjBiZjk0NGJjMWZlNDI5M2JlMGFiY2Q5OC4uMGY5NDhjODNh
YmM0NmQ5ODRkZjM1OGEwNDJmZDY2NDBmMzUzNmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMC0wNC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisK
KyAgICAgICAgVHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRl
cm1pbmF0ZSIgaW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGli
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBj
b25zdCk6CisKIDIwMjAtMDQtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2MDkzMik6IEFTU0VSVElPTiBGQUlMRUQ6IG9rIGlu
IHdlYmtpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5IGZvciAzIHRlc3Rz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMDE1ZTI2YWZkMGI3NjliY2RiOGU1Mjkw
OWQxZDM3MmY3MGYzMDRhNS4uYTQyYTZkMzI4NTgyMmFhNjgwZWJkMGE5N2VjMWExMjY4ZTZiZWY5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0
LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBU
cmlTdGF0ZSBzaG91bGQgYmUgYW4gZW51bSBjbGFzcyBhbmQgdXNlICJJbmRldGVybWluYXRlIiBp
bnN0ZWFkIG9mICJNaXhlZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGtpdCk6CisKIDIw
MjAtMDQtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgLVtXZWJWaWV3IHNldENTU0FuaW1hdGlvbnNTdXNwZW5kZWQ6XQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKaW5kZXggNWFjZTM2NDdhYTRkMDc3N2Jj
M2Y2NGVmODE5ZmVhYWNkYjQ3YzY0My4uMmIzMDIxYjFhYjMxYzk3NDBiZTI4YTQzNGE1MzBmYzNl
NmU5ZmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3Bw
CkBAIC0yMDcsMTQgKzIwNywxNCBAQCBWYWx1ZSogQ29uc3QzMlZhbHVlOjppVG9GQ29uc3RhbnQo
UHJvY2VkdXJlJiBwcm9jKSBjb25zdAogVHJpU3RhdGUgQ29uc3QzMlZhbHVlOjplcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQz
MigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0
YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID09IG90aGVy
LT5hc0ludDMyKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6Om5vdEVxdWFsQ29uc3Rh
bnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDMy
KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3Rh
dGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgIT0gb3RoZXIt
PmFzSW50MzIoKSk7CiB9CiAKQEAgLTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0ZSBDb25zdDMyVmFs
dWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8v
IElOVDMyX01BWCA8IHggaXMgYWx3YXlzIGZhbHNlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQz
Ml90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKLSAg
ICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFs
c2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJp
U3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1
cm4gdHJpU3RhdGUobV92YWx1ZSA8IG90aGVyLT5hc0ludDMyKCkpOwogfQogCkBAIC0yMzIsOSAr
MjMyLDkgQEAgVHJpU3RhdGUgQ29uc3QzMlZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQzMl9NSU4gPiB4IGlzIGFsd2F5cyBm
YWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRl
OworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0lu
dDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJp
U3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPiBvdGhl
ci0+YXNJbnQzMigpKTsKIH0KIApAQCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJW
YWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAg
IC8vIElOVDMyX01JTiA8PSB4IGlzIGFsd2F5cyB0cnVlLgogICAgIGlmIChzdGF0aWNfY2FzdDxp
bnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkK
LSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpU
cnVlOwogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRy
aVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0
dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAKQEAgLTI1Miw5
ICsyNTIsOSBAQCBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNv
bnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQzMl9NQVggPj0geCBpcyBhbHdh
eXMgdHJ1ZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV92YWx1ZSkgPT0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJ
bnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRy
aVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90
aGVyLT5hc0ludDMyKCkpOwogfQogCkBAIC0yNjIsOSArMjYyLDkgQEAgVHJpU3RhdGUgQ29uc3Qz
MlZhbHVlOjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAv
LyBVSU5UMzJfTUlOID4geCBpcyBhbHdheXMgZmFsc2UuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVp
bnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWluKCkp
Ci0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6
OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhl
ZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAg
cmV0dXJuIHRyaVN0YXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA+IHN0YXRpY19j
YXN0PHVpbnQzMl90PihvdGhlci0+YXNJbnQzMigpKSk7CiB9CiAKQEAgLTI3Miw5ICsyNzIsOSBA
QCBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6OmJlbG93Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdAogewogICAgIC8vIFVJTlQzMl9NQVggPCB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBp
ZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKLSAg
ICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5k
ZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1f
dmFsdWUpIDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIApA
QCAtMjgyLDkgKzI4Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6YWJvdmVFcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUFYID49IHgg
aXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBU
cnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90
aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0
aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90aGVy
LT5hc0ludDMyKCkpKTsKIH0KIApAQCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJW
YWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAg
ICAvLyBVSU5UMzJfTUlOIDw9IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0
PHVpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWlu
KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0
ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4
ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAg
IHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgPD0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKaW5kZXggOGQ3OTViMDNhMWZlOWNlNjZlODRm
NWIzY2IzOGQ2Y2JmM2VhMWEyYy4uYTQ0MGU3YzczMDNkY2JiM2U0M2MzNWFhNzZkZDU3MzI0MzQy
MzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwCkBA
IC0yMDcsMTQgKzIwNywxNCBAQCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjppVG9GQ29uc3RhbnQoUHJv
Y2VkdXJlJiBwcm9jKSBjb25zdAogVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjplcXVhbENvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgp
KQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID09IG90aGVyLT5h
c0ludDY0KCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkp
Ci0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgIT0gb3RoZXItPmFz
SW50NjQoKSk7CiB9CiAKQEAgLTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6
Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElO
VDY0X01BWCA8IHggaXMgYWx3YXlzIGZhbHNlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2NF90
PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKLSAgICAg
ICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7
CiAgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4g
dHJpU3RhdGUobV92YWx1ZSA8IG90aGVyLT5hc0ludDY0KCkpOwogfQogCkBAIC0yMzIsOSArMjMy
LDkgQEAgVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZh
bHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQ2NF9NSU4gPiB4IGlzIGFsd2F5cyBmYWxz
ZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwor
ICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDY0
KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3Rh
dGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPiBvdGhlci0+
YXNJbnQ2NCgpKTsKIH0KIApAQCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1
ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8v
IElOVDY0X01JTiA8PSB4IGlzIGFsd2F5cyB0cnVlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2
NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKLSAg
ICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVl
OwogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0
YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJu
IHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKQEAgLTI1Miw5ICsy
NTIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0
IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQ2NF9NQVggPj0geCBpcyBhbHdheXMg
dHJ1ZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1l
cmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7
CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2
NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0
YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVy
LT5hc0ludDY0KCkpOwogfQogCkBAIC0yNjIsOSArMjYyLDkgQEAgVHJpU3RhdGUgQ29uc3Q2NFZh
bHVlOjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBV
SU5UNjRfTUlOID4geCBpcyBhbHdheXMgZmFsc2UuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWluKCkpCi0g
ICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZh
bHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRy
aVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0
dXJuIHRyaVN0YXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA+IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihvdGhlci0+YXNJbnQ2NCgpKSk7CiB9CiAKQEAgLTI3Miw5ICsyNzIsOSBAQCBU
cmlTdGF0ZSBDb25zdDY0VmFsdWU6OmJlbG93Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdAogewogICAgIC8vIFVJTlQ2NF9NQVggPCB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAo
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWlu
dDY0X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkKLSAgICAg
ICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFs
dWUpIDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApAQCAt
MjgyLDkgKzI4Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1ZTo6YWJvdmVFcXVhbENvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UNjRfTUFYID49IHggaXMg
YWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVl
VHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVy
LT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0
dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNf
Y2FzdDx1aW50NjRfdD4obV92YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5h
c0ludDY0KCkpKTsKIH0KIApAQCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1
ZTo6YmVsb3dFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAv
LyBVSU5UNjRfTUlOIDw9IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVp
bnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWluKCkp
Ci0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6
VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJl
dHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkgPD0gc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAppbmRleCA1ZGQ3ZDkxMmY3Y2Q5NWM1
OGVhZTdkMGNmNDBhZmIxMDZmNzZmNjc1Li5hYzkxMDAyYTZkYjU4N2IxZGFjY2QyOWVjNDVjMTBi
MmIyZTQ3ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERv
dWJsZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJs
ZVZhbHVlLmNwcApAQCAtMTQxLDUyICsxNDEsNTIgQEAgVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6
Om1vZENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAog
VHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzRG91YmxlKCkpCi0gICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPT0gb3RoZXItPmFzRG91YmxlKCkpOwogfQog
CiBUcmlTdGF0ZSBDb25zdERvdWJsZVZhbHVlOjpub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUoKSkKLSAgICAgICAg
cmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1p
bmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSAhPSBvdGhlci0+YXNEb3VibGUoKSk7
CiB9CiAKIFRyaVN0YXRlIENvbnN0RG91YmxlVmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3Qg
VmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQotICAg
ICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlIDwgb3RoZXItPmFzRG91Ymxl
KCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdERvdWJsZVZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUo
KSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0
ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA+IG90aGVyLT5h
c0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6bGVzc0VxdWFsQ29u
c3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Rv
dWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRy
aVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlIDw9IG90
aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6Z3JlYXRl
ckVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3Ro
ZXItPmhhc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3Zh
bHVlID49IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1
ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsK
ICAgICBpZiAoc3RkOjppc25hbihtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0
ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogCiAgICAgaWYgKCFvdGhlci0+aGFz
RG91YmxlKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4g
VHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgZG91YmxlIG90aGVyVmFsdWUgPSBvdGhlci0+
YXNEb3VibGUoKTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RkOjppc3Vub3JkZXJlZChtX3ZhbHVl
LCBvdGhlclZhbHVlKSB8fCBtX3ZhbHVlID09IG90aGVyVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKaW5kZXggMjI3MGYwMDM5MmZk
ZmU4OGZiOWIzOTU5ZjQwNmJjZWY0YmVkYzZlOC4uMzhjYzQ2MGEzNzU0MDAzNDA1NzU0OTUyZGQw
MzkyN2QzMjQ2OTA5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29u
c3RGbG9hdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZs
b2F0VmFsdWUuY3BwCkBAIC0xMzMsNTIgKzEzMyw1MiBAQCBWYWx1ZSogQ29uc3RGbG9hdFZhbHVl
OjpkaXZDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QK
IFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKLSAgICAgICAgcmV0dXJu
IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsK
ICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA9PSBvdGhlci0+YXNGbG9hdCgpKTsKIH0KIAog
VHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQotICAgICAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlICE9IG90aGVyLT5hc0Zsb2F0KCkpOwogfQog
CiBUcmlTdGF0ZSBDb25zdEZsb2F0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCi0gICAgICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPCBvdGhlci0+YXNGbG9hdCgpKTsKIH0K
IAogVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZh
bHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQotICAgICAg
ICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID4gb3RoZXItPmFzRmxvYXQoKSk7
CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3Qg
VmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCi0gICAg
ICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0
ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzRmxvYXQo
KSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkp
Ci0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPj0gb3RoZXItPmFz
RmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJl
ZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25h
bihtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpUcnVlOwogCiAgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKLSAgICAgICAg
cmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1p
bmF0ZTsKICAgICBmbG9hdCBvdGhlclZhbHVlID0gb3RoZXItPmFzRmxvYXQoKTsKICAgICByZXR1
cm4gdHJpU3RhdGUoc3RkOjppc3Vub3JkZXJlZChtX3ZhbHVlLCBvdGhlclZhbHVlKSB8fCBtX3Zh
bHVlID09IG90aGVyVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVy
ZS5jcHAKaW5kZXggZDY4MmExNDVhMzRmYmJkOGNjZjI2NzMwYTI0NGZkZDZlNDVjYjdmNy4uODEy
Y2E1ZjVkY2IwYTUzZGViZWU5YmMzOTUxODk1ZWFlY2Y3Yzk2NCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBAQCBWYWx1ZSogUHJv
Y2VkdXJlOjphZGRCb29sQ29uc3RhbnQoT3JpZ2luIG9yaWdpbiwgVHJpU3RhdGUgdHJpU3RhdGUp
CiB7CiAgICAgaW50MzJfdCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoICh0cmlTdGF0ZSkgewotICAg
IGNhc2UgRmFsc2VUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpGYWxzZToKICAgICAgICAg
dmFsdWUgPSAwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRydWVUcmlTdGF0ZToKKyAgICBj
YXNlIFRyaVN0YXRlOjpUcnVlOgogICAgICAgICB2YWx1ZSA9IDE7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTWl4ZWRUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmgKaW5kZXggNWNlMGE1MmY3ZmUyM2NiMDk4YjQzMGY0MDUwYWMxMzg1M2E2
NzE0ZS4uOGE2NTliYTU3NjQ4OWQwNjEwMDc1OTE4ZWY1ZjI2MGMwZGM5NTNhZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6
CiAgICAgVmFsdWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0
b20oVmFsdWUqKTsKIAotICAgIC8vIFJldHVybnMgbnVsbCBmb3IgTWl4ZWRUcmlTdGF0ZS4KKyAg
ICAvLyBSZXR1cm5zIG51bGwgZm9yIFRyaVN0YXRlOjpJbmRldGVybWluYXRlLgogICAgIFZhbHVl
KiBhZGRCb29sQ29uc3RhbnQoT3JpZ2luLCBUcmlTdGF0ZSk7CiAKICAgICB2b2lkIHJlc2V0VmFs
dWVPd25lcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVj
ZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3Ro
LmNwcAppbmRleCAzY2NmMjUyNjk5MjczNjgzYzA2ZDM5Y2IzZGUzNzdkOWMxMDJhNmVmLi5iMGY5
NDY3MzFjOTMxNTAzNGRkNGU5OTc2N2RhNTI3ZDhlMDg1NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC0xODk0LDcgKzE4OTQsNyBAQCBw
cml2YXRlOgogICAgICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgICAgIGNhc2UgQmVsb3dFcXVh
bDogewogICAgICAgICAgICAgQ2Fub25pY2FsaXplZENvbXBhcmlzb24gY29tcGFyaXNvbiA9IGNh
bm9uaWNhbGl6ZUNvbXBhcmlzb24obV92YWx1ZSk7Ci0gICAgICAgICAgICBUcmlTdGF0ZSByZXN1
bHQgPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgVHJpU3RhdGUgcmVzdWx0ID0gVHJpU3Rh
dGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBhcmlzb24ub3Bjb2Rl
KSB7CiAgICAgICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9
IGNvbXBhcmlzb24ub3BlcmFuZHNbMV0tPmdyZWF0ZXJUaGFuQ29uc3RhbnQoY29tcGFyaXNvbi5v
cGVyYW5kc1swXSk7CkBAIC0yMTY3LDcgKzIxNjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAg
ICAvLyBUdXJuIHRoaXM6IEJyYW5jaCgwLCB0aGVuLCBlbHNlKQogICAgICAgICAgICAgLy8gSW50
byB0aGlzOiBKdW1wKGVsc2UpCi0gICAgICAgICAgICBpZiAodHJpU3RhdGUgPT0gRmFsc2VUcmlT
dGF0ZSkgeworICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRyaVN0YXRlOjpGYWxzZSkgewog
ICAgICAgICAgICAgICAgIG1fYmxvY2stPnRha2VuKCkuYmxvY2soKS0+cmVtb3ZlUHJlZGVjZXNz
b3IobV9ibG9jayk7CiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhKdW1wKG1f
YmxvY2ssIG1fYmxvY2stPm5vdFRha2VuKCkpOwogICAgICAgICAgICAgICAgIG1fY2hhbmdlZENG
RyA9IHRydWU7CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAv
LyBUdXJuIHRoaXM6IEJyYW5jaChub3QgMCwgdGhlbiwgZWxzZSkKICAgICAgICAgICAgIC8vIElu
dG8gdGhpczogSnVtcCh0aGVuKQotICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRydWVUcmlT
dGF0ZSkgeworICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRyaVN0YXRlOjpUcnVlKSB7CiAg
ICAgICAgICAgICAgICAgbV9ibG9jay0+bm90VGFrZW4oKS5ibG9jaygpLT5yZW1vdmVQcmVkZWNl
c3NvcihtX2Jsb2NrKTsKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEp1bXAo
bV9ibG9jaywgbV9ibG9jay0+dGFrZW4oKSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkQ0ZH
ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCA0ZGQ1Y2I4NjZh
ZDczZTIxYmEyZGE0MzdmM2QwMWM3ZGU1YmE0YzRkLi4xN2EyMmYwZWY2YWIxNTIyMGNlNjE2OGQ3
NjlkZDVlOWFhYmYxZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0z
NzksNTcgKzM3OSw1NyBAQCBWYWx1ZSogVmFsdWU6OnNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBj
b25zdAogCiBUcmlTdGF0ZSBWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bm90RXF1YWxDb25zdGFudChjb25zdCBW
YWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRy
aVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bGVzc1RoYW5Db25z
dGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Cisg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6
Z3JlYXRlclRoYW5Db25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1p
eGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBU
cmlTdGF0ZSBWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAogewot
ICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1p
bmF0ZTsKIH0KIAogVHJpU3RhdGUgVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZh
bHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJp
U3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjphYm92ZUNvbnN0YW50
KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjpiZWxv
d0NvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0
ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZh
bHVlOjphYm92ZUVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAogewotICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0K
IAogVHJpU3RhdGUgVmFsdWU6OmJlbG93RXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50
KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFZhbHVlKiBWYWx1ZTo6aW52ZXJ0
ZWRDb21wYXJlKFByb2NlZHVyZSYgcHJvYykgY29uc3QKQEAgLTUyMCw3ICs1MjAsNyBAQCBUcmlT
dGF0ZSBWYWx1ZTo6YXNUcmlTdGF0ZSgpIGNvbnN0CiAgICAgY2FzZSBDb25zdEZsb2F0OgogICAg
ICAgICByZXR1cm4gdHJpU3RhdGUoYXNGbG9hdCgpICE9IDAuKTsKICAgICBkZWZhdWx0OgotICAg
ICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXgg
MDEwMGJiNDE5ZGQwNTE3YjA5YTc5ZmU2MDlhNWVlODM2MTFhODhjNC4uYzdmNzdkOWVkNDEyMjhh
YTU0YmYxZWVkYjNlODJhM2EyMGM4NWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5o
CkBAIC0yOTAsOCArMjkwLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3Q7
CiAKICAgICBUcmlTdGF0ZSBhc1RyaVN0YXRlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpa2VaZXJv
KCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgpID09IEZhbHNlVHJpU3RhdGU7IH0KLSAgICBi
b29sIGlzTGlrZU5vblplcm8oKSBjb25zdCB7IHJldHVybiBhc1RyaVN0YXRlKCkgPT0gVHJ1ZVRy
aVN0YXRlOyB9CisgICAgYm9vbCBpc0xpa2VaZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0
ZSgpID09IFRyaVN0YXRlOjpGYWxzZTsgfQorICAgIGJvb2wgaXNMaWtlTm9uWmVybygpIGNvbnN0
IHsgcmV0dXJuIGFzVHJpU3RhdGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsgfQogCiAgICAgRWZmZWN0
cyBlZmZlY3RzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAKaW5kZXggZDRhY2FmODkzNzgzMWEwZjFjZGE2NDMxMzM2MGI4MDhjMzlhOGJh
My4uNjk3NGFkYjk1YzFmNWEzMjczYmU5NmZiMTMzYmYyZGY1NTBlNjM0MyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTg1Myw4ICs4NTMsOCBA
QCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIGlmIChVTkxJS0VMWSh2bS5tX3BlckJ5dGVj
b2RlUHJvZmlsZXIpKQogICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5vdGlmeURl
c3RydWN0aW9uKHRoaXMpOwogCi0gICAgaWYgKCF2bS5oZWFwLmlzU2h1dHRpbmdEb3duKCkgJiYg
dW5saW5rZWRDb2RlQmxvY2soKS0+ZGlkT3B0aW1pemUoKSA9PSBNaXhlZFRyaVN0YXRlKQotICAg
ICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT5zZXREaWRPcHRpbWl6ZShGYWxzZVRyaVN0YXRlKTsK
KyAgICBpZiAoIXZtLmhlYXAuaXNTaHV0dGluZ0Rvd24oKSAmJiB1bmxpbmtlZENvZGVCbG9jaygp
LT5kaWRPcHRpbWl6ZSgpID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICB1bmxp
bmtlZENvZGVCbG9jaygpLT5zZXREaWRPcHRpbWl6ZShUcmlTdGF0ZTo6RmFsc2UpOwogCiAjaWYg
RU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwpA
QCAtMzM4NSwxMSArMzM4NSwxMSBAQCBPcHRpb25hbDxCeXRlY29kZUluZGV4PiBDb2RlQmxvY2s6
OmJ5dGVjb2RlSW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4CiBpbnQzMl90IENv
ZGVCbG9jazo6dGhyZXNob2xkRm9ySklUKGludDMyX3QgdGhyZXNob2xkKQogewogICAgIHN3aXRj
aCAodW5saW5rZWRDb2RlQmxvY2soKS0+ZGlkT3B0aW1pemUoKSkgewotICAgIGNhc2UgTWl4ZWRU
cmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOgogICAgICAgICByZXR1
cm4gdGhyZXNob2xkOwotICAgIGNhc2UgRmFsc2VUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRl
OjpGYWxzZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9sZCAqIDQ7Ci0gICAgY2FzZSBUcnVlVHJp
U3RhdGU6CisgICAgY2FzZSBUcmlTdGF0ZTo6VHJ1ZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9s
ZCAvIDI7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTRk
YTU3ZGFiNjljYTI2MWFlZmRjZWI5MzhmZmEwZjRmZjAzNzkxNS4uNDhjYWI0MjJiMTU2YzFhOWM0
ODAxNDIxMGNlZGVjODY1NmJiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02OSw3ICs2OSw3IEBAIFVubGlu
a2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5mby5kZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2V2YWxDb250
ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5ldmFsQ29udGV4dFR5cGUoKSkpCiAg
ICAgLCBtX2NvZGVUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkpCi0gICAgLCBt
X2RpZE9wdGltaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0YXRlKSkKKyAgICAs
IG1fZGlkT3B0aW1pemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlKSkKICAgICAsIG1fYWdlKDApCiAgICAgLCBtX2hhc0NoZWNrcG9pbnRzKGZhbHNlKQogICAg
ICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1vZGUoKSkKQEAgLTc4LDcgKzc4LDcgQEAgVW5saW5r
ZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIENvZGVUeXBlIGNvZGUKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBBU1NFUlQo
bV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpKTsKLSAgICBBU1NF
UlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkp
OworICAgIEFTU0VSVChtX2RpZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihUcmlT
dGF0ZTo6SW5kZXRlcm1pbmF0ZSkpOwogICAgIGlmIChpbmZvLm5lZWRzQ2xhc3NGaWVsZEluaXRp
YWxpemVyKCkgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcykgewogICAgICAgICBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsKICAgICAgICAg
bV9yYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUuY3BwCmluZGV4IDBiZjMwMjhkODEwYzYxNmViMDdhZGE2NmM1N2RhOTI5OWUxYmJjY2Uu
LjViOThhNTQ2ZjE5MmIyZDhmMDYzMGEzYzcxODVjNTFmZDE1MTVhNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4
ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRv
CiAgICAgICAgIGF1dG8gbWFya0lmUHJvZml0YWJsZSA9IFsmXSAoV3JpdGVCYXJyaWVyPFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2s+JiB1bmxpbmtlZENvZGVCbG9jaykgewogICAgICAgICAgICAg
aWYgKCF1bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPmRpZE9wdGltaXplKCkgPT0gVHJ1ZVRyaVN0YXRl
KQorICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5kaWRPcHRpbWl6ZSgpID09IFRy
aVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHVubGlua2VkQ29k
ZUJsb2NrKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5hZ2UoKSA8
IFVubGlua2VkQ29kZUJsb2NrOjptYXhBZ2UpCiAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmQodW5saW5rZWRDb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDEzZDRiYTc0ODEyMTExNWE3OWRhOTI0
MmU2ZjIxOGFjYmU2Y2E2ODUuLjMxMjQ5MmFjYWI4NTFkMjlhNWFhMzQ0MWI4YzQ5ZjViZTg2Y2Rm
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKQEAgLTEwMywxNSArMTAzLDE1IEBAIHZvaWQgQ29uc3RhbnROb2RlOjplbWl0
Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwK
ICAgICBUcmlTdGF0ZSB2YWx1ZSA9IGpzVmFsdWUoZ2VuZXJhdG9yKS5wdXJlVG9Cb29sZWFuKCk7
CiAKICAgICBpZiAoVU5MSUtFTFkobmVlZHNEZWJ1Z0hvb2soKSkpIHsKLSAgICAgICAgaWYgKHZh
bHVlICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGlmICh2YWx1ZSAhPSBUcmlTdGF0ZTo6SW5k
ZXRlcm1pbmF0ZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwog
ICAgIH0KIAotICAgIGlmICh2YWx1ZSA9PSBNaXhlZFRyaVN0YXRlKQorICAgIGlmICh2YWx1ZSA9
PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgRXhwcmVzc2lvbk5vZGU6OmVtaXRC
eXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChnZW5lcmF0b3IsIHRydWVUYXJnZXQsIGZhbHNlVGFy
Z2V0LCBmYWxsVGhyb3VnaE1vZGUpOwotICAgIGVsc2UgaWYgKHZhbHVlID09IFRydWVUcmlTdGF0
ZSAmJiBmYWxsVGhyb3VnaE1vZGUgPT0gRmFsbFRocm91Z2hNZWFuc0ZhbHNlKQorICAgIGVsc2Ug
aWYgKHZhbHVlID09IFRyaVN0YXRlOjpUcnVlICYmIGZhbGxUaHJvdWdoTW9kZSA9PSBGYWxsVGhy
b3VnaE1lYW5zRmFsc2UpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcCh0cnVlVGFyZ2V0KTsK
LSAgICBlbHNlIGlmICh2YWx1ZSA9PSBGYWxzZVRyaVN0YXRlICYmIGZhbGxUaHJvdWdoTW9kZSA9
PSBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSkKKyAgICBlbHNlIGlmICh2YWx1ZSA9PSBUcmlTdGF0ZTo6
RmFsc2UgJiYgZmFsbFRocm91Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVhbnNUcnVlKQogICAgICAg
ICBnZW5lcmF0b3IuZW1pdEp1bXAoZmFsc2VUYXJnZXQpOwogCiAgICAgLy8gQWxsIG90aGVyIGNh
c2VzIGFyZSB1bmNvbmRpdGlvbmFsIGZhbGwtdGhyb3VnaHMsIGxpa2UgImlmICh0cnVlKSIuCkBA
IC0yNDc2LDEzICsyNDc2LDEzIEBAIHZvaWQgQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGVJbkNv
bmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICB0cnlGb2xk
VG9CcmFuY2goZ2VuZXJhdG9yLCBicmFuY2hDb25kaXRpb24sIGJyYW5jaEV4cHJlc3Npb24pOwog
CiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRGVidWdIb29rKCkpKSB7Ci0gICAgICAgIGlmIChicmFu
Y2hDb25kaXRpb24gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgaWYgKGJyYW5jaENvbmRpdGlv
biAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKHRoaXMpOwogICAgIH0KIAotICAgIGlmIChicmFuY2hDb25kaXRpb24gPT0gTWl4
ZWRUcmlTdGF0ZSkKKyAgICBpZiAoYnJhbmNoQ29uZGl0aW9uID09IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKQogICAgICAgICBFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25D
b250ZXh0KGdlbmVyYXRvciwgdHJ1ZVRhcmdldCwgZmFsc2VUYXJnZXQsIGZhbGxUaHJvdWdoTW9k
ZSk7Ci0gICAgZWxzZSBpZiAoYnJhbmNoQ29uZGl0aW9uID09IFRydWVUcmlTdGF0ZSkKKyAgICBl
bHNlIGlmIChicmFuY2hDb25kaXRpb24gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgIGdlbmVy
YXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNzaW9uLCB0cnVlVGFy
Z2V0LCBmYWxzZVRhcmdldCwgZmFsbFRocm91Z2hNb2RlKTsKICAgICBlbHNlCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNzaW9uLCBmYWxz
ZVRhcmdldCwgdHJ1ZVRhcmdldCwgaW52ZXJ0KGZhbGxUaHJvdWdoTW9kZSkpOwpAQCAtMjUwNCw3
ICsyNTA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbkZvbGRUb0JyYW5jaChPcGNvZGVJRCBv
cGNvZGVJRCwgRXhwcmVzc2lvbk5vZGUqIGJyYW5jaEV4cHIKIAogdm9pZCBCaW5hcnlPcE5vZGU6
OnRyeUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBUcmlTdGF0ZSYg
YnJhbmNoQ29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSomIGJyYW5jaEV4cHJlc3Npb24pCiB7Ci0g
ICAgYnJhbmNoQ29uZGl0aW9uID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICBicmFuY2hDb25kaXRpb24g
PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBicmFuY2hFeHByZXNzaW9uID0gMDsKIAog
ICAgIENvbnN0YW50Tm9kZSogY29uc3RhbnQgPSAwOwpAQCAtMjUyNyw5ICsyNTI3LDkgQEAgdm9p
ZCBCaW5hcnlPcE5vZGU6OnRyeUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBUcmlTdGF0ZSYgYnJhbmMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG9wY29kZUlE
ID09IG9wX2VxIHx8IG9wY29kZUlEID09IG9wX3N0cmljdGVxKQotICAgICAgICBicmFuY2hDb25k
aXRpb24gPSB0cmlTdGF0ZSh2YWx1ZS5wdXJlVG9Cb29sZWFuKCkpOworICAgICAgICBicmFuY2hD
b25kaXRpb24gPSB0cmlTdGF0ZSh2YWx1ZS5wdXJlVG9Cb29sZWFuKCkgIT0gVHJpU3RhdGU6OkZh
bHNlKTsKICAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXEgfHwgb3Bjb2RlSUQgPT0gb3Bf
bnN0cmljdGVxKQotICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSghdmFsdWUucHVy
ZVRvQm9vbGVhbigpKTsKKyAgICAgICAgYnJhbmNoQ29uZGl0aW9uID0gdHJpU3RhdGUodmFsdWUu
cHVyZVRvQm9vbGVhbigpID09IFRyaVN0YXRlOjpGYWxzZSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJp
bmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKaW5kZXggMWEzZWUzNTAxNGZhNDg0YmFiN2UzNjg4MGIyNDI0YzlhMzRiM2Yx
ZS4uOTBlMTMzMDA1ZTgzNTZiZjU1M2MwMDViM2Q0YWE0N2QxNzg2ZmE0ZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM0ODcsMjIg
KzM0ODcsMjIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2Rl
KiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICAgICAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBU
cmlTdGF0ZSBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICBUcmlT
dGF0ZSBpc0xpdHRsZUVuZGlhbiA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgICAgICAg
ICAgTm9kZSogbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGJ5
dGVTaXplID4gMSkgewogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA8IDMpCi0gICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gRmFsc2VUcmlT
dGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBUcmlTdGF0ZTo6RmFs
c2U7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVu
ZGlhbkNoaWxkID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygy
LCByZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAobGl0dGxlRW5kaWFu
Q2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUg
Y29uc3RhbnQgPSBsaXR0bGVFbmRpYW5DaGlsZC0+Y29uc3RhbnQoKS0+dmFsdWUoKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlzTGl0dGxlRW5kaWFuID0gY29uc3RhbnQucHVyZVRvQm9vbGVhbigpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBNaXhlZFRyaVN0YXRl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBUcmlT
dGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0
dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxl
RW5kaWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxl
RW5kaWFuID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCkBAIC0zNTcyLDIyICszNTcyLDIyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmlu
c2ljCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRy
aVN0YXRlOworICAgICAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4gPSBUcmlTdGF0ZTo6
SW5kZXRlcm1pbmF0ZTsKICAgICAgICAgICAgIE5vZGUqIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVs
bHB0cjsKICAgICAgICAgICAgIGlmIChieXRlU2l6ZSA+IDEpIHsKICAgICAgICAgICAgICAgICBp
ZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCA0KQotICAgICAgICAgICAgICAgICAgICBp
c0xpdHRsZUVuZGlhbiA9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgICAgIGlzTGl0
dGxlRW5kaWFuID0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJG
b3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMywgcmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGxpdHRsZUVuZGlhbkNoaWxkLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQtPmNv
bnN0YW50KCktPnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGNvbnN0YW50
LnB1cmVUb0Jvb2xlYW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNMaXR0
bGVFbmRpYW4gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaXNMaXR0bGVFbmRpYW4gIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKaW5kZXgg
NjEwZDdkMjBlZjY1MzVmN2E4ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYy4uNDU3OTBiZjgwMzkxNjRh
MTRiN2MxMjVkYWE2MTFlNjA4OTc2M2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCkBAIC0xNzAsMTcgKzE3
MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHRlcm1pbmFsID0gYmxv
Y2stPnRlcm1pbmFsKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbC0+Y2hpbGQx
KCktPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVl
KiB2YWx1ZSA9IHRlcm1pbmFsLT5jaGlsZDEoKS0+Y29uc3RhbnQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFRyaVN0YXRlIGZvdW5kID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFRyaVN0YXRlIGZvdW5kID0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAg
ICAgICAgICAgICAgQmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgPSAwOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgpOyBmb3VuZCA9PSBG
YWxzZVRyaVN0YXRlICYmIGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGRhdGEtPmNhc2VzLnNpemUoKTsgZm91bmQgPT0gVHJpU3RhdGU6OkZhbHNlICYm
IGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGRhdGEtPmNhc2Vz
W2ldLnZhbHVlLnN0cmljdEVxdWFsKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZm91bmQgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChmb3VuZCA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0QmxvY2sgPSBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2s7CiAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGZvdW5kID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZv
dW5kID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQg
PT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJs
b2NrID0gZGF0YS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgICAgICAgICAgICAgICAgICBB
U1NFUlQodGFyZ2V0QmxvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCmluZGV4IDRlZDc1ODRmMjQ5NzIy
Y2FmOTE4NjlhYzMwNWJkMzUwNzY3YTNlNzUuLjAxZjQyZjhiNGM1NGJiODlhOGJhNTUzNmQxODIy
Y2RkNGVjNDI1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6
eUpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFs
dWUuY3BwCkBAIC02MiwxNSArNjIsMTUgQEAgSlNWYWx1ZSBMYXp5SlNWYWx1ZTo6Z2V0VmFsdWUo
Vk0mIHZtKSBjb25zdAogc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TaW5nbGVDaGFyYWN0ZXIoSlNW
YWx1ZSB2YWx1ZSwgVUNoYXIgY2hhcmFjdGVyKQogewogICAgIGlmICghdmFsdWUuaXNTdHJpbmco
KSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0
ZTo6RmFsc2U7CiAgICAgCiAgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0gYXNTdHJpbmcodmFsdWUp
OwogICAgIGlmIChqc1N0cmluZy0+bGVuZ3RoKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIEZhbHNl
VHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgCiAgICAgY29u
c3QgU3RyaW5nSW1wbCogc3RyaW5nID0ganNTdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOwogICAg
IGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0
dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIAogICAgIHJldHVybiB0cmlTdGF0ZShz
dHJpbmctPmF0KDApID09IGNoYXJhY3Rlcik7CiB9CkBAIC03OCwxMiArNzgsMTIgQEAgc3RhdGlj
IFRyaVN0YXRlIGVxdWFsVG9TaW5nbGVDaGFyYWN0ZXIoSlNWYWx1ZSB2YWx1ZSwgVUNoYXIgY2hh
cmFjdGVyKQogc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TdHJpbmdJbXBsKEpTVmFsdWUgdmFsdWUs
IFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKQot
ICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpG
YWxzZTsKICAgICAKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSk7CiAg
ICAgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nID0ganNTdHJpbmctPnRyeUdldFZhbHVlSW1wbCgp
OwogICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIAogICAgIHJldHVybiB0cmlT
dGF0ZShXVEY6OmVxdWFsKHN0cmluZ0ltcGwsIHN0cmluZykpOwogfQpAQCAtMTQyLDE4ICsxNDIs
MTggQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVl
JiBvdGhlcikgY29uc3QKICAgICAgICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKICAgICAgICAg
Y2FzZSBLbm93blZhbHVlOiB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKCktPnZhbHVlKCkgfHwg
IW90aGVyLnZhbHVlKCktPnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCkt
PnZhbHVlKCkgPT0gb3RoZXIudmFsdWUoKS0+dmFsdWUoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNl
VHJpU3RhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZhbHVlKCkgPT0gb3Ro
ZXIudmFsdWUoKS0+dmFsdWUoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCh2YWx1ZSgpLT52YWx1
ZSgpLCBvdGhlci52YWx1ZSgpLT52YWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNp
bmdsZUNoYXJhY3RlclN0cmluZzogewogICAgICAgICAgICAgaWYgKCF2YWx1ZSgpLT52YWx1ZSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1Npbmds
ZUNoYXJhY3Rlcih2YWx1ZSgpLT52YWx1ZSgpLCBvdGhlci5jaGFyYWN0ZXIoKSk7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6CiAgICAgICAgIGNhc2UgTmV3U3RyaW5n
SW1wbDogewogICAgICAgICAgICAgaWYgKCF2YWx1ZSgpLT52YWx1ZSgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgICAgIHJldHVybiBUcmlTdGF0
ZTo6RmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1N0cmluZ0ltcGwodmFsdWUoKS0+
dmFsdWUoKSwgb3RoZXIuc3RyaW5nSW1wbCgpKTsKICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
NjUsNyArMTY1LDcgQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IExh
enlKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6CiAg
ICAgICAgIGNhc2UgTmV3U3RyaW5nSW1wbDoKICAgICAgICAgICAgIGlmIChvdGhlci5zdHJpbmdJ
bXBsKCktPmxlbmd0aCgpICE9IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3Rh
dGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICAgICAgICAg
IHJldHVybiB0cmlTdGF0ZShvdGhlci5zdHJpbmdJbXBsKCktPmF0KDApID09IGNoYXJhY3Rlcigp
KTsKICAgICAgICAgY2FzZSBLbm93blZhbHVlOgogICAgICAgICAgICAgcmV0dXJuIG90aGVyLnN0
cmljdEVxdWFsKCp0aGlzKTsKQEAgLTE4NCw3ICsxODQsNyBAQCBUcmlTdGF0ZSBMYXp5SlNWYWx1
ZTo6c3RyaWN0RXF1YWwoY29uc3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogfQogCiB1aW50
cHRyX3QgTGF6eUpTVmFsdWU6OnN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQga2luZCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCmluZGV4IDk3YWYyZTJjZGJmODZmYjY3NmQ0YmQxYjhmMDdhYjA5ZWYxZDIzMWMuLmVmYmRj
OTA4OWU2NzlhMTQ2Mjg3NDA2ZWIzYzZmMjJmNzc4ZjJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTExOCw5ICs1MTE4
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDE2VG8zMih0MiwgdDIpOwogICAgICAgICAg
ICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBG
YWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09
IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkxvYWQo
KTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVU
cmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09
IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9h
ZCgpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTUxMzcsOSAr
NTEzNyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIGNhc2UgNDogewogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihiYXNlSW5kZXgs
IHQyKTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNl
VHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJp
U3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDMyKHQyKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJp
U3RhdGUpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAg
ICAgICAgICBhdXRvIGlzTGl0dGxlRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb25aZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Mik7CkBAIC01MTczLDkgKzUxNzMs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIG1faml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHJlc3VsdEZQUiwgcmVzdWx0RlBS
KTsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0
bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0
dGxlRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1p
dEJpZ0VuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7
CkBAIC01MjAwLDkgKzUyMDAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHQyLCByZXN1
bHRGUFIpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5p
c0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVt
aXRMaXR0bGVFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAg
ICBlbWl0QmlnRW5kaWFuQ29kZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BS
UmVnKTsKQEAgLTUzMTIsOSArNTMxMiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih0MywgYmFzZUlu
ZGV4KTsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNM
aXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5p
c0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVt
aXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5p
c0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1p
dExpdHRsZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJl
Zyk7CkBAIC01MzM4LDkgKzUzMzgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQodDMsIGJhc2VJbmRl
eCk7CiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNM
aXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0
QmlnRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNM
aXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRM
aXR0bGVFbmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcp
OwpAQCAtNTM3Miw5ICs1MzcyLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTE2KHQzLCBiYXNlSW5kZXgp
OwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJp
Z0VuZGlhbkNvZGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0
dGxlRW5kaWFuQ29kZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsK
QEAgLTU0MDAsOSArNTQwMCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih0MywgYmFzZUluZGV4KTsK
ICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdF
bmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlh
biA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRs
ZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTFh
MTZmYjlkNWMwNzJiNzUwMjU3YzAxZWVlMjhhMDhhZjI0MDIxMi4uMzgxMjNhZTE3NjQzZDVlNmEw
MTJkYWZiMjgxODBjOTkwZmNhMjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTQxOTAsOSArMTQxOTAsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKICAgICAgICAgICAgICAgICB9Owog
Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0
ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6
RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRCaWdFbmRpYW5Mb2FkKCkp
OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
VHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRMaXR0bGVF
bmRpYW5Mb2FkKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAg
c2V0SW50MzIoZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwg
ZW1pdExpdHRsZUVuZGlhbkxvYWQsIGVtaXRCaWdFbmRpYW5Mb2FkKSk7CkBAIC0xNDIwMiw5ICsx
NDIwMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIDQ6IHsKICAgICAgICAgICAgICAg
ICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291dC5sb2FkMzIocG9pbnRlcik7CiAKLSAgICAgICAg
ICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAg
ICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAg
ICAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBieXRlU3dhcDMyKGxvYWRlZFZhbHVlKTsK
LSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJp
U3RhdGUpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZW1p
dExpdHRsZUVuZGlhbkNvZGUgPSBbJl0gewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGxvYWRlZFZhbHVlOwogICAgICAgICAgICAgICAgICAgICB9OwpAQCAtMTQyNDcsOSArMTQyNDcs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKICAg
ICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1p
dExpdHRsZUVuZGlhbkNvZGUoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAg
ICBzZXREb3VibGUoZW1pdEJpZ0VuZGlhbkNvZGUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0Jy
YW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5D
b2RlKSk7CkBAIC0xNDI2Nyw5ICsxNDI2Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtX291dC5iaXRDYXN0KGxvYWRlZFZhbHVlLCBEb3VibGUpOwogICAgICAgICAg
ICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
VHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0TGl0dGxl
RW5kaWFuQ29kZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHNldERv
dWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgIHNldERvdWJsZShlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlz
TGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpKTsK
QEAgLTE0MzM4LDkgKzE0MzM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChk
YXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAg
ICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5k
aWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwpAQCAtMTQzNTYs
OSArMTQzNTYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0
bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRC
aWdFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVu
ZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdExp
dHRsZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0bGVFbmRpYW4sIGVtaXRM
aXR0bGVFbmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFuQ29kZSk7CkBAIC0xNDM4OSw5ICsxNDM4OSw5
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9
PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNv
ZGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRy
dWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFu
Q29kZSgpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZW1pdENv
ZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlh
bkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKTsKQEAgLTE0NDEyLDkgKzE0NDEyLDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAg
fTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJp
U3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3Rh
dGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRl
KQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3Rh
dGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBlbWl0Q29kZUJhc2VkT25F
bmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1p
dEJpZ0VuZGlhbkNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPdXRwdXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCmlu
ZGV4IGQ1N2ZiMWVlYTgwNDRhMzRiNzkxNzY4YTkwOTc2OTg5OThhYzMzOTIuLjZjNjA5YjRhNzQ0
NThlYWRiMDllOTM5NDNmMTZmNGI1YWJjYzM4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTE91dHB1dC5jcHAKQEAgLTQ5OCw4MCArNDk4LDgwIEBAIExWYWx1ZSBPdXRwdXQ6OmJhc2VJ
bmRleChMVmFsdWUgYmFzZSwgTFZhbHVlIGluZGV4LCBTY2FsZSBzY2FsZSwgcHRyZGlmZl90IG9m
ZnNlCiBMVmFsdWUgT3V0cHV0OjplcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewog
ICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlm
IChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1
bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1
ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0Ojpub3RF
cXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9
IGxlZnQtPm5vdEVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRU
cmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRl
KTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBy
ZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFsLCBvcmlnaW4o
KSwgbGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0OjphYm92ZShMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmFib3ZlQ29uc3Rh
bnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0
dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3Vs
dCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogfQogCiBM
VmFsdWUgT3V0cHV0OjphYm92ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsK
ICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5hYm92ZUVxdWFsQ29uc3RhbnQocmlnaHQpOwot
ICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9v
bChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0
ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJv
YywgQjM6OkFib3ZlRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiB9CiAKIExWYWx1ZSBP
dXRwdXQ6OmJlbG93KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUg
cmVzdWx0ID0gbGVmdC0+YmVsb3dDb25zdGFudChyaWdodCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBN
aXhlZFRyaVN0YXRlKQotICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcnVlVHJp
U3RhdGUpOworICAgIGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAg
ICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKTsKICAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3csIG9yaWdp
bigpLCBsZWZ0LCByaWdodCk7CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmJlbG93T3JFcXVhbChMVmFs
dWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmJl
bG93RXF1YWxDb25zdGFudChyaWdodCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBNaXhlZFRyaVN0YXRl
KQotICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcnVlVHJpU3RhdGUpOworICAg
IGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAgICAgIHJldHVybiBj
b25zdEJvb2wocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKTsKICAgICByZXR1cm4gbV9ibG9jay0+
YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3dFcXVhbCwgb3JpZ2luKCksIGxl
ZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6Z3JlYXRlclRoYW4oTFZhbHVlIGxlZnQs
IExWYWx1ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5ncmVhdGVyVGhh
bkNvbnN0YW50KHJpZ2h0KTsKLSAgICBpZiAocmVzdWx0ICE9IE1peGVkVHJpU3RhdGUpCi0gICAg
ICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRydWVUcmlTdGF0ZSk7CisgICAgaWYgKHJl
c3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN0Qm9v
bChyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpOwogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmRO
ZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+Z3JlYXRlckVx
dWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAg
ICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAo
cmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RC
b29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVu
ZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGxlZnQs
IHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6bGVzc1RoYW4oTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5sZXNzVGhhbkNvbnN0YW50
KHJpZ2h0KTsKLSAgICBpZiAocmVzdWx0ICE9IE1peGVkVHJpU3RhdGUpCi0gICAgICAgIHJldHVy
biBjb25zdEJvb2wocmVzdWx0ID09IFRydWVUcmlTdGF0ZSk7CisgICAgaWYgKHJlc3VsdCAhPSBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQg
PT0gVHJpU3RhdGU6OlRydWUpOwogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZh
bHVlPihtX3Byb2MsIEIzOjpMZXNzVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAog
TFZhbHVlIE91dHB1dDo6bGVzc1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQp
CiB7CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+bGVzc0VxdWFsQ29uc3RhbnQocmlnaHQp
OwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0
Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRl
OjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlT
dGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6Okxlc3NFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMmUxNzI1NGQ2YzQ3
MWJiYmRhYmNiMjY1Mzk5ZDFiYmJlZDE3N2E2NS4uMDA2OGE3ZDc0ODU0ZjJmOWI2NzcwMzFiOGE1
ZmFiYzhlYTU3NGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCkBAIC0xNzE3LDcgKzE3MTcsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlYwogICAg
ICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJQZXJmb3JtaW5nIE9TUiAi
LCBjb2RlQmxvY2ssICIgLT4gIiwgb3B0aW1pemVkQ29kZUJsb2NrKTsKIAogICAgICAgICBjb2Rl
QmxvY2stPm9wdGltaXplU29vbigpOwotICAgICAgICBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJs
b2NrKCktPnNldERpZE9wdGltaXplKFRydWVUcmlTdGF0ZSk7CisgICAgICAgIGNvZGVCbG9jay0+
dW5saW5rZWRDb2RlQmxvY2soKS0+c2V0RGlkT3B0aW1pemUoVHJpU3RhdGU6OlRydWUpOwogICAg
ICAgICB2b2lkKiB0YXJnZXRQQyA9IHZtLmdldENUSVN0dWIoREZHOjpvc3JFbnRyeVRodW5rR2Vu
ZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgdGFyZ2V0UEMgPSBy
ZXRhZ0NvZGVQdHIodGFyZ2V0UEMsIEpJVFRodW5rUHRyVGFnLCBiaXR3aXNlX2Nhc3Q8UHRyVGFn
PihjYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh0YXJnZXRQQywgZGF0
YUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5j
cHAKaW5kZXggZDExNTcxZmViYTJhZWZmYjJmMmFlODVjNWQ4YmY0MmZiMjk5NDc3Zi4uMWY5Zjk0
YTRkYjY1M2RlNjBjZjYzMWIwYjQyYjMwNTdlOGYwYmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMjA2MCw3ICsyMDYwLDcgQEAgQUxX
QVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYg
ZGVjb2RlciwgU3RydWN0dXJlKgogICAgICwgbV9ldmFsQ29udGV4dFR5cGUoY2FjaGVkQ29kZUJs
b2NrLmV2YWxDb250ZXh0VHlwZSgpKQogICAgICwgbV9jb2RlVHlwZShjYWNoZWRDb2RlQmxvY2su
Y29kZVR5cGUoKSkKIAotICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TWl4ZWRUcmlTdGF0ZSkpCisgICAgLCBtX2RpZE9wdGltaXplKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkpCiAgICAgLCBtX2FnZSgwKQogICAgICwgbV9oYXND
aGVja3BvaW50cyhjYWNoZWRDb2RlQmxvY2suaGFzQ2hlY2twb2ludHMoKSkKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0
ZXMuaAppbmRleCAzNTAyYWEyZTk1MjE3YzIzMTFiNmMwOWIzNGFjNjJhZWUzM2U0MTgyLi5jMGJj
NzNlMDdhMTU0NzA3ODJlODJkODcwMDgzNjg3YmIwYzIzNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApA
QCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUgPT0g
MCwgIkZhbHNlVHJpU3RhdGUgaXMgMC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlTdGF0
ZSA9PSAxLCAiVHJ1ZVRyaVN0YXRlIGlzIDEuIik7Ci0gICAgc3RhdGljX2Fzc2VydChNaXhlZFRy
aVN0YXRlID09IDIsICJNaXhlZFRyaVN0YXRlIGlzIDIuIik7CisgICAgc3RhdGljX2Fzc2VydCgh
c3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkZhbHNlKSwgIlRyaVN0YXRlOjpGYWxzZSBp
cyAwLiIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6
OlRydWUpID09IDEsICJUcmlTdGF0ZTo6VHJ1ZSBpcyAxLiIpOworICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpID09IDIsICJUcmlT
dGF0ZTo6SW5kZXRlcm1pbmF0ZSBpcyAyLiIpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBDb25maWd1cmFibGVTaGlmdCA9IDA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBFbnVtZXJhYmxlU2hpZnQgPSAyOwpAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKIAogICAg
IERlZmluZVByb3BlcnR5QXR0cmlidXRlcygpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVzKAotICAg
ICAgICAgICAgKE1peGVkVHJpU3RhdGUgPDwgQ29uZmlndXJhYmxlU2hpZnQpCi0gICAgICAgICAg
ICB8IChNaXhlZFRyaVN0YXRlIDw8IEVudW1lcmFibGVTaGlmdCkKLSAgICAgICAgICAgIHwgKE1p
eGVkVHJpU3RhdGUgPDwgV3JpdGFibGVTaGlmdCkKLSAgICAgICAgICAgIHwgKDAgPDwgVmFsdWVT
aGlmdCkKLSAgICAgICAgICAgIHwgKDAgPDwgR2V0U2hpZnQpCi0gICAgICAgICAgICB8ICgwIDw8
IFNldFNoaWZ0KSkKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6
SW5kZXRlcm1pbmF0ZSkgPDwgQ29uZmlndXJhYmxlU2hpZnQpCisgICAgICAgICAgICB8IChzdGF0
aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgPDwgRW51bWVyYWJsZVNo
aWZ0KQorICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkluZGV0
ZXJtaW5hdGUpIDw8IFdyaXRhYmxlU2hpZnQpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1
aW50OF90PihUcmlTdGF0ZTo6RmFsc2UpIDw8IFZhbHVlU2hpZnQpCisgICAgICAgICAgICB8IChz
dGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6RmFsc2UpIDw8IEdldFNoaWZ0KQorICAgICAg
ICAgICAgfCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkZhbHNlKSA8PCBTZXRTaGlm
dCkpCiAgICAgewogICAgIH0KIApAQCAtOTYsNjAgKzk2LDYwIEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaGFzV3JpdGFibGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlT
dGF0ZShXcml0YWJsZVNoaWZ0KSAhPSBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gZXh0
cmFjdFRyaVN0YXRlKFdyaXRhYmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwog
ICAgIH0KIAogICAgIE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghaGFzV3JpdGFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Ci0gICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVTaGlmdCkgPT0gVHJ1ZVRy
aVN0YXRlOworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRhYmxlU2hpZnQpID09
IFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAogICAgIGJvb2wgaGFzQ29uZmlndXJhYmxlKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hp
ZnQpICE9IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29u
ZmlndXJhYmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0KIAogICAg
IE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAo
IWhhc0NvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAg
ICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgPT0gVHJ1ZVRy
aVN0YXRlOworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZpZ3VyYWJsZVNoaWZ0
KSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9CiAKICAgICBib29sIGhhc0VudW1lcmFibGUoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hp
ZnQpICE9IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51
bWVyYWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICB9CiAKICAgICBP
cHRpb25hbDxib29sPiBlbnVtZXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFz
RW51bWVyYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAg
cmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRydWVUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRyaVN0
YXRlOjpUcnVlOwogICAgIH0KIAogICAgIHZvaWQgc2V0V3JpdGFibGUoYm9vbCB2YWx1ZSkKICAg
ICB7Ci0gICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxz
ZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1
ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBXcml0YWJsZVNoaWZ0KTsKICAg
ICB9CiAKICAgICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUs
IENvbmZpZ3VyYWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRy
aVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBDb25maWd1cmFibGVTaGlmdCk7CiAgICAg
fQogCiAgICAgdm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wgdmFsdWUpCiAgICAgewotICAgICAgICBm
aWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZSwgRW51
bWVyYWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRl
OjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBFbnVtZXJhYmxlU2hpZnQpOwogICAgIH0KIAogcHJp
dmF0ZToKICAgICB2b2lkIGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2lnbmVk
IHNoaWZ0KQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7Ci0g
ICAgICAgIG1fYXR0cmlidXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUgPDwg
c2hpZnQpOworICAgICAgICBtX2F0dHJpYnV0ZXMgPSAobV9hdHRyaWJ1dGVzICYgfm1hc2spIHwg
KHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRlKSA8PCBzaGlmdCk7CiAgICAgfQogCiAgICAgVHJp
U3RhdGUgZXh0cmFjdFRyaVN0YXRlKHVuc2lnbmVkIHNoaWZ0KSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggYTExMDdkZTA3MDVh
ZjEzYTY1Yzg2NDQ2MGI2YWRiMjRkNDMzYWY3Zi4uOGRlMDAzY2IwN2MwOWY5NzEzODJmMzRkMjc0
ZGYwZGZkZTEwZGE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3IuY3BwCkBAIC0yMDEsOCArMjAxLDggQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmluaXRp
YWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EK
IAogICAgIFRyaVN0YXRlIG51bWVyaWMgPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPm51bWVyaWMpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgaWYgKG51bWVyaWMgIT0gTWl4ZWRUcmlTdGF0ZSkK
LSAgICAgICAgb3B0LmFkZCgia24iX3MsIG51bWVyaWMgPT0gVHJ1ZVRyaVN0YXRlID8gInRydWUi
X3MgOiAiZmFsc2UiX3MpOworICAgIGlmIChudW1lcmljICE9IFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlKQorICAgICAgICBvcHQuYWRkKCJrbiJfcywgbnVtZXJpYyA9PSBUcmlTdGF0ZTo6VHJ1ZSA/
ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIFN0cmluZyBjYXNlRmlyc3RPcHRpb24gPSBp
bnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
Y2FzZUZpcnN0LCB7ICJ1cHBlciIsICJsb3dlciIsICJmYWxzZSIgfSwgImNhc2VGaXJzdCBtdXN0
IGJlIGVpdGhlciBcInVwcGVyXCIsIFwibG93ZXJcIiwgb3IgXCJmYWxzZVwiIiwgbnVsbHB0cik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKQEAgLTI0Myw3ICsyNDMs
NyBAQCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogCiAgICAgVHJpU3RhdGUgaWdub3JlUHVuY3R1
YXRpb24gPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPmlnbm9yZVB1bmN0dWF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwotICAgIG1faWdub3JlUHVuY3R1YXRpb24gPSAoaWdub3JlUHVuY3R1YXRp
b24gPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBtX2lnbm9yZVB1bmN0dWF0aW9uID0gKGlnbm9yZVB1
bmN0dWF0aW9uID09IFRyaVN0YXRlOjpUcnVlKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0g
VV9aRVJPX0VSUk9SOwogICAgIG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9y
LCBVQ29sbGF0b3JEZWxldGVyPih1Y29sX29wZW4obV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0
YXR1cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERh
dGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRl
VGltZUZvcm1hdC5jcHAKaW5kZXggMDIzNThjODg3OWZlYTk0OTUzNmJmMGRlZDlkMWZkY2RlYmM0
Njg3ZS4uNzY2MmZhNjg5ZTRmOTk3YzlhZDdjZjk2ZjA5NmM1ZGY3NDMwMzA1NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVE
YXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgVHJpU3Rh
dGUgaG91cjEyID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5w
cm9wZXJ0eU5hbWVzLT5ob3VyMTIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7Ci0gICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIgPT0gTWl4ZWRUcmlT
dGF0ZSk7CisgICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIgPT0gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGUpOwogCiAgICAgU3RyaW5nIGhvdXJDeWNsZSA9IGludGxTdHJpbmdPcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyQ3ljbGUsIHsg
ImgxMSIsICJoMTIiLCAiaDIzIiwgImgyNCIgfSwgImhvdXJDeWNsZSBtdXN0IGJlIFwiaDExXCIs
IFwiaDEyXCIsIFwiaDIzXCIsIG9yIFwiaDI0XCIiLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwpAQCAtNTgyLDE0ICs1ODIsMTQgQEAgdm9pZCBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgIGlmIChob3VyID09ICIyLWRpZ2l0IikgewogICAgICAgICBpZiAo
aXNIb3VyMTJVbmRlZmluZWQgJiYgbV9ob3VyQ3ljbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBz
a2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiamoiKTsKLSAgICAgICAgZWxzZSBpZiAoaG91
cjEyID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgZWxzZSBpZiAoaG91cjEyID09IFRyaVN0YXRl
OjpUcnVlKQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoImhoIik7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFs
KCJISCIpOwogICAgIH0gZWxzZSBpZiAoaG91ciA9PSAibnVtZXJpYyIpIHsKICAgICAgICAgaWYg
KGlzSG91cjEyVW5kZWZpbmVkICYmIG1faG91ckN5Y2xlLmlzTnVsbCgpKQogICAgICAgICAgICAg
c2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnaicpOwotICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0g
VHJ1ZVRyaVN0YXRlKQorICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJpU3RhdGU6OlRydWUp
CiAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdoJyk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0gnKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggYTZlYTFm
NTE1OGUyYTdhZDdkZWQwMjBkMWJmOGE4NWQ4ZGFlYmE3YS4uOTI1ZmFjMDJiYzc2MTA5OGJhZTUw
MTA2NGQ1ZjZiYjhkM2I4NTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYQogCiAgICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBpbnRsQm9vbGVhbk9w
dGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1
c2VHcm91cGluZyIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwot
ICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBGYWxzZVRyaVN0YXRlOworICAgIG1f
dXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAKICAgICBVTnVt
YmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CiAgICAgc3dpdGNoIChtX3N0eWxl
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4
IGYyM2Q5ZWQ5NTRkOGY5OTAxYzZjNjVkOTA4ZTg3Y2MwYzU2N2JlMGIuLjJhZDdlZTZiYTkyN2Mx
ZWY0MzRlOTRkYjJmMDI0NzNkNmZlNjFmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0yMDksMTYgKzIwOSwxNiBAQCBUcmlTdGF0ZSBpbnRs
Qm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlv
bnMsIFByb3BlcgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0
YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAKICAgICBKU09i
amVjdCogb3B0cyA9IG9wdGlvbnMudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBNaXhlZFRyaVN0YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVl
ID0gb3B0cy0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOwotICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIE1peGVkVHJpU3RhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIFRyaVN0YXRlOjpJbmRldGVybWluYXRlKTsKIAogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5l
ZCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0
YXRlOjpJbmRldGVybWluYXRlOwogCiAgICAgcmV0dXJuIHRyaVN0YXRlKHZhbHVlLnRvQm9vbGVh
bihnbG9iYWxPYmplY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGIwOTExNjIyNDNiMGMwNDA1MTk4YWFiNzNhZGQw
YzY2MTBlMjIwYTAuLmEwZWIwMTMwNWMyMzIzNzUzODJhYTBhYzliNDdlNDhhOWYxZjUwYTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aApAQCAtMTI2Miw3ICsxMjYyLDcgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVTdHJp
Y3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgICAgICAgICAgY29uc3QgU3RyaW5n
SW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAg
ICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZh
bHVlSW1wbCgpOwogICAgICAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdU
Rjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBpZiAo
djEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQo
KSkKQEAgLTEyNzUsMTYgKzEyNzUsMTYgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVT
dHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogaW5saW5lIFRyaVN0YXRlIEpTVmFs
dWU6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAg
IHJldHVybiBhc0ludDMyKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgICAg
ICByZXR1cm4gYXNJbnQzMigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAg
ICAgaWYgKGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFz
RG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5h
TgorICAgICAgICByZXR1cm4gaXNOb3RaZXJvQW5kT3JkZXJlZChhc0RvdWJsZSgpKSA/IFRyaVN0
YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlz
Q2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKICNpZiBV
U0UoQklHSU5UMzIpCiAgICAgaWYgKGlzQmlnSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0lu
dDMyQXNJbnQzMigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0
dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7
CiAjZW5kaWYKLSAgICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0
YXRlOworICAgIHJldHVybiBpc1RydWUoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZh
bHNlOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6cmVxdWlyZU9iamVjdENvZXJj
aWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDBkZWEyNzU2ZTFlYzNkYjcz
ODMxNDQwNjEyMzEwNjI3ZjBmZjhjYTMuLmU5OTdhZDAwYWU0YWVhNWU2MTBiNDc4OGFmMGY3MzBi
MDlmNjcxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgKQEAgLTMzMCwxMiArMzMwLDEyIEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFu
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiBpbmxpbmUgVHJpU3RhdGUgSlND
ZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigp
ID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJpU3RhdGU6OlRydWUg
OiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQotICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVl
VHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0
YXRlOjpGYWxzZTsKICAgICBpZiAoaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlT
dGF0ZTsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRl
OjpUcnVlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogaW5saW5l
IHZvaWQgSlNDZWxsTG9jazo6bG9jaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UcmlT
dGF0ZS5oIGIvU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAppbmRleCA1YWU3ODVkM2I5ZDgwZDgz
YWEwNzRmZTgyMWNkMDY4NTdkNjYxY2EwLi43ZTUyZTdiMzYxOWU3MzUyYjVlNGY1ZjdkOTRlOWJl
MTk5ZmM1NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgKQEAgLTI3LDEwICsyNywxMCBAQAogCiBuYW1lc3BhY2Ug
V1RGIHsKIAotZW51bSBUcmlTdGF0ZSA6IHVpbnQ4X3QgewotICAgIEZhbHNlVHJpU3RhdGUsCi0g
ICAgVHJ1ZVRyaVN0YXRlLAotICAgIE1peGVkVHJpU3RhdGUKK2VudW0gY2xhc3MgVHJpU3RhdGUg
OiB1aW50OF90IHsKKyAgICBGYWxzZSwKKyAgICBUcnVlLAorICAgIEluZGV0ZXJtaW5hdGUKIH07
CiAKIGlubGluZSBUcmlTdGF0ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4pCkBAIC00MSw3ICs0MSw0
IEBAIGlubGluZSBUcmlTdGF0ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4pCiB9CiAKIHVzaW5nIFdU
Rjo6VHJpU3RhdGU7Ci11c2luZyBXVEY6OkZhbHNlVHJpU3RhdGU7Ci11c2luZyBXVEY6OlRydWVU
cmlTdGF0ZTsKLXVzaW5nIFdURjo6TWl4ZWRUcmlTdGF0ZTsKIHVzaW5nIFdURjo6dHJpU3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjNmQ5NThiMjVkMWJmNTM2YzI3NGI3ZTUyZjlj
NTNiNWFmMmI1ZjBjLi5hMzViZWY1NTA0YzY1YTgzM2NkNTgyMzFiYzZkZGE5MWEzODg1ODljIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU1NTgsMTIgKzU1NTgsMTIgQEAgYm9vbCBEb2N1
bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogCiBi
b29sIERvY3VtZW50OjpxdWVyeUNvbW1hbmRJbmRldGVybShjb25zdCBTdHJpbmcmIGNvbW1hbmRO
YW1lKQogewotICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgpID09
IE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnN0
YXRlKCkgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnF1
ZXJ5Q29tbWFuZFN0YXRlKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB7Ci0gICAgcmV0dXJu
IGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOworICAg
IHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgpID09IFRyaVN0YXRlOjpU
cnVlOwogfQogCiBib29sIERvY3VtZW50OjpxdWVyeUNvbW1hbmRTdXBwb3J0ZWQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcApp
bmRleCAyZjYzNTRhNWQyZjMwYTM2YjkwM2YxMGI5MzczZmZhMjNhMGM4NmM4Li4wMzAwMTViOTcy
ZmY5Y2E4N2QxNzBiZjkxYWMxZmNkMjY4NmJmYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nU3R5bGUuY3BwCkBAIC03NTIsNyArNzUyLDcgQEAgc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgdGV4dE9ubHlQcm9wZXJ0aWVzW10gPSB7CiBUcmlTdGF0ZSBFZGl0aW5nU3R5bGU6OnRy
aVN0YXRlT2ZTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIGlmICghc3R5
bGUgfHwgIXN0eWxlLT5tX211dGFibGVTdHlsZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgcmV0dXJuIHRyaVN0YXRl
T2ZTdHlsZSgqc3R5bGUtPm1fbXV0YWJsZVN0eWxlLCBEb05vdElnbm9yZVRleHRPbmx5UHJvcGVy
dGllcyk7CiB9CiAKQEAgLTc2MCw3ICs3NjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogVHJp
U3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoVCYgc3R5bGVUb0NvbXBhcmUsIFNo
b3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyBzaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRp
ZXMpIGNvbnN0CiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKLSAgICAgICAgcmV0dXJuIFRy
dWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogCiAgICAgUmVmUHRy
PE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGRpZmZlcmVuY2UgPSBnZXRQcm9wZXJ0aWVzTm90SW4o
Km1fbXV0YWJsZVN0eWxlLCBzdHlsZVRvQ29tcGFyZSk7CiAKQEAgLTc2OCwyMiArNzY4LDIyIEBA
IFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKFQmIHN0eWxlVG9Db21wYXJl
LCBTaG91bGRJZ25vcmVUZXh0T25seVByCiAgICAgICAgIGRpZmZlcmVuY2UtPnJlbW92ZVByb3Bl
cnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dE9ubHlQ
cm9wZXJ0aWVzKSk7CiAKICAgICBpZiAoZGlmZmVyZW5jZS0+aXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gVHJ1ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OlRydWU7CiAgICAg
aWYgKGRpZmZlcmVuY2UtPnByb3BlcnR5Q291bnQoKSA9PSBtX211dGFibGVTdHlsZS0+cHJvcGVy
dHlDb3VudCgpKQotICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpGYWxzZTsKIAotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVy
biBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0
cmlTdGF0ZU9mU3R5bGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdAog
ewogICAgIGlmICghc2VsZWN0aW9uLmlzQ2FyZXRPclJhbmdlKCkpCi0gICAgICAgIHJldHVybiBG
YWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogCiAgICAgaWYg
KHNlbGVjdGlvbi5pc0NhcmV0KCkpCiAgICAgICAgIHJldHVybiB0cmlTdGF0ZU9mU3R5bGUoRWRp
dGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uKS5nZXQoKSk7CiAKLSAg
ICBUcmlTdGF0ZSBzdGF0ZSA9IEZhbHNlVHJpU3RhdGU7CisgICAgVHJpU3RhdGUgc3RhdGUgPSBU
cmlTdGF0ZTo6RmFsc2U7CiAgICAgYm9vbCBub2RlSXNTdGFydCA9IHRydWU7CiAgICAgZm9yIChO
b2RlKiBub2RlID0gc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsgbm9kZTsgbm9k
ZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7CiAgICAgICAgIGlmIChub2RlLT5yZW5k
ZXJlcigpICYmIG5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkgewpAQCAtNzkzLDcgKzc5Myw3IEBA
IFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIHNlbGVjdGlvbikgY29uc3QKICAgICAgICAgICAgICAgICBzdGF0ZSA9IG5vZGVTdGF0
ZTsKICAgICAgICAgICAgICAgICBub2RlSXNTdGFydCA9IGZhbHNlOwogICAgICAgICAgICAgfSBl
bHNlIGlmIChzdGF0ZSAhPSBub2RlU3RhdGUgJiYgbm9kZS0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUgPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgICAgIHN0YXRl
ID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0ODIsNyArMTQ4Miw3IEBAIGludCBFZGl0aW5nU3R5
bGU6OmxlZ2FjeUZvbnRTaXplKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIAogYm9vbCBFZGl0
aW5nU3R5bGU6Omhhc1N0eWxlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwg
dmFsdWUpLT50cmlTdGF0ZU9mU3R5bGUodGhpcykgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1
cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0ZU9mU3R5
bGUodGhpcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogfQogCiBSZWZQdHI8RWRpdGluZ1N0eWxlPiBF
ZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBzZWxlY3Rpb24sIGJvb2wgc2hvdWxkVXNlQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNjNjY2UzOTE4MTY5Y2U0NmEzMzk4YTU4MGEwMTIx
NWYyMDczZmYyNC4uODg4ZGE5MjVhNWY4YTNjYjg3NWFkNDA5MDUxNjlhOTMxODVhMzJjYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtODE0LDMwICs4MTQsMzAgQEAgVHJpU3RhdGUg
RWRpdG9yOjpzZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKSBjb25zdAogewogICAgIGlmICht
X2RvY3VtZW50LnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewogICAgICAgICBpZiAoZW5jbG9zaW5n
RWxlbWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgp
LCB1bFRhZykpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIH0gZWxzZSBpZiAobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5pc1JhbmdlKCkpIHsKICAgICAgICAgYXV0byogc3RhcnROb2RlID0gZW5jbG9zaW5nRWxl
bWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCB1
bFRhZyk7CiAgICAgICAgIGF1dG8qIGVuZE5vZGUgPSBlbmNsb3NpbmdFbGVtZW50V2l0aFRhZyht
X2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpLCB1bFRhZyk7CiAgICAgICAg
IGlmIChzdGFydE5vZGUgJiYgZW5kTm9kZSAmJiBzdGFydE5vZGUgPT0gZW5kTm9kZSkKLSAgICAg
ICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgICAgICByZXR1cm4gVHJpU3RhdGU6
OlRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIFRy
aVN0YXRlOjpGYWxzZTsKIH0KIAogVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25PcmRlcmVkTGlz
dFN0YXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5pc0NhcmV0
KCkpIHsKICAgICAgICAgaWYgKGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1fZG9jdW1lbnQuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgb2xUYWcpKQotICAgICAgICAgICAgcmV0dXJu
IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9
IGVsc2UgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKSB7CiAgICAgICAgIGF1
dG8qIHN0YXJ0Tm9kZSA9IGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1fZG9jdW1lbnQuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgb2xUYWcpOwogICAgICAgICBhdXRvKiBlbmROb2Rl
ID0gZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5lbmQoKSwgb2xUYWcpOwogICAgICAgICBpZiAoc3RhcnROb2RlICYmIGVuZE5vZGUgJiYg
c3RhcnROb2RlID09IGVuZE5vZGUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOwor
ICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAotICAgIHJldHVybiBG
YWxzZVRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiB9CiAKIFJlZlB0cjxO
b2RlPiBFZGl0b3I6Omluc2VydE9yZGVyZWRMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvckNvbW1hbmQuY3BwCmluZGV4IGUxZmIzY2QwNzkwM2ZlYzNjNzhlMjU4Yjc3MjUxNjhmNDEx
OWEyMTMuLjkzYWU3N2RmZDAyNDJiYTFlYmFiN2JhZjdjNWQ1NjVmN2VhNjc3ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHN0
YXRpYyBib29sIGlzU3R5bGVQcmVzZW50KEVkaXRvciYgZWRpdG9yLCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsIGNvbnN0IGNoYXIqCiAgICAgLy8gV2luZG93czogcHJlc2VudCB0aHJvdWdob3V0
IHRoZSBzZWxlY3Rpb24KICAgICBpZiAoZWRpdG9yLmJlaGF2aW9yKCkuc2hvdWxkVG9nZ2xlU3R5
bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gZWRpdG9yLnNlbGVj
dGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSk7Ci0gICAgcmV0dXJuIGVkaXRv
ci5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBvblZhbHVlKSA9PSBUcnVlVHJpU3RhdGU7
CisgICAgcmV0dXJuIGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBvblZhbHVl
KSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUo
RnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rp
b24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVl
KQpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVs
YXJpdHkoRnJhbWUmIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiBzdGF0aWMgVHJp
U3RhdGUgc3RhdGVTdHlsZShGcmFtZSYgZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
Y29uc3QgY2hhciogZGVzaXJlZFZhbHVlKQogewogICAgIGlmIChmcmFtZS5lZGl0b3IoKS5iZWhh
dmlvcigpLnNob3VsZFRvZ2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAg
ICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJ
RCwgZGVzaXJlZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBmcmFtZS5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQs
IGRlc2lyZWRWYWx1ZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICBy
ZXR1cm4gZnJhbWUuZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJl
ZFZhbHVlKTsKIH0KIApAQCAtMjA3LDggKzIwNyw4IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVRl
eHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lJiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rp
CiAgICAgYm9vbCBoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5nczsKICAgICBXcml0aW5nRGly
ZWN0aW9uIHNlbGVjdGlvbkRpcmVjdGlvbiA9IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZv
clNlbGVjdGlvbihmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwKICAgICAgICAgZnJhbWUu
c2VsZWN0aW9uKCkudHlwaW5nU3R5bGUoKSwgaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3Mp
OwotICAgIC8vIEZYSU1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5nIE1peGVkVHJpU3RhdGUgd2hl
biBzZWxlY3Rpb25EaXJlY3Rpb24gPT0gZGlyZWN0aW9uICYmIGhhc05lc3RlZE9yTXVsdGlwbGVF
bWJlZGRpbmdzCi0gICAgcmV0dXJuIChzZWxlY3Rpb25EaXJlY3Rpb24gPT0gZGlyZWN0aW9uICYm
ICFoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5ncykgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRy
aVN0YXRlOworICAgIC8vIEZYSU1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5nIFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlIHdoZW4gc2VsZWN0aW9uRGlyZWN0aW9uID09IGRpcmVjdGlvbiAmJiBoYXNO
ZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5ncworICAgIHJldHVybiAoc2VsZWN0aW9uRGlyZWN0aW9u
ID09IGRpcmVjdGlvbiAmJiAhaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3MpID8gVHJpU3Rh
dGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCB2ZXJ0aWNh
bFNjcm9sbERpc3RhbmNlKEZyYW1lJiBmcmFtZSkKQEAgLTE0MzgsNyArMTQzOCw3IEBAIHN0YXRp
YyBib29sIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dFdpdGhFZGl0YWJsZUltYWdlc0VuYWJs
ZWQoRnJhbWUmIGZyYW1lLCBFCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU5vbmUoRnJhbWUmLCBF
dmVudCopCiB7Ci0gICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRl
OjpGYWxzZTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlQm9sZChGcmFtZSYgZnJhbWUsIEV2
ZW50KikKQEAgLTE0NjMsNyArMTQ2Myw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRo
cm91Z2goRnJhbWUmIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxl
V2l0aENTUyhGcmFtZSYgZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUuZWRpdG9y
KCkuc2hvdWxkU3R5bGVXaXRoQ1NTKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwor
ICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRyaVN0YXRl
OjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdWJz
Y3JpcHQoRnJhbWUmIGZyYW1lLCBFdmVudCopCkBAIC0xOTA2LDcgKzE5MDYsNyBAQCBib29sIEVk
aXRvcjo6Q29tbWFuZDo6aXNFbmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNvbnN0CiBU
cmlTdGF0ZSBFZGl0b3I6OkNvbW1hbmQ6OnN0YXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNv
bnN0CiB7CiAgICAgaWYgKCFpc1N1cHBvcnRlZCgpIHx8ICFtX2ZyYW1lKQotICAgICAgICByZXR1
cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICBy
ZXR1cm4gbV9jb21tYW5kLT5zdGF0ZSgqbV9mcmFtZSwgdHJpZ2dlcmluZ0V2ZW50KTsKIH0KIApA
QCAtMTkxNSw3ICsxOTE1LDcgQEAgU3RyaW5nIEVkaXRvcjo6Q29tbWFuZDo6dmFsdWUoRXZlbnQq
IHRyaWdnZXJpbmdFdmVudCkgY29uc3QKICAgICBpZiAoIWlzU3VwcG9ydGVkKCkgfHwgIW1fZnJh
bWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAobV9jb21tYW5kLT52YWx1ZSA9
PSB2YWx1ZU51bGwgJiYgbV9jb21tYW5kLT5zdGF0ZSAhPSBzdGF0ZU5vbmUpCi0gICAgICAgIHJl
dHVybiBtX2NvbW1hbmQtPnN0YXRlKCptX2ZyYW1lLCB0cmlnZ2VyaW5nRXZlbnQpID09IFRydWVU
cmlTdGF0ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOworICAgICAgICByZXR1cm4gbV9jb21tYW5k
LT5zdGF0ZSgqbV9mcmFtZSwgdHJpZ2dlcmluZ0V2ZW50KSA9PSBUcmlTdGF0ZTo6VHJ1ZSA/ICJ0
cnVlIl9zIDogImZhbHNlIl9zOwogICAgIHJldHVybiBtX2NvbW1hbmQtPnZhbHVlKCptX2ZyYW1l
LCB0cmlnZ2VyaW5nRXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAKaW5kZXggZDI1ODBlYWFjZWU1N2M5Zjk0MDQxYmM0Y2RkZWU0NDMz
Yzc4MzEyOC4uMzE5MDU0NmRhY2JkNDg5YzM2Mjg1M2M3NmZjZDA5OTJkMjIyYzJjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTE3Miwy
NSArMTE3MiwyNSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlm
TmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdS
aWdodFRvTGVmdDogewogICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9u
KCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENT
U1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxzZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OiB7
CiAgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7Ci0gICAgICAgICAgICBz
aG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3RhdGU7CisgICAgICAgICAg
ICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25MZWZ0VG9SaWdodDogewogICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQg
PSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRv
UmlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRy
dWVUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09
IFRyaVN0YXRlOjpUcnVlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5pc0Vu
YWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29u
dGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7CiAgICAgICAgICAgICBF
ZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4
dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sg
PSBjb21tYW5kLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAgc2hvdWxkQ2hl
Y2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgICAgICAgICBzaG91
bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTEyMzEsNyArMTIzMSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpj
aGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRl
cmxpbmU6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1
bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpICE9IFRyaVN0YXRlOjpGYWxzZTsKICAgICAg
ICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTI0NCwxMiArMTI0NCwxMiBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51
SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsK
LSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0
eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAg
ICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxl
KENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAg
ICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJ
dGVtVGFnQm9sZDogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCku
c2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNl
VHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxl
Y3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gVHJpU3RhdGU6
OkZhbHNlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVk
aXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCmluZGV4
IDkzNGJhNTAxN2Q3ZjMzNWNkZmFlODdmMmM2MTNjMWY4NWZlMmE2NWEuLjRjNTAwZTM2NjhhMzIx
MjNiOWUyNGIyNzhkYWFiMDc0NTczZmZhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC04MywxMyArODMsMTMg
QEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICNpZiBQTEFURk9STShHVEspCiAgICAgY29uc3QgRWRp
dG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2Uo
KSkgewotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9u
dFdlaWdodCwgImJvbGQiKSA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgIGlmIChlZGl0b3Iuc2Vs
ZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpID09IFRyaVN0YXRl
OjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBB
dHRyaWJ1dGVCb2xkOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1By
b3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICBpZiAo
ZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikg
PT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRy
aWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9u
SGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVy
bGluZSIpID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNT
dHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5l
IikgPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdB
dHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKLSAgICAgICAgaWYgKGVkaXRvci5zZWxl
Y3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAi
bGluZS10aHJvdWdoIikgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVj
dGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJs
aW5lLXRocm91Z2giKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlU3RyaWtlVGhyb3VnaDsKICAgICB9IGVs
c2UgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKICAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rp
b25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDcxYjAyZDFi
NTNkZWRiOWUyZmIzNTA5ZTU1N2YxNDU3OTk3NDMyNWEuLjgwZjUzNTYzMDgwN2UwZmU1NjdjMGNk
YzFiMGJkMWFhMGRjNWJiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MVmlldy5tbQpAQCAtMTAxMywxMiArMTAxMywxMiBAQCBAZW5kCiBzdGF0aWMgTlND
b250cm9sU3RhdGVWYWx1ZSBraXQoVHJpU3RhdGUgc3RhdGUpCiB7CiAgICAgc3dpdGNoIChzdGF0
ZSkgewotICAgICAgICBjYXNlIEZhbHNlVHJpU3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gTlND
b250cm9sU3RhdGVWYWx1ZU9mZjsKLSAgICAgICAgY2FzZSBUcnVlVHJpU3RhdGU6Ci0gICAgICAg
ICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9uOwotICAgICAgICBjYXNlIE1peGVkVHJp
U3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU1peGVkOworICAg
IGNhc2UgVHJpU3RhdGU6OkZhbHNlOgorICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1
ZU9mZjsKKyAgICBjYXNlIFRyaVN0YXRlOjpUcnVlOgorICAgICAgICByZXR1cm4gTlNDb250cm9s
U3RhdGVWYWx1ZU9uOworICAgIGNhc2UgVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU6CisgICAgICAg
IHJldHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVlTWl4ZWQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVlT2ZmOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398144</attachid>
            <date>2020-04-30 19:43:35 -0700</date>
            <delta_ts>2020-04-30 19:46:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211268-20200430194334.patch</filename>
            <type>text/plain</type>
            <size>88270</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YThkOTUxN2RhOTBlZjZjNzMxNWM4YjljOTk1ZDEyMzZiMTEzOWJhLi44ZmYzMDQ1OTM5NWY5YmRj
NjhhMDNkZmMyNjA3MjkwYTI0NmFjOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjAtMDQtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFRyaVN0YXRlIHNob3VsZCBiZSBhbiBlbnVtIGNsYXNzIGFuZCB1
c2UgIkluZGV0ZXJtaW5hdGUiIGluc3RlYWQgb2YgIk1peGVkIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6bGVzc1RoYW5Db25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpsZXNzRXF1YWxDb25zdGFudCBjb25z
dCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6YWJvdmVDb25zdGFudCBj
b25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmJlbG93Q29uc3RhbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjphYm92ZUVxdWFsQ29uc3RhbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpiZWxvd0VxdWFsQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0NjRWYWx1ZTo6ZXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6
OkIzOjpDb25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlND
OjpCMzo6Q29uc3Q2NFZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDY0VmFsdWU6Omxlc3NFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6YmVsb3dDb25zdGFudCBjb25zdCk6CisgICAg
ICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmJlbG93RXF1YWxDb25zdGFudCBjb25zdCk6
CisgICAgICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0RG91YmxlVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpC
Mzo6Q29uc3REb3VibGVWYWx1ZTo6bm90RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChK
U0M6OkIzOjpDb25zdERvdWJsZVZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFs
Q29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6ZXF1
YWxPclVub3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRW
YWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmVxdWFsQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENv
bnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6bGVzc1Ro
YW5Db25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6Omdy
ZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZh
bHVlOjpsZXNzRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZs
b2F0VmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKiBiMy9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFk
ZEJvb2xDb25zdGFudCk6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKiBi
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAg
ICAgKEpTQzo6QjM6OlZhbHVlOjplcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6
QjM6OlZhbHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpn
cmVhdGVyVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpsZXNz
RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6Z3JlYXRlckVx
dWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmJlbG93Q29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6QjM6OlZhbHVlOjplcXVhbE9yVW5vcmRlcmVkQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWU6OmFzVHJpU3RhdGUgY29uc3QpOgorICAgICAgICAqIGIzL0Iz
VmFsdWUuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRocmVz
aG9sZEZvckpJVCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgor
ICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAg
ICAgICAqIGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpDb25zdGFu
dE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJp
bmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKEpT
Qzo6QmluYXJ5T3BOb2RlOjp0cnlGb2xkVG9CcmFuY2gpOgorICAgICAgICAqIGRmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUludHJpbnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgor
ICAgICAgICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1
YWxUb1NpbmdsZUNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1YWxUb1N0cmluZ0lt
cGwpOgorICAgICAgICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbCBjb25zdCk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdU
b0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURh
dGFWaWV3R2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZURhdGFWaWV3U2V0KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdEVx
dWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFib3ZlKToKKyAgICAgICAgKEpTQzo6
RlRMOjpPdXRwdXQ6OmFib3ZlT3JFcXVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0Ojpi
ZWxvdyk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvd09yRXF1YWwpOgorICAgICAg
ICAoSlNDOjpGVEw6Ok91dHB1dDo6Z3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91
dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxl
c3NUaGFuKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbCk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVk
VHlwZXMuY3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2Rl
QmxvY2spOgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6Cisg
ICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6RGVmaW5lUHJvcGVydHlBdHRy
aWJ1dGVzKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpoYXNXcml0
YWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6d3Jp
dGFibGUgY29uc3QpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhh
c0NvbmZpZ3VyYWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmli
dXRlczo6Y29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjpoYXNFbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzOjplbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVBy
b3BlcnR5QXR0cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5l
UHJvcGVydHlBdHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxDb2xsYXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNv
bGxhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAg
ICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToK
KyAgICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50
aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsQm9vbGVhbk9wdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpwdXJlU3RyaWN0RXF1YWwpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlVG9Cb29s
ZWFuIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKwogMjAyMC0wNC0zMCAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gaW50bEJv
b2xlYW5PcHRpb24gc2hvdWxkIHJldHVybiBUcmlTdGF0ZSBpbnN0ZWFkIG9mIHRha2luZyBhbiBv
dXQgcGFyYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggMzZjYWRhMzE2NzJjY2Y3ZGRiN2E3ZjUxMjg1Y2NlOWIzYTAxYzNkNC4u
YjgzYTg3NzNmMjQzNjEzMWEzMzA0NmI3MmNiNzZlNWFiMDczZWE4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAyMC0wNC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CisKKyAgICAgICAgVHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5k
ZXRlcm1pbmF0ZSIgaW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgd29yZCAiaW5kZXRlcm1pbmF0ZSIgY29tZXMgZnJv
bSBib29zdDo6dHJpYm9vbC4KKyAgICAgICAgQSB0aGlyZCBzdGF0ZSBpcyBnZW5lcmFsbHkgbm90
ICJtaXhlZCIgYnV0IHJhdGhlciB1bmtub3duLgorCisgICAgICAgICogd3RmL1RyaVN0YXRlLmg6
CisKIDIwMjAtMDQtMjkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+
CiAKICAgICAgICAgW1dpbl0gRGVhZGxvY2sgaW4gV1RGOjpUaHJlYWQ6OmRpZEV4aXQoKSB3aGls
ZSBXZWJLaXROZXR3b3JrUHJvY2Vzcy5leGUgaXMgZXhpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMxMzA4
OWI4ZDdhZThlNDUzNzMzYjNiZWVmNDc5Y2ViMmFlN2ExOGIuLjFmNWE4YzdiMDBkMDA0YjFlYTI2
NjQ5NjAwODQ3NTJlZGNmM2YwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0w
NC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAg
VHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1pbmF0ZSIg
aW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6cXVlcnlDb21tYW5kSW5kZXRlcm0pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnF1
ZXJ5Q29tbWFuZFN0YXRlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Omhhc1N0eWxlKToKKyAgICAgICAgKiBlZGl0
aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblVub3Jk
ZXJlZExpc3RTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
bk9yZGVyZWRMaXN0U3RhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1N0eWxlUHJlc2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpzdGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlVGV4dFdyaXRpbmdEaXJl
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6c3RhdGVOb25lKToKKyAgICAgICAgKFdlYkNvcmU6
OnN0YXRlU3R5bGVXaXRoQ1NTKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZDo6
c3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kOjp2YWx1ZSBj
b25zdCk6CisgICAgICAgICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQg
Y29uc3QpOgorCiAyMDIwLTA0LTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhuXSBPcHRpbWl6ZSBMb2NhbEF1dGhlbnRpY2F0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggMDk2NWM1ZDAwZTNkNjU4NjBiZjk0NGJjMWZlNDI5M2JlMGFiY2Q5OC4uMGY5NDhjODNh
YmM0NmQ5ODRkZjM1OGEwNDJmZDY2NDBmMzUzNmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBA
QAorMjAyMC0wNC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisK
KyAgICAgICAgVHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRl
cm1pbmF0ZSIgaW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGli
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBj
b25zdCk6CisKIDIwMjAtMDQtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2MDkzMik6IEFTU0VSVElPTiBGQUlMRUQ6IG9rIGlu
IHdlYmtpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5IGZvciAzIHRlc3Rz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMDE1ZTI2YWZkMGI3NjliY2RiOGU1Mjkw
OWQxZDM3MmY3MGYzMDRhNS4uZDljMDFmZTQ2ZjBjYjRhMTFkZTM1NTM1NDUzMDg1ZWYyMDZhOTNh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0
LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBU
cmlTdGF0ZSBzaG91bGQgYmUgYW4gZW51bSBjbGFzcyBhbmQgdXNlICJJbmRldGVybWluYXRlIiBp
bnN0ZWFkIG9mICJNaXhlZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGtpdCk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdh
dGU6XSk6CisKIDIwMjAtMDQtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZW1vdmUgLVtXZWJWaWV3IHNldENTU0FuaW1hdGlvbnNTdXNwZW5kZWQ6XQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKaW5kZXggNWFjZTM2
NDdhYTRkMDc3N2JjM2Y2NGVmODE5ZmVhYWNkYjQ3YzY0My4uMmIzMDIxYjFhYjMxYzk3NDBiZTI4
YTQzNGE1MzBmYzNlNmU5ZmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3QzMlZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dDMyVmFsdWUuY3BwCkBAIC0yMDcsMTQgKzIwNywxNCBAQCBWYWx1ZSogQ29uc3QzMlZhbHVlOjpp
VG9GQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogVHJpU3RhdGUgQ29uc3QzMlZhbHVl
OjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90
aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3Zh
bHVlID09IG90aGVyLT5hc0ludDMyKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6Om5v
dEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3Ro
ZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFs
dWUgIT0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAKQEAgLTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0
ZSBDb25zdDMyVmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogewogICAgIC8vIElOVDMyX01BWCA8IHggaXMgYWx3YXlzIGZhbHNlLgogICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+
OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBU
cmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKLSAgICAgICAgcmV0
dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA8IG90aGVyLT5hc0ludDMyKCkpOwogfQog
CkBAIC0yMzIsOSArMjMyLDkgQEAgVHJpU3RhdGUgQ29uc3QzMlZhbHVlOjpncmVhdGVyVGhhbkNv
bnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQzMl9NSU4gPiB4
IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV92YWx1ZSkg
PT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBG
YWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICgh
b3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1f
dmFsdWUgPiBvdGhlci0+YXNJbnQzMigpKTsKIH0KIApAQCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0
YXRlIENvbnN0MzJWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdAogewogICAgIC8vIElOVDMyX01JTiA8PSB4IGlzIGFsd2F5cyB0cnVlLgogICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpUcnVlOwogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzSW50MzIoKSk7CiB9
CiAKQEAgLTI1Miw5ICsyNTIsOSBAQCBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVh
bENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQzMl9NQVgg
Pj0geCBpcyBhbHdheXMgdHJ1ZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV92YWx1
ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVy
biBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAo
IW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZSht
X3ZhbHVlID49IG90aGVyLT5hc0ludDMyKCkpOwogfQogCkBAIC0yNjIsOSArMjYyLDkgQEAgVHJp
U3RhdGUgQ29uc3QzMlZhbHVlOjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBVSU5UMzJfTUlOID4geCBpcyBhbHdheXMgZmFsc2UuCiAgICAgaWYgKHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQz
Ml90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAg
IHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJt
aW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVl
KSA+IHN0YXRpY19jYXN0PHVpbnQzMl90PihvdGhlci0+YXNJbnQzMigpKSk7CiB9CiAKQEAgLTI3
Miw5ICsyNzIsOSBAQCBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6OmJlbG93Q29uc3RhbnQoY29uc3Qg
VmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIFVJTlQzMl9NQVggPCB4IGlzIGFsd2F5cyBm
YWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFz
SW50MzIoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KG1fdmFsdWUpIDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMy
KCkpKTsKIH0KIApAQCAtMjgyLDkgKzI4Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6YWJv
dmVFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5U
MzJfTUFYID49IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90
PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpCi0gICAg
ICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsK
ICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0
ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0
cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIApAQCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0
YXRlIENvbnN0MzJWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUlOIDw9IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYg
KHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAg
ICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1
ZSkgPD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKaW5kZXggOGQ3OTViMDNh
MWZlOWNlNjZlODRmNWIzY2IzOGQ2Y2JmM2VhMWEyYy4uYTQ0MGU3YzczMDNkY2JiM2U0M2MzNWFh
NzZkZDU3MzI0MzQyMzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
Q29uc3Q2NFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0
VmFsdWUuY3BwCkBAIC0yMDcsMTQgKzIwNywxNCBAQCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjppVG9G
Q29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjpl
cXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVy
LT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0
dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVl
ID09IG90aGVyLT5hc0ludDY0KCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6Om5vdEVx
dWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXIt
Pmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUg
IT0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKQEAgLTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0ZSBD
b25zdDY0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAog
ewogICAgIC8vIElOVDY0X01BWCA8IHggaXMgYWx3YXlzIGZhbHNlLgogICAgIGlmIChzdGF0aWNf
Y2FzdDxpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+Ojpt
YXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlT
dGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkKLSAgICAgICAgcmV0dXJu
IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsK
ICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA8IG90aGVyLT5hc0ludDY0KCkpOwogfQogCkBA
IC0yMzIsOSArMjMyLDkgQEAgVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjpncmVhdGVyVGhhbkNvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQ2NF9NSU4gPiB4IGlz
IGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkgPT0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxz
ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3Ro
ZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFs
dWUgPiBvdGhlci0+YXNJbnQ2NCgpKTsKIH0KIApAQCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0YXRl
IENvbnN0NjRWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogewogICAgIC8vIElOVDY0X01JTiA8PSB4IGlzIGFsd2F5cyB0cnVlLgogICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRy
aVN0YXRlOjpUcnVlOwogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAK
QEAgLTI1Miw5ICsyNTIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6OmdyZWF0ZXJFcXVhbENv
bnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQ2NF9NQVggPj0g
eCBpcyBhbHdheXMgdHJ1ZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkg
PT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBU
cnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90
aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3Zh
bHVlID49IG90aGVyLT5hc0ludDY0KCkpOwogfQogCkBAIC0yNjIsOSArMjYyLDkgQEAgVHJpU3Rh
dGUgQ29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QK
IHsKICAgICAvLyBVSU5UNjRfTUlOID4geCBpcyBhbHdheXMgZmFsc2UuCiAgICAgaWYgKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90
Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4g
VHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA+
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvdGhlci0+YXNJbnQ2NCgpKSk7CiB9CiAKQEAgLTI3Miw5
ICsyNzIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6OmJlbG93Q29uc3RhbnQoY29uc3QgVmFs
dWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIFVJTlQ2NF9NQVggPCB4IGlzIGFsd2F5cyBmYWxz
ZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7
CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50
NjQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlT
dGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG1fdmFsdWUpIDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkp
KTsKIH0KIApAQCAtMjgyLDkgKzI4Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1ZTo6YWJvdmVF
cXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UNjRf
TUFYID49IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90Piht
X3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAg
IHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAg
ICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlT
dGF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApAQCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0YXRl
IENvbnN0NjRWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBVSU5UNjRfTUlOIDw9IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICBy
ZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkg
PD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAppbmRleCA1ZGQ3
ZDkxMmY3Y2Q5NWM1OGVhZTdkMGNmNDBhZmIxMDZmNzZmNjc1Li5hYzkxMDAyYTZkYjU4N2IxZGFj
Y2QyOWVjNDVjMTBiMmIyZTQ3ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNDb25zdERvdWJsZVZhbHVlLmNwcApAQCAtMTQxLDUyICsxNDEsNTIgQEAgVmFsdWUqIENvbnN0
RG91YmxlVmFsdWU6Om1vZENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzRG91YmxlKCkpCi0g
ICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6Oklu
ZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPT0gb3RoZXItPmFzRG91
YmxlKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdERvdWJsZVZhbHVlOjpub3RFcXVhbENvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUo
KSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0
ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSAhPSBvdGhlci0+
YXNEb3VibGUoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RG91YmxlVmFsdWU6Omxlc3NUaGFuQ29u
c3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Rv
dWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRy
aVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlIDwgb3Ro
ZXItPmFzRG91YmxlKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdERvdWJsZVZhbHVlOjpncmVhdGVy
VGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVy
LT5oYXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1
ZSA+IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6
bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICgh
b3RoZXItPmhhc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZSht
X3ZhbHVlIDw9IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVW
YWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewog
ICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0
ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0
cmlTdGF0ZShtX3ZhbHVlID49IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29u
c3REb3VibGVWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJu
IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogCiAgICAgaWYg
KCFvdGhlci0+aGFzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAg
ICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgZG91YmxlIG90aGVyVmFs
dWUgPSBvdGhlci0+YXNEb3VibGUoKTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RkOjppc3Vub3Jk
ZXJlZChtX3ZhbHVlLCBvdGhlclZhbHVlKSB8fCBtX3ZhbHVlID09IG90aGVyVmFsdWUpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKaW5kZXgg
MjI3MGYwMDM5MmZkZmU4OGZiOWIzOTU5ZjQwNmJjZWY0YmVkYzZlOC4uMzhjYzQ2MGEzNzU0MDAz
NDA1NzU0OTUyZGQwMzkyN2QzMjQ2OTA5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCkBAIC0xMzMsNTIgKzEzMyw1MiBAQCBWYWx1ZSogQ29u
c3RGbG9hdFZhbHVlOjpkaXZDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25z
dCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKLSAg
ICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5k
ZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA9PSBvdGhlci0+YXNGbG9h
dCgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENvbnN0YW50KGNv
bnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQot
ICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlICE9IG90aGVyLT5hc0Zs
b2F0KCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdEZsb2F0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkp
Ci0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPCBvdGhlci0+YXNG
bG9hdCgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpncmVhdGVyVGhhbkNvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNGbG9h
dCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0
YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID4gb3RoZXIt
PmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6bGVzc0VxdWFsQ29u
c3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Zs
b2F0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJp
U3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3Ro
ZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlckVx
dWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXIt
Pmhhc0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUg
Pj0gb3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6ZXF1
YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBp
ZiAoc3RkOjppc25hbihtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAg
ICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogCiAgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQo
KSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0
ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBmbG9hdCBvdGhlclZhbHVlID0gb3RoZXItPmFzRmxvYXQo
KTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RkOjppc3Vub3JkZXJlZChtX3ZhbHVlLCBvdGhlclZh
bHVlKSB8fCBtX3ZhbHVlID09IG90aGVyVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5jcHAKaW5kZXggZDY4MmExNDVhMzRmYmJkOGNjZjI2NzMwYTI0NGZkZDZl
NDVjYjdmNy4uODEyY2E1ZjVkY2IwYTUzZGViZWU5YmMzOTUxODk1ZWFlY2Y3Yzk2NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBA
QCBWYWx1ZSogUHJvY2VkdXJlOjphZGRCb29sQ29uc3RhbnQoT3JpZ2luIG9yaWdpbiwgVHJpU3Rh
dGUgdHJpU3RhdGUpCiB7CiAgICAgaW50MzJfdCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoICh0cmlT
dGF0ZSkgewotICAgIGNhc2UgRmFsc2VUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpGYWxz
ZToKICAgICAgICAgdmFsdWUgPSAwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRydWVUcmlT
dGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpUcnVlOgogICAgICAgICB2YWx1ZSA9IDE7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTWl4ZWRUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKaW5kZXggNWNlMGE1MmY3ZmUyM2NiMDk4YjQzMGY0
MDUwYWMxMzg1M2E2NzE0ZS4uOGE2NTliYTU3NjQ4OWQwNjEwMDc1OTE4ZWY1ZjI2MGMwZGM5NTNh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKQEAgLTEzOSw3ICsxMzks
NyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZh
bHVlKiBhZGRCb3R0b20oVmFsdWUqKTsKIAotICAgIC8vIFJldHVybnMgbnVsbCBmb3IgTWl4ZWRU
cmlTdGF0ZS4KKyAgICAvLyBSZXR1cm5zIG51bGwgZm9yIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
LgogICAgIFZhbHVlKiBhZGRCb29sQ29uc3RhbnQoT3JpZ2luLCBUcmlTdGF0ZSk7CiAKICAgICB2
b2lkIHJlc2V0VmFsdWVPd25lcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcAppbmRleCAzY2NmMjUyNjk5MjczNjgzYzA2ZDM5Y2IzZGUzNzdkOWMx
MDJhNmVmLi5iMGY5NDY3MzFjOTMxNTAzNGRkNGU5OTc2N2RhNTI3ZDhlMDg1NjQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC0xODk0LDcg
KzE4OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgICAgIGNh
c2UgQmVsb3dFcXVhbDogewogICAgICAgICAgICAgQ2Fub25pY2FsaXplZENvbXBhcmlzb24gY29t
cGFyaXNvbiA9IGNhbm9uaWNhbGl6ZUNvbXBhcmlzb24obV92YWx1ZSk7Ci0gICAgICAgICAgICBU
cmlTdGF0ZSByZXN1bHQgPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgVHJpU3RhdGUgcmVz
dWx0ID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBh
cmlzb24ub3Bjb2RlKSB7CiAgICAgICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IGNvbXBhcmlzb24ub3BlcmFuZHNbMV0tPmdyZWF0ZXJUaGFuQ29uc3RhbnQo
Y29tcGFyaXNvbi5vcGVyYW5kc1swXSk7CkBAIC0yMTY3LDcgKzIxNjcsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJyYW5jaCgwLCB0aGVuLCBlbHNlKQogICAgICAg
ICAgICAgLy8gSW50byB0aGlzOiBKdW1wKGVsc2UpCi0gICAgICAgICAgICBpZiAodHJpU3RhdGUg
PT0gRmFsc2VUcmlTdGF0ZSkgeworICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRyaVN0YXRl
OjpGYWxzZSkgewogICAgICAgICAgICAgICAgIG1fYmxvY2stPnRha2VuKCkuYmxvY2soKS0+cmVt
b3ZlUHJlZGVjZXNzb3IobV9ibG9jayk7CiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhKdW1wKG1fYmxvY2ssIG1fYmxvY2stPm5vdFRha2VuKCkpOwogICAgICAgICAgICAgICAg
IG1fY2hhbmdlZENGRyA9IHRydWU7CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBwcml2YXRlOgogCiAg
ICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJyYW5jaChub3QgMCwgdGhlbiwgZWxzZSkKICAgICAg
ICAgICAgIC8vIEludG8gdGhpczogSnVtcCh0aGVuKQotICAgICAgICAgICAgaWYgKHRyaVN0YXRl
ID09IFRydWVUcmlTdGF0ZSkgeworICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRyaVN0YXRl
OjpUcnVlKSB7CiAgICAgICAgICAgICAgICAgbV9ibG9jay0+bm90VGFrZW4oKS5ibG9jaygpLT5y
ZW1vdmVQcmVkZWNlc3NvcihtX2Jsb2NrKTsKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBs
YWNlV2l0aEp1bXAobV9ibG9jaywgbV9ibG9jay0+dGFrZW4oKSk7CiAgICAgICAgICAgICAgICAg
bV9jaGFuZ2VkQ0ZHID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRl
eCA0ZGQ1Y2I4NjZhZDczZTIxYmEyZGE0MzdmM2QwMWM3ZGU1YmE0YzRkLi4xN2EyMmYwZWY2YWIx
NTIyMGNlNjE2OGQ3NjlkZDVlOWFhYmYxZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFs
dWUuY3BwCkBAIC0zNzksNTcgKzM3OSw1NyBAQCBWYWx1ZSogVmFsdWU6OnNxcnRDb25zdGFudChQ
cm9jZWR1cmUmKSBjb25zdAogCiBUcmlTdGF0ZSBWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBW
YWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRy
aVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bm90RXF1YWxDb25z
dGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Cisg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6
bGVzc1RoYW5Db25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVk
VHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlT
dGF0ZSBWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUq
KSBjb25zdAogewotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0
ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjph
Ym92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlT
dGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRl
IFZhbHVlOjpiZWxvd0NvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4g
TWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAK
IFRyaVN0YXRlIFZhbHVlOjphYm92ZUVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAog
ewotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgVmFsdWU6OmJlbG93RXF1YWxDb25zdGFudChjb25zdCBW
YWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRy
aVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6ZXF1YWxPclVub3Jk
ZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlT
dGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFZhbHVlKiBW
YWx1ZTo6aW52ZXJ0ZWRDb21wYXJlKFByb2NlZHVyZSYgcHJvYykgY29uc3QKQEAgLTUyMCw3ICs1
MjAsNyBAQCBUcmlTdGF0ZSBWYWx1ZTo6YXNUcmlTdGF0ZSgpIGNvbnN0CiAgICAgY2FzZSBDb25z
dEZsb2F0OgogICAgICAgICByZXR1cm4gdHJpU3RhdGUoYXNGbG9hdCgpICE9IDAuKTsKICAgICBk
ZWZhdWx0OgotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRy
aVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmgKaW5kZXggMDEwMGJiNDE5ZGQwNTE3YjA5YTc5ZmU2MDlhNWVlODM2MTFhODhjNC4uYzdm
NzdkOWVkNDEyMjhhYTU0YmYxZWVkYjNlODJhM2EyMGM4NWU2NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5oCkBAIC0yOTAsOCArMjkwLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNSb3Vu
ZGVkKCkgY29uc3Q7CiAKICAgICBUcmlTdGF0ZSBhc1RyaVN0YXRlKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc0xpa2VaZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgpID09IEZhbHNlVHJpU3Rh
dGU7IH0KLSAgICBib29sIGlzTGlrZU5vblplcm8oKSBjb25zdCB7IHJldHVybiBhc1RyaVN0YXRl
KCkgPT0gVHJ1ZVRyaVN0YXRlOyB9CisgICAgYm9vbCBpc0xpa2VaZXJvKCkgY29uc3QgeyByZXR1
cm4gYXNUcmlTdGF0ZSgpID09IFRyaVN0YXRlOjpGYWxzZTsgfQorICAgIGJvb2wgaXNMaWtlTm9u
WmVybygpIGNvbnN0IHsgcmV0dXJuIGFzVHJpU3RhdGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsgfQog
CiAgICAgRWZmZWN0cyBlZmZlY3RzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZDRhY2FmODkzNzgzMWEwZjFjZGE2NDMxMzM2
MGI4MDhjMzlhOGJhMy4uNjk3NGFkYjk1YzFmNWEzMjczYmU5NmZiMTMzYmYyZGY1NTBlNjM0MyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTg1
Myw4ICs4NTMsOCBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIGlmIChVTkxJS0VMWSh2
bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKQogICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmls
ZXItPm5vdGlmeURlc3RydWN0aW9uKHRoaXMpOwogCi0gICAgaWYgKCF2bS5oZWFwLmlzU2h1dHRp
bmdEb3duKCkgJiYgdW5saW5rZWRDb2RlQmxvY2soKS0+ZGlkT3B0aW1pemUoKSA9PSBNaXhlZFRy
aVN0YXRlKQotICAgICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT5zZXREaWRPcHRpbWl6ZShGYWxz
ZVRyaVN0YXRlKTsKKyAgICBpZiAoIXZtLmhlYXAuaXNTaHV0dGluZ0Rvd24oKSAmJiB1bmxpbmtl
ZENvZGVCbG9jaygpLT5kaWRPcHRpbWl6ZSgpID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQor
ICAgICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT5zZXREaWRPcHRpbWl6ZShUcmlTdGF0ZTo6RmFs
c2UpOwogCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQ
cm9maWxlcygpOwpAQCAtMzM4NSwxMSArMzM4NSwxMSBAQCBPcHRpb25hbDxCeXRlY29kZUluZGV4
PiBDb2RlQmxvY2s6OmJ5dGVjb2RlSW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4
CiBpbnQzMl90IENvZGVCbG9jazo6dGhyZXNob2xkRm9ySklUKGludDMyX3QgdGhyZXNob2xkKQog
ewogICAgIHN3aXRjaCAodW5saW5rZWRDb2RlQmxvY2soKS0+ZGlkT3B0aW1pemUoKSkgewotICAg
IGNhc2UgTWl4ZWRUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOgog
ICAgICAgICByZXR1cm4gdGhyZXNob2xkOwotICAgIGNhc2UgRmFsc2VUcmlTdGF0ZToKKyAgICBj
YXNlIFRyaVN0YXRlOjpGYWxzZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9sZCAqIDQ7Ci0gICAg
Y2FzZSBUcnVlVHJpU3RhdGU6CisgICAgY2FzZSBUcmlTdGF0ZTo6VHJ1ZToKICAgICAgICAgcmV0
dXJuIHRocmVzaG9sZCAvIDI7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKaW5kZXggNTRkYTU3ZGFiNjljYTI2MWFlZmRjZWI5MzhmZmEwZjRmZjAzNzkxNS4uNDhjYWI0
MjJiMTU2YzFhOWM0ODAxNDIxMGNlZGVjODY1NmJiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02OSw3ICs2
OSw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlw
ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5kZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAg
LCBtX2V2YWxDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5ldmFsQ29udGV4
dFR5cGUoKSkpCiAgICAgLCBtX2NvZGVUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlw
ZSkpCi0gICAgLCBtX2RpZE9wdGltaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0
YXRlKSkKKyAgICAsIG1fZGlkT3B0aW1pemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRyaVN0YXRl
OjpJbmRldGVybWluYXRlKSkKICAgICAsIG1fYWdlKDApCiAgICAgLCBtX2hhc0NoZWNrcG9pbnRz
KGZhbHNlKQogICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1vZGUoKSkKQEAgLTc4LDcgKzc4
LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3Rv
cktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKTsK
ICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUp
KTsKLSAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4
ZWRUcmlTdGF0ZSkpOworICAgIEFTU0VSVChtX2RpZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkpOwogICAgIGlmIChpbmZvLm5lZWRzQ2xh
c3NGaWVsZEluaXRpYWxpemVyKCkgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olllcykg
ewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkp
KTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDBiZjMwMjhkODEwYzYxNmViMDdhZGE2NmM1N2Rh
OTI5OWUxYmJjY2UuLjViOThhNTQ2ZjE5MmIyZDhmMDYzMGEzYzcxODVjNTFmZDE1MTVhNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90Vmlz
aXRvciYgdmlzaXRvCiAgICAgICAgIGF1dG8gbWFya0lmUHJvZml0YWJsZSA9IFsmXSAoV3JpdGVC
YXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+JiB1bmxpbmtlZENvZGVCbG9jaykgewog
ICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPmRpZE9wdGltaXplKCkgPT0g
VHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5kaWRPcHRp
bWl6ZSgpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
KHVubGlua2VkQ29kZUJsb2NrKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHVubGlua2VkQ29kZUJs
b2NrLT5hZ2UoKSA8IFVubGlua2VkQ29kZUJsb2NrOjptYXhBZ2UpCiAgICAgICAgICAgICAgICAg
dmlzaXRvci5hcHBlbmQodW5saW5rZWRDb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDEzZDRiYTc0ODEy
MTExNWE3OWRhOTI0MmU2ZjIxOGFjYmU2Y2E2ODUuLjMxMjQ5MmFjYWI4NTFkMjlhNWFhMzQ0MWI4
YzQ5ZjViZTg2Y2RmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTEwMywxNSArMTAzLDE1IEBAIHZvaWQgQ29uc3Rh
bnROb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwKICAgICBUcmlTdGF0ZSB2YWx1ZSA9IGpzVmFsdWUoZ2VuZXJhdG9yKS5wdXJl
VG9Cb29sZWFuKCk7CiAKICAgICBpZiAoVU5MSUtFTFkobmVlZHNEZWJ1Z0hvb2soKSkpIHsKLSAg
ICAgICAgaWYgKHZhbHVlICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGlmICh2YWx1ZSAhPSBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKHRoaXMpOwogICAgIH0KIAotICAgIGlmICh2YWx1ZSA9PSBNaXhlZFRyaVN0YXRlKQorICAg
IGlmICh2YWx1ZSA9PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgRXhwcmVzc2lv
bk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChnZW5lcmF0b3IsIHRydWVUYXJn
ZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1vZGUpOwotICAgIGVsc2UgaWYgKHZhbHVlID09
IFRydWVUcmlTdGF0ZSAmJiBmYWxsVGhyb3VnaE1vZGUgPT0gRmFsbFRocm91Z2hNZWFuc0ZhbHNl
KQorICAgIGVsc2UgaWYgKHZhbHVlID09IFRyaVN0YXRlOjpUcnVlICYmIGZhbGxUaHJvdWdoTW9k
ZSA9PSBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcCh0
cnVlVGFyZ2V0KTsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBGYWxzZVRyaVN0YXRlICYmIGZhbGxU
aHJvdWdoTW9kZSA9PSBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSkKKyAgICBlbHNlIGlmICh2YWx1ZSA9
PSBUcmlTdGF0ZTo6RmFsc2UgJiYgZmFsbFRocm91Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVhbnNU
cnVlKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZmFsc2VUYXJnZXQpOwogCiAgICAgLy8g
QWxsIG90aGVyIGNhc2VzIGFyZSB1bmNvbmRpdGlvbmFsIGZhbGwtdGhyb3VnaHMsIGxpa2UgImlm
ICh0cnVlKSIuCkBAIC0yNDc2LDEzICsyNDc2LDEzIEBAIHZvaWQgQmluYXJ5T3BOb2RlOjplbWl0
Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwK
ICAgICB0cnlGb2xkVG9CcmFuY2goZ2VuZXJhdG9yLCBicmFuY2hDb25kaXRpb24sIGJyYW5jaEV4
cHJlc3Npb24pOwogCiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRGVidWdIb29rKCkpKSB7Ci0gICAg
ICAgIGlmIChicmFuY2hDb25kaXRpb24gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgaWYgKGJy
YW5jaENvbmRpdGlvbiAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwogICAgIH0KIAotICAgIGlmIChicmFuY2hDb25k
aXRpb24gPT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICBpZiAoYnJhbmNoQ29uZGl0aW9uID09IFRyaVN0
YXRlOjpJbmRldGVybWluYXRlKQogICAgICAgICBFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2Rl
SW5Db25kaXRpb25Db250ZXh0KGdlbmVyYXRvciwgdHJ1ZVRhcmdldCwgZmFsc2VUYXJnZXQsIGZh
bGxUaHJvdWdoTW9kZSk7Ci0gICAgZWxzZSBpZiAoYnJhbmNoQ29uZGl0aW9uID09IFRydWVUcmlT
dGF0ZSkKKyAgICBlbHNlIGlmIChicmFuY2hDb25kaXRpb24gPT0gVHJpU3RhdGU6OlRydWUpCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNz
aW9uLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFsbFRocm91Z2hNb2RlKTsKICAgICBlbHNl
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChicmFuY2hFeHBy
ZXNzaW9uLCBmYWxzZVRhcmdldCwgdHJ1ZVRhcmdldCwgaW52ZXJ0KGZhbGxUaHJvdWdoTW9kZSkp
OwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbkZvbGRUb0JyYW5j
aChPcGNvZGVJRCBvcGNvZGVJRCwgRXhwcmVzc2lvbk5vZGUqIGJyYW5jaEV4cHIKIAogdm9pZCBC
aW5hcnlPcE5vZGU6OnRyeUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBUcmlTdGF0ZSYgYnJhbmNoQ29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSomIGJyYW5jaEV4cHJl
c3Npb24pCiB7Ci0gICAgYnJhbmNoQ29uZGl0aW9uID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICBicmFu
Y2hDb25kaXRpb24gPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBicmFuY2hFeHByZXNz
aW9uID0gMDsKIAogICAgIENvbnN0YW50Tm9kZSogY29uc3RhbnQgPSAwOwpAQCAtMjUyNyw5ICsy
NTI3LDkgQEAgdm9pZCBCaW5hcnlPcE5vZGU6OnRyeUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBUcmlTdGF0ZSYgYnJhbmMKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG9wY29kZUlEID09IG9wX2VxIHx8IG9wY29kZUlEID09IG9wX3N0cmljdGVxKQotICAgICAg
ICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSh2YWx1ZS5wdXJlVG9Cb29sZWFuKCkpOworICAg
ICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSh2YWx1ZS5wdXJlVG9Cb29sZWFuKCkgIT0g
VHJpU3RhdGU6OkZhbHNlKTsKICAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXEgfHwgb3Bj
b2RlSUQgPT0gb3BfbnN0cmljdGVxKQotICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0
ZSghdmFsdWUucHVyZVRvQm9vbGVhbigpKTsKKyAgICAgICAgYnJhbmNoQ29uZGl0aW9uID0gdHJp
U3RhdGUodmFsdWUucHVyZVRvQm9vbGVhbigpID09IFRyaVN0YXRlOjpGYWxzZSk7CiB9CiAKIFJl
Z2lzdGVySUQqIEJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMWEzZWUzNTAxNGZhNDg0YmFiN2UzNjg4MGIy
NDI0YzlhMzRiM2YxZS4uOTBlMTMzMDA1ZTgzNTZiZjU1M2MwMDViM2Q0YWE0N2QxNzg2ZmE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTM0ODcsMjIgKzM0ODcsMjIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmlu
c2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAg
ICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlhbiA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogICAgICAgICAgICAgTm9kZSogbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOwogICAgICAg
ICAgICAgaWYgKGJ5dGVTaXplID4gMSkgewogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA8IDMpCi0gICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFu
ID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBU
cmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5j
bHVkaW5nVGhpcygyLCByZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAo
bGl0dGxlRW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEpTVmFsdWUgY29uc3RhbnQgPSBsaXR0bGVFbmRpYW5DaGlsZC0+Y29uc3RhbnQoKS0+dmFs
dWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gY29uc3RhbnQucHVyZVRvQm9vbGVh
bigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBN
aXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVu
ZGlhbiAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlzTGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlzTGl0dGxlRW5kaWFuID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0zNTcyLDIyICszNTcyLDIyIEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJl
c3VsdCwgSW50cmluc2ljCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRp
YW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4g
PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICAgICAgICAgIE5vZGUqIGxpdHRsZUVuZGlh
bkNoaWxkID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChieXRlU2l6ZSA+IDEpIHsKICAgICAg
ICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCA0KQotICAgICAgICAg
ICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAg
ICAgICAgIGlzTGl0dGxlRW5kaWFuID0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgICAg
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2aXJ0
dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMywgcmVnaXN0ZXJPZmZzZXQpKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKGxpdHRsZUVuZGlhbkNoaWxkLT5oYXNDb25zdGFudCgp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5k
aWFuQ2hpbGQtPmNvbnN0YW50KCktPnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoY29uc3RhbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlh
biA9IGNvbnN0YW50LnB1cmVUb0Jvb2xlYW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNMaXR0bGVFbmRpYW4gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaXNMaXR0bGVFbmRpYW4gIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVs
bHB0cjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3Rh
dGU7CisgICAgICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHAKaW5kZXggNjEwZDdkMjBlZjY1MzVmN2E4ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYy4uNDU3
OTBiZjgwMzkxNjRhMTRiN2MxMjVkYWE2MTFlNjA4OTc2M2QyZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCkBA
IC0xNzAsMTcgKzE3MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHRl
cm1pbmFsID0gYmxvY2stPnRlcm1pbmFsKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJt
aW5hbC0+Y2hpbGQxKCktPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IEZyb3plblZhbHVlKiB2YWx1ZSA9IHRlcm1pbmFsLT5jaGlsZDEoKS0+Y29uc3RhbnQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFRyaVN0YXRlIGZvdW5kID0gRmFsc2VUcmlTdGF0ZTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIFRyaVN0YXRlIGZvdW5kID0gVHJpU3RhdGU6OkZhbHNlOwog
ICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgPSAwOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgp
OyBmb3VuZCA9PSBGYWxzZVRyaVN0YXRlICYmIGktLTspIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEtPmNhc2VzLnNpemUoKTsgZm91bmQgPT0gVHJpU3Rh
dGU6OkZhbHNlICYmIGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9
IGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN0cmljdEVxdWFsKHZhbHVlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoZm91bmQgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2sgPSBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxv
Y2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBNaXhlZFRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGZvdW5kID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZm91bmQgPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRhcmdldEJsb2NrID0gZGF0YS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQodGFyZ2V0QmxvY2spOwogICAgICAgICAgICAgICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCmluZGV4IDRl
ZDc1ODRmMjQ5NzIyY2FmOTE4NjlhYzMwNWJkMzUwNzY3YTNlNzUuLjAxZjQyZjhiNGM1NGJiODlh
OGJhNTUzNmQxODIyY2RkNGVjNDI1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuY3BwCkBAIC02MiwxNSArNjIsMTUgQEAgSlNWYWx1ZSBMYXp5SlNWYWx1
ZTo6Z2V0VmFsdWUoVk0mIHZtKSBjb25zdAogc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TaW5nbGVD
aGFyYWN0ZXIoSlNWYWx1ZSB2YWx1ZSwgVUNoYXIgY2hhcmFjdGVyKQogewogICAgIGlmICghdmFs
dWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgCiAgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0gYXNT
dHJpbmcodmFsdWUpOwogICAgIGlmIChqc1N0cmluZy0+bGVuZ3RoKCkgIT0gMSkKLSAgICAgICAg
cmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAg
ICAgCiAgICAgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nID0ganNTdHJpbmctPnRyeUdldFZhbHVl
SW1wbCgpOwogICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIAogICAgIHJldHVy
biB0cmlTdGF0ZShzdHJpbmctPmF0KDApID09IGNoYXJhY3Rlcik7CiB9CkBAIC03OCwxMiArNzgs
MTIgQEAgc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TaW5nbGVDaGFyYWN0ZXIoSlNWYWx1ZSB2YWx1
ZSwgVUNoYXIgY2hhcmFjdGVyKQogc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TdHJpbmdJbXBsKEpT
VmFsdWUgdmFsdWUsIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiB7CiAgICAgaWYgKCF2YWx1ZS5p
c1N0cmluZygpKQotICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpGYWxzZTsKICAgICAKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSBhc1N0cmlu
Zyh2YWx1ZSk7CiAgICAgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nID0ganNTdHJpbmctPnRyeUdl
dFZhbHVlSW1wbCgpOwogICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlT
dGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIAogICAg
IHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKHN0cmluZ0ltcGwsIHN0cmluZykpOwogfQpAQCAt
MTQyLDE4ICsxNDIsMTggQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0
IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgc3dpdGNoIChvdGhlci5tX2tpbmQp
IHsKICAgICAgICAgY2FzZSBLbm93blZhbHVlOiB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKCkt
PnZhbHVlKCkgfHwgIW90aGVyLnZhbHVlKCktPnZhbHVlKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHZhbHVlKCktPnZhbHVlKCkgPT0gb3RoZXIudmFsdWUoKS0+dmFsdWUoKSA/IFRydWVUcmlT
dGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZh
bHVlKCkgPT0gb3RoZXIudmFsdWUoKS0+dmFsdWUoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3Rh
dGU6OkZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCh2
YWx1ZSgpLT52YWx1ZSgpLCBvdGhlci52YWx1ZSgpLT52YWx1ZSgpKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmluZzogewogICAgICAgICAgICAgaWYgKCF2YWx1
ZSgpLT52YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAg
ICAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICByZXR1cm4g
ZXF1YWxUb1NpbmdsZUNoYXJhY3Rlcih2YWx1ZSgpLT52YWx1ZSgpLCBvdGhlci5jaGFyYWN0ZXIo
KSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6CiAgICAgICAgIGNh
c2UgTmV3U3RyaW5nSW1wbDogewogICAgICAgICAgICAgaWYgKCF2YWx1ZSgpLT52YWx1ZSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1N0cmluZ0lt
cGwodmFsdWUoKS0+dmFsdWUoKSwgb3RoZXIuc3RyaW5nSW1wbCgpKTsKICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0xNjUsNyArMTY1LDcgQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVx
dWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgY2FzZSBLbm93blN0
cmluZ0ltcGw6CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nSW1wbDoKICAgICAgICAgICAgIGlmIChv
dGhlci5zdHJpbmdJbXBsKCktPmxlbmd0aCgpICE9IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsK
ICAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShvdGhlci5zdHJpbmdJbXBsKCktPmF0KDApID09
IGNoYXJhY3RlcigpKTsKICAgICAgICAgY2FzZSBLbm93blZhbHVlOgogICAgICAgICAgICAgcmV0
dXJuIG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsKQEAgLTE4NCw3ICsxODQsNyBAQCBUcmlTdGF0
ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0RXF1YWwoY29uc3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25z
dAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNl
OwogfQogCiB1aW50cHRyX3QgTGF6eUpTVmFsdWU6OnN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtp
bmQga2luZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCmluZGV4IDk3YWYyZTJjZGJmODZmYjY3NmQ0YmQxYjhmMDdhYjA5ZWYx
ZDIzMWMuLmVmYmRjOTA4OWU2NzlhMTQ2Mjg3NDA2ZWIzYzZmMjJmNzc4ZjJlMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAt
NTExOCw5ICs1MTE4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDE2VG8zMih0MiwgdDIp
OwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJp
Z0VuZGlhbkxvYWQoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0
dGxlRW5kaWFuTG9hZCgpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsK
QEAgLTUxMzcsOSArNTEzNyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIGNhc2UgNDogewogICAgICAgICAgICAgICAgIG1faml0LmxvYWQz
MihiYXNlSW5kZXgsIHQyKTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5ieXRl
U3dhcDMyKHQyKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOwog
ICAgICAgICAgICAgICAgICAgICBhdXRvIGlzTGl0dGxlRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVz
dDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZElt
bTMyKDEpKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Mik7CkBAIC01
MTczLDkgKzUxNzMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUp
CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHJlc3VsdEZQ
UiwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlm
IChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAg
ICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAg
ICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52
YWxpZEdQUlJlZyk7CkBAIC01MjAwLDkgKzUyMDAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91
YmxlKHQyLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAg
ICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAg
ICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAg
ICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwogICAgICAgICAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAh
PSBJbnZhbGlkR1BSUmVnKTsKQEAgLTUzMTIsOSArNTMxMiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUz
Mih0MywgYmFzZUluZGV4KTsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAg
ICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
ZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAg
ICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0g
SW52YWxpZEdQUlJlZyk7CkBAIC01MzM4LDkgKzUzMzgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3JlNjQo
dDMsIGJhc2VJbmRleCk7CiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgIGlm
IChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAg
ICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAg
ICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IElu
dmFsaWRHUFJSZWcpOwpAQCAtNTM3Miw5ICs1MzcyLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTE2KHQz
LCBiYXNlSW5kZXgpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAo
ZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlm
IChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAg
ICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlm
IChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAg
ICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZh
bGlkR1BSUmVnKTsKQEAgLTU0MDAsOSArNTQwMCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih0Mywg
YmFzZUluZGV4KTsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAo
ZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5p
c0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAo
ZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAg
ICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxp
ZEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKaW5kZXggYTFhMTZmYjlkNWMwNzJiNzUwMjU3YzAxZWVlMjhhMDhhZjI0MDIxMi4uMzgxMjNh
ZTE3NjQzZDVlNmEwMTJkYWZiMjgxODBjOTkwZmNhMjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTQxOTAsOSArMTQxOTAsOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKICAgICAgICAg
ICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
RmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9
PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRCaWdF
bmRpYW5Mb2FkKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0
bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIHNldEludDMy
KGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgc2V0SW50MzIoZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xp
dHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkxvYWQsIGVtaXRCaWdFbmRpYW5Mb2FkKSk7CkBA
IC0xNDIwMiw5ICsxNDIwMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIDQ6IHsKICAg
ICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291dC5sb2FkMzIocG9pbnRlcik7
CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0
YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRl
OjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBieXRlU3dhcDMyKGxv
YWRlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0gewogICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGxvYWRlZFZhbHVlOwogICAgICAgICAgICAgICAgICAgICB9OwpAQCAtMTQy
NDcsOSArMTQyNDcsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0
Y2hwb2ludDsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEu
aXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBz
ZXREb3VibGUoZW1pdExpdHRsZUVuZGlhbkNvZGUoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAg
ICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdEJpZ0VuZGlhbkNvZGUoKSk7CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdENvZGVCYXNlZE9u
RW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVt
aXRCaWdFbmRpYW5Db2RlKSk7CkBAIC0xNDI2Nyw5ICsxNDI2Nyw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KGxvYWRlZFZhbHVlLCBEb3VibGUp
OwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRs
ZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0
bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIHNldERvdWJs
ZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAg
ICAgICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsKICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0Q29kZUJhc2VkT25FbmRpYW5u
ZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0Vu
ZGlhbkNvZGUpKTsKQEAgLTE0MzM4LDkgKzE0MzM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAg
ICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAg
ICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAg
ICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAg
ICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICBlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNo
KGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUp
OwpAQCAtMTQzNTYsOSArMTQzNTYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0
YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAg
ICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgICAgIGVtaXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0bGVF
bmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFuQ29kZSk7CkBAIC0xNDM4
OSw5ICsxNDM4OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1p
dEJpZ0VuZGlhbkNvZGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxl
RW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0
TGl0dGxlRW5kaWFuQ29kZSgpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1p
dExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKTsKQEAgLTE0NDEyLDkgKzE0NDEy
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFu
Q29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
VHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRp
YW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBlbWl0
Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5k
aWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExP
dXRwdXQuY3BwCmluZGV4IGQ1N2ZiMWVlYTgwNDRhMzRiNzkxNzY4YTkwOTc2OTg5OThhYzMzOTIu
LjZjNjA5YjRhNzQ0NThlYWRiMDllOTM5NDNmMTZmNGI1YWJjYzM4ZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKQEAgLTQ5OCw4MCArNDk4LDgwIEBAIExWYWx1ZSBP
dXRwdXQ6OmJhc2VJbmRleChMVmFsdWUgYmFzZSwgTFZhbHVlIGluZGV4LCBTY2FsZSBzY2FsZSwg
cHRyZGlmZl90IG9mZnNlCiBMVmFsdWUgT3V0cHV0OjplcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVl
IHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmVxdWFsQ29uc3RhbnQocmln
aHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNv
bnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0
YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBU
cmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+
KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUg
T3V0cHV0Ojpub3RFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0
YXRlIHJlc3VsdCA9IGxlZnQtPm5vdEVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1
bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0g
VHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRl
KQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAg
ICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVx
dWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0OjphYm92ZShM
VmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQt
PmFib3ZlQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkK
LSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBp
ZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29u
c3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFw
cGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlLCBvcmlnaW4oKSwgbGVmdCwgcmln
aHQpOwogfQogCiBMVmFsdWUgT3V0cHV0OjphYm92ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1
ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5hYm92ZUVxdWFsQ29uc3Rh
bnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0
dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3Vs
dCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6
VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiB9
CiAKIExWYWx1ZSBPdXRwdXQ6OmJlbG93KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7CiAg
ICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+YmVsb3dDb25zdGFudChyaWdodCk7Ci0gICAgaWYg
KHJlc3VsdCAhPSBNaXhlZFRyaVN0YXRlKQotICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3Vs
dCA9PSBUcnVlVHJpU3RhdGUpOworICAgIGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJt
aW5hdGUpCisgICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVl
KTsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
QmVsb3csIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmJlbG93
T3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3Vs
dCA9IGxlZnQtPmJlbG93RXF1YWxDb25zdGFudChyaWdodCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBN
aXhlZFRyaVN0YXRlKQotICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcnVlVHJp
U3RhdGUpOworICAgIGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAg
ICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKTsKICAgICByZXR1
cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3dFcXVhbCwg
b3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6Z3JlYXRlclRoYW4o
TFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0
LT5ncmVhdGVyVGhhbkNvbnN0YW50KHJpZ2h0KTsKLSAgICBpZiAocmVzdWx0ICE9IE1peGVkVHJp
U3RhdGUpCi0gICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRydWVUcmlTdGF0ZSk7
CisgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgcmV0
dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpOwogICAgIHJldHVybiBtX2Js
b2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2lu
KCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFs
KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVm
dC0+Z3JlYXRlckVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRU
cmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRl
KTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBy
ZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJFcXVhbCwgb3Jp
Z2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6bGVzc1RoYW4oTFZhbHVl
IGxlZnQsIExWYWx1ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5sZXNz
VGhhbkNvbnN0YW50KHJpZ2h0KTsKLSAgICBpZiAocmVzdWx0ICE9IE1peGVkVHJpU3RhdGUpCi0g
ICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRydWVUcmlTdGF0ZSk7CisgICAgaWYg
KHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN0
Qm9vbChyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpOwogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBl
bmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpMZXNzVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJp
Z2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6bGVzc1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBM
VmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+bGVzc0VxdWFsQ29u
c3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0
ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJl
c3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXgg
MmUxNzI1NGQ2YzQ3MWJiYmRhYmNiMjY1Mzk5ZDFiYmJlZDE3N2E2NS4uMDA2OGE3ZDc0ODU0ZjJm
OWI2NzcwMzFiOGE1ZmFiYzhlYTU3NGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNzE3LDcgKzE3MTcsNyBAQCBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJf
dCBieXRlYwogICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJQZXJm
b3JtaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4gIiwgb3B0aW1pemVkQ29kZUJsb2NrKTsKIAog
ICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwotICAgICAgICBjb2RlQmxvY2stPnVu
bGlua2VkQ29kZUJsb2NrKCktPnNldERpZE9wdGltaXplKFRydWVUcmlTdGF0ZSk7CisgICAgICAg
IGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+c2V0RGlkT3B0aW1pemUoVHJpU3RhdGU6
OlRydWUpOwogICAgICAgICB2b2lkKiB0YXJnZXRQQyA9IHZtLmdldENUSVN0dWIoREZHOjpvc3JF
bnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAg
dGFyZ2V0UEMgPSByZXRhZ0NvZGVQdHIodGFyZ2V0UEMsIEpJVFRodW5rUHRyVGFnLCBiaXR3aXNl
X2Nhc3Q8UHRyVGFnPihjYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh0
YXJnZXRQQywgZGF0YUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
YWNoZWRUeXBlcy5jcHAKaW5kZXggZDExNTcxZmViYTJhZWZmYjJmMmFlODVjNWQ4YmY0MmZiMjk5
NDc3Zi4uMWY5Zjk0YTRkYjY1M2RlNjBjZjYzMWIwYjQyYjMwNTdlOGYwYmZiZCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMjA2MCw3ICsy
MDYwLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxv
Y2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgogICAgICwgbV9ldmFsQ29udGV4dFR5cGUo
Y2FjaGVkQ29kZUJsb2NrLmV2YWxDb250ZXh0VHlwZSgpKQogICAgICwgbV9jb2RlVHlwZShjYWNo
ZWRDb2RlQmxvY2suY29kZVR5cGUoKSkKIAotICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisgICAgLCBtX2RpZE9wdGltaXplKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkpCiAgICAgLCBtX2FnZSgwKQog
ICAgICwgbV9oYXNDaGVja3BvaW50cyhjYWNoZWRDb2RlQmxvY2suaGFzQ2hlY2twb2ludHMoKSkK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9w
ZXJ0eUF0dHJpYnV0ZXMuaAppbmRleCAzNTAyYWEyZTk1MjE3YzIzMTFiNmMwOWIzNGFjNjJhZWUz
M2U0MTgyLi5jMGJjNzNlMDdhMTU0NzA3ODJlODJkODcwMDgzNjg3YmIwYzIzNWEyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0
dHJpYnV0ZXMuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGVm
aW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWNfYXNzZXJ0KEZhbHNl
VHJpU3RhdGUgPT0gMCwgIkZhbHNlVHJpU3RhdGUgaXMgMC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0
KFRydWVUcmlTdGF0ZSA9PSAxLCAiVHJ1ZVRyaVN0YXRlIGlzIDEuIik7Ci0gICAgc3RhdGljX2Fz
c2VydChNaXhlZFRyaVN0YXRlID09IDIsICJNaXhlZFRyaVN0YXRlIGlzIDIuIik7CisgICAgc3Rh
dGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkZhbHNlKSwgIlRyaVN0
YXRlOjpGYWxzZSBpcyAwLiIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDhf
dD4oVHJpU3RhdGU6OlRydWUpID09IDEsICJUcmlTdGF0ZTo6VHJ1ZSBpcyAxLiIpOworICAgIHN0
YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUp
ID09IDIsICJUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSBpcyAyLiIpOwogCiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBDb25maWd1cmFibGVTaGlmdCA9IDA7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciB1bnNpZ25lZCBFbnVtZXJhYmxlU2hpZnQgPSAyOwpAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1
YmxpYzoKIAogICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcygpCiAgICAgICAgIDogbV9hdHRy
aWJ1dGVzKAotICAgICAgICAgICAgKE1peGVkVHJpU3RhdGUgPDwgQ29uZmlndXJhYmxlU2hpZnQp
Ci0gICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRlIDw8IEVudW1lcmFibGVTaGlmdCkKLSAgICAg
ICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgV3JpdGFibGVTaGlmdCkKLSAgICAgICAgICAgIHwg
KDAgPDwgVmFsdWVTaGlmdCkKLSAgICAgICAgICAgIHwgKDAgPDwgR2V0U2hpZnQpCi0gICAgICAg
ICAgICB8ICgwIDw8IFNldFNoaWZ0KSkKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50OF90
PihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgPDwgQ29uZmlndXJhYmxlU2hpZnQpCisgICAgICAg
ICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgPDwg
RW51bWVyYWJsZVNoaWZ0KQorICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJp
U3RhdGU6OkluZGV0ZXJtaW5hdGUpIDw8IFdyaXRhYmxlU2hpZnQpCisgICAgICAgICAgICB8IChz
dGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6RmFsc2UpIDw8IFZhbHVlU2hpZnQpCisgICAg
ICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6RmFsc2UpIDw8IEdldFNo
aWZ0KQorICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkZhbHNl
KSA8PCBTZXRTaGlmdCkpCiAgICAgewogICAgIH0KIApAQCAtOTYsNjAgKzk2LDYwIEBAIHB1Ymxp
YzoKIAogICAgIGJvb2wgaGFzV3JpdGFibGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0KSAhPSBNaXhlZFRyaVN0YXRlOworICAgICAg
ICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRhYmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogICAgIH0KIAogICAgIE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlKCkgY29uc3QK
ICAgICB7CiAgICAgICAgIGlmICghaGFzV3JpdGFibGUoKSkKICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVTaGlm
dCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRh
YmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAogICAgIGJvb2wgaGFzQ29uZmln
dXJhYmxlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29u
ZmlndXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBleHRyYWN0
VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwog
ICAgIH0KIAogICAgIE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAoIWhhc0NvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlm
dCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZp
Z3VyYWJsZVNoaWZ0KSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9CiAKICAgICBib29sIGhhc0Vu
dW1lcmFibGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShF
bnVtZXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBleHRyYWN0
VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAg
ICB9CiAKICAgICBPcHRpb25hbDxib29sPiBlbnVtZXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghaGFzRW51bWVyYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRy
dWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hp
ZnQpID09IFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAogICAgIHZvaWQgc2V0V3JpdGFibGUoYm9v
bCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJp
U3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhU
cmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBXcml0YWJs
ZVNoaWZ0KTsKICAgICB9CiAKICAgICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQog
ICAgIHsKLSAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZh
bHNlVHJpU3RhdGUsIENvbmZpZ3VyYWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0
ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBDb25maWd1cmFibGVT
aGlmdCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wgdmFsdWUpCiAgICAg
ewotICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VU
cmlTdGF0ZSwgRW51bWVyYWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1
ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBFbnVtZXJhYmxlU2hpZnQpOwog
ICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3Rh
dGUsIHVuc2lnbmVkIHNoaWZ0KQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEg
PDwgc2hpZnQ7Ci0gICAgICAgIG1fYXR0cmlidXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykg
fCAoc3RhdGUgPDwgc2hpZnQpOworICAgICAgICBtX2F0dHJpYnV0ZXMgPSAobV9hdHRyaWJ1dGVz
ICYgfm1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRlKSA8PCBzaGlmdCk7CiAgICAg
fQogCiAgICAgVHJpU3RhdGUgZXh0cmFjdFRyaVN0YXRlKHVuc2lnbmVkIHNoaWZ0KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXgg
YTExMDdkZTA3MDVhZjEzYTY1Yzg2NDQ2MGI2YWRiMjRkNDMzYWY3Zi4uOGRlMDAzY2IwN2MwOWY5
NzEzODJmMzRkMjc0ZGYwZGZkZTEwZGE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0yMDEsOCArMjAxLDggQEAgdm9pZCBJbnRsQ29s
bGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGxvY2EKIAogICAgIFRyaVN0YXRlIG51bWVyaWMgPSBpbnRsQm9vbGVhbk9wdGlvbihn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPm51bWVyaWMpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgaWYgKG51bWVyaWMgIT0gTWl4
ZWRUcmlTdGF0ZSkKLSAgICAgICAgb3B0LmFkZCgia24iX3MsIG51bWVyaWMgPT0gVHJ1ZVRyaVN0
YXRlID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgIGlmIChudW1lcmljICE9IFRyaVN0YXRl
OjpJbmRldGVybWluYXRlKQorICAgICAgICBvcHQuYWRkKCJrbiJfcywgbnVtZXJpYyA9PSBUcmlT
dGF0ZTo6VHJ1ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIFN0cmluZyBjYXNlRmly
c3RPcHRpb24gPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJv
cGVydHlOYW1lcy0+Y2FzZUZpcnN0LCB7ICJ1cHBlciIsICJsb3dlciIsICJmYWxzZSIgfSwgImNh
c2VGaXJzdCBtdXN0IGJlIGVpdGhlciBcInVwcGVyXCIsIFwibG93ZXJcIiwgb3IgXCJmYWxzZVwi
IiwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKQEAg
LTI0Myw3ICsyNDMsNyBAQCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogCiAgICAgVHJpU3RhdGUg
aWdub3JlUHVuY3R1YXRpb24gPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZVB1bmN0dWF0aW9uKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1faWdub3JlUHVuY3R1YXRpb24gPSAoaWdu
b3JlUHVuY3R1YXRpb24gPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBtX2lnbm9yZVB1bmN0dWF0aW9u
ID0gKGlnbm9yZVB1bmN0dWF0aW9uID09IFRyaVN0YXRlOjpUcnVlKTsKIAogICAgIFVFcnJvckNv
ZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9w
dHI8VUNvbGxhdG9yLCBVQ29sbGF0b3JEZWxldGVyPih1Y29sX29wZW4obV9sb2NhbGUudXRmOCgp
LmRhdGEoKSwgJnN0YXR1cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMDIzNThjODg3OWZlYTk0OTUzNmJmMGRl
ZDlkMWZkY2RlYmM0Njg3ZS4uNzY2MmZhNjg5ZTRmOTk3YzlhZDdjZjk2ZjA5NmM1ZGY3NDMwMzA1
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1l
Rm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXQuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
CiAgICAgVHJpU3RhdGUgaG91cjEyID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyMTIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIg
PT0gTWl4ZWRUcmlTdGF0ZSk7CisgICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIg
PT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpOwogCiAgICAgU3RyaW5nIGhvdXJDeWNsZSA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5o
b3VyQ3ljbGUsIHsgImgxMSIsICJoMTIiLCAiaDIzIiwgImgyNCIgfSwgImhvdXJDeWNsZSBtdXN0
IGJlIFwiaDExXCIsIFwiaDEyXCIsIFwiaDIzXCIsIG9yIFwiaDI0XCIiLCBudWxscHRyKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwpAQCAtNTgyLDE0ICs1ODIsMTQg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlmIChob3VyID09ICIyLWRpZ2l0Iikgewog
ICAgICAgICBpZiAoaXNIb3VyMTJVbmRlZmluZWQgJiYgbV9ob3VyQ3ljbGUuaXNOdWxsKCkpCiAg
ICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiamoiKTsKLSAgICAgICAg
ZWxzZSBpZiAoaG91cjEyID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgZWxzZSBpZiAoaG91cjEy
ID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExp
dGVyYWwoImhoIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJISCIpOwogICAgIH0gZWxzZSBpZiAoaG91ciA9PSAibnVtZXJpYyIpIHsK
ICAgICAgICAgaWYgKGlzSG91cjEyVW5kZWZpbmVkICYmIG1faG91ckN5Y2xlLmlzTnVsbCgpKQog
ICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnaicpOwotICAgICAgICBlbHNlIGlm
IChob3VyMTIgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJp
U3RhdGU6OlRydWUpCiAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdoJyk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0gnKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
aW5kZXggYTZlYTFmNTE1OGUyYTdhZDdkZWQwMjBkMWJmOGE4NWQ4ZGFlYmE3YS4uOTI1ZmFjMDJi
Yzc2MTA5OGJhZTUwMTA2NGQ1ZjZiYjhkM2I4NTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTI4Myw3ICsyODMsNyBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAgICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBp
bnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJ1c2VHcm91cGluZyIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwotICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBGYWxzZVRyaVN0
YXRlOworICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7
CiAKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CiAgICAgc3dp
dGNoIChtX3N0eWxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwCmluZGV4IGYyM2Q5ZWQ5NTRkOGY5OTAxYzZjNjVkOTA4ZTg3Y2MwYzU2N2JlMGIuLjJh
ZDdlZTZiYTkyN2MxZWY0MzRlOTRkYjJmMDI0NzNkNmZlNjFmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0yMDksMTYgKzIwOSwxNiBAQCBU
cmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIG9wdGlvbnMsIFByb3BlcgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAKICAgICBKU09iamVjdCogb3B0cyA9IG9wdGlvbnMudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsK
LSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBNaXhlZFRyaVN0YXRlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSk7CiAKICAgICBK
U1ZhbHVlIHZhbHVlID0gb3B0cy0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOwotICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE1peGVkVHJpU3RhdGUpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIFRyaVN0YXRlOjpJbmRldGVybWluYXRlKTsKIAogICAgIGlmICh2YWx1
ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogCiAgICAgcmV0dXJuIHRyaVN0YXRlKHZh
bHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGIwOTExNjIyNDNiMGMwNDA1
MTk4YWFiNzNhZGQwYzY2MTBlMjIwYTAuLmEwZWIwMTMwNWMyMzIzNzUzODJhYTBhYzliNDdlNDhh
OWYxZjUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZUlubGluZXMuaApAQCAtMTI2Miw3ICsxMjYyLDcgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFs
dWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgICAgICAgICAg
Y29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1w
bCgpOwogICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjJTdHJpbmcgPSBhc1N0cmluZyh2
MiktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJT
dHJpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgICAgICAgICAgcmV0dXJu
IHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5p
c0hlYXBCaWdJbnQoKSkKQEAgLTEyNzUsMTYgKzEyNzUsMTYgQEAgaW5saW5lIFRyaVN0YXRlIEpT
VmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogaW5saW5lIFRy
aVN0YXRlIEpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmIChpc0ludDMy
KCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0
YXRlOworICAgICAgICByZXR1cm4gYXNJbnQzMigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0
ZTo6RmFsc2U7CiAgICAgaWYgKGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBpc05vdFplcm9B
bmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8g
ZmFsc2UgZm9yIE5hTgorICAgICAgICByZXR1cm4gaXNOb3RaZXJvQW5kT3JkZXJlZChhc0RvdWJs
ZSgpKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOyAvLyBmYWxzZSBmb3IgTmFO
CiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xl
YW4oKTsKICNpZiBVU0UoQklHSU5UMzIpCiAgICAgaWYgKGlzQmlnSW50MzIoKSkKLSAgICAgICAg
cmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlT
dGF0ZTo6RmFsc2U7CiAjZW5kaWYKLSAgICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUg
OiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBpc1RydWUoKSA/IFRyaVN0YXRlOjpUcnVlIDog
VHJpU3RhdGU6OkZhbHNlOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6cmVxdWly
ZU9iamVjdENvZXJjaWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDBkZWEy
NzU2ZTFlYzNkYjczODMxNDQwNjEyMzEwNjI3ZjBmZjhjYTMuLmU5OTdhZDAwYWU0YWVhNWU2MTBi
NDc4OGFmMGY3MzBiMDlmNjcxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTMzMCwxMiArMzMwLDEyIEBAIGlubGluZSBib29sIEpTQ2Vs
bDo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiBpbmxpbmUg
VHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJp
bmcoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcykt
PnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJp
U3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQot
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29s
ZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcmlTdGF0ZTo6
VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICBpZiAoaXNTeW1ib2woKSkKLSAgICAgICAgcmV0
dXJuIFRydWVUcmlTdGF0ZTsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0
dXJuIFRyaVN0YXRlOjpUcnVlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsK
IH0KIAogaW5saW5lIHZvaWQgSlNDZWxsTG9jazo6bG9jaygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9UcmlTdGF0ZS5oIGIvU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAppbmRleCA1YWU3
ODVkM2I5ZDgwZDgzYWEwNzRmZTgyMWNkMDY4NTdkNjYxY2EwLi43ZTUyZTdiMzYxOWU3MzUyYjVl
NGY1ZjdkOTRlOWJlMTk5ZmM1NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UcmlTdGF0
ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgKQEAgLTI3LDEwICsyNywxMCBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBUcmlTdGF0ZSA6IHVpbnQ4X3QgewotICAgIEZhbHNl
VHJpU3RhdGUsCi0gICAgVHJ1ZVRyaVN0YXRlLAotICAgIE1peGVkVHJpU3RhdGUKK2VudW0gY2xh
c3MgVHJpU3RhdGUgOiB1aW50OF90IHsKKyAgICBGYWxzZSwKKyAgICBUcnVlLAorICAgIEluZGV0
ZXJtaW5hdGUKIH07CiAKIGlubGluZSBUcmlTdGF0ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4pCkBA
IC00MSw3ICs0MSw0IEBAIGlubGluZSBUcmlTdGF0ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4pCiB9
CiAKIHVzaW5nIFdURjo6VHJpU3RhdGU7Ci11c2luZyBXVEY6OkZhbHNlVHJpU3RhdGU7Ci11c2lu
ZyBXVEY6OlRydWVUcmlTdGF0ZTsKLXVzaW5nIFdURjo6TWl4ZWRUcmlTdGF0ZTsKIHVzaW5nIFdU
Rjo6dHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjNmQ5NThiMjVkMWJmNTM2
YzI3NGI3ZTUyZjljNTNiNWFmMmI1ZjBjLi5hMzViZWY1NTA0YzY1YTgzM2NkNTgyMzFiYzZkZGE5
MWEzODg1ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU1NTgsMTIgKzU1NTgsMTIg
QEAgYm9vbCBEb2N1bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1h
bmROYW1lKQogCiBib29sIERvY3VtZW50OjpxdWVyeUNvbW1hbmRJbmRldGVybShjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lKQogewotICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1l
KS5zdGF0ZSgpID09IE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29t
bWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIGJvb2wg
RG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB7
Ci0gICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJ1ZVRy
aVN0YXRlOworICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgpID09
IFRyaVN0YXRlOjpUcnVlOwogfQogCiBib29sIERvY3VtZW50OjpxdWVyeUNvbW1hbmRTdXBwb3J0
ZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcAppbmRleCAyZjYzNTRhNWQyZjMwYTM2YjkwM2YxMGI5MzczZmZhMjNhMGM4NmM4
Li4wMzAwMTViOTcyZmY5Y2E4N2QxNzBiZjkxYWMxZmNkMjY4NmJmYjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC03NTIsNyArNzUyLDcgQEAgc3RhdGljIGNv
bnN0IENTU1Byb3BlcnR5SUQgdGV4dE9ubHlQcm9wZXJ0aWVzW10gPSB7CiBUcmlTdGF0ZSBFZGl0
aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdAogewog
ICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5tX211dGFibGVTdHlsZSkKLSAgICAgICAgcmV0dXJu
IEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgcmV0
dXJuIHRyaVN0YXRlT2ZTdHlsZSgqc3R5bGUtPm1fbXV0YWJsZVN0eWxlLCBEb05vdElnbm9yZVRl
eHRPbmx5UHJvcGVydGllcyk7CiB9CiAKQEAgLTc2MCw3ICs3NjAsNyBAQCB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoVCYgc3R5bGVU
b0NvbXBhcmUsIFNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyBzaG91bGRJZ25vcmVUZXh0
T25seVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKLSAgICAg
ICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwog
CiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGRpZmZlcmVuY2UgPSBnZXRQcm9w
ZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0eWxlLCBzdHlsZVRvQ29tcGFyZSk7CiAKQEAgLTc2OCwy
MiArNzY4LDIyIEBAIFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKFQmIHN0
eWxlVG9Db21wYXJlLCBTaG91bGRJZ25vcmVUZXh0T25seVByCiAgICAgICAgIGRpZmZlcmVuY2Ut
PnJlbW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5H
VEgodGV4dE9ubHlQcm9wZXJ0aWVzKSk7CiAKICAgICBpZiAoZGlmZmVyZW5jZS0+aXNFbXB0eSgp
KQotICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6
OlRydWU7CiAgICAgaWYgKGRpZmZlcmVuY2UtPnByb3BlcnR5Q291bnQoKSA9PSBtX211dGFibGVT
dHlsZS0+cHJvcGVydHlDb3VudCgpKQotICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAg
ICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIAotICAgIHJldHVybiBNaXhlZFRyaVN0YXRl
OworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgRWRp
dGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uKSBjb25zdAogewogICAgIGlmICghc2VsZWN0aW9uLmlzQ2FyZXRPclJhbmdlKCkpCi0gICAg
ICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNl
OwogCiAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpCiAgICAgICAgIHJldHVybiB0cmlTdGF0
ZU9mU3R5bGUoRWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uKS5n
ZXQoKSk7CiAKLSAgICBUcmlTdGF0ZSBzdGF0ZSA9IEZhbHNlVHJpU3RhdGU7CisgICAgVHJpU3Rh
dGUgc3RhdGUgPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgYm9vbCBub2RlSXNTdGFydCA9IHRydWU7
CiAgICAgZm9yIChOb2RlKiBub2RlID0gc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUo
KTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7CiAgICAgICAgIGlm
IChub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkgewpAQCAtNzkz
LDcgKzc5Myw3IEBAIFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikgY29uc3QKICAgICAgICAgICAgICAgICBzdGF0
ZSA9IG5vZGVTdGF0ZTsKICAgICAgICAgICAgICAgICBub2RlSXNTdGFydCA9IGZhbHNlOwogICAg
ICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSAhPSBub2RlU3RhdGUgJiYgbm9kZS0+aXNUZXh0Tm9k
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAg
ICAgICAgIHN0YXRlID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0ODIsNyArMTQ4Miw3IEBAIGlu
dCBFZGl0aW5nU3R5bGU6OmxlZ2FjeUZvbnRTaXplKERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QK
IAogYm9vbCBFZGl0aW5nU3R5bGU6Omhhc1N0eWxlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUo
cHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0ZU9mU3R5bGUodGhpcykgIT0gRmFsc2VUcmlTdGF0
ZTsKKyAgICByZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUpLT50
cmlTdGF0ZU9mU3R5bGUodGhpcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogfQogCiBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wgc2hvdWxkVXNlQmFja2dyb3VuZENvbG9ySW5F
ZmZlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNjNjY2UzOTE4MTY5Y2U0NmEz
Mzk4YTU4MGEwMTIxNWYyMDczZmYyNC4uODg4ZGE5MjVhNWY4YTNjYjg3NWFkNDA5MDUxNjlhOTMx
ODVhMzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtODE0LDMwICs4MTQsMzAg
QEAgVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKSBjb25zdAog
ewogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewogICAgICAgICBp
ZiAoZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5zdGFydCgpLCB1bFRhZykpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOwor
ICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIH0gZWxzZSBpZiAobV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsKICAgICAgICAgYXV0byogc3RhcnROb2RlID0g
ZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24o
KS5zdGFydCgpLCB1bFRhZyk7CiAgICAgICAgIGF1dG8qIGVuZE5vZGUgPSBlbmNsb3NpbmdFbGVt
ZW50V2l0aFRhZyhtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpLCB1bFRh
Zyk7CiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgZW5kTm9kZSAmJiBzdGFydE5vZGUgPT0gZW5k
Tm9kZSkKLSAgICAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OlRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7Cisg
ICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIH0KIAogVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rp
b25PcmRlcmVkTGlzdFN0YXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5pc0NhcmV0KCkpIHsKICAgICAgICAgaWYgKGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgb2xUYWcpKQotICAgICAg
ICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6
VHJ1ZTsKICAgICB9IGVsc2UgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKSB7
CiAgICAgICAgIGF1dG8qIHN0YXJ0Tm9kZSA9IGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1fZG9j
dW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgb2xUYWcpOwogICAgICAgICBh
dXRvKiBlbmROb2RlID0gZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKS5lbmQoKSwgb2xUYWcpOwogICAgICAgICBpZiAoc3RhcnROb2RlICYm
IGVuZE5vZGUgJiYgc3RhcnROb2RlID09IGVuZE5vZGUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1
ZVRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAot
ICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiB9
CiAKIFJlZlB0cjxOb2RlPiBFZGl0b3I6Omluc2VydE9yZGVyZWRMaXN0KCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGUxZmIzY2QwNzkwM2ZlYzNjNzhlMjU4
Yjc3MjUxNjhmNDExOWEyMTMuLjkzYWU3N2RmZDAyNDJiYTFlYmFiN2JhZjdjNWQ1NjVmN2VhNjc3
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTIxLDcg
KzEyMSw3IEBAIHN0YXRpYyBib29sIGlzU3R5bGVQcmVzZW50KEVkaXRvciYgZWRpdG9yLCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqCiAgICAgLy8gV2luZG93czogcHJlc2Vu
dCB0aHJvdWdob3V0IHRoZSBzZWxlY3Rpb24KICAgICBpZiAoZWRpdG9yLmJlaGF2aW9yKCkuc2hv
dWxkVG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4g
ZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSk7Ci0gICAg
cmV0dXJuIGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBvblZhbHVlKSA9PSBU
cnVlVHJpU3RhdGU7CisgICAgcmV0dXJuIGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0
eUlELCBvblZhbHVlKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZUFwcGx5U3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRp
dEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eVZhbHVlKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVj
dGlvblRvR3JhbnVsYXJpdHkoRnJhbWUmIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJp
CiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHlsZShGcmFtZSYgZnJhbWUsIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgY2hhciogZGVzaXJlZFZhbHVlKQogewogICAgIGlmIChmcmFtZS5l
ZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFRvZ2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rp
b24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzU3R5
bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxl
KHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpG
YWxzZTsKICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUocHJvcGVy
dHlJRCwgZGVzaXJlZFZhbHVlKTsKIH0KIApAQCAtMjA3LDggKzIwNyw4IEBAIHN0YXRpYyBUcmlT
dGF0ZSBzdGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lJiBmcmFtZSwgV3JpdGluZ0RpcmVj
dGlvbiBkaXJlY3RpCiAgICAgYm9vbCBoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5nczsKICAg
ICBXcml0aW5nRGlyZWN0aW9uIHNlbGVjdGlvbkRpcmVjdGlvbiA9IEVkaXRpbmdTdHlsZTo6dGV4
dERpcmVjdGlvbkZvclNlbGVjdGlvbihmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwKICAg
ICAgICAgZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5nU3R5bGUoKSwgaGFzTmVzdGVkT3JNdWx0aXBs
ZUVtYmVkZGluZ3MpOwotICAgIC8vIEZYSU1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5nIE1peGVk
VHJpU3RhdGUgd2hlbiBzZWxlY3Rpb25EaXJlY3Rpb24gPT0gZGlyZWN0aW9uICYmIGhhc05lc3Rl
ZE9yTXVsdGlwbGVFbWJlZGRpbmdzCi0gICAgcmV0dXJuIChzZWxlY3Rpb25EaXJlY3Rpb24gPT0g
ZGlyZWN0aW9uICYmICFoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5ncykgPyBUcnVlVHJpU3Rh
dGUgOiBGYWxzZVRyaVN0YXRlOworICAgIC8vIEZYSU1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5n
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlIHdoZW4gc2VsZWN0aW9uRGlyZWN0aW9uID09IGRpcmVj
dGlvbiAmJiBoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5ncworICAgIHJldHVybiAoc2VsZWN0
aW9uRGlyZWN0aW9uID09IGRpcmVjdGlvbiAmJiAhaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGlu
Z3MpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiB9CiAKIHN0YXRpYyB1bnNp
Z25lZCB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKEZyYW1lJiBmcmFtZSkKQEAgLTE0MzgsNyArMTQz
OCw3IEBAIHN0YXRpYyBib29sIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dFdpdGhFZGl0YWJs
ZUltYWdlc0VuYWJsZWQoRnJhbWUmIGZyYW1lLCBFCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU5v
bmUoRnJhbWUmLCBFdmVudCopCiB7Ci0gICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgcmV0
dXJuIFRyaVN0YXRlOjpGYWxzZTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlQm9sZChGcmFt
ZSYgZnJhbWUsIEV2ZW50KikKQEAgLTE0NjMsNyArMTQ2Myw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBz
dGF0ZVN0cmlrZXRocm91Z2goRnJhbWUmIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0
ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSYgZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4g
ZnJhbWUuZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRoQ1NTKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxz
ZVRyaVN0YXRlOworICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5zaG91bGRTdHlsZVdpdGhDU1Mo
KSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogfQogCiBzdGF0aWMgVHJpU3Rh
dGUgc3RhdGVTdWJzY3JpcHQoRnJhbWUmIGZyYW1lLCBFdmVudCopCkBAIC0xOTA2LDcgKzE5MDYs
NyBAQCBib29sIEVkaXRvcjo6Q29tbWFuZDo6aXNFbmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5nRXZl
bnQpIGNvbnN0CiBUcmlTdGF0ZSBFZGl0b3I6OkNvbW1hbmQ6OnN0YXRlKEV2ZW50KiB0cmlnZ2Vy
aW5nRXZlbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1N1cHBvcnRlZCgpIHx8ICFtX2ZyYW1lKQot
ICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpG
YWxzZTsKICAgICByZXR1cm4gbV9jb21tYW5kLT5zdGF0ZSgqbV9mcmFtZSwgdHJpZ2dlcmluZ0V2
ZW50KTsKIH0KIApAQCAtMTkxNSw3ICsxOTE1LDcgQEAgU3RyaW5nIEVkaXRvcjo6Q29tbWFuZDo6
dmFsdWUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkgY29uc3QKICAgICBpZiAoIWlzU3VwcG9ydGVk
KCkgfHwgIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAobV9jb21t
YW5kLT52YWx1ZSA9PSB2YWx1ZU51bGwgJiYgbV9jb21tYW5kLT5zdGF0ZSAhPSBzdGF0ZU5vbmUp
Ci0gICAgICAgIHJldHVybiBtX2NvbW1hbmQtPnN0YXRlKCptX2ZyYW1lLCB0cmlnZ2VyaW5nRXZl
bnQpID09IFRydWVUcmlTdGF0ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOworICAgICAgICByZXR1
cm4gbV9jb21tYW5kLT5zdGF0ZSgqbV9mcmFtZSwgdHJpZ2dlcmluZ0V2ZW50KSA9PSBUcmlTdGF0
ZTo6VHJ1ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOwogICAgIHJldHVybiBtX2NvbW1hbmQtPnZh
bHVlKCptX2ZyYW1lLCB0cmlnZ2VyaW5nRXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggZDI1ODBlYWFjZWU1N2M5Zjk0MDQx
YmM0Y2RkZWU0NDMzYzc4MzEyOC4uMzE5MDU0NmRhY2JkNDg5YzM2Mjg1M2M3NmZjZDA5OTJkMjIy
YzJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNw
cApAQCAtMTE3MiwyNSArMTE3MiwyNSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hl
Y2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAg
Y2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAgICAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9
IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQgPyAibHRyIiA6
ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0
aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbikgIT0gRmFsc2VUcmlT
dGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlv
bkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpG
YWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rp
b25EZWZhdWx0OiB7CiAgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1l
LT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7Ci0g
ICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3RhdGU7
CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcmlTdGF0ZTo6
VHJ1ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDogewogICAgICAgICAgICAgRWRpdG9yOjpDb21t
YW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGly
ZWN0aW9uTGVmdFRvUmlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5z
dGF0ZSgpID09IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFu
ZC5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0g
Y29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7CiAg
ICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21t
YW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOwotICAgICAgICAgICAg
c2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICAg
ICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAg
ICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTEyMzEsNyArMTIzMSw3IEBAIHZvaWQgQ29udGV4dE1lbnVD
b250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBj
b25zdAogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDb250ZXh0TWVu
dUl0ZW1UYWdVbmRlcmxpbmU6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVk
aXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgc2hv
dWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpICE9IFRyaVN0YXRlOjpG
YWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0
UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTI0NCwxMiArMTI0
NCwxMiBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVk
KENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9
IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1U
YWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgIT0gRmFsc2VU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgIT0gVHJpU3RhdGU6
OkZhbHNlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVk
aXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q29udGV4dE1lbnVJdGVtVGFnQm9sZDogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFt
ZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9s
ZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5l
ZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikg
IT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVk
aXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VH
TGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdM
aWIuY3BwCmluZGV4IDkzNGJhNTAxN2Q3ZjMzNWNkZmFlODdmMmM2MTNjMWY4NWZlMmE2NWEuLjRj
NTAwZTM2NjhhMzIxMjNiOWUyNGIyNzhkYWFiMDc0NTczZmZhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC04
MywxMyArODMsMTMgQEAgdm9pZCBXZWJQYWdlOjpnZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1l
JiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkgY29uc3QKICNpZiBQTEFURk9STShHVEspCiAg
ICAgY29uc3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFtZS5lZGl0b3IoKTsKICAgICBpZiAoc2VsZWN0
aW9uLmlzUmFuZ2UoKSkgewotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgIGlm
IChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIp
ID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0
cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhh
c1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgPT0gVHJ1ZVRyaVN0YXRlKQor
ICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxl
LCAiaXRhbGljIikgPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0
YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZUl0YWxpY3M7Ci0gICAgICAgIGlmIChlZGl0
b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCwgInVuZGVybGluZSIpID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgaWYgKGVkaXRvci5z
ZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0
LCAidW5kZXJsaW5lIikgPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0
RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0ZVVuZGVybGluZTsKLSAgICAgICAgaWYg
KGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9u
c0luRWZmZWN0LCAibGluZS10aHJvdWdoIikgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICBpZiAo
ZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25z
SW5FZmZlY3QsICJsaW5lLXRocm91Z2giKSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAg
IHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0ZXMgfD0gQXR0cmlidXRlU3RyaWtlVGhyb3Vn
aDsKICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKICAgICAgICAgaWYgKGVk
aXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQi
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmlu
ZGV4IDcxYjAyZDFiNTNkZWRiOWUyZmIzNTA5ZTU1N2YxNDU3OTk3NDMyNWEuLjc0MzY2NjU4OGQ4
Yjg2NGNmNmE1Y2M3OWI5MDI0YTMxNWI5YjU1ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMTAxMywxMiArMTAxMywxMiBAQCBAZW5k
CiBzdGF0aWMgTlNDb250cm9sU3RhdGVWYWx1ZSBraXQoVHJpU3RhdGUgc3RhdGUpCiB7CiAgICAg
c3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNlIEZhbHNlVHJpU3RhdGU6Ci0gICAgICAgICAg
ICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9mZjsKLSAgICAgICAgY2FzZSBUcnVlVHJpU3Rh
dGU6Ci0gICAgICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9uOwotICAgICAgICBj
YXNlIE1peGVkVHJpU3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1
ZU1peGVkOworICAgIGNhc2UgVHJpU3RhdGU6OkZhbHNlOgorICAgICAgICByZXR1cm4gTlNDb250
cm9sU3RhdGVWYWx1ZU9mZjsKKyAgICBjYXNlIFRyaVN0YXRlOjpUcnVlOgorICAgICAgICByZXR1
cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9uOworICAgIGNhc2UgVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU6CisgICAgICAgIHJldHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVlTWl4ZWQ7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVlT2Zm
OwpAQCAtMjk0OCw3ICsyOTQ4LDcgQEAgSUdOT1JFX1dBUk5JTkdTX0VORAogICAgICAgICBOU01l
bnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKICAgICAgICAgaWYgKFttZW51
SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKICAgICAgICAgICAgIFN0
cmluZyBkaXJlY3Rpb24gPSB3cml0aW5nRGlyZWN0aW9uID09IE5TV3JpdGluZ0RpcmVjdGlvbkxl
ZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKLSAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0
ZTpmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoV2ViQ29yZTo6Q1NTUHJvcGVydHlE
aXJlY3Rpb24sIGRpcmVjdGlvbildOworICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOihm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoV2ViQ29yZTo6Q1NTUHJvcGVydHlEaXJl
Y3Rpb24sIGRpcmVjdGlvbikgIT0gVHJpU3RhdGU6OkZhbHNlKV07CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIFtzZWxmIF9jYW5FZGl0XTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398145</attachid>
            <date>2020-04-30 19:46:08 -0700</date>
            <delta_ts>2020-04-30 20:05:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211268-20200430194607.patch</filename>
            <type>text/plain</type>
            <size>88240</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YThkOTUxN2RhOTBlZjZjNzMxNWM4YjljOTk1ZDEyMzZiMTEzOWJhLi43MDVmYTFkZmUzNzE4NzE0
YjQ1ZmE5N2ZkMDc1MjAyNzUyMmIwMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjAtMDQtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFRyaVN0YXRlIHNob3VsZCBiZSBhbiBlbnVtIGNsYXNzIGFuZCB1
c2UgIkluZGV0ZXJtaW5hdGUiIGluc3RlYWQgb2YgIk1peGVkIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBMYW0uCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6bGVzc1RoYW5Db25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpsZXNzRXF1YWxDb25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6YWJvdmVDb25zdGFudCBjb25zdCk6
CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmJlbG93Q29uc3RhbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjphYm92ZUVxdWFsQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpiZWxvd0VxdWFsQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0NjRWYWx1ZTo6ZXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpD
b25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3Q2NFZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6
OkIzOjpDb25zdDY0VmFsdWU6Omxlc3NFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6YmVsb3dDb25zdGFudCBjb25zdCk6CisgICAgICAgIChK
U0M6OkIzOjpDb25zdDY0VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmJlbG93RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAg
ICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0
RG91YmxlVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29u
c3REb3VibGVWYWx1ZTo6bm90RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIz
OjpDb25zdERvdWJsZVZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6ZXF1YWxPclVu
b3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmVxdWFsQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENvbnN0YW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6bGVzc1RoYW5Db25z
dGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmdyZWF0ZXJU
aGFuQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjps
ZXNzRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFs
dWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0
RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBi
My9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFkZEJvb2xD
b25zdGFudCk6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKiBiMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OlZhbHVlOjplcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjps
ZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpncmVhdGVy
VGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpsZXNzRXF1YWxD
b25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6Z3JlYXRlckVxdWFsQ29u
c3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmJlbG93Q29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OlZhbHVlOjplcXVhbE9yVW5vcmRlcmVkQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCMzo6VmFsdWU6OmFzVHJpU3RhdGUgY29uc3QpOgorICAgICAgICAqIGIzL0IzVmFsdWUu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRocmVzaG9sZEZv
ckpJVCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAq
IGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpDb25zdGFudE5vZGU6
OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJpbmFyeU9w
Tm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6Qmlu
YXJ5T3BOb2RlOjp0cnlGb2xkVG9CcmFuY2gpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAg
ICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1YWxUb1Np
bmdsZUNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1YWxUb1N0cmluZ0ltcGwpOgor
ICAgICAgICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbCBjb25zdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURhdGFWaWV3
R2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURhdGFW
aWV3U2V0KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdEVxdWFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFib3ZlKToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmFib3ZlT3JFcXVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvdyk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvd09yRXF1YWwpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6Z3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
Z3JlYXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFu
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbCk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6CisgICAgICAg
IChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVz
KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpoYXNXcml0YWJsZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6d3JpdGFibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc0NvbmZp
Z3VyYWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6
Y29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpoYXNFbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjplbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xs
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsQm9vbGVhbk9wdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpw
dXJlU3RyaWN0RXF1YWwpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKwogMjAyMC0wNC0zMCAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gaW50bEJvb2xlYW5P
cHRpb24gc2hvdWxkIHJldHVybiBUcmlTdGF0ZSBpbnN0ZWFkIG9mIHRha2luZyBhbiBvdXQgcGFy
YW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMzZjYWRhMzE2NzJjY2Y3ZGRiN2E3ZjUxMjg1Y2NlOWIzYTAxYzNkNC4uMDVhYzlj
N2JiZWU2OTVhMzZhY2I5MDA0YTE5MTNkYzAwNTU5NDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMC0wNC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAg
ICAgICAgVHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1p
bmF0ZSIgaW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4K
KworICAgICAgICBUaGUgd29yZCAiaW5kZXRlcm1pbmF0ZSIgY29tZXMgZnJvbSBib29zdDo6dHJp
Ym9vbC4KKyAgICAgICAgQSB0aGlyZCBzdGF0ZSBpcyBnZW5lcmFsbHkgbm90ICJtaXhlZCIgYnV0
IHJhdGhlciB1bmtub3duLgorCisgICAgICAgICogd3RmL1RyaVN0YXRlLmg6CisKIDIwMjAtMDQt
MjkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbl0gRGVhZGxvY2sgaW4gV1RGOjpUaHJlYWQ6OmRpZEV4aXQoKSB3aGlsZSBXZWJLaXROZXR3
b3JrUHJvY2Vzcy5leGUgaXMgZXhpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMxMzA4OWI4ZDdhZThlNDUz
NzMzYjNiZWVmNDc5Y2ViMmFlN2ExOGIuLjJjN2RjMWIxMmIwNjViODY4Njk0NTMyNzc1MDQ5YTcy
NGRlOTNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wNC0zMCAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgVHJpU3RhdGUgc2hv
dWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1pbmF0ZSIgaW5zdGVhZCBvZiAi
TWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kSW5k
ZXRlcm0pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6Omhhc1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1N0eWxlUHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN0YXRlVGV4dFdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6c3RhdGVOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGVXaXRoQ1NT
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZDo6c3RhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kOjp2YWx1ZSBjb25zdCk6CisgICAgICAgICog
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorCiAyMDIwLTA0
LTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1
dGhuXSBPcHRpbWl6ZSBMb2NhbEF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDk2NWM1ZDAwZTNk
NjU4NjBiZjk0NGJjMWZlNDI5M2JlMGFiY2Q5OC4uOTkzMzg3ZWZmNDE5ZGU5YjFjOTkwMmQ1Yjhl
YjBhYjk2YmI1YTkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0zMCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgVHJpU3RhdGUg
c2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1pbmF0ZSIgaW5zdGVhZCBv
ZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisKIDIwMjAtMDQtMzAgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjI2MDkzMik6IEFTU0VSVElPTiBGQUlMRUQ6IG9rIGluIHdlYmtpdDo6U2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5IGZvciAzIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggMDE1ZTI2YWZkMGI3NjliY2RiOGU1MjkwOWQxZDM3MmY3MGYzMDRhNS4uZjY1YzE4
MTY4MzdkMzg1YmRjOGQyNjlhMWY4ODEyMmI5ZmY5ZTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTMwICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBUcmlTdGF0ZSBzaG91bGQgYmUgYW4gZW51
bSBjbGFzcyBhbmQgdXNlICJJbmRldGVybWluYXRlIiBpbnN0ZWFkIG9mICJNaXhlZCIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTI2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmll
dy5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRlVXNl
ckludGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6XSk6CisKIDIwMjAtMDQtMzAgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgLVtXZWJWaWV3IHNl
dENTU0FuaW1hdGlvbnNTdXNwZW5kZWQ6XQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnN0MzJWYWx1ZS5jcHAKaW5kZXggNWFjZTM2NDdhYTRkMDc3N2JjM2Y2NGVmODE5ZmVhYWNkYjQ3
YzY0My4uMmIzMDIxYjFhYjMxYzk3NDBiZTI4YTQzNGE1MzBmYzNlNmU5ZmQ4YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCkBAIC0yMDcsMTQgKzIwNywx
NCBAQCBWYWx1ZSogQ29uc3QzMlZhbHVlOjppVG9GQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBj
b25zdAogVHJpU3RhdGUgQ29uc3QzMlZhbHVlOjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID09IG90aGVyLT5hc0ludDMyKCkpOwogfQog
CiBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgIT0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAK
QEAgLTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6Omxlc3NUaGFuQ29uc3Rh
bnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElOVDMyX01BWCA8IHggaXMg
YWx3YXlzIGZhbHNlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNl
VHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhl
ci0+aGFzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1
ZSA8IG90aGVyLT5hc0ludDMyKCkpOwogfQogCkBAIC0yMzIsOSArMjMyLDkgQEAgVHJpU3RhdGUg
Q29uc3QzMlZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBJTlQzMl9NSU4gPiB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4g
VHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPiBvdGhlci0+YXNJbnQzMigpKTsKIH0K
IApAQCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6bGVzc0VxdWFsQ29u
c3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElOVDMyX01JTiA8PSB4
IGlzIGFsd2F5cyB0cnVlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIFRy
dWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIGlmICghb3Ro
ZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFs
dWUgPD0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAKQEAgLTI1Miw5ICsyNTIsOSBAQCBUcmlTdGF0
ZSBDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3QKIHsKICAgICAvLyBJTlQzMl9NQVggPj0geCBpcyBhbHdheXMgdHJ1ZS4KICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50MzJfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICBy
ZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVyLT5hc0ludDMyKCkpOwog
fQogCkBAIC0yNjIsOSArMjYyLDkgQEAgVHJpU3RhdGUgQ29uc3QzMlZhbHVlOjphYm92ZUNvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUlOID4geCBp
cyBhbHdheXMgZmFsc2UuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBG
YWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICgh
b3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA+IHN0YXRpY19jYXN0PHVpbnQzMl90PihvdGhl
ci0+YXNJbnQzMigpKSk7CiB9CiAKQEAgLTI3Miw5ICsyNzIsOSBAQCBUcmlTdGF0ZSBDb25zdDMy
VmFsdWU6OmJlbG93Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8v
IFVJTlQzMl9NQVggPCB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkK
LSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6
RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIE1peGVk
VHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBy
ZXR1cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdmFsdWUpIDwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIApAQCAtMjgyLDkgKzI4Miw5IEBA
IFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6YWJvdmVFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUFYID49IHggaXMgYWx3YXlzIHRydWUuCiAg
ICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAg
ICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQot
ICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bV92YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0K
IApAQCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6YmVsb3dFcXVhbENv
bnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUlOIDw9
IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVl
KSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVy
biBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAo
IW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShz
dGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgPD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90
aGVyLT5hc0ludDMyKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3Q2NFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
NjRWYWx1ZS5jcHAKaW5kZXggOGQ3OTViMDNhMWZlOWNlNjZlODRmNWIzY2IzOGQ2Y2JmM2VhMWEy
Yy4uYTQ0MGU3YzczMDNkY2JiM2U0M2MzNWFhNzZkZDU3MzI0MzQyMzFiYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwCkBAIC0yMDcsMTQgKzIwNywxNCBA
QCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjppVG9GQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25z
dAogVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4g
TWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwog
ICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID09IG90aGVyLT5hc0ludDY0KCkpOwogfQogCiBU
cmlTdGF0ZSBDb25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBN
aXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAg
ICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgIT0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKQEAg
LTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElOVDY0X01BWCA8IHggaXMgYWx3
YXlzIGZhbHNlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJp
U3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+
aGFzSW50NjQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA8
IG90aGVyLT5hc0ludDY0KCkpOwogfQogCkBAIC0yMzIsOSArMjMyLDkgQEAgVHJpU3RhdGUgQ29u
c3Q2NFZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QK
IHsKICAgICAvLyBJTlQ2NF9NSU4gPiB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6
bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJp
U3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPiBvdGhlci0+YXNJbnQ2NCgpKTsKIH0KIApA
QCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1ZTo6bGVzc0VxdWFsQ29uc3Rh
bnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElOVDY0X01JTiA8PSB4IGlz
IGFsd2F5cyB0cnVlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3ZhbHVlKSA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIFRydWVU
cmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIGlmICghb3RoZXIt
Pmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUg
PD0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKQEAgLTI1Miw5ICsyNTIsOSBAQCBUcmlTdGF0ZSBD
b25zdDY0VmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBJTlQ2NF9NQVggPj0geCBpcyBhbHdheXMgdHJ1ZS4KICAgICBpZiAoc3Rh
dGljX2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBU
cmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVyLT5hc0ludDY0KCkpOwogfQog
CkBAIC0yNjIsOSArMjYyLDkgQEAgVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UNjRfTUlOID4geCBpcyBh
bHdheXMgZmFsc2UuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxz
ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3Ro
ZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvdGhlci0+
YXNJbnQ2NCgpKSk7CiB9CiAKQEAgLTI3Miw5ICsyNzIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFs
dWU6OmJlbG93Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIFVJ
TlQ2NF9NQVggPCB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKLSAg
ICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFs
c2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJp
U3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1
cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWUpIDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApAQCAtMjgyLDkgKzI4Miw5IEBAIFRy
aVN0YXRlIENvbnN0NjRWYWx1ZTo6YWJvdmVFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHsKICAgICAvLyBVSU5UNjRfTUFYID49IHggaXMgYWx3YXlzIHRydWUuCiAgICAg
aWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAg
ICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4obV92
YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApA
QCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1ZTo6YmVsb3dFcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UNjRfTUlOIDw9IHgg
aXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBU
cnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90
aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0
aWNfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVy
LT5hc0ludDY0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3REb3VibGVWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dERvdWJsZVZhbHVlLmNwcAppbmRleCA1ZGQ3ZDkxMmY3Y2Q5NWM1OGVhZTdkMGNmNDBhZmIxMDZm
NzZmNjc1Li5hYzkxMDAyYTZkYjU4N2IxZGFjY2QyOWVjNDVjMTBiMmIyZTQ3ZmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcApAQCAtMTQx
LDUyICsxNDEsNTIgQEAgVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6Om1vZENvbnN0YW50KFByb2Nl
ZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogVHJpU3RhdGUgQ29uc3REb3Vi
bGVWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAg
aWYgKCFvdGhlci0+aGFzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwor
ICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0
YXRlKG1fdmFsdWUgPT0gb3RoZXItPmFzRG91YmxlKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdERv
dWJsZVZhbHVlOjpub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsK
ICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4g
dHJpU3RhdGUobV92YWx1ZSAhPSBvdGhlci0+YXNEb3VibGUoKSk7CiB9CiAKIFRyaVN0YXRlIENv
bnN0RG91YmxlVmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJl
dHVybiB0cmlTdGF0ZShtX3ZhbHVlIDwgb3RoZXItPmFzRG91YmxlKCkpOwogfQogCiBUcmlTdGF0
ZSBDb25zdERvdWJsZVZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJu
IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsK
ICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA+IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAog
VHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQotICAgICAgICBy
ZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlIDw9IG90aGVyLT5hc0RvdWJsZSgpKTsK
IH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQoY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQot
ICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVyLT5hc0Rv
dWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6ZXF1YWxPclVub3JkZXJl
ZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25h
bihtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpUcnVlOwogCiAgICAgaWYgKCFvdGhlci0+aGFzRG91YmxlKCkpCi0gICAgICAg
IHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJt
aW5hdGU7CiAgICAgZG91YmxlIG90aGVyVmFsdWUgPSBvdGhlci0+YXNEb3VibGUoKTsKICAgICBy
ZXR1cm4gdHJpU3RhdGUoc3RkOjppc3Vub3JkZXJlZChtX3ZhbHVlLCBvdGhlclZhbHVlKSB8fCBt
X3ZhbHVlID09IG90aGVyVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0RmxvYXRWYWx1ZS5jcHAKaW5kZXggMjI3MGYwMDM5MmZkZmU4OGZiOWIzOTU5ZjQwNmJj
ZWY0YmVkYzZlOC4uMzhjYzQ2MGEzNzU0MDAzNDA1NzU0OTUyZGQwMzkyN2QzMjQ2OTA5OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCkBAIC0x
MzMsNTIgKzEzMyw1MiBAQCBWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjpkaXZDb25zdGFudChQcm9j
ZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIFRyaVN0YXRlIENvbnN0Rmxv
YXRWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAg
aWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Cisg
ICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3Rh
dGUobV92YWx1ZSA9PSBvdGhlci0+YXNGbG9hdCgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3RGbG9h
dFZhbHVlOjpub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAg
ICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlT
dGF0ZShtX3ZhbHVlICE9IG90aGVyLT5hc0Zsb2F0KCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdEZs
b2F0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewog
ICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRl
OworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRy
aVN0YXRlKG1fdmFsdWUgPCBvdGhlci0+YXNGbG9hdCgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3RG
bG9hdFZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QK
IHsKICAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlT
dGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVy
biB0cmlTdGF0ZShtX3ZhbHVlID4gb3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENv
bnN0RmxvYXRWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRy
aVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0
dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRl
IENvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBN
aXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAg
ICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPj0gb3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRy
aVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZh
bHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihtX3ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwog
CiAgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBmbG9hdCBv
dGhlclZhbHVlID0gb3RoZXItPmFzRmxvYXQoKTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RkOjpp
c3Vub3JkZXJlZChtX3ZhbHVlLCBvdGhlclZhbHVlKSB8fCBtX3ZhbHVlID09IG90aGVyVmFsdWUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggZDY4MmEx
NDVhMzRmYmJkOGNjZjI2NzMwYTI0NGZkZDZlNDVjYjdmNy4uODEyY2E1ZjVkY2IwYTUzZGViZWU5
YmMzOTUxODk1ZWFlY2Y3Yzk2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBAQCBWYWx1ZSogUHJvY2VkdXJlOjphZGRCb29sQ29u
c3RhbnQoT3JpZ2luIG9yaWdpbiwgVHJpU3RhdGUgdHJpU3RhdGUpCiB7CiAgICAgaW50MzJfdCB2
YWx1ZSA9IDA7CiAgICAgc3dpdGNoICh0cmlTdGF0ZSkgewotICAgIGNhc2UgRmFsc2VUcmlTdGF0
ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpGYWxzZToKICAgICAgICAgdmFsdWUgPSAwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRydWVUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpUcnVl
OgogICAgICAgICB2YWx1ZSA9IDE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWl4ZWRUcmlT
dGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKaW5k
ZXggNWNlMGE1MmY3ZmUyM2NiMDk4YjQzMGY0MDUwYWMxMzg1M2E2NzE0ZS4uOGE2NTliYTU3NjQ4
OWQwNjEwMDc1OTE4ZWY1ZjI2MGMwZGM5NTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEJv
dHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUqKTsKIAotICAg
IC8vIFJldHVybnMgbnVsbCBmb3IgTWl4ZWRUcmlTdGF0ZS4KKyAgICAvLyBSZXR1cm5zIG51bGwg
Zm9yIFRyaVN0YXRlOjpJbmRldGVybWluYXRlLgogICAgIFZhbHVlKiBhZGRCb29sQ29uc3RhbnQo
T3JpZ2luLCBUcmlTdGF0ZSk7CiAKICAgICB2b2lkIHJlc2V0VmFsdWVPd25lcnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCAzY2NmMjUy
Njk5MjczNjgzYzA2ZDM5Y2IzZGUzNzdkOWMxMDJhNmVmLi5iMGY5NDY3MzFjOTMxNTAzNGRkNGU5
OTc2N2RhNTI3ZDhlMDg1NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCkBAIC0xODk0LDcgKzE4OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEFib3ZlRXF1YWw6CiAgICAgICAgIGNhc2UgQmVsb3dFcXVhbDogewogICAgICAgICAgICAg
Q2Fub25pY2FsaXplZENvbXBhcmlzb24gY29tcGFyaXNvbiA9IGNhbm9uaWNhbGl6ZUNvbXBhcmlz
b24obV92YWx1ZSk7Ci0gICAgICAgICAgICBUcmlTdGF0ZSByZXN1bHQgPSBNaXhlZFRyaVN0YXRl
OworICAgICAgICAgICAgVHJpU3RhdGUgcmVzdWx0ID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBhcmlzb24ub3Bjb2RlKSB7CiAgICAgICAgICAgICBj
YXNlIExlc3NUaGFuOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmlzb24ub3BlcmFu
ZHNbMV0tPmdyZWF0ZXJUaGFuQ29uc3RhbnQoY29tcGFyaXNvbi5vcGVyYW5kc1swXSk7CkBAIC0y
MTY3LDcgKzIxNjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJy
YW5jaCgwLCB0aGVuLCBlbHNlKQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBKdW1wKGVsc2Up
Ci0gICAgICAgICAgICBpZiAodHJpU3RhdGUgPT0gRmFsc2VUcmlTdGF0ZSkgeworICAgICAgICAg
ICAgaWYgKHRyaVN0YXRlID09IFRyaVN0YXRlOjpGYWxzZSkgewogICAgICAgICAgICAgICAgIG1f
YmxvY2stPnRha2VuKCkuYmxvY2soKS0+cmVtb3ZlUHJlZGVjZXNzb3IobV9ibG9jayk7CiAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhKdW1wKG1fYmxvY2ssIG1fYmxvY2stPm5v
dFRha2VuKCkpOwogICAgICAgICAgICAgICAgIG1fY2hhbmdlZENGRyA9IHRydWU7CkBAIC0yMTc2
LDcgKzIxNzYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJyYW5j
aChub3QgMCwgdGhlbiwgZWxzZSkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogSnVtcCh0aGVu
KQotICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRydWVUcmlTdGF0ZSkgeworICAgICAgICAg
ICAgaWYgKHRyaVN0YXRlID09IFRyaVN0YXRlOjpUcnVlKSB7CiAgICAgICAgICAgICAgICAgbV9i
bG9jay0+bm90VGFrZW4oKS5ibG9jaygpLT5yZW1vdmVQcmVkZWNlc3NvcihtX2Jsb2NrKTsKICAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEp1bXAobV9ibG9jaywgbV9ibG9jay0+
dGFrZW4oKSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkQ0ZHID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCA0ZGQ1Y2I4NjZhZDczZTIxYmEyZGE0MzdmM2Qw
MWM3ZGU1YmE0YzRkLi4xN2EyMmYwZWY2YWIxNTIyMGNlNjE2OGQ3NjlkZDVlOWFhYmYxZjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0zNzksNTcgKzM3OSw1NyBAQCBW
YWx1ZSogVmFsdWU6OnNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAogCiBUcmlTdGF0ZSBW
YWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1p
eGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBU
cmlTdGF0ZSBWYWx1ZTo6bm90RXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bGVzc1RoYW5Db25zdGFudChjb25zdCBWYWx1ZSop
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFu
dChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bGVz
c0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAogewotICAgIHJldHVybiBNaXhlZFRy
aVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3Rh
dGUgVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAg
ICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKikgY29u
c3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6Oklu
ZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjpiZWxvd0NvbnN0YW50KGNvbnN0IFZh
bHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJp
U3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjphYm92ZUVxdWFsQ29u
c3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAogewotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwor
ICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgVmFsdWU6
OmJlbG93RXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1p
eGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBU
cmlTdGF0ZSBWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKikgY29u
c3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6Oklu
ZGV0ZXJtaW5hdGU7CiB9CiAKIFZhbHVlKiBWYWx1ZTo6aW52ZXJ0ZWRDb21wYXJlKFByb2NlZHVy
ZSYgcHJvYykgY29uc3QKQEAgLTUyMCw3ICs1MjAsNyBAQCBUcmlTdGF0ZSBWYWx1ZTo6YXNUcmlT
dGF0ZSgpIGNvbnN0CiAgICAgY2FzZSBDb25zdEZsb2F0OgogICAgICAgICByZXR1cm4gdHJpU3Rh
dGUoYXNGbG9hdCgpICE9IDAuKTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXggMDEwMGJiNDE5ZGQwNTE3YjA5
YTc5ZmU2MDlhNWVlODM2MTFhODhjNC4uYzdmNzdkOWVkNDEyMjhhYTU0YmYxZWVkYjNlODJhM2Ey
MGM4NWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBAIC0yOTAsOCArMjkwLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3Q7CiAKICAgICBUcmlTdGF0ZSBh
c1RyaVN0YXRlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpa2VaZXJvKCkgY29uc3QgeyByZXR1cm4g
YXNUcmlTdGF0ZSgpID09IEZhbHNlVHJpU3RhdGU7IH0KLSAgICBib29sIGlzTGlrZU5vblplcm8o
KSBjb25zdCB7IHJldHVybiBhc1RyaVN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOyB9CisgICAgYm9v
bCBpc0xpa2VaZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgpID09IFRyaVN0YXRlOjpG
YWxzZTsgfQorICAgIGJvb2wgaXNMaWtlTm9uWmVybygpIGNvbnN0IHsgcmV0dXJuIGFzVHJpU3Rh
dGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsgfQogCiAgICAgRWZmZWN0cyBlZmZlY3RzKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
ZDRhY2FmODkzNzgzMWEwZjFjZGE2NDMxMzM2MGI4MDhjMzlhOGJhMy4uNjk3NGFkYjk1YzFmNWEz
MjczYmU5NmZiMTMzYmYyZGY1NTBlNjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTg1Myw4ICs4NTMsOCBAQCBDb2RlQmxvY2s6On5Db2Rl
QmxvY2soKQogICAgIGlmIChVTkxJS0VMWSh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKQogICAg
ICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5vdGlmeURlc3RydWN0aW9uKHRoaXMpOwog
Ci0gICAgaWYgKCF2bS5oZWFwLmlzU2h1dHRpbmdEb3duKCkgJiYgdW5saW5rZWRDb2RlQmxvY2so
KS0+ZGlkT3B0aW1pemUoKSA9PSBNaXhlZFRyaVN0YXRlKQotICAgICAgICB1bmxpbmtlZENvZGVC
bG9jaygpLT5zZXREaWRPcHRpbWl6ZShGYWxzZVRyaVN0YXRlKTsKKyAgICBpZiAoIXZtLmhlYXAu
aXNTaHV0dGluZ0Rvd24oKSAmJiB1bmxpbmtlZENvZGVCbG9jaygpLT5kaWRPcHRpbWl6ZSgpID09
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT5z
ZXREaWRPcHRpbWl6ZShUcmlTdGF0ZTo6RmFsc2UpOwogCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFM
VUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwpAQCAtMzM4NSwxMSArMzM4NSwx
MSBAQCBPcHRpb25hbDxCeXRlY29kZUluZGV4PiBDb2RlQmxvY2s6OmJ5dGVjb2RlSW5kZXhGcm9t
Q2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4CiBpbnQzMl90IENvZGVCbG9jazo6dGhyZXNob2xk
Rm9ySklUKGludDMyX3QgdGhyZXNob2xkKQogewogICAgIHN3aXRjaCAodW5saW5rZWRDb2RlQmxv
Y2soKS0+ZGlkT3B0aW1pemUoKSkgewotICAgIGNhc2UgTWl4ZWRUcmlTdGF0ZToKKyAgICBjYXNl
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOgogICAgICAgICByZXR1cm4gdGhyZXNob2xkOwotICAg
IGNhc2UgRmFsc2VUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpGYWxzZToKICAgICAgICAg
cmV0dXJuIHRocmVzaG9sZCAqIDQ7Ci0gICAgY2FzZSBUcnVlVHJpU3RhdGU6CisgICAgY2FzZSBU
cmlTdGF0ZTo6VHJ1ZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9sZCAvIDI7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTRkYTU3ZGFiNjljYTI2MWFlZmRj
ZWI5MzhmZmEwZjRmZjAzNzkxNS4uNDhjYWI0MjJiMTU2YzFhOWM0ODAxNDIxMGNlZGVjODY1NmJi
YWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCkBAIC02OSw3ICs2OSw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxp
bmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2Rl
CiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5k
ZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5mby5ldmFsQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2NvZGVUeXBlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkpCi0gICAgLCBtX2RpZE9wdGltaXplKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0YXRlKSkKKyAgICAsIG1fZGlkT3B0aW1pemUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSkKICAgICAsIG1fYWdl
KDApCiAgICAgLCBtX2hhc0NoZWNrcG9pbnRzKGZhbHNlKQogICAgICwgbV9wYXJzZU1vZGUoaW5m
by5wYXJzZU1vZGUoKSkKQEAgLTc4LDcgKzc4LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUK
IHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpKTsKLSAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpOworICAgIEFTU0VSVChtX2Rp
ZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZSkpOwogICAgIGlmIChpbmZvLm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPT0gTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcykgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDBi
ZjMwMjhkODEwYzYxNmViMDdhZGE2NmM1N2RhOTI5OWUxYmJjY2UuLjViOThhNTQ2ZjE5MmIyZDhm
MDYzMGEzYzcxODVjNTFmZDE1MTVhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
MTUyLDcgKzE1Miw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvCiAgICAgICAgIGF1dG8gbWFy
a0lmUHJvZml0YWJsZSA9IFsmXSAoV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+JiB1bmxpbmtlZENvZGVCbG9jaykgewogICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVC
bG9jaykKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAodW5saW5rZWRD
b2RlQmxvY2stPmRpZE9wdGltaXplKCkgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgaWYg
KHVubGlua2VkQ29kZUJsb2NrLT5kaWRPcHRpbWl6ZSgpID09IFRyaVN0YXRlOjpUcnVlKQogICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5hZ2UoKSA8IFVubGlua2VkQ29kZUJsb2Nr
OjptYXhBZ2UpCiAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQodW5saW5rZWRDb2RlQmxv
Y2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IDEzZDRiYTc0ODEyMTExNWE3OWRhOTI0MmU2ZjIxOGFjYmU2Y2E2ODUu
LjMxMjQ5MmFjYWI4NTFkMjlhNWFhMzQ0MWI4YzQ5ZjViZTg2Y2RmYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTEw
MywxNSArMTAzLDE1IEBAIHZvaWQgQ29uc3RhbnROb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlv
bkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBUcmlTdGF0ZSB2YWx1
ZSA9IGpzVmFsdWUoZ2VuZXJhdG9yKS5wdXJlVG9Cb29sZWFuKCk7CiAKICAgICBpZiAoVU5MSUtF
TFkobmVlZHNEZWJ1Z0hvb2soKSkpIHsKLSAgICAgICAgaWYgKHZhbHVlICE9IE1peGVkVHJpU3Rh
dGUpCisgICAgICAgIGlmICh2YWx1ZSAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwogICAgIH0KIAotICAgIGlmICh2
YWx1ZSA9PSBNaXhlZFRyaVN0YXRlKQorICAgIGlmICh2YWx1ZSA9PSBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZSkKICAgICAgICAgRXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9u
Q29udGV4dChnZW5lcmF0b3IsIHRydWVUYXJnZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1v
ZGUpOwotICAgIGVsc2UgaWYgKHZhbHVlID09IFRydWVUcmlTdGF0ZSAmJiBmYWxsVGhyb3VnaE1v
ZGUgPT0gRmFsbFRocm91Z2hNZWFuc0ZhbHNlKQorICAgIGVsc2UgaWYgKHZhbHVlID09IFRyaVN0
YXRlOjpUcnVlICYmIGZhbGxUaHJvdWdoTW9kZSA9PSBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcCh0cnVlVGFyZ2V0KTsKLSAgICBlbHNlIGlmICh2YWx1
ZSA9PSBGYWxzZVRyaVN0YXRlICYmIGZhbGxUaHJvdWdoTW9kZSA9PSBGYWxsVGhyb3VnaE1lYW5z
VHJ1ZSkKKyAgICBlbHNlIGlmICh2YWx1ZSA9PSBUcmlTdGF0ZTo6RmFsc2UgJiYgZmFsbFRocm91
Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVhbnNUcnVlKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXAoZmFsc2VUYXJnZXQpOwogCiAgICAgLy8gQWxsIG90aGVyIGNhc2VzIGFyZSB1bmNvbmRpdGlv
bmFsIGZhbGwtdGhyb3VnaHMsIGxpa2UgImlmICh0cnVlKSIuCkBAIC0yNDc2LDEzICsyNDc2LDEz
IEBAIHZvaWQgQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICB0cnlGb2xkVG9CcmFuY2goZ2VuZXJhdG9y
LCBicmFuY2hDb25kaXRpb24sIGJyYW5jaEV4cHJlc3Npb24pOwogCiAgICAgaWYgKFVOTElLRUxZ
KG5lZWRzRGVidWdIb29rKCkpKSB7Ci0gICAgICAgIGlmIChicmFuY2hDb25kaXRpb24gIT0gTWl4
ZWRUcmlTdGF0ZSkKKyAgICAgICAgaWYgKGJyYW5jaENvbmRpdGlvbiAhPSBUcmlTdGF0ZTo6SW5k
ZXRlcm1pbmF0ZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwog
ICAgIH0KIAotICAgIGlmIChicmFuY2hDb25kaXRpb24gPT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICBp
ZiAoYnJhbmNoQ29uZGl0aW9uID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQogICAgICAgICBF
eHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KGdlbmVyYXRvciwg
dHJ1ZVRhcmdldCwgZmFsc2VUYXJnZXQsIGZhbGxUaHJvdWdoTW9kZSk7Ci0gICAgZWxzZSBpZiAo
YnJhbmNoQ29uZGl0aW9uID09IFRydWVUcmlTdGF0ZSkKKyAgICBlbHNlIGlmIChicmFuY2hDb25k
aXRpb24gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29u
ZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNzaW9uLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwg
ZmFsbFRocm91Z2hNb2RlKTsKICAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNzaW9uLCBmYWxzZVRhcmdldCwgdHJ1ZVRhcmdl
dCwgaW52ZXJ0KGZhbGxUaHJvdWdoTW9kZSkpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgc3RhdGlj
IGlubGluZSBib29sIGNhbkZvbGRUb0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCwgRXhwcmVzc2lv
bk5vZGUqIGJyYW5jaEV4cHIKIAogdm9pZCBCaW5hcnlPcE5vZGU6OnRyeUZvbGRUb0JyYW5jaChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBUcmlTdGF0ZSYgYnJhbmNoQ29uZGl0aW9uLCBF
eHByZXNzaW9uTm9kZSomIGJyYW5jaEV4cHJlc3Npb24pCiB7Ci0gICAgYnJhbmNoQ29uZGl0aW9u
ID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICBicmFuY2hDb25kaXRpb24gPSBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKICAgICBicmFuY2hFeHByZXNzaW9uID0gMDsKIAogICAgIENvbnN0YW50Tm9kZSog
Y29uc3RhbnQgPSAwOwpAQCAtMjUyNyw5ICsyNTI3LDkgQEAgdm9pZCBCaW5hcnlPcE5vZGU6OnRy
eUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBUcmlTdGF0ZSYgYnJh
bmMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2VxIHx8IG9wY29k
ZUlEID09IG9wX3N0cmljdGVxKQotICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSh2
YWx1ZS5wdXJlVG9Cb29sZWFuKCkpOworICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0
ZSh2YWx1ZS5wdXJlVG9Cb29sZWFuKCkgIT0gVHJpU3RhdGU6OkZhbHNlKTsKICAgICBlbHNlIGlm
IChvcGNvZGVJRCA9PSBvcF9uZXEgfHwgb3Bjb2RlSUQgPT0gb3BfbnN0cmljdGVxKQotICAgICAg
ICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSghdmFsdWUucHVyZVRvQm9vbGVhbigpKTsKKyAg
ICAgICAgYnJhbmNoQ29uZGl0aW9uID0gdHJpU3RhdGUodmFsdWUucHVyZVRvQm9vbGVhbigpID09
IFRyaVN0YXRlOjpGYWxzZSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJpbmFyeU9wTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
MWEzZWUzNTAxNGZhNDg0YmFiN2UzNjg4MGIyNDI0YzlhMzRiM2YxZS4uOTBlMTMzMDA1ZTgzNTZi
ZjU1M2MwMDViM2Q0YWE0N2QxNzg2ZmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM0ODcsMjIgKzM0ODcsMjIgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQg
cmVzdWx0LCBJbnRyaW5zaWMKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVu
ZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlh
biA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgICAgICAgICAgTm9kZSogbGl0dGxlRW5k
aWFuQ2hpbGQgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGJ5dGVTaXplID4gMSkgewogICAg
ICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDMpCi0gICAgICAg
ICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gZ2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygyLCByZWdpc3Rlck9mZnNldCkp
OwogICAgICAgICAgICAgICAgICAgICBpZiAobGl0dGxlRW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBsaXR0bGVF
bmRpYW5DaGlsZC0+Y29uc3RhbnQoKS0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjb25zdGFudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5k
aWFuID0gY29uc3RhbnQucHVyZVRvQm9vbGVhbigpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlT
dGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0z
NTcyLDIyICszNTcyLDIyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljCiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAg
ICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4gPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAg
ICAgICAgICAgIE5vZGUqIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKICAgICAgICAgICAg
IGlmIChieXRlU2l6ZSA+IDEpIHsKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPCA0KQotICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IEZh
bHNlVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gVHJpU3Rh
dGU6OkZhbHNlOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBs
aXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoMywgcmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxpdHRs
ZUVuZGlhbkNoaWxkLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQtPmNvbnN0YW50KCktPnZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGNvbnN0YW50LnB1cmVUb0Jvb2xlYW4oKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNMaXR0bGVFbmRpYW4gIT0gTWl4ZWRU
cmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNMaXR0bGVFbmRpYW4g
IT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBp
c0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICBp
c0xpdHRsZUVuZGlhbiA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKaW5kZXggNjEwZDdkMjBlZjY1MzVmN2E4
ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYy4uNDU3OTBiZjgwMzkxNjRhMTRiN2MxMjVkYWE2MTFlNjA4
OTc2M2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCkBAIC0xNzAsMTcgKzE3MCwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIHRlcm1pbmFsID0gYmxvY2stPnRlcm1pbmFsKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbC0+Y2hpbGQxKCktPmhhc0NvbnN0YW50KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9IHRlcm1pbmFs
LT5jaGlsZDEoKS0+Y29uc3RhbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFRyaVN0YXRl
IGZvdW5kID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyaVN0YXRl
IGZvdW5kID0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogdGFyZ2V0QmxvY2sgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgpOyBmb3VuZCA9PSBGYWxzZVRyaVN0YXRlICYmIGkt
LTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEtPmNh
c2VzLnNpemUoKTsgZm91bmQgPT0gVHJpU3RhdGU6OkZhbHNlICYmIGktLTspIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN0cmljdEVx
dWFsKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQgPT0gVHJ1
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBUcmlT
dGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2sg
PSBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChm
b3VuZCA9PSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5k
ID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IEZhbHNlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQgPT0gVHJpU3RhdGU6OkZhbHNl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJsb2NrID0gZGF0YS0+ZmFsbFRo
cm91Z2guYmxvY2s7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0QmxvY2sp
OwogICAgICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuY3BwCmluZGV4IDRlZDc1ODRmMjQ5NzIyY2FmOTE4NjlhYzMwNWJkMzUw
NzY3YTNlNzUuLjAxZjQyZjhiNGM1NGJiODlhOGJhNTUzNmQxODIyY2RkNGVjNDI1ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCkBAIC02MiwxNSAr
NjIsMTUgQEAgSlNWYWx1ZSBMYXp5SlNWYWx1ZTo6Z2V0VmFsdWUoVk0mIHZtKSBjb25zdAogc3Rh
dGljIFRyaVN0YXRlIGVxdWFsVG9TaW5nbGVDaGFyYWN0ZXIoSlNWYWx1ZSB2YWx1ZSwgVUNoYXIg
Y2hhcmFjdGVyKQogewogICAgIGlmICghdmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJu
IEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgCiAg
ICAgSlNTdHJpbmcqIGpzU3RyaW5nID0gYXNTdHJpbmcodmFsdWUpOwogICAgIGlmIChqc1N0cmlu
Zy0+bGVuZ3RoKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nSW1wbCogc3Ry
aW5nID0ganNTdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOwogICAgIGlmICghc3RyaW5nKQotICAg
ICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogICAgIAogICAgIHJldHVybiB0cmlTdGF0ZShzdHJpbmctPmF0KDApID09IGNo
YXJhY3Rlcik7CiB9CkBAIC03OCwxMiArNzgsMTIgQEAgc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9T
aW5nbGVDaGFyYWN0ZXIoSlNWYWx1ZSB2YWx1ZSwgVUNoYXIgY2hhcmFjdGVyKQogc3RhdGljIFRy
aVN0YXRlIGVxdWFsVG9TdHJpbmdJbXBsKEpTVmFsdWUgdmFsdWUsIFN0cmluZ0ltcGwqIHN0cmlu
Z0ltcGwpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gRmFs
c2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICAKICAgICBK
U1N0cmluZyoganNTdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSk7CiAgICAgY29uc3QgU3RyaW5nSW1w
bCogc3RyaW5nID0ganNTdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOwogICAgIGlmICghc3RyaW5n
KQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOwogICAgIAogICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKHN0
cmluZ0ltcGwsIHN0cmluZykpOwogfQpAQCAtMTQyLDE4ICsxNDIsMTggQEAgVHJpU3RhdGUgTGF6
eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAg
ICAgICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKICAgICAgICAgY2FzZSBLbm93blZhbHVlOiB7
CiAgICAgICAgICAgICBpZiAoIXZhbHVlKCktPnZhbHVlKCkgfHwgIW90aGVyLnZhbHVlKCktPnZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZhbHVlKCkgPT0gb3RoZXIu
dmFsdWUoKS0+dmFsdWUoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZhbHVlKCkgPT0gb3RoZXIudmFsdWUoKS0+dmFsdWUo
KSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCh2YWx1ZSgpLT52YWx1ZSgpLCBvdGhlci52YWx1ZSgp
LT52YWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmlu
ZzogewogICAgICAgICAgICAgaWYgKCF2YWx1ZSgpLT52YWx1ZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6
RmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1NpbmdsZUNoYXJhY3Rlcih2YWx1ZSgp
LT52YWx1ZSgpLCBvdGhlci5jaGFyYWN0ZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBL
bm93blN0cmluZ0ltcGw6CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nSW1wbDogewogICAgICAgICAg
ICAgaWYgKCF2YWx1ZSgpLT52YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVRy
aVN0YXRlOworICAgICAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAg
ICAgICByZXR1cm4gZXF1YWxUb1N0cmluZ0ltcGwodmFsdWUoKS0+dmFsdWUoKSwgb3RoZXIuc3Ry
aW5nSW1wbCgpKTsKICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjUsNyArMTY1LDcgQEAgVHJp
U3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikg
Y29uc3QKICAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6CiAgICAgICAgIGNhc2UgTmV3U3Ry
aW5nSW1wbDoKICAgICAgICAgICAgIGlmIChvdGhlci5zdHJpbmdJbXBsKCktPmxlbmd0aCgpICE9
IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShv
dGhlci5zdHJpbmdJbXBsKCktPmF0KDApID09IGNoYXJhY3RlcigpKTsKICAgICAgICAgY2FzZSBL
bm93blZhbHVlOgogICAgICAgICAgICAgcmV0dXJuIG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsK
QEAgLTE4NCw3ICsxODQsNyBAQCBUcmlTdGF0ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0RXF1YWwoY29u
c3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsK
KyAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogfQogCiB1aW50cHRyX3QgTGF6eUpTVmFsdWU6
OnN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQga2luZCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDk3YWYyZTJj
ZGJmODZmYjY3NmQ0YmQxYjhmMDdhYjA5ZWYxZDIzMWMuLmVmYmRjOTA4OWU2NzlhMTQ2Mjg3NDA2
ZWIzYzZmMjJmNzc4ZjJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTExOCw5ICs1MTE4LDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuc2lnbkV4dGVuZDE2VG8zMih0MiwgdDIpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAg
ICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkK
ICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkxvYWQoKTsKLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQog
ICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9hZCgpOwogICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVu
ZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTUxMzcsOSArNTEzNyw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGNhc2UgNDogewog
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihiYXNlSW5kZXgsIHQyKTsKIAotICAgICAgICAg
ICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAg
ICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDMyKHQyKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5k
aWFuR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGlzTGl0
dGxlRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBp
c0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuYnl0ZVN3YXAzMih0Mik7CkBAIC01MTczLDkgKzUxNzMsOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmNv
bnZlcnRGbG9hdFRvRG91YmxlKHJlc3VsdEZQUiwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAg
ICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0
YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlT
dGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRy
aVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsK
ICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC01MjAwLDkgKzUyMDAs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHQyLCByZXN1bHRGUFIpOwogICAgICAgICAg
ICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
VHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2Rl
KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxz
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4g
PT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29k
ZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTUzMTIsOSAr
NTMxMiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih0MywgYmFzZUluZGV4KTsKICAgICAgICAgICAg
ICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFs
c2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJp
U3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUo
KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC01MzM4LDkgKzUz
MzgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQodDMsIGJhc2VJbmRleCk7CiAgICAgICAgICAgICAg
ICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNl
VHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJp
U3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0
YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJp
U3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7
CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNTM3Miw5ICs1Mzcy
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZTE2KHQzLCBiYXNlSW5kZXgpOwogICAgICAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0
YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0
ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0
YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwog
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTU0MDAsOSArNTQwMCw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMih0MywgYmFzZUluZGV4KTsKICAgICAgICAgICAgICAgICB9
OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlT
dGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0
ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0
ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKICAg
ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTFhMTZmYjlkNWMwNzJiNzUwMjU3
YzAxZWVlMjhhMDhhZjI0MDIxMi4uMzgxMjNhZTE3NjQzZDVlNmEwMTJkYWZiMjgxODBjOTkwZmNh
Mjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMTQxOTAsOSArMTQxOTAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAg
ICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAg
ICAgICAgICAgIHNldEludDMyKGVtaXRCaWdFbmRpYW5Mb2FkKCkpOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAg
ICAgICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIoZW1pdENvZGVC
YXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkxv
YWQsIGVtaXRCaWdFbmRpYW5Mb2FkKSk7CkBAIC0xNDIwMiw5ICsxNDIwMiw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjYXNlIDQ6IHsKICAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFs
dWUgPSBtX291dC5sb2FkMzIocG9pbnRlcik7CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5p
c0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAg
bG9hZGVkVmFsdWUgPSBieXRlU3dhcDMyKGxvYWRlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUg
PSBbJl0gewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlZFZhbHVlOwogICAg
ICAgICAgICAgICAgICAgICB9OwpAQCAtMTQyNDcsOSArMTQyNDcsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKICAgICAgICAgICAgICAgICB9Owog
Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRl
KQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpU
cnVlKQogICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdExpdHRsZUVuZGlhbkNvZGUo
KSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxz
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4g
PT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdEJp
Z0VuZGlhbkNvZGUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICBzZXREb3VibGUoZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlh
biwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKSk7CkBAIC0xNDI2Nyw5
ICsxNDI2Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5i
aXRDYXN0KGxvYWRlZFZhbHVlLCBEb3VibGUpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAg
ICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAg
ICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlT
dGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFu
Q29kZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHNldERv
dWJsZShlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0
TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpKTsKQEAgLTE0MzM4LDkgKzE0MzM4
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFu
Q29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
VHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRp
YW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBlbWl0
Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5k
aWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwpAQCAtMTQzNTYsOSArMTQzNTYsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAg
ICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VU
cmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlT
dGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlT
dGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGVtaXRDb2RlQmFzZWRP
bkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBl
bWl0QmlnRW5kaWFuQ29kZSk7CkBAIC0xNDM4OSw5ICsxNDM4OSw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIH07CiAKLSAg
ICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQor
ICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxz
ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVl
KQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZW1pdENvZGVCYXNlZE9uRW5kaWFubmVz
c0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRp
YW5Db2RlKTsKQEAgLTE0NDEyLDkgKzE0NDEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAg
ICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAg
ICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlz
TGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCmluZGV4IGQ1N2ZiMWVlYTgwNDRh
MzRiNzkxNzY4YTkwOTc2OTg5OThhYzMzOTIuLjZjNjA5YjRhNzQ0NThlYWRiMDllOTM5NDNmMTZm
NGI1YWJjYzM4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0
cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKQEAg
LTQ5OCw4MCArNDk4LDgwIEBAIExWYWx1ZSBPdXRwdXQ6OmJhc2VJbmRleChMVmFsdWUgYmFzZSwg
TFZhbHVlIGluZGV4LCBTY2FsZSBzY2FsZSwgcHRyZGlmZl90IG9mZnNlCiBMVmFsdWUgT3V0cHV0
OjplcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3Vs
dCA9IGxlZnQtPmVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRU
cmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRl
KTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBy
ZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0Ojpub3RFcXVhbChMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPm5vdEVxdWFsQ29u
c3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0
ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJl
c3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwog
fQogCiBMVmFsdWUgT3V0cHV0OjphYm92ZShMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewog
ICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmFib3ZlQ29uc3RhbnQocmlnaHQpOwotICAgIGlm
IChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1
bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1
ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkFib3ZlLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0OjphYm92
ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1
bHQgPSBsZWZ0LT5hYm92ZUVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0g
TWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRy
aVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAg
ICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0
dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlRXF1YWws
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmJlbG93KExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+YmVs
b3dDb25zdGFudChyaWdodCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBNaXhlZFRyaVN0YXRlKQotICAg
ICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcnVlVHJpU3RhdGUpOworICAgIGlmIChy
ZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAgICAgIHJldHVybiBjb25zdEJv
b2wocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKTsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3csIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmJlbG93T3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmJlbG93RXF1YWxDb25zdGFudChy
aWdodCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBNaXhlZFRyaVN0YXRlKQotICAgICAgICByZXR1cm4g
Y29uc3RCb29sKHJlc3VsdCA9PSBUcnVlVHJpU3RhdGUpOworICAgIGlmIChyZXN1bHQgIT0gVHJp
U3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09
IFRyaVN0YXRlOjpUcnVlKTsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6QmVsb3dFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAog
TFZhbHVlIE91dHB1dDo6Z3JlYXRlclRoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsK
ICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5ncmVhdGVyVGhhbkNvbnN0YW50KHJpZ2h0KTsK
LSAgICBpZiAocmVzdWx0ICE9IE1peGVkVHJpU3RhdGUpCi0gICAgICAgIHJldHVybiBjb25zdEJv
b2wocmVzdWx0ID09IFRydWVUcmlTdGF0ZSk7CisgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6
SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJpU3Rh
dGU6OlRydWUpOwogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVl
IE91dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7
CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+Z3JlYXRlckVxdWFsQ29uc3RhbnQocmlnaHQp
OwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0
Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRl
OjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlT
dGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZh
bHVlIE91dHB1dDo6bGVzc1RoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKICAgICBU
cmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5sZXNzVGhhbkNvbnN0YW50KHJpZ2h0KTsKLSAgICBpZiAo
cmVzdWx0ICE9IE1peGVkVHJpU3RhdGUpCi0gICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0
ID09IFRydWVUcmlTdGF0ZSk7CisgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1p
bmF0ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUp
OwogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpM
ZXNzVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6bGVz
c1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUg
cmVzdWx0ID0gbGVmdC0+bGVzc0VxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQg
IT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1
ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQor
ICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NFcXVh
bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMmUxNzI1NGQ2YzQ3MWJiYmRhYmNiMjY1Mzk5ZDFi
YmJlZDE3N2E2NS4uMDA2OGE3ZDc0ODU0ZjJmOWI2NzcwMzFiOGE1ZmFiYzhlYTU3NGUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNzE3LDcg
KzE3MTcsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRp
bWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlYwogICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlT1NSKCksICJQZXJmb3JtaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4g
Iiwgb3B0aW1pemVkQ29kZUJsb2NrKTsKIAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29v
bigpOwotICAgICAgICBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPnNldERpZE9wdGlt
aXplKFRydWVUcmlTdGF0ZSk7CisgICAgICAgIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KS0+c2V0RGlkT3B0aW1pemUoVHJpU3RhdGU6OlRydWUpOwogICAgICAgICB2b2lkKiB0YXJnZXRQ
QyA9IHZtLmdldENUSVN0dWIoREZHOjpvc3JFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgdGFyZ2V0UEMgPSByZXRhZ0NvZGVQdHIodGFyZ2V0
UEMsIEpJVFRodW5rUHRyVGFnLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihjYWxsRnJhbWUpKTsKICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh0YXJnZXRQQywgZGF0YUJ1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggZDExNTcxZmVi
YTJhZWZmYjJmMmFlODVjNWQ4YmY0MmZiMjk5NDc3Zi4uMWY5Zjk0YTRkYjY1M2RlNjBjZjYzMWIw
YjQyYjMwNTdlOGYwYmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcApAQCAtMjA2MCw3ICsyMDYwLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJl
KgogICAgICwgbV9ldmFsQ29udGV4dFR5cGUoY2FjaGVkQ29kZUJsb2NrLmV2YWxDb250ZXh0VHlw
ZSgpKQogICAgICwgbV9jb2RlVHlwZShjYWNoZWRDb2RlQmxvY2suY29kZVR5cGUoKSkKIAotICAg
ICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisg
ICAgLCBtX2RpZE9wdGltaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZSkpCiAgICAgLCBtX2FnZSgwKQogICAgICwgbV9oYXNDaGVja3BvaW50cyhjYWNoZWRD
b2RlQmxvY2suaGFzQ2hlY2twb2ludHMoKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAppbmRleCAzNTAyYWEy
ZTk1MjE3YzIzMTFiNmMwOWIzNGFjNjJhZWUzM2U0MTgyLi5jMGJjNzNlMDdhMTU0NzA3ODJlODJk
ODcwMDgzNjg3YmIwYzIzNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUgPT0gMCwgIkZhbHNlVHJpU3RhdGUg
aXMgMC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlTdGF0ZSA9PSAxLCAiVHJ1ZVRyaVN0
YXRlIGlzIDEuIik7Ci0gICAgc3RhdGljX2Fzc2VydChNaXhlZFRyaVN0YXRlID09IDIsICJNaXhl
ZFRyaVN0YXRlIGlzIDIuIik7CisgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8dWludDhf
dD4oVHJpU3RhdGU6OkZhbHNlKSwgIlRyaVN0YXRlOjpGYWxzZSBpcyAwLiIpOworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OlRydWUpID09IDEsICJUcmlT
dGF0ZTo6VHJ1ZSBpcyAxLiIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDhf
dD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpID09IDIsICJUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZSBpcyAyLiIpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBDb25maWd1cmFibGVT
aGlmdCA9IDA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBFbnVtZXJhYmxlU2hpZnQg
PSAyOwpAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKIAogICAgIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcygpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVzKAotICAgICAgICAgICAgKE1peGVkVHJp
U3RhdGUgPDwgQ29uZmlndXJhYmxlU2hpZnQpCi0gICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRl
IDw8IEVudW1lcmFibGVTaGlmdCkKLSAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgV3Jp
dGFibGVTaGlmdCkKLSAgICAgICAgICAgIHwgKDAgPDwgVmFsdWVTaGlmdCkKLSAgICAgICAgICAg
IHwgKDAgPDwgR2V0U2hpZnQpCi0gICAgICAgICAgICB8ICgwIDw8IFNldFNoaWZ0KSkKKyAgICAg
ICAgICAgIChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgPDwg
Q29uZmlndXJhYmxlU2hpZnQpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90PihU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgPDwgRW51bWVyYWJsZVNoaWZ0KQorICAgICAgICAgICAg
fCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIDw8IFdyaXRh
YmxlU2hpZnQpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6
RmFsc2UpIDw8IFZhbHVlU2hpZnQpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90
PihUcmlTdGF0ZTo6RmFsc2UpIDw8IEdldFNoaWZ0KQorICAgICAgICAgICAgfCAoc3RhdGljX2Nh
c3Q8dWludDhfdD4oVHJpU3RhdGU6OkZhbHNlKSA8PCBTZXRTaGlmdCkpCiAgICAgewogICAgIH0K
IApAQCAtOTYsNjAgKzk2LDYwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzV3JpdGFibGUoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0
KSAhPSBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRh
YmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0KIAogICAgIE9wdGlv
bmFsPGJvb2w+IHdyaXRhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzV3JpdGFi
bGUoKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBl
eHRyYWN0VHJpU3RhdGUoV3JpdGFibGVTaGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRhYmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwog
ICAgIH0KIAogICAgIGJvb2wgaGFzQ29uZmlndXJhYmxlKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpICE9
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0KIAogICAgIE9wdGlvbmFsPGJvb2w+IGNv
bmZpZ3VyYWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc0NvbmZpZ3VyYWJsZSgp
KQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGV4dHJh
Y3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZpZ3VyYWJsZVNoaWZ0KSA9PSBUcmlTdGF0ZTo6VHJ1
ZTsKICAgICB9CiAKICAgICBib29sIGhhc0VudW1lcmFibGUoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KSAhPSBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICB9CiAKICAgICBPcHRpb25hbDxib29sPiBlbnVt
ZXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzRW51bWVyYWJsZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlT
dGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIGV4
dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwogICAgIH0K
IAogICAgIHZvaWQgc2V0V3JpdGFibGUoYm9vbCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGZpbGxX
aXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJs
ZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVl
IDogVHJpU3RhdGU6OkZhbHNlLCBXcml0YWJsZVNoaWZ0KTsKICAgICB9CiAKICAgICB2b2lkIHNl
dENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQogICAgIHsKLSAgICAgICAgZmlsbFdpdGhUcmlTdGF0
ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIENvbmZpZ3VyYWJsZVNoaWZ0
KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJp
U3RhdGU6OkZhbHNlLCBDb25maWd1cmFibGVTaGlmdCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRF
bnVtZXJhYmxlKGJvb2wgdmFsdWUpCiAgICAgewotICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZh
bHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZSwgRW51bWVyYWJsZVNoaWZ0KTsKKyAg
ICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6
OkZhbHNlLCBFbnVtZXJhYmxlU2hpZnQpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGZp
bGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2lnbmVkIHNoaWZ0KQogICAgIHsKICAg
ICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7Ci0gICAgICAgIG1fYXR0cmlidXRl
cyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUgPDwgc2hpZnQpOworICAgICAgICBt
X2F0dHJpYnV0ZXMgPSAobV9hdHRyaWJ1dGVzICYgfm1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHN0YXRlKSA8PCBzaGlmdCk7CiAgICAgfQogCiAgICAgVHJpU3RhdGUgZXh0cmFjdFRyaVN0
YXRlKHVuc2lnbmVkIHNoaWZ0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggYTExMDdkZTA3MDVhZjEzYTY1Yzg2NDQ2MGI2YWRi
MjRkNDMzYWY3Zi4uOGRlMDAzY2IwN2MwOWY5NzEzODJmMzRkMjc0ZGYwZGZkZTEwZGE1MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0y
MDEsOCArMjAxLDggQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgIFRyaVN0YXRlIG51
bWVyaWMgPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPm51bWVyaWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Ci0gICAgaWYgKG51bWVyaWMgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgb3B0LmFkZCgi
a24iX3MsIG51bWVyaWMgPT0gVHJ1ZVRyaVN0YXRlID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwor
ICAgIGlmIChudW1lcmljICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBvcHQu
YWRkKCJrbiJfcywgbnVtZXJpYyA9PSBUcmlTdGF0ZTo6VHJ1ZSA/ICJ0cnVlIl9zIDogImZhbHNl
Il9zKTsKIAogICAgIFN0cmluZyBjYXNlRmlyc3RPcHRpb24gPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+Y2FzZUZpcnN0LCB7ICJ1cHBl
ciIsICJsb3dlciIsICJmYWxzZSIgfSwgImNhc2VGaXJzdCBtdXN0IGJlIGVpdGhlciBcInVwcGVy
XCIsIFwibG93ZXJcIiwgb3IgXCJmYWxzZVwiIiwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEludGxDb2xs
YXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbG9jYQogCiAgICAgVHJpU3RhdGUgaWdub3JlUHVuY3R1YXRpb24gPSBpbnRsQm9vbGVh
bk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZVB1
bmN0dWF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
IG1faWdub3JlUHVuY3R1YXRpb24gPSAoaWdub3JlUHVuY3R1YXRpb24gPT0gVHJ1ZVRyaVN0YXRl
KTsKKyAgICBtX2lnbm9yZVB1bmN0dWF0aW9uID0gKGlnbm9yZVB1bmN0dWF0aW9uID09IFRyaVN0
YXRlOjpUcnVlKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBVQ29sbGF0b3JEZWxldGVy
Pih1Y29sX29wZW4obV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5k
ZXggMDIzNThjODg3OWZlYTk0OTUzNmJmMGRlZDlkMWZkY2RlYmM0Njg3ZS4uNzY2MmZhNjg5ZTRm
OTk3YzlhZDdjZjk2ZjA5NmM1ZGY3NDMwMzA1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC00NjgsNyArNDY4LDcg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgVHJpU3RhdGUgaG91cjEyID0gaW50bEJv
b2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3Vy
MTIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgYm9vbCBp
c0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIgPT0gTWl4ZWRUcmlTdGF0ZSk7CisgICAgYm9vbCBp
c0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpOwog
CiAgICAgU3RyaW5nIGhvdXJDeWNsZSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyQ3ljbGUsIHsgImgxMSIsICJoMTIiLCAiaDIz
IiwgImgyNCIgfSwgImhvdXJDeWNsZSBtdXN0IGJlIFwiaDExXCIsIFwiaDEyXCIsIFwiaDIzXCIs
IG9yIFwiaDI0XCIiLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwpAQCAtNTgyLDE0ICs1ODIsMTQgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IGlmIChob3VyID09ICIyLWRpZ2l0IikgewogICAgICAgICBpZiAoaXNIb3VyMTJVbmRlZmluZWQg
JiYgbV9ob3VyQ3ljbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiamoiKTsKLSAgICAgICAgZWxzZSBpZiAoaG91cjEyID09IFRydWVUcmlTdGF0
ZSkKKyAgICAgICAgZWxzZSBpZiAoaG91cjEyID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoImhoIik7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJISCIpOwogICAgIH0gZWxz
ZSBpZiAoaG91ciA9PSAibnVtZXJpYyIpIHsKICAgICAgICAgaWYgKGlzSG91cjEyVW5kZWZpbmVk
ICYmIG1faG91ckN5Y2xlLmlzTnVsbCgpKQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgnaicpOwotICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJ1ZVRyaVN0YXRlKQorICAg
ICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCdoJyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJ0gnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggYTZlYTFmNTE1OGUyYTdhZDdkZWQwMjBk
MWJmOGE4NWQ4ZGFlYmE3YS4uOTI1ZmFjMDJiYzc2MTA5OGJhZTUwMTA2NGQ1ZjZiYjhkM2I4NTQ0
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAg
ICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fdXNlR3JvdXBpbmcg
PSB1c2VHcm91cGluZyAhPSBGYWxzZVRyaVN0YXRlOworICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VH
cm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5
bGUgPSBVTlVNX0RFRkFVTFQ7CiAgICAgc3dpdGNoIChtX3N0eWxlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGYyM2Q5ZWQ5NTRkOGY5OTAx
YzZjNjVkOTA4ZTg3Y2MwYzU2N2JlMGIuLjJhZDdlZTZiYTkyN2MxZWY0MzRlOTRkYjJmMDI0NzNk
NmZlNjFmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCkBAIC0yMDksMTYgKzIwOSwxNiBAQCBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcgogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChvcHRpb25zLmlz
VW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAKICAgICBKU09iamVjdCogb3B0cyA9IG9wdGlv
bnMudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBNaXhlZFRyaVN0YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBUcmlTdGF0
ZTo6SW5kZXRlcm1pbmF0ZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gb3B0cy0+Z2V0KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE1peGVk
VHJpU3RhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlKTsKIAogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogCiAgICAgcmV0dXJuIHRyaVN0YXRlKHZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCmluZGV4IGIwOTExNjIyNDNiMGMwNDA1MTk4YWFiNzNhZGQwYzY2MTBlMjIwYTAuLmEwZWIw
MTMwNWMyMzIzNzUzODJhYTBhYzliNDdlNDhhOWYxZjUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMTI2Miw3ICsxMjYy
LDcgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKQogICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBh
c1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAgICAgICAgY29uc3QgU3RyaW5n
SW1wbCogdjJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAg
ICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlOwogICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5n
LCAqdjJTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVh
cEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSkKQEAgLTEyNzUsMTYgKzEy
NzUsMTYgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQogaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4o
KSBjb25zdAogewogICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCkg
PyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gYXNJbnQzMigp
ID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKGlzRG91YmxlKCkp
Ci0gICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRy
aVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgorICAgICAgICByZXR1cm4g
aXNOb3RaZXJvQW5kT3JkZXJlZChhc0RvdWJsZSgpKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3Rh
dGU6OkZhbHNlOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICBy
ZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKICNpZiBVU0UoQklHSU5UMzIpCiAgICAg
aWYgKGlzQmlnSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1
ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQz
MigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAjZW5kaWYKLSAgICByZXR1
cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBp
c1RydWUoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogfQogCiBBTFdBWVNf
SU5MSU5FIGJvb2wgSlNWYWx1ZTo6cmVxdWlyZU9iamVjdENvZXJjaWJsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCmluZGV4IDBkZWEyNzU2ZTFlYzNkYjczODMxNDQwNjEyMzEwNjI3ZjBm
ZjhjYTMuLmU5OTdhZDAwYWU0YWVhNWU2MTBiNDc4OGFmMGY3MzBiMDlmNjcxNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTMzMCwxMiAr
MzMwLDEyIEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFu
KCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDog
RmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5n
Kj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7
CiAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRy
aVN0YXRlOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlz
KS0+dG9Cb29sZWFuKCkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICBp
ZiAoaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKLSAgICByZXR1cm4g
TWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOworICAgIHJldHVy
biBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsTG9jazo6
bG9jaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oIGIvU291cmNlL1dU
Ri93dGYvVHJpU3RhdGUuaAppbmRleCA1YWU3ODVkM2I5ZDgwZDgzYWEwNzRmZTgyMWNkMDY4NTdk
NjYxY2EwLi43ZTUyZTdiMzYxOWU3MzUyYjVlNGY1ZjdkOTRlOWJlMTk5ZmM1NDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RyaVN0
YXRlLmgKQEAgLTI3LDEwICsyNywxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBUcmlT
dGF0ZSA6IHVpbnQ4X3QgewotICAgIEZhbHNlVHJpU3RhdGUsCi0gICAgVHJ1ZVRyaVN0YXRlLAot
ICAgIE1peGVkVHJpU3RhdGUKK2VudW0gY2xhc3MgVHJpU3RhdGUgOiB1aW50OF90IHsKKyAgICBG
YWxzZSwKKyAgICBUcnVlLAorICAgIEluZGV0ZXJtaW5hdGUKIH07CiAKIGlubGluZSBUcmlTdGF0
ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4pCkBAIC00MSw3ICs0MSw0IEBAIGlubGluZSBUcmlTdGF0
ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4pCiB9CiAKIHVzaW5nIFdURjo6VHJpU3RhdGU7Ci11c2lu
ZyBXVEY6OkZhbHNlVHJpU3RhdGU7Ci11c2luZyBXVEY6OlRydWVUcmlTdGF0ZTsKLXVzaW5nIFdU
Rjo6TWl4ZWRUcmlTdGF0ZTsKIHVzaW5nIFdURjo6dHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBjNmQ5NThiMjVkMWJmNTM2YzI3NGI3ZTUyZjljNTNiNWFmMmI1ZjBjLi5hMzVi
ZWY1NTA0YzY1YTgzM2NkNTgyMzFiYzZkZGE5MWEzODg1ODljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTU1NTgsMTIgKzU1NTgsMTIgQEAgYm9vbCBEb2N1bWVudDo6cXVlcnlDb21tYW5k
RW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogCiBib29sIERvY3VtZW50OjpxdWVy
eUNvbW1hbmRJbmRldGVybShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogewotICAgIHJldHVy
biBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgpID09IE1peGVkVHJpU3RhdGU7Cisg
ICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGU7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKGNv
bnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB7Ci0gICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29t
bWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgIHJldHVybiBjb21tYW5kKHRo
aXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogfQogCiBib29sIERv
Y3VtZW50OjpxdWVyeUNvbW1hbmRTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCAyZjYzNTRhNWQyZjMw
YTM2YjkwM2YxMGI5MzczZmZhMjNhMGM4NmM4Li4wMzAwMTViOTcyZmY5Y2E4N2QxNzBiZjkxYWMx
ZmNkMjY4NmJmYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBA
IC03NTIsNyArNzUyLDcgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdGV4dE9ubHlQcm9w
ZXJ0aWVzW10gPSB7CiBUcmlTdGF0ZSBFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShFZGl0
aW5nU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5tX211
dGFibGVTdHlsZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgcmV0dXJuIHRyaVN0YXRlT2ZTdHlsZSgqc3R5bGUtPm1f
bXV0YWJsZVN0eWxlLCBEb05vdElnbm9yZVRleHRPbmx5UHJvcGVydGllcyk7CiB9CiAKQEAgLTc2
MCw3ICs3NjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogVHJpU3RhdGUgRWRpdGluZ1N0eWxl
Ojp0cmlTdGF0ZU9mU3R5bGUoVCYgc3R5bGVUb0NvbXBhcmUsIFNob3VsZElnbm9yZVRleHRPbmx5
UHJvcGVydGllcyBzaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX211dGFibGVTdHlsZSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IGRpZmZlcmVuY2UgPSBnZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0eWxlLCBz
dHlsZVRvQ29tcGFyZSk7CiAKQEAgLTc2OCwyMiArNzY4LDIyIEBAIFRyaVN0YXRlIEVkaXRpbmdT
dHlsZTo6dHJpU3RhdGVPZlN0eWxlKFQmIHN0eWxlVG9Db21wYXJlLCBTaG91bGRJZ25vcmVUZXh0
T25seVByCiAgICAgICAgIGRpZmZlcmVuY2UtPnJlbW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25s
eVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dE9ubHlQcm9wZXJ0aWVzKSk7CiAKICAg
ICBpZiAoZGlmZmVyZW5jZS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRl
OworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OlRydWU7CiAgICAgaWYgKGRpZmZlcmVuY2UtPnBy
b3BlcnR5Q291bnQoKSA9PSBtX211dGFibGVTdHlsZS0+cHJvcGVydHlDb3VudCgpKQotICAgICAg
ICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsK
IAotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewogICAgIGlmICghc2VsZWN0
aW9uLmlzQ2FyZXRPclJhbmdlKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAg
ICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogCiAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0
KCkpCiAgICAgICAgIHJldHVybiB0cmlTdGF0ZU9mU3R5bGUoRWRpdGluZ1N0eWxlOjpzdHlsZUF0
U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uKS5nZXQoKSk7CiAKLSAgICBUcmlTdGF0ZSBzdGF0ZSA9
IEZhbHNlVHJpU3RhdGU7CisgICAgVHJpU3RhdGUgc3RhdGUgPSBUcmlTdGF0ZTo6RmFsc2U7CiAg
ICAgYm9vbCBub2RlSXNTdGFydCA9IHRydWU7CiAgICAgZm9yIChOb2RlKiBub2RlID0gc2VsZWN0
aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6
Om5leHQoKm5vZGUpKSB7CiAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPmhh
c0VkaXRhYmxlU3R5bGUoKSkgewpAQCAtNzkzLDcgKzc5Myw3IEBAIFRyaVN0YXRlIEVkaXRpbmdT
dHlsZTo6dHJpU3RhdGVPZlN0eWxlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikg
Y29uc3QKICAgICAgICAgICAgICAgICBzdGF0ZSA9IG5vZGVTdGF0ZTsKICAgICAgICAgICAgICAg
ICBub2RlSXNTdGFydCA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSAhPSBu
b2RlU3RhdGUgJiYgbm9kZS0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUg
PSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgICAgIHN0YXRlID0gVHJpU3RhdGU6OkluZGV0
ZXJtaW5hdGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTE0ODIsNyArMTQ4Miw3IEBAIGludCBFZGl0aW5nU3R5bGU6OmxlZ2FjeUZvbnRTaXpl
KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIAogYm9vbCBFZGl0aW5nU3R5bGU6Omhhc1N0eWxl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0ZU9m
U3R5bGUodGhpcykgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gRWRpdGluZ1N0eWxlOjpj
cmVhdGUocHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0ZU9mU3R5bGUodGhpcykgIT0gVHJpU3Rh
dGU6OkZhbHNlOwogfQogCiBSZWZQdHI8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OnN0eWxl
QXRTZWxlY3Rpb25TdGFydChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wg
c2hvdWxkVXNlQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggNjNjY2UzOTE4MTY5Y2U0NmEzMzk4YTU4MGEwMTIxNWYyMDczZmYyNC4uODg4ZGE5
MjVhNWY4YTNjYjg3NWFkNDA5MDUxNjlhOTMxODVhMzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtODE0LDMwICs4MTQsMzAgQEAgVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25V
bm9yZGVyZWRMaXN0U3RhdGUoKSBjb25zdAogewogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlv
bigpLmlzQ2FyZXQoKSkgewogICAgICAgICBpZiAoZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCB1bFRhZykpCi0gICAgICAg
ICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpU
cnVlOwogICAgIH0gZWxzZSBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsK
ICAgICAgICAgYXV0byogc3RhcnROb2RlID0gZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCB1bFRhZyk7CiAgICAgICAgIGF1
dG8qIGVuZE5vZGUgPSBlbmNsb3NpbmdFbGVtZW50V2l0aFRhZyhtX2RvY3VtZW50LnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLmVuZCgpLCB1bFRhZyk7CiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYg
ZW5kTm9kZSAmJiBzdGFydE5vZGUgPT0gZW5kTm9kZSkKLSAgICAgICAgICAgIHJldHVybiBUcnVl
VHJpU3RhdGU7CisgICAgICAgICAgICByZXR1cm4gVHJpU3RhdGU6OlRydWU7CiAgICAgfQogCi0g
ICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIH0K
IAogVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25PcmRlcmVkTGlzdFN0YXRlKCkgY29uc3QKIHsK
ICAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpIHsKICAgICAgICAgaWYg
KGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuc3RhcnQoKSwgb2xUYWcpKQotICAgICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAg
ICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9IGVsc2UgaWYgKG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0Tm9kZSA9IGVu
Y2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
c3RhcnQoKSwgb2xUYWcpOwogICAgICAgICBhdXRvKiBlbmROb2RlID0gZW5jbG9zaW5nRWxlbWVu
dFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSwgb2xUYWcp
OwogICAgICAgICBpZiAoc3RhcnROb2RlICYmIGVuZE5vZGUgJiYgc3RhcnROb2RlID09IGVuZE5v
ZGUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAotICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiB9CiAKIFJlZlB0cjxOb2RlPiBFZGl0b3I6Omluc2Vy
dE9yZGVyZWRMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmlu
ZGV4IGUxZmIzY2QwNzkwM2ZlYzNjNzhlMjU4Yjc3MjUxNjhmNDExOWEyMTMuLjkzYWU3N2RmZDAy
NDJiYTFlYmFiN2JhZjdjNWQ1NjVmN2VhNjc3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBib29sIGlzU3R5bGVQ
cmVzZW50KEVkaXRvciYgZWRpdG9yLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNo
YXIqCiAgICAgLy8gV2luZG93czogcHJlc2VudCB0aHJvdWdob3V0IHRoZSBzZWxlY3Rpb24KICAg
ICBpZiAoZWRpdG9yLmJlaGF2aW9yKCkuc2hvdWxkVG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNl
bGVjdGlvbigpKQogICAgICAgICByZXR1cm4gZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUo
cHJvcGVydHlJRCwgb25WYWx1ZSk7Ci0gICAgcmV0dXJuIGVkaXRvci5zZWxlY3Rpb25IYXNTdHls
ZShwcm9wZXJ0eUlELCBvblZhbHVlKSA9PSBUcnVlVHJpU3RhdGU7CisgICAgcmV0dXJuIGVkaXRv
ci5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBvblZhbHVlKSA9PSBUcmlTdGF0ZTo6VHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0
b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQpAQCAtMTkxLDcgKzE5MSw3
IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUmIGZyYW1l
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHlsZShG
cmFtZSYgZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogZGVzaXJl
ZFZhbHVlKQogewogICAgIGlmIChmcmFtZS5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFRvZ2ds
ZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lLmVk
aXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKSA/
IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSkgPyBU
cmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICByZXR1cm4gZnJhbWUuZWRpdG9y
KCkuc2VsZWN0aW9uSGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKTsKIH0KIApAQCAt
MjA3LDggKzIwNyw4IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVRleHRXcml0aW5nRGlyZWN0aW9u
KEZyYW1lJiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3RpCiAgICAgYm9vbCBoYXNOZXN0
ZWRPck11bHRpcGxlRW1iZWRkaW5nczsKICAgICBXcml0aW5nRGlyZWN0aW9uIHNlbGVjdGlvbkRp
cmVjdGlvbiA9IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwKICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5n
U3R5bGUoKSwgaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3MpOwotICAgIC8vIEZYSU1FOiBX
ZSBzaG91bGQgYmUgcmV0dXJuaW5nIE1peGVkVHJpU3RhdGUgd2hlbiBzZWxlY3Rpb25EaXJlY3Rp
b24gPT0gZGlyZWN0aW9uICYmIGhhc05lc3RlZE9yTXVsdGlwbGVFbWJlZGRpbmdzCi0gICAgcmV0
dXJuIChzZWxlY3Rpb25EaXJlY3Rpb24gPT0gZGlyZWN0aW9uICYmICFoYXNOZXN0ZWRPck11bHRp
cGxlRW1iZWRkaW5ncykgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIC8vIEZY
SU1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5nIFRyaVN0YXRlOjpJbmRldGVybWluYXRlIHdoZW4g
c2VsZWN0aW9uRGlyZWN0aW9uID09IGRpcmVjdGlvbiAmJiBoYXNOZXN0ZWRPck11bHRpcGxlRW1i
ZWRkaW5ncworICAgIHJldHVybiAoc2VsZWN0aW9uRGlyZWN0aW9uID09IGRpcmVjdGlvbiAmJiAh
aGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3MpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0
ZTo6RmFsc2U7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKEZy
YW1lJiBmcmFtZSkKQEAgLTE0MzgsNyArMTQzOCw3IEBAIHN0YXRpYyBib29sIGVuYWJsZWRJblJp
Y2hseUVkaXRhYmxlVGV4dFdpdGhFZGl0YWJsZUltYWdlc0VuYWJsZWQoRnJhbWUmIGZyYW1lLCBF
CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU5vbmUoRnJhbWUmLCBFdmVudCopCiB7Ci0gICAgcmV0
dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIH0KIAogc3Rh
dGljIFRyaVN0YXRlIHN0YXRlQm9sZChGcmFtZSYgZnJhbWUsIEV2ZW50KikKQEAgLTE0NjMsNyAr
MTQ2Myw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUmIGZyYW1l
LCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSYgZnJh
bWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRo
Q1NTKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6
OkZhbHNlOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdWJzY3JpcHQoRnJhbWUmIGZyYW1l
LCBFdmVudCopCkBAIC0xOTA2LDcgKzE5MDYsNyBAQCBib29sIEVkaXRvcjo6Q29tbWFuZDo6aXNF
bmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNvbnN0CiBUcmlTdGF0ZSBFZGl0b3I6OkNv
bW1hbmQ6OnN0YXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFp
c1N1cHBvcnRlZCgpIHx8ICFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICByZXR1cm4gbV9jb21tYW5kLT5z
dGF0ZSgqbV9mcmFtZSwgdHJpZ2dlcmluZ0V2ZW50KTsKIH0KIApAQCAtMTkxNSw3ICsxOTE1LDcg
QEAgU3RyaW5nIEVkaXRvcjo6Q29tbWFuZDo6dmFsdWUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkg
Y29uc3QKICAgICBpZiAoIWlzU3VwcG9ydGVkKCkgfHwgIW1fZnJhbWUpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBpZiAobV9jb21tYW5kLT52YWx1ZSA9PSB2YWx1ZU51bGwgJiYgbV9j
b21tYW5kLT5zdGF0ZSAhPSBzdGF0ZU5vbmUpCi0gICAgICAgIHJldHVybiBtX2NvbW1hbmQtPnN0
YXRlKCptX2ZyYW1lLCB0cmlnZ2VyaW5nRXZlbnQpID09IFRydWVUcmlTdGF0ZSA/ICJ0cnVlIl9z
IDogImZhbHNlIl9zOworICAgICAgICByZXR1cm4gbV9jb21tYW5kLT5zdGF0ZSgqbV9mcmFtZSwg
dHJpZ2dlcmluZ0V2ZW50KSA9PSBUcmlTdGF0ZTo6VHJ1ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9z
OwogICAgIHJldHVybiBtX2NvbW1hbmQtPnZhbHVlKCptX2ZyYW1lLCB0cmlnZ2VyaW5nRXZlbnQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAK
aW5kZXggZDI1ODBlYWFjZWU1N2M5Zjk0MDQxYmM0Y2RkZWU0NDMzYzc4MzEyOC4uMzE5MDU0NmRh
Y2JkNDg5YzM2Mjg1M2M3NmZjZDA5OTJkMjIyYzJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTE3MiwyNSArMTE3MiwyNSBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51
SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9S
aWdodDoKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAg
ICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hl
Y2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9u
LCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OiB7CiAgICAgICAgICAgICBFZGl0
b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdy
aXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1h
bmQuc3RhdGUoKSA9PSBUcnVlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNv
bW1hbmQuc3RhdGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDog
ewogICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCku
Y29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiKTsKLSAgICAgICAg
ICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRydWVUcmlTdGF0ZTsKKyAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwog
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7CiAgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29t
bWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25S
aWdodFRvTGVmdCIpOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkg
PT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRl
KCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5k
LmlzRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEyMzEsNyAr
MTIzMSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVk
ZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6IHsKLSAgICAgICAg
ICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1By
b3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxz
ZVRyaVN0YXRlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwg
InVuZGVybGluZSIpICE9IFRyaVN0YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTI0NCwxMiArMTI0NCwxMiBAQCB2b2lkIENvbnRleHRNZW51Q29udHJv
bGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QK
ICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9u
dFN0eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIikgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgc2hvdWxkRW5h
YmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQm9sZDogewotICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAg
ICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCmluZGV4IDkzNGJhNTAxN2Q3ZjMzNWNk
ZmFlODdmMmM2MTNjMWY4NWZlMmE2NWEuLjRjNTAwZTM2NjhhMzIxMjNiOWUyNGIyNzhkYWFiMDc0
NTczZmZhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2ds
aWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkg
Y29uc3QKICNpZiBQTEFURk9STShHVEspCiAgICAgY29uc3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFt
ZS5lZGl0b3IoKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkgewotICAgICAgICBpZiAo
ZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSA9
PSBUcnVlVHJpU3RhdGUpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NT
UHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAg
ICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotICAg
ICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAi
aXRhbGljIikgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhh
c1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgPT0gVHJpU3RhdGU6OlRydWUp
CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0
ZUl0YWxpY3M7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpID09IFRydWVUcmlT
dGF0ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgPT0gVHJpU3RhdGU6OlRy
dWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJp
YnV0ZVVuZGVybGluZTsKLSAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIikgPT0g
VHJ1ZVRyaVN0YXRlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1By
b3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJsaW5lLXRocm91Z2giKSA9PSBU
cmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0
ZXMgfD0gQXR0cmlidXRlU3RyaWtlVGhyb3VnaDsKICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5p
c0NhcmV0KCkpIHsKICAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDcxYjAyZDFiNTNkZWRiOWUyZmIzNTA5ZTU1
N2YxNDU3OTk3NDMyNWEuLjc0MzY2NjU4OGQ4Yjg2NGNmNmE1Y2M3OWI5MDI0YTMxNWI5YjU1ZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpA
QCAtMTAxMywxMiArMTAxMywxMiBAQCBAZW5kCiBzdGF0aWMgTlNDb250cm9sU3RhdGVWYWx1ZSBr
aXQoVHJpU3RhdGUgc3RhdGUpCiB7CiAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNl
IEZhbHNlVHJpU3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9m
ZjsKLSAgICAgICAgY2FzZSBUcnVlVHJpU3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gTlNDb250
cm9sU3RhdGVWYWx1ZU9uOwotICAgICAgICBjYXNlIE1peGVkVHJpU3RhdGU6Ci0gICAgICAgICAg
ICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU1peGVkOworICAgIGNhc2UgVHJpU3RhdGU6OkZh
bHNlOgorICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9mZjsKKyAgICBjYXNlIFRy
aVN0YXRlOjpUcnVlOgorICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9uOworICAg
IGNhc2UgVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU6CisgICAgICAgIHJldHVybiBOU0NvbnRyb2xT
dGF0ZVZhbHVlTWl4ZWQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVlT2ZmOwpAQCAtMjk0OCw3ICsyOTQ4LDcgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVt
ICopaXRlbTsKICAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVt
IGNsYXNzXV0pIHsKICAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSB3cml0aW5nRGlyZWN0
aW9uID09IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKLSAg
ICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFz
U3R5bGUoV2ViQ29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbildOworICAgICAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOihmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5
bGUoV2ViQ29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbikgIT0gVHJpU3RhdGU6
OkZhbHNlKV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFtzZWxmIF9jYW5FZGl0XTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398149</attachid>
            <date>2020-04-30 20:05:13 -0700</date>
            <delta_ts>2020-04-30 20:36:39 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211268-20200430200512.patch</filename>
            <type>text/plain</type>
            <size>88914</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YThkOTUxN2RhOTBlZjZjNzMxNWM4YjljOTk1ZDEyMzZiMTEzOWJhLi43MDVmYTFkZmUzNzE4NzE0
YjQ1ZmE5N2ZkMDc1MjAyNzUyMmIwMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjAtMDQtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFRyaVN0YXRlIHNob3VsZCBiZSBhbiBlbnVtIGNsYXNzIGFuZCB1
c2UgIkluZGV0ZXJtaW5hdGUiIGluc3RlYWQgb2YgIk1peGVkIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBMYW0uCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6bGVzc1RoYW5Db25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpsZXNzRXF1YWxDb25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6YWJvdmVDb25zdGFudCBjb25zdCk6
CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmJlbG93Q29uc3RhbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjphYm92ZUVxdWFsQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpiZWxvd0VxdWFsQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0NjRWYWx1ZTo6ZXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpD
b25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3Q2NFZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6
OkIzOjpDb25zdDY0VmFsdWU6Omxlc3NFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6YmVsb3dDb25zdGFudCBjb25zdCk6CisgICAgICAgIChK
U0M6OkIzOjpDb25zdDY0VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmJlbG93RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAg
ICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0
RG91YmxlVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29u
c3REb3VibGVWYWx1ZTo6bm90RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIz
OjpDb25zdERvdWJsZVZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6ZXF1YWxPclVu
b3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmVxdWFsQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENvbnN0YW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6bGVzc1RoYW5Db25z
dGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmdyZWF0ZXJU
aGFuQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjps
ZXNzRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFs
dWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0
RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBi
My9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFkZEJvb2xD
b25zdGFudCk6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKiBiMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OlZhbHVlOjplcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjps
ZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpncmVhdGVy
VGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpsZXNzRXF1YWxD
b25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6Z3JlYXRlckVxdWFsQ29u
c3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmJlbG93Q29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OlZhbHVlOjplcXVhbE9yVW5vcmRlcmVkQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCMzo6VmFsdWU6OmFzVHJpU3RhdGUgY29uc3QpOgorICAgICAgICAqIGIzL0IzVmFsdWUu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRocmVzaG9sZEZv
ckpJVCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAq
IGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpDb25zdGFudE5vZGU6
OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJpbmFyeU9w
Tm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6Qmlu
YXJ5T3BOb2RlOjp0cnlGb2xkVG9CcmFuY2gpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAg
ICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1YWxUb1Np
bmdsZUNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1YWxUb1N0cmluZ0ltcGwpOgor
ICAgICAgICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbCBjb25zdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURhdGFWaWV3
R2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURhdGFW
aWV3U2V0KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdEVxdWFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFib3ZlKToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmFib3ZlT3JFcXVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvdyk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvd09yRXF1YWwpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6Z3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
Z3JlYXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFu
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbCk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6CisgICAgICAg
IChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVz
KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpoYXNXcml0YWJsZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6d3JpdGFibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc0NvbmZp
Z3VyYWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6
Y29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpoYXNFbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjplbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xs
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsQm9vbGVhbk9wdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpw
dXJlU3RyaWN0RXF1YWwpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKwogMjAyMC0wNC0zMCAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gaW50bEJvb2xlYW5P
cHRpb24gc2hvdWxkIHJldHVybiBUcmlTdGF0ZSBpbnN0ZWFkIG9mIHRha2luZyBhbiBvdXQgcGFy
YW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMzZjYWRhMzE2NzJjY2Y3ZGRiN2E3ZjUxMjg1Y2NlOWIzYTAxYzNkNC4uMDVhYzlj
N2JiZWU2OTVhMzZhY2I5MDA0YTE5MTNkYzAwNTU5NDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMC0wNC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAg
ICAgICAgVHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1p
bmF0ZSIgaW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4K
KworICAgICAgICBUaGUgd29yZCAiaW5kZXRlcm1pbmF0ZSIgY29tZXMgZnJvbSBib29zdDo6dHJp
Ym9vbC4KKyAgICAgICAgQSB0aGlyZCBzdGF0ZSBpcyBnZW5lcmFsbHkgbm90ICJtaXhlZCIgYnV0
IHJhdGhlciB1bmtub3duLgorCisgICAgICAgICogd3RmL1RyaVN0YXRlLmg6CisKIDIwMjAtMDQt
MjkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbl0gRGVhZGxvY2sgaW4gV1RGOjpUaHJlYWQ6OmRpZEV4aXQoKSB3aGlsZSBXZWJLaXROZXR3
b3JrUHJvY2Vzcy5leGUgaXMgZXhpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMxMzA4OWI4ZDdhZThlNDUz
NzMzYjNiZWVmNDc5Y2ViMmFlN2ExOGIuLjJjN2RjMWIxMmIwNjViODY4Njk0NTMyNzc1MDQ5YTcy
NGRlOTNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wNC0zMCAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgVHJpU3RhdGUgc2hv
dWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1pbmF0ZSIgaW5zdGVhZCBvZiAi
TWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kSW5k
ZXRlcm0pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6Omhhc1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1N0eWxlUHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN0YXRlVGV4dFdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6c3RhdGVOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGVXaXRoQ1NT
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZDo6c3RhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kOjp2YWx1ZSBjb25zdCk6CisgICAgICAgICog
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorCiAyMDIwLTA0
LTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1
dGhuXSBPcHRpbWl6ZSBMb2NhbEF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDk2NWM1ZDAwZTNk
NjU4NjBiZjk0NGJjMWZlNDI5M2JlMGFiY2Q5OC4uOTkzMzg3ZWZmNDE5ZGU5YjFjOTkwMmQ1Yjhl
YjBhYjk2YmI1YTkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wNC0zMCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgVHJpU3RhdGUg
c2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1pbmF0ZSIgaW5zdGVhZCBv
ZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZSBjb25zdCk6CisKIDIwMjAtMDQtMzAgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjI2MDkzMik6IEFTU0VSVElPTiBGQUlMRUQ6IG9rIGluIHdlYmtpdDo6U2FuZGJveEV4dGVuc2lv
bjo6Y29uc3VtZVBlcm1hbmVudGx5IGZvciAzIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKaW5kZXggMDE1ZTI2YWZkMGI3NjliY2RiOGU1MjkwOWQxZDM3MmY3MGYzMDRhNS4uZjY1YzE4
MTY4MzdkMzg1YmRjOGQyNjlhMWY4ODEyMmI5ZmY5ZTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIwLTA0LTMwICBSb3NzIEtpcnNsaW5nICA8cm9z
cy5raXJzbGluZ0Bzb255LmNvbT4KKworICAgICAgICBUcmlTdGF0ZSBzaG91bGQgYmUgYW4gZW51
bSBjbGFzcyBhbmQgdXNlICJJbmRldGVybWluYXRlIiBpbnN0ZWFkIG9mICJNaXhlZCIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTI2OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmll
dy5tbToKKyAgICAgICAgKGtpdCk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRlVXNl
ckludGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6XSk6CisKIDIwMjAtMDQtMzAgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgLVtXZWJWaWV3IHNl
dENTU0FuaW1hdGlvbnNTdXNwZW5kZWQ6XQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnN0MzJWYWx1ZS5jcHAKaW5kZXggNWFjZTM2NDdhYTRkMDc3N2JjM2Y2NGVmODE5ZmVhYWNkYjQ3
YzY0My4uMmIzMDIxYjFhYjMxYzk3NDBiZTI4YTQzNGE1MzBmYzNlNmU5ZmQ4YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCkBAIC0yMDcsMTQgKzIwNywx
NCBAQCBWYWx1ZSogQ29uc3QzMlZhbHVlOjppVG9GQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBj
b25zdAogVHJpU3RhdGUgQ29uc3QzMlZhbHVlOjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID09IG90aGVyLT5hc0ludDMyKCkpOwogfQog
CiBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90
aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgIT0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAK
QEAgLTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6Omxlc3NUaGFuQ29uc3Rh
bnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElOVDMyX01BWCA8IHggaXMg
YWx3YXlzIGZhbHNlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNl
VHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhl
ci0+aGFzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1
ZSA8IG90aGVyLT5hc0ludDMyKCkpOwogfQogCkBAIC0yMzIsOSArMjMyLDkgQEAgVHJpU3RhdGUg
Q29uc3QzMlZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBJTlQzMl9NSU4gPiB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4g
VHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPiBvdGhlci0+YXNJbnQzMigpKTsKIH0K
IApAQCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6bGVzc0VxdWFsQ29u
c3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElOVDMyX01JTiA8PSB4
IGlzIGFsd2F5cyB0cnVlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIFRy
dWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIGlmICghb3Ro
ZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFs
dWUgPD0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAKQEAgLTI1Miw5ICsyNTIsOSBAQCBUcmlTdGF0
ZSBDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3QKIHsKICAgICAvLyBJTlQzMl9NQVggPj0geCBpcyBhbHdheXMgdHJ1ZS4KICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50MzJfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQz
Ml90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICBy
ZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVyLT5hc0ludDMyKCkpOwog
fQogCkBAIC0yNjIsOSArMjYyLDkgQEAgVHJpU3RhdGUgQ29uc3QzMlZhbHVlOjphYm92ZUNvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUlOID4geCBp
cyBhbHdheXMgZmFsc2UuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBG
YWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICgh
b3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA+IHN0YXRpY19jYXN0PHVpbnQzMl90PihvdGhl
ci0+YXNJbnQzMigpKSk7CiB9CiAKQEAgLTI3Miw5ICsyNzIsOSBAQCBUcmlTdGF0ZSBDb25zdDMy
VmFsdWU6OmJlbG93Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8v
IFVJTlQzMl9NQVggPCB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkK
LSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6
RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIE1peGVk
VHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBy
ZXR1cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdmFsdWUpIDwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIApAQCAtMjgyLDkgKzI4Miw5IEBA
IFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6YWJvdmVFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUFYID49IHggaXMgYWx3YXlzIHRydWUuCiAg
ICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAg
ICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQot
ICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bV92YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0K
IApAQCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6YmVsb3dFcXVhbENv
bnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUlOIDw9
IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVl
KSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVy
biBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAo
IW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShz
dGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgPD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90
aGVyLT5hc0ludDMyKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3Q2NFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0
NjRWYWx1ZS5jcHAKaW5kZXggOGQ3OTViMDNhMWZlOWNlNjZlODRmNWIzY2IzOGQ2Y2JmM2VhMWEy
Yy4uYTQ0MGU3YzczMDNkY2JiM2U0M2MzNWFhNzZkZDU3MzI0MzQyMzFiYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwCkBAIC0yMDcsMTQgKzIwNywxNCBA
QCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjppVG9GQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25z
dAogVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4g
TWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwog
ICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID09IG90aGVyLT5hc0ludDY0KCkpOwogfQogCiBU
cmlTdGF0ZSBDb25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBN
aXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAg
ICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgIT0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKQEAg
LTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQo
Y29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElOVDY0X01BWCA8IHggaXMgYWx3
YXlzIGZhbHNlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJp
U3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+
aGFzSW50NjQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA8
IG90aGVyLT5hc0ludDY0KCkpOwogfQogCkBAIC0yMzIsOSArMjMyLDkgQEAgVHJpU3RhdGUgQ29u
c3Q2NFZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QK
IHsKICAgICAvLyBJTlQ2NF9NSU4gPiB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6
bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJp
U3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVy
biBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPiBvdGhlci0+YXNJbnQ2NCgpKTsKIH0KIApA
QCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1ZTo6bGVzc0VxdWFsQ29uc3Rh
bnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIElOVDY0X01JTiA8PSB4IGlz
IGFsd2F5cyB0cnVlLgogICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ2NF90PihtX3ZhbHVlKSA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIFRydWVU
cmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIGlmICghb3RoZXIt
Pmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUg
PD0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKQEAgLTI1Miw5ICsyNTIsOSBAQCBUcmlTdGF0ZSBD
b25zdDY0VmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBJTlQ2NF9NQVggPj0geCBpcyBhbHdheXMgdHJ1ZS4KICAgICBpZiAoc3Rh
dGljX2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90
Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBU
cmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVyLT5hc0ludDY0KCkpOwogfQog
CkBAIC0yNjIsOSArMjYyLDkgQEAgVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UNjRfTUlOID4geCBpcyBh
bHdheXMgZmFsc2UuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxz
ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3Ro
ZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvdGhlci0+
YXNJbnQ2NCgpKSk7CiB9CiAKQEAgLTI3Miw5ICsyNzIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFs
dWU6OmJlbG93Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIFVJ
TlQ2NF9NQVggPCB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKLSAg
ICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFs
c2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJp
U3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1
cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWUpIDwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApAQCAtMjgyLDkgKzI4Miw5IEBAIFRy
aVN0YXRlIENvbnN0NjRWYWx1ZTo6YWJvdmVFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHsKICAgICAvLyBVSU5UNjRfTUFYID49IHggaXMgYWx3YXlzIHRydWUuCiAgICAg
aWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAg
ICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4obV92
YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApA
QCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1ZTo6YmVsb3dFcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5UNjRfTUlOIDw9IHgg
aXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9
PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBU
cnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90
aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0
aWNfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVy
LT5hc0ludDY0KCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3REb3VibGVWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dERvdWJsZVZhbHVlLmNwcAppbmRleCA1ZGQ3ZDkxMmY3Y2Q5NWM1OGVhZTdkMGNmNDBhZmIxMDZm
NzZmNjc1Li5hYzkxMDAyYTZkYjU4N2IxZGFjY2QyOWVjNDVjMTBiMmIyZTQ3ZmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcApAQCAtMTQx
LDUyICsxNDEsNTIgQEAgVmFsdWUqIENvbnN0RG91YmxlVmFsdWU6Om1vZENvbnN0YW50KFByb2Nl
ZHVyZSYgcHJvYywgY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogVHJpU3RhdGUgQ29uc3REb3Vi
bGVWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAg
aWYgKCFvdGhlci0+aGFzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwor
ICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0
YXRlKG1fdmFsdWUgPT0gb3RoZXItPmFzRG91YmxlKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdERv
dWJsZVZhbHVlOjpub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsK
ICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4g
dHJpU3RhdGUobV92YWx1ZSAhPSBvdGhlci0+YXNEb3VibGUoKSk7CiB9CiAKIFRyaVN0YXRlIENv
bnN0RG91YmxlVmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJl
dHVybiB0cmlTdGF0ZShtX3ZhbHVlIDwgb3RoZXItPmFzRG91YmxlKCkpOwogfQogCiBUcmlTdGF0
ZSBDb25zdERvdWJsZVZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJu
IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsK
ICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA+IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAog
VHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQotICAgICAgICBy
ZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlIDw9IG90aGVyLT5hc0RvdWJsZSgpKTsK
IH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQoY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQot
ICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVyLT5hc0Rv
dWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6ZXF1YWxPclVub3JkZXJl
ZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25h
bihtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpUcnVlOwogCiAgICAgaWYgKCFvdGhlci0+aGFzRG91YmxlKCkpCi0gICAgICAg
IHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJt
aW5hdGU7CiAgICAgZG91YmxlIG90aGVyVmFsdWUgPSBvdGhlci0+YXNEb3VibGUoKTsKICAgICBy
ZXR1cm4gdHJpU3RhdGUoc3RkOjppc3Vub3JkZXJlZChtX3ZhbHVlLCBvdGhlclZhbHVlKSB8fCBt
X3ZhbHVlID09IG90aGVyVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0RmxvYXRWYWx1ZS5jcHAKaW5kZXggMjI3MGYwMDM5MmZkZmU4OGZiOWIzOTU5ZjQwNmJj
ZWY0YmVkYzZlOC4uMzhjYzQ2MGEzNzU0MDAzNDA1NzU0OTUyZGQwMzkyN2QzMjQ2OTA5OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCkBAIC0x
MzMsNTIgKzEzMyw1MiBAQCBWYWx1ZSogQ29uc3RGbG9hdFZhbHVlOjpkaXZDb25zdGFudChQcm9j
ZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIFRyaVN0YXRlIENvbnN0Rmxv
YXRWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAg
aWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7Cisg
ICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3Rh
dGUobV92YWx1ZSA9PSBvdGhlci0+YXNGbG9hdCgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3RGbG9h
dFZhbHVlOjpub3RFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAg
ICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlT
dGF0ZShtX3ZhbHVlICE9IG90aGVyLT5hc0Zsb2F0KCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdEZs
b2F0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewog
ICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRl
OworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRy
aVN0YXRlKG1fdmFsdWUgPCBvdGhlci0+YXNGbG9hdCgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3RG
bG9hdFZhbHVlOjpncmVhdGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QK
IHsKICAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlT
dGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVy
biB0cmlTdGF0ZShtX3ZhbHVlID4gb3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENv
bnN0RmxvYXRWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRy
aVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0
dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRl
IENvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBN
aXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAg
ICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPj0gb3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRy
aVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZh
bHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihtX3ZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwog
CiAgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBmbG9hdCBv
dGhlclZhbHVlID0gb3RoZXItPmFzRmxvYXQoKTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RkOjpp
c3Vub3JkZXJlZChtX3ZhbHVlLCBvdGhlclZhbHVlKSB8fCBtX3ZhbHVlID09IG90aGVyVmFsdWUp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggZDY4MmEx
NDVhMzRmYmJkOGNjZjI2NzMwYTI0NGZkZDZlNDVjYjdmNy4uODEyY2E1ZjVkY2IwYTUzZGViZWU5
YmMzOTUxODk1ZWFlY2Y3Yzk2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1
cmUuY3BwCkBAIC0xNjQsMTMgKzE2NCwxMyBAQCBWYWx1ZSogUHJvY2VkdXJlOjphZGRCb29sQ29u
c3RhbnQoT3JpZ2luIG9yaWdpbiwgVHJpU3RhdGUgdHJpU3RhdGUpCiB7CiAgICAgaW50MzJfdCB2
YWx1ZSA9IDA7CiAgICAgc3dpdGNoICh0cmlTdGF0ZSkgewotICAgIGNhc2UgRmFsc2VUcmlTdGF0
ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpGYWxzZToKICAgICAgICAgdmFsdWUgPSAwOwogICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFRydWVUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpUcnVl
OgogICAgICAgICB2YWx1ZSA9IDE7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWl4ZWRUcmlT
dGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOgogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1Byb2NlZHVyZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKaW5k
ZXggNWNlMGE1MmY3ZmUyM2NiMDk4YjQzMGY0MDUwYWMxMzg1M2E2NzE0ZS4uOGE2NTliYTU3NjQ4
OWQwNjEwMDc1OTE4ZWY1ZjI2MGMwZGM5NTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgKQEAgLTEzOSw3ICsxMzksNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEJv
dHRvbShPcmlnaW4sIFR5cGUpOwogICAgIFZhbHVlKiBhZGRCb3R0b20oVmFsdWUqKTsKIAotICAg
IC8vIFJldHVybnMgbnVsbCBmb3IgTWl4ZWRUcmlTdGF0ZS4KKyAgICAvLyBSZXR1cm5zIG51bGwg
Zm9yIFRyaVN0YXRlOjpJbmRldGVybWluYXRlLgogICAgIFZhbHVlKiBhZGRCb29sQ29uc3RhbnQo
T3JpZ2luLCBUcmlTdGF0ZSk7CiAKICAgICB2b2lkIHJlc2V0VmFsdWVPd25lcnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCAzY2NmMjUy
Njk5MjczNjgzYzA2ZDM5Y2IzZGUzNzdkOWMxMDJhNmVmLi5iMGY5NDY3MzFjOTMxNTAzNGRkNGU5
OTc2N2RhNTI3ZDhlMDg1NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVk
dWNlU3RyZW5ndGguY3BwCkBAIC0xODk0LDcgKzE4OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBj
YXNlIEFib3ZlRXF1YWw6CiAgICAgICAgIGNhc2UgQmVsb3dFcXVhbDogewogICAgICAgICAgICAg
Q2Fub25pY2FsaXplZENvbXBhcmlzb24gY29tcGFyaXNvbiA9IGNhbm9uaWNhbGl6ZUNvbXBhcmlz
b24obV92YWx1ZSk7Ci0gICAgICAgICAgICBUcmlTdGF0ZSByZXN1bHQgPSBNaXhlZFRyaVN0YXRl
OworICAgICAgICAgICAgVHJpU3RhdGUgcmVzdWx0ID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7
CiAgICAgICAgICAgICBzd2l0Y2ggKGNvbXBhcmlzb24ub3Bjb2RlKSB7CiAgICAgICAgICAgICBj
YXNlIExlc3NUaGFuOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbXBhcmlzb24ub3BlcmFu
ZHNbMV0tPmdyZWF0ZXJUaGFuQ29uc3RhbnQoY29tcGFyaXNvbi5vcGVyYW5kc1swXSk7CkBAIC0y
MTY3LDcgKzIxNjcsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJy
YW5jaCgwLCB0aGVuLCBlbHNlKQogICAgICAgICAgICAgLy8gSW50byB0aGlzOiBKdW1wKGVsc2Up
Ci0gICAgICAgICAgICBpZiAodHJpU3RhdGUgPT0gRmFsc2VUcmlTdGF0ZSkgeworICAgICAgICAg
ICAgaWYgKHRyaVN0YXRlID09IFRyaVN0YXRlOjpGYWxzZSkgewogICAgICAgICAgICAgICAgIG1f
YmxvY2stPnRha2VuKCkuYmxvY2soKS0+cmVtb3ZlUHJlZGVjZXNzb3IobV9ibG9jayk7CiAgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhKdW1wKG1fYmxvY2ssIG1fYmxvY2stPm5v
dFRha2VuKCkpOwogICAgICAgICAgICAgICAgIG1fY2hhbmdlZENGRyA9IHRydWU7CkBAIC0yMTc2
LDcgKzIxNzYsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJyYW5j
aChub3QgMCwgdGhlbiwgZWxzZSkKICAgICAgICAgICAgIC8vIEludG8gdGhpczogSnVtcCh0aGVu
KQotICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRydWVUcmlTdGF0ZSkgeworICAgICAgICAg
ICAgaWYgKHRyaVN0YXRlID09IFRyaVN0YXRlOjpUcnVlKSB7CiAgICAgICAgICAgICAgICAgbV9i
bG9jay0+bm90VGFrZW4oKS5ibG9jaygpLT5yZW1vdmVQcmVkZWNlc3NvcihtX2Jsb2NrKTsKICAg
ICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aEp1bXAobV9ibG9jaywgbV9ibG9jay0+
dGFrZW4oKSk7CiAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkQ0ZHID0gdHJ1ZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCA0ZGQ1Y2I4NjZhZDczZTIxYmEyZGE0MzdmM2Qw
MWM3ZGU1YmE0YzRkLi4xN2EyMmYwZWY2YWIxNTIyMGNlNjE2OGQ3NjlkZDVlOWFhYmYxZjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCkBAIC0zNzksNTcgKzM3OSw1NyBAQCBW
YWx1ZSogVmFsdWU6OnNxcnRDb25zdGFudChQcm9jZWR1cmUmKSBjb25zdAogCiBUcmlTdGF0ZSBW
YWx1ZTo6ZXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1p
eGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBU
cmlTdGF0ZSBWYWx1ZTo6bm90RXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bGVzc1RoYW5Db25zdGFudChjb25zdCBWYWx1ZSop
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFu
dChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bGVz
c0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAogewotICAgIHJldHVybiBNaXhlZFRy
aVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3Rh
dGUgVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAg
ICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKikgY29u
c3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6Oklu
ZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjpiZWxvd0NvbnN0YW50KGNvbnN0IFZh
bHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJp
U3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVlOjphYm92ZUVxdWFsQ29u
c3RhbnQoY29uc3QgVmFsdWUqKSBjb25zdAogewotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwor
ICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgVmFsdWU6
OmJlbG93RXF1YWxDb25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1p
eGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBU
cmlTdGF0ZSBWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKikgY29u
c3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6Oklu
ZGV0ZXJtaW5hdGU7CiB9CiAKIFZhbHVlKiBWYWx1ZTo6aW52ZXJ0ZWRDb21wYXJlKFByb2NlZHVy
ZSYgcHJvYykgY29uc3QKQEAgLTUyMCw3ICs1MjAsNyBAQCBUcmlTdGF0ZSBWYWx1ZTo6YXNUcmlT
dGF0ZSgpIGNvbnN0CiAgICAgY2FzZSBDb25zdEZsb2F0OgogICAgICAgICByZXR1cm4gdHJpU3Rh
dGUoYXNGbG9hdCgpICE9IDAuKTsKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKaW5kZXggMDEwMGJiNDE5ZGQwNTE3YjA5
YTc5ZmU2MDlhNWVlODM2MTFhODhjNC4uYzdmNzdkOWVkNDEyMjhhYTU0YmYxZWVkYjNlODJhM2Ey
MGM4NWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCkBAIC0yOTAsOCArMjkwLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNSb3VuZGVkKCkgY29uc3Q7CiAKICAgICBUcmlTdGF0ZSBh
c1RyaVN0YXRlKCkgY29uc3Q7Ci0gICAgYm9vbCBpc0xpa2VaZXJvKCkgY29uc3QgeyByZXR1cm4g
YXNUcmlTdGF0ZSgpID09IEZhbHNlVHJpU3RhdGU7IH0KLSAgICBib29sIGlzTGlrZU5vblplcm8o
KSBjb25zdCB7IHJldHVybiBhc1RyaVN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOyB9CisgICAgYm9v
bCBpc0xpa2VaZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgpID09IFRyaVN0YXRlOjpG
YWxzZTsgfQorICAgIGJvb2wgaXNMaWtlTm9uWmVybygpIGNvbnN0IHsgcmV0dXJuIGFzVHJpU3Rh
dGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsgfQogCiAgICAgRWZmZWN0cyBlZmZlY3RzKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXgg
ZDRhY2FmODkzNzgzMWEwZjFjZGE2NDMxMzM2MGI4MDhjMzlhOGJhMy4uNjk3NGFkYjk1YzFmNWEz
MjczYmU5NmZiMTMzYmYyZGY1NTBlNjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTg1Myw4ICs4NTMsOCBAQCBDb2RlQmxvY2s6On5Db2Rl
QmxvY2soKQogICAgIGlmIChVTkxJS0VMWSh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKQogICAg
ICAgICB2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5vdGlmeURlc3RydWN0aW9uKHRoaXMpOwog
Ci0gICAgaWYgKCF2bS5oZWFwLmlzU2h1dHRpbmdEb3duKCkgJiYgdW5saW5rZWRDb2RlQmxvY2so
KS0+ZGlkT3B0aW1pemUoKSA9PSBNaXhlZFRyaVN0YXRlKQotICAgICAgICB1bmxpbmtlZENvZGVC
bG9jaygpLT5zZXREaWRPcHRpbWl6ZShGYWxzZVRyaVN0YXRlKTsKKyAgICBpZiAoIXZtLmhlYXAu
aXNTaHV0dGluZ0Rvd24oKSAmJiB1bmxpbmtlZENvZGVCbG9jaygpLT5kaWRPcHRpbWl6ZSgpID09
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT5z
ZXREaWRPcHRpbWl6ZShUcmlTdGF0ZTo6RmFsc2UpOwogCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFM
VUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwpAQCAtMzM4NSwxMSArMzM4NSwx
MSBAQCBPcHRpb25hbDxCeXRlY29kZUluZGV4PiBDb2RlQmxvY2s6OmJ5dGVjb2RlSW5kZXhGcm9t
Q2FsbFNpdGVJbmRleChDYWxsU2l0ZUluZGV4CiBpbnQzMl90IENvZGVCbG9jazo6dGhyZXNob2xk
Rm9ySklUKGludDMyX3QgdGhyZXNob2xkKQogewogICAgIHN3aXRjaCAodW5saW5rZWRDb2RlQmxv
Y2soKS0+ZGlkT3B0aW1pemUoKSkgewotICAgIGNhc2UgTWl4ZWRUcmlTdGF0ZToKKyAgICBjYXNl
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOgogICAgICAgICByZXR1cm4gdGhyZXNob2xkOwotICAg
IGNhc2UgRmFsc2VUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpGYWxzZToKICAgICAgICAg
cmV0dXJuIHRocmVzaG9sZCAqIDQ7Ci0gICAgY2FzZSBUcnVlVHJpU3RhdGU6CisgICAgY2FzZSBU
cmlTdGF0ZTo6VHJ1ZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9sZCAvIDI7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5jcHAKaW5kZXggNTRkYTU3ZGFiNjljYTI2MWFlZmRj
ZWI5MzhmZmEwZjRmZjAzNzkxNS4uNDhjYWI0MjJiMTU2YzFhOWM0ODAxNDIxMGNlZGVjODY1NmJi
YWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRDb2RlQmxvY2suY3BwCkBAIC02OSw3ICs2OSw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxp
bmtlZENvZGVCbG9jayhWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2Rl
CiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5k
ZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2V2YWxDb250ZXh0VHlwZShzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oaW5mby5ldmFsQ29udGV4dFR5cGUoKSkpCiAgICAgLCBtX2NvZGVUeXBlKHN0
YXRpY19jYXN0PHVuc2lnbmVkPihjb2RlVHlwZSkpCi0gICAgLCBtX2RpZE9wdGltaXplKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihNaXhlZFRyaVN0YXRlKSkKKyAgICAsIG1fZGlkT3B0aW1pemUoc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSkKICAgICAsIG1fYWdl
KDApCiAgICAgLCBtX2hhc0NoZWNrcG9pbnRzKGZhbHNlKQogICAgICwgbV9wYXJzZU1vZGUoaW5m
by5wYXJzZU1vZGUoKSkKQEAgLTc4LDcgKzc4LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlu
a2VkQ29kZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUK
IHsKICAgICBBU1NFUlQobV9jb25zdHJ1Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGluZm8uY29uc3RydWN0b3JLaW5kKCkpKTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5cGUpKTsKLSAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpOworICAgIEFTU0VSVChtX2Rp
ZE9wdGltaXplID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZSkpOwogICAgIGlmIChpbmZvLm5lZWRzQ2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPT0gTmVlZHND
bGFzc0ZpZWxkSW5pdGlhbGl6ZXI6OlllcykgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2NrKCkpKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9uZWVk
c0NsYXNzRmllbGRJbml0aWFsaXplciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNz
RmllbGRJbml0aWFsaXplcjo6WWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDBi
ZjMwMjhkODEwYzYxNmViMDdhZGE2NmM1N2RhOTI5OWUxYmJjY2UuLjViOThhNTQ2ZjE5MmIyZDhm
MDYzMGEzYzcxODVjNTFmZDE1MTVhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
MTUyLDcgKzE1Miw3IEBAIHZvaWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvCiAgICAgICAgIGF1dG8gbWFy
a0lmUHJvZml0YWJsZSA9IFsmXSAoV3JpdGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxv
Y2s+JiB1bmxpbmtlZENvZGVCbG9jaykgewogICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVC
bG9jaykKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAodW5saW5rZWRD
b2RlQmxvY2stPmRpZE9wdGltaXplKCkgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgaWYg
KHVubGlua2VkQ29kZUJsb2NrLT5kaWRPcHRpbWl6ZSgpID09IFRyaVN0YXRlOjpUcnVlKQogICAg
ICAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5hZ2UoKSA8IFVubGlua2VkQ29kZUJsb2Nr
OjptYXhBZ2UpCiAgICAgICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQodW5saW5rZWRDb2RlQmxv
Y2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IDEzZDRiYTc0ODEyMTExNWE3OWRhOTI0MmU2ZjIxOGFjYmU2Y2E2ODUu
LjMxMjQ5MmFjYWI4NTFkMjlhNWFhMzQ0MWI4YzQ5ZjViZTg2Y2RmYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTEw
MywxNSArMTAzLDE1IEBAIHZvaWQgQ29uc3RhbnROb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlv
bkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICBUcmlTdGF0ZSB2YWx1
ZSA9IGpzVmFsdWUoZ2VuZXJhdG9yKS5wdXJlVG9Cb29sZWFuKCk7CiAKICAgICBpZiAoVU5MSUtF
TFkobmVlZHNEZWJ1Z0hvb2soKSkpIHsKLSAgICAgICAgaWYgKHZhbHVlICE9IE1peGVkVHJpU3Rh
dGUpCisgICAgICAgIGlmICh2YWx1ZSAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAg
ICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwogICAgIH0KIAotICAgIGlmICh2
YWx1ZSA9PSBNaXhlZFRyaVN0YXRlKQorICAgIGlmICh2YWx1ZSA9PSBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZSkKICAgICAgICAgRXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9u
Q29udGV4dChnZW5lcmF0b3IsIHRydWVUYXJnZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1v
ZGUpOwotICAgIGVsc2UgaWYgKHZhbHVlID09IFRydWVUcmlTdGF0ZSAmJiBmYWxsVGhyb3VnaE1v
ZGUgPT0gRmFsbFRocm91Z2hNZWFuc0ZhbHNlKQorICAgIGVsc2UgaWYgKHZhbHVlID09IFRyaVN0
YXRlOjpUcnVlICYmIGZhbGxUaHJvdWdoTW9kZSA9PSBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpCiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcCh0cnVlVGFyZ2V0KTsKLSAgICBlbHNlIGlmICh2YWx1
ZSA9PSBGYWxzZVRyaVN0YXRlICYmIGZhbGxUaHJvdWdoTW9kZSA9PSBGYWxsVGhyb3VnaE1lYW5z
VHJ1ZSkKKyAgICBlbHNlIGlmICh2YWx1ZSA9PSBUcmlTdGF0ZTo6RmFsc2UgJiYgZmFsbFRocm91
Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVhbnNUcnVlKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1
bXAoZmFsc2VUYXJnZXQpOwogCiAgICAgLy8gQWxsIG90aGVyIGNhc2VzIGFyZSB1bmNvbmRpdGlv
bmFsIGZhbGwtdGhyb3VnaHMsIGxpa2UgImlmICh0cnVlKSIuCkBAIC0yNDc2LDEzICsyNDc2LDEz
IEBAIHZvaWQgQmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICB0cnlGb2xkVG9CcmFuY2goZ2VuZXJhdG9y
LCBicmFuY2hDb25kaXRpb24sIGJyYW5jaEV4cHJlc3Npb24pOwogCiAgICAgaWYgKFVOTElLRUxZ
KG5lZWRzRGVidWdIb29rKCkpKSB7Ci0gICAgICAgIGlmIChicmFuY2hDb25kaXRpb24gIT0gTWl4
ZWRUcmlTdGF0ZSkKKyAgICAgICAgaWYgKGJyYW5jaENvbmRpdGlvbiAhPSBUcmlTdGF0ZTo6SW5k
ZXRlcm1pbmF0ZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwog
ICAgIH0KIAotICAgIGlmIChicmFuY2hDb25kaXRpb24gPT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICBp
ZiAoYnJhbmNoQ29uZGl0aW9uID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQogICAgICAgICBF
eHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KGdlbmVyYXRvciwg
dHJ1ZVRhcmdldCwgZmFsc2VUYXJnZXQsIGZhbGxUaHJvdWdoTW9kZSk7Ci0gICAgZWxzZSBpZiAo
YnJhbmNoQ29uZGl0aW9uID09IFRydWVUcmlTdGF0ZSkKKyAgICBlbHNlIGlmIChicmFuY2hDb25k
aXRpb24gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29u
ZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNzaW9uLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwg
ZmFsbFRocm91Z2hNb2RlKTsKICAgICBlbHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNzaW9uLCBmYWxzZVRhcmdldCwgdHJ1ZVRhcmdl
dCwgaW52ZXJ0KGZhbGxUaHJvdWdoTW9kZSkpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgc3RhdGlj
IGlubGluZSBib29sIGNhbkZvbGRUb0JyYW5jaChPcGNvZGVJRCBvcGNvZGVJRCwgRXhwcmVzc2lv
bk5vZGUqIGJyYW5jaEV4cHIKIAogdm9pZCBCaW5hcnlPcE5vZGU6OnRyeUZvbGRUb0JyYW5jaChC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBUcmlTdGF0ZSYgYnJhbmNoQ29uZGl0aW9uLCBF
eHByZXNzaW9uTm9kZSomIGJyYW5jaEV4cHJlc3Npb24pCiB7Ci0gICAgYnJhbmNoQ29uZGl0aW9u
ID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICBicmFuY2hDb25kaXRpb24gPSBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKICAgICBicmFuY2hFeHByZXNzaW9uID0gMDsKIAogICAgIENvbnN0YW50Tm9kZSog
Y29uc3RhbnQgPSAwOwpAQCAtMjUyNyw5ICsyNTI3LDkgQEAgdm9pZCBCaW5hcnlPcE5vZGU6OnRy
eUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBUcmlTdGF0ZSYgYnJh
bmMKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG9wY29kZUlEID09IG9wX2VxIHx8IG9wY29k
ZUlEID09IG9wX3N0cmljdGVxKQotICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSh2
YWx1ZS5wdXJlVG9Cb29sZWFuKCkpOworICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0
ZSh2YWx1ZS5wdXJlVG9Cb29sZWFuKCkgIT0gVHJpU3RhdGU6OkZhbHNlKTsKICAgICBlbHNlIGlm
IChvcGNvZGVJRCA9PSBvcF9uZXEgfHwgb3Bjb2RlSUQgPT0gb3BfbnN0cmljdGVxKQotICAgICAg
ICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSghdmFsdWUucHVyZVRvQm9vbGVhbigpKTsKKyAg
ICAgICAgYnJhbmNoQ29uZGl0aW9uID0gdHJpU3RhdGUodmFsdWUucHVyZVRvQm9vbGVhbigpID09
IFRyaVN0YXRlOjpGYWxzZSk7CiB9CiAKIFJlZ2lzdGVySUQqIEJpbmFyeU9wTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXgg
MWEzZWUzNTAxNGZhNDg0YmFiN2UzNjg4MGIyNDI0YzlhMzRiM2YxZS4uOTBlMTMzMDA1ZTgzNTZi
ZjU1M2MwMDViM2Q0YWE0N2QxNzg2ZmE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTM0ODcsMjIgKzM0ODcsMjIgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQg
cmVzdWx0LCBJbnRyaW5zaWMKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVu
ZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlh
biA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgICAgICAgICAgTm9kZSogbGl0dGxlRW5k
aWFuQ2hpbGQgPSBudWxscHRyOwogICAgICAgICAgICAgaWYgKGJ5dGVTaXplID4gMSkgewogICAg
ICAgICAgICAgICAgIGlmIChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IDMpCi0gICAgICAg
ICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaXNMaXR0bGVFbmRpYW4gPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gZ2V0KHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50SW5jbHVkaW5nVGhpcygyLCByZWdpc3Rlck9mZnNldCkp
OwogICAgICAgICAgICAgICAgICAgICBpZiAobGl0dGxlRW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBsaXR0bGVF
bmRpYW5DaGlsZC0+Y29uc3RhbnQoKS0+dmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjb25zdGFudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5k
aWFuID0gY29uc3RhbnQucHVyZVRvQm9vbGVhbigpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlhbiAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBu
dWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlT
dGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0z
NTcyLDIyICszNTcyLDIyIEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0Nh
bGwoTm9kZSogY2FsbGVlLCBPcGVyYW5kIHJlc3VsdCwgSW50cmluc2ljCiAgICAgICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAg
ICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRpYW4gPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAg
ICAgICAgICAgIE5vZGUqIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKICAgICAgICAgICAg
IGlmIChieXRlU2l6ZSA+IDEpIHsKICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPCA0KQotICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IEZh
bHNlVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gVHJpU3Rh
dGU6OkZhbHNlOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBs
aXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGlu
Z1RoaXMoMywgcmVnaXN0ZXJPZmZzZXQpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxpdHRs
ZUVuZGlhbkNoaWxkLT5oYXNDb25zdGFudCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxlRW5kaWFuQ2hpbGQtPmNvbnN0YW50KCktPnZhbHVlKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IGNvbnN0YW50LnB1cmVUb0Jvb2xlYW4oKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNMaXR0bGVFbmRpYW4gIT0gTWl4ZWRU
cmlTdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNMaXR0bGVFbmRpYW4g
IT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBp
c0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICBp
c0xpdHRsZUVuZGlhbiA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKaW5kZXggNjEwZDdkMjBlZjY1MzVmN2E4
ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYy4uNDU3OTBiZjgwMzkxNjRhMTRiN2MxMjVkYWE2MTFlNjA4
OTc2M2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NG
R1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCkBAIC0xNzAsMTcgKzE3MCwxNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIHRlcm1pbmFsID0gYmxvY2stPnRlcm1pbmFsKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbC0+Y2hpbGQxKCktPmhhc0NvbnN0YW50KCkp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9IHRlcm1pbmFs
LT5jaGlsZDEoKS0+Y29uc3RhbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFRyaVN0YXRl
IGZvdW5kID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRyaVN0YXRl
IGZvdW5kID0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNC
bG9jayogdGFyZ2V0QmxvY2sgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgpOyBmb3VuZCA9PSBGYWxzZVRyaVN0YXRlICYmIGkt
LTspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEtPmNh
c2VzLnNpemUoKTsgZm91bmQgPT0gVHJpU3RhdGU6OkZhbHNlICYmIGktLTspIHsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN0cmljdEVx
dWFsKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQgPT0gVHJ1
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBUcmlT
dGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2sg
PSBkYXRhLT5jYXNlc1tpXS50YXJnZXQuYmxvY2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChm
b3VuZCA9PSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5k
ID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IEZhbHNlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmQgPT0gVHJpU3RhdGU6OkZhbHNl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJsb2NrID0gZGF0YS0+ZmFsbFRo
cm91Z2guYmxvY2s7CiAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0QmxvY2sp
OwogICAgICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTGF6eUpTVmFsdWUuY3BwCmluZGV4IDRlZDc1ODRmMjQ5NzIyY2FmOTE4NjlhYzMwNWJkMzUw
NzY3YTNlNzUuLjAxZjQyZjhiNGM1NGJiODlhOGJhNTUzNmQxODIyY2RkNGVjNDI1ODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCkBAIC02MiwxNSAr
NjIsMTUgQEAgSlNWYWx1ZSBMYXp5SlNWYWx1ZTo6Z2V0VmFsdWUoVk0mIHZtKSBjb25zdAogc3Rh
dGljIFRyaVN0YXRlIGVxdWFsVG9TaW5nbGVDaGFyYWN0ZXIoSlNWYWx1ZSB2YWx1ZSwgVUNoYXIg
Y2hhcmFjdGVyKQogewogICAgIGlmICghdmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJu
IEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgCiAg
ICAgSlNTdHJpbmcqIGpzU3RyaW5nID0gYXNTdHJpbmcodmFsdWUpOwogICAgIGlmIChqc1N0cmlu
Zy0+bGVuZ3RoKCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgCiAgICAgY29uc3QgU3RyaW5nSW1wbCogc3Ry
aW5nID0ganNTdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOwogICAgIGlmICghc3RyaW5nKQotICAg
ICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogICAgIAogICAgIHJldHVybiB0cmlTdGF0ZShzdHJpbmctPmF0KDApID09IGNo
YXJhY3Rlcik7CiB9CkBAIC03OCwxMiArNzgsMTIgQEAgc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9T
aW5nbGVDaGFyYWN0ZXIoSlNWYWx1ZSB2YWx1ZSwgVUNoYXIgY2hhcmFjdGVyKQogc3RhdGljIFRy
aVN0YXRlIGVxdWFsVG9TdHJpbmdJbXBsKEpTVmFsdWUgdmFsdWUsIFN0cmluZ0ltcGwqIHN0cmlu
Z0ltcGwpCiB7CiAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gRmFs
c2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICAKICAgICBK
U1N0cmluZyoganNTdHJpbmcgPSBhc1N0cmluZyh2YWx1ZSk7CiAgICAgY29uc3QgU3RyaW5nSW1w
bCogc3RyaW5nID0ganNTdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpOwogICAgIGlmICghc3RyaW5n
KQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOwogICAgIAogICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKHN0
cmluZ0ltcGwsIHN0cmluZykpOwogfQpAQCAtMTQyLDE4ICsxNDIsMTggQEAgVHJpU3RhdGUgTGF6
eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAg
ICAgICAgc3dpdGNoIChvdGhlci5tX2tpbmQpIHsKICAgICAgICAgY2FzZSBLbm93blZhbHVlOiB7
CiAgICAgICAgICAgICBpZiAoIXZhbHVlKCktPnZhbHVlKCkgfHwgIW90aGVyLnZhbHVlKCktPnZh
bHVlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZhbHVlKCkgPT0gb3RoZXIu
dmFsdWUoKS0+dmFsdWUoKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlKCktPnZhbHVlKCkgPT0gb3RoZXIudmFsdWUoKS0+dmFsdWUo
KSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbCh2YWx1ZSgpLT52YWx1ZSgpLCBvdGhlci52YWx1ZSgp
LT52YWx1ZSgpKTsKICAgICAgICAgfQogICAgICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmlu
ZzogewogICAgICAgICAgICAgaWYgKCF2YWx1ZSgpLT52YWx1ZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6
RmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1NpbmdsZUNoYXJhY3Rlcih2YWx1ZSgp
LT52YWx1ZSgpLCBvdGhlci5jaGFyYWN0ZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBL
bm93blN0cmluZ0ltcGw6CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nSW1wbDogewogICAgICAgICAg
ICAgaWYgKCF2YWx1ZSgpLT52YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVRy
aVN0YXRlOworICAgICAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAg
ICAgICByZXR1cm4gZXF1YWxUb1N0cmluZ0ltcGwodmFsdWUoKS0+dmFsdWUoKSwgb3RoZXIuc3Ry
aW5nSW1wbCgpKTsKICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjUsNyArMTY1LDcgQEAgVHJp
U3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikg
Y29uc3QKICAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6CiAgICAgICAgIGNhc2UgTmV3U3Ry
aW5nSW1wbDoKICAgICAgICAgICAgIGlmIChvdGhlci5zdHJpbmdJbXBsKCktPmxlbmd0aCgpICE9
IDEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShv
dGhlci5zdHJpbmdJbXBsKCktPmF0KDApID09IGNoYXJhY3RlcigpKTsKICAgICAgICAgY2FzZSBL
bm93blZhbHVlOgogICAgICAgICAgICAgcmV0dXJuIG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsK
QEAgLTE4NCw3ICsxODQsNyBAQCBUcmlTdGF0ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0RXF1YWwoY29u
c3QgTGF6eUpTVmFsdWUmIG90aGVyKSBjb25zdAogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsK
KyAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogfQogCiB1aW50cHRyX3QgTGF6eUpTVmFsdWU6
OnN3aXRjaExvb2t1cFZhbHVlKFN3aXRjaEtpbmQga2luZCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDk3YWYyZTJj
ZGJmODZmYjY3NmQ0YmQxYjhmMDdhYjA5ZWYxZDIzMWMuLmVmYmRjOTA4OWU2NzlhMTQ2Mjg3NDA2
ZWIzYzZmMjJmNzc4ZjJlMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTExOCw5ICs1MTE4LDkgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9q
aXQuc2lnbkV4dGVuZDE2VG8zMih0MiwgdDIpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAg
ICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAg
ICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkK
ICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkxvYWQoKTsKLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQog
ICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuTG9hZCgpOwogICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVu
ZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTUxMzcsOSArNTEzNyw5IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGNhc2UgNDogewog
ICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihiYXNlSW5kZXgsIHQyKTsKIAotICAgICAgICAg
ICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAg
ICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAg
ICAgICAgICAgICAgICAgICBtX2ppdC5ieXRlU3dhcDMyKHQyKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5k
aWFuR1BSICE9IEludmFsaWRHUFJSZWcpOwogICAgICAgICAgICAgICAgICAgICBhdXRvIGlzTGl0
dGxlRW5kaWFuID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBp
c0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3RlZEltbTMyKDEpKTsKICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuYnl0ZVN3YXAzMih0Mik7CkBAIC01MTczLDkgKzUxNzMsOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmNv
bnZlcnRGbG9hdFRvRG91YmxlKHJlc3VsdEZQUiwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAg
ICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0
YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlT
dGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRy
aVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsK
ICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NF
UlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC01MjAwLDkgKzUyMDAs
OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAg
ICAgICAgICAgIG1faml0Lm1vdmU2NFRvRG91YmxlKHQyLCByZXN1bHRGUFIpOwogICAgICAgICAg
ICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
VHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2Rl
KCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxz
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4g
PT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29k
ZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTUzMTIsOSAr
NTMxMiw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih0MywgYmFzZUluZGV4KTsKICAgICAgICAgICAg
ICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFs
c2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJp
U3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBU
cmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUo
KTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7CkBAIC01MzM4LDkgKzUz
MzgsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LnN0b3JlNjQodDMsIGJhc2VJbmRleCk7CiAgICAgICAgICAgICAg
ICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNl
VHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJp
U3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0
YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJp
U3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7
CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcpOwpAQCAtNTM3Miw5ICs1Mzcy
LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAg
ICAgICAgICAgICBtX2ppdC5zdG9yZTE2KHQzLCBiYXNlSW5kZXgpOwogICAgICAgICAgICAgICAg
IH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0
YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0
ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0
YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwog
ICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTU0MDAsOSArNTQwMCw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuc3RvcmUzMih0MywgYmFzZUluZGV4KTsKICAgICAgICAgICAgICAgICB9
OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlT
dGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0
ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUp
CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0
ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKICAg
ICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
aXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52YWxpZEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggYTFhMTZmYjlkNWMwNzJiNzUwMjU3
YzAxZWVlMjhhMDhhZjI0MDIxMi4uMzgxMjNhZTE3NjQzZDVlNmEwMTJkYWZiMjgxODBjOTkwZmNh
Mjc1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cApAQCAtMTQxOTAsOSArMTQxOTAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcGF0Y2hwb2ludDsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAg
ICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAg
ICAgICAgICAgIHNldEludDMyKGVtaXRCaWdFbmRpYW5Mb2FkKCkpOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAg
ICAgICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCkpOwogICAg
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2V0SW50MzIoZW1pdENvZGVC
YXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkxv
YWQsIGVtaXRCaWdFbmRpYW5Mb2FkKSk7CkBAIC0xNDIwMiw5ICsxNDIwMiw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjYXNlIDQ6IHsKICAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFs
dWUgPSBtX291dC5sb2FkMzIocG9pbnRlcik7CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5p
c0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAg
bG9hZGVkVmFsdWUgPSBieXRlU3dhcDMyKGxvYWRlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICBl
bHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAg
ICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUg
PSBbJl0gewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlZFZhbHVlOwogICAg
ICAgICAgICAgICAgICAgICB9OwpAQCAtMTQyNDcsOSArMTQyNDcsOSBAQCBwcml2YXRlOgogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKICAgICAgICAgICAgICAgICB9Owog
Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRl
KQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpU
cnVlKQogICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdExpdHRsZUVuZGlhbkNvZGUo
KSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxz
ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4g
PT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdEJp
Z0VuZGlhbkNvZGUoKSk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICBzZXREb3VibGUoZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlh
biwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKSk7CkBAIC0xNDI2Nyw5
ICsxNDI2Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5i
aXRDYXN0KGxvYWRlZFZhbHVlLCBEb3VibGUpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAg
ICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAg
ICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlT
dGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFu
Q29kZSgpKTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHNldERv
dWJsZShlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0
TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpKTsKQEAgLTE0MzM4LDkgKzE0MzM4
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFu
ID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFu
Q29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0g
VHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRp
YW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRp
YW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBlbWl0
Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5k
aWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwpAQCAtMTQzNTYsOSArMTQzNTYsOSBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAg
ICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VU
cmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlT
dGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3Rh
dGUpCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlT
dGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsK
ICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGVtaXRDb2RlQmFzZWRP
bkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBl
bWl0QmlnRW5kaWFuQ29kZSk7CkBAIC0xNDM4OSw5ICsxNDM4OSw5IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIH07CiAKLSAg
ICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQor
ICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxz
ZSkKICAgICAgICAgICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAg
ICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVl
KQogICAgICAgICAgICAgICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwogICAgICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgZW1pdENvZGVCYXNlZE9uRW5kaWFubmVz
c0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRp
YW5Db2RlKTsKQEAgLTE0NDEyLDkgKzE0NDEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAg
ICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAg
ICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlz
TGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwCmluZGV4IGQ1N2ZiMWVlYTgwNDRh
MzRiNzkxNzY4YTkwOTc2OTg5OThhYzMzOTIuLjZjNjA5YjRhNzQ0NThlYWRiMDllOTM5NDNmMTZm
NGI1YWJjYzM4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0
cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKQEAg
LTQ5OCw4MCArNDk4LDgwIEBAIExWYWx1ZSBPdXRwdXQ6OmJhc2VJbmRleChMVmFsdWUgYmFzZSwg
TFZhbHVlIGluZGV4LCBTY2FsZSBzY2FsZSwgcHRyZGlmZl90IG9mZnNlCiBMVmFsdWUgT3V0cHV0
OjplcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3Vs
dCA9IGxlZnQtPmVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRU
cmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRl
KTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBy
ZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwg
bGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0Ojpub3RFcXVhbChMVmFsdWUgbGVmdCwg
TFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPm5vdEVxdWFsQ29u
c3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0
ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJl
c3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5vdEVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwog
fQogCiBMVmFsdWUgT3V0cHV0OjphYm92ZShMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewog
ICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmFib3ZlQ29uc3RhbnQocmlnaHQpOwotICAgIGlm
IChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1
bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1
ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6
OkFib3ZlLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0OjphYm92
ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1
bHQgPSBsZWZ0LT5hYm92ZUVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0g
TWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRy
aVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAg
ICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0
dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlRXF1YWws
IG9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmJlbG93KExWYWx1
ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+YmVs
b3dDb25zdGFudChyaWdodCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBNaXhlZFRyaVN0YXRlKQotICAg
ICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcnVlVHJpU3RhdGUpOworICAgIGlmIChy
ZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAgICAgIHJldHVybiBjb25zdEJv
b2wocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKTsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5k
TmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3csIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmJlbG93T3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJp
Z2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmJlbG93RXF1YWxDb25zdGFudChy
aWdodCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBNaXhlZFRyaVN0YXRlKQotICAgICAgICByZXR1cm4g
Y29uc3RCb29sKHJlc3VsdCA9PSBUcnVlVHJpU3RhdGUpOworICAgIGlmIChyZXN1bHQgIT0gVHJp
U3RhdGU6OkluZGV0ZXJtaW5hdGUpCisgICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09
IFRyaVN0YXRlOjpUcnVlKTsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1
ZT4obV9wcm9jLCBCMzo6QmVsb3dFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAog
TFZhbHVlIE91dHB1dDo6Z3JlYXRlclRoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsK
ICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5ncmVhdGVyVGhhbkNvbnN0YW50KHJpZ2h0KTsK
LSAgICBpZiAocmVzdWx0ICE9IE1peGVkVHJpU3RhdGUpCi0gICAgICAgIHJldHVybiBjb25zdEJv
b2wocmVzdWx0ID09IFRydWVUcmlTdGF0ZSk7CisgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6
SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJpU3Rh
dGU6OlRydWUpOwogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3By
b2MsIEIzOjpHcmVhdGVyVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVl
IE91dHB1dDo6Z3JlYXRlclRoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7
CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+Z3JlYXRlckVxdWFsQ29uc3RhbnQocmlnaHQp
OwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0
Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRl
OjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlT
dGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1f
cHJvYywgQjM6OkdyZWF0ZXJFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZh
bHVlIE91dHB1dDo6bGVzc1RoYW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKICAgICBU
cmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5sZXNzVGhhbkNvbnN0YW50KHJpZ2h0KTsKLSAgICBpZiAo
cmVzdWx0ICE9IE1peGVkVHJpU3RhdGUpCi0gICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0
ID09IFRydWVUcmlTdGF0ZSk7CisgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1p
bmF0ZSkKKyAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUp
OwogICAgIHJldHVybiBtX2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpM
ZXNzVGhhbiwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6bGVz
c1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUg
cmVzdWx0ID0gbGVmdC0+bGVzc0VxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQg
IT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1
ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQor
ICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAg
cmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NFcXVh
bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggMmUxNzI1NGQ2YzQ3MWJiYmRhYmNiMjY1Mzk5ZDFi
YmJlZDE3N2E2NS4uMDA2OGE3ZDc0ODU0ZjJmOWI2NzcwMzFiOGE1ZmFiYzhlYTU3NGUzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNzE3LDcg
KzE3MTcsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRp
bWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlYwogICAgICAgICBkYXRhTG9nTG5JZihP
cHRpb25zOjp2ZXJib3NlT1NSKCksICJQZXJmb3JtaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4g
Iiwgb3B0aW1pemVkQ29kZUJsb2NrKTsKIAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29v
bigpOwotICAgICAgICBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCktPnNldERpZE9wdGlt
aXplKFRydWVUcmlTdGF0ZSk7CisgICAgICAgIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2so
KS0+c2V0RGlkT3B0aW1pemUoVHJpU3RhdGU6OlRydWUpOwogICAgICAgICB2b2lkKiB0YXJnZXRQ
QyA9IHZtLmdldENUSVN0dWIoREZHOjpvc3JFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKTsKICAgICAgICAgdGFyZ2V0UEMgPSByZXRhZ0NvZGVQdHIodGFyZ2V0
UEMsIEpJVFRodW5rUHRyVGFnLCBiaXR3aXNlX2Nhc3Q8UHRyVGFnPihjYWxsRnJhbWUpKTsKICAg
ICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCh0YXJnZXRQQywgZGF0YUJ1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggZDExNTcxZmVi
YTJhZWZmYjJmMmFlODVjNWQ4YmY0MmZiMjk5NDc3Zi4uMWY5Zjk0YTRkYjY1M2RlNjBjZjYzMWIw
YjQyYjMwNTdlOGYwYmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nh
Y2hlZFR5cGVzLmNwcApAQCAtMjA2MCw3ICsyMDYwLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtl
ZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJl
KgogICAgICwgbV9ldmFsQ29udGV4dFR5cGUoY2FjaGVkQ29kZUJsb2NrLmV2YWxDb250ZXh0VHlw
ZSgpKQogICAgICwgbV9jb2RlVHlwZShjYWNoZWRDb2RlQmxvY2suY29kZVR5cGUoKSkKIAotICAg
ICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisg
ICAgLCBtX2RpZE9wdGltaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZSkpCiAgICAgLCBtX2FnZSgwKQogICAgICwgbV9oYXNDaGVja3BvaW50cyhjYWNoZWRD
b2RlQmxvY2suaGFzQ2hlY2twb2ludHMoKSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAppbmRleCAzNTAyYWEy
ZTk1MjE3YzIzMTFiNmMwOWIzNGFjNjJhZWUzM2U0MTgyLi5jMGJjNzNlMDdhMTU0NzA3ODJlODJk
ODcwMDgzNjg3YmIwYzIzNWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXMuaApAQCAtMzIsOSArMzIsOSBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWNfYXNzZXJ0KEZhbHNlVHJpU3RhdGUgPT0gMCwgIkZhbHNlVHJpU3RhdGUg
aXMgMC4iKTsKLSAgICBzdGF0aWNfYXNzZXJ0KFRydWVUcmlTdGF0ZSA9PSAxLCAiVHJ1ZVRyaVN0
YXRlIGlzIDEuIik7Ci0gICAgc3RhdGljX2Fzc2VydChNaXhlZFRyaVN0YXRlID09IDIsICJNaXhl
ZFRyaVN0YXRlIGlzIDIuIik7CisgICAgc3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8dWludDhf
dD4oVHJpU3RhdGU6OkZhbHNlKSwgIlRyaVN0YXRlOjpGYWxzZSBpcyAwLiIpOworICAgIHN0YXRp
Y19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OlRydWUpID09IDEsICJUcmlT
dGF0ZTo6VHJ1ZSBpcyAxLiIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDhf
dD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpID09IDIsICJUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZSBpcyAyLiIpOwogCiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBDb25maWd1cmFibGVT
aGlmdCA9IDA7CiAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBFbnVtZXJhYmxlU2hpZnQg
PSAyOwpAQCAtNDUsMTIgKzQ1LDEyIEBAIHB1YmxpYzoKIAogICAgIERlZmluZVByb3BlcnR5QXR0
cmlidXRlcygpCiAgICAgICAgIDogbV9hdHRyaWJ1dGVzKAotICAgICAgICAgICAgKE1peGVkVHJp
U3RhdGUgPDwgQ29uZmlndXJhYmxlU2hpZnQpCi0gICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRl
IDw8IEVudW1lcmFibGVTaGlmdCkKLSAgICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgV3Jp
dGFibGVTaGlmdCkKLSAgICAgICAgICAgIHwgKDAgPDwgVmFsdWVTaGlmdCkKLSAgICAgICAgICAg
IHwgKDAgPDwgR2V0U2hpZnQpCi0gICAgICAgICAgICB8ICgwIDw8IFNldFNoaWZ0KSkKKyAgICAg
ICAgICAgIChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgPDwg
Q29uZmlndXJhYmxlU2hpZnQpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90PihU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgPDwgRW51bWVyYWJsZVNoaWZ0KQorICAgICAgICAgICAg
fCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIDw8IFdyaXRh
YmxlU2hpZnQpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6
RmFsc2UpIDw8IFZhbHVlU2hpZnQpCisgICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90
PihUcmlTdGF0ZTo6RmFsc2UpIDw8IEdldFNoaWZ0KQorICAgICAgICAgICAgfCAoc3RhdGljX2Nh
c3Q8dWludDhfdD4oVHJpU3RhdGU6OkZhbHNlKSA8PCBTZXRTaGlmdCkpCiAgICAgewogICAgIH0K
IApAQCAtOTYsNjAgKzk2LDYwIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzV3JpdGFibGUoKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0
KSAhPSBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRh
YmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0KIAogICAgIE9wdGlv
bmFsPGJvb2w+IHdyaXRhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzV3JpdGFi
bGUoKSkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBl
eHRyYWN0VHJpU3RhdGUoV3JpdGFibGVTaGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRhYmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwog
ICAgIH0KIAogICAgIGJvb2wgaGFzQ29uZmlndXJhYmxlKCkgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpICE9
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0KIAogICAgIE9wdGlvbmFsPGJvb2w+IGNv
bmZpZ3VyYWJsZSgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWhhc0NvbmZpZ3VyYWJsZSgp
KQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGV4dHJh
Y3RUcmlTdGF0ZShDb25maWd1cmFibGVTaGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENvbmZpZ3VyYWJsZVNoaWZ0KSA9PSBUcmlTdGF0ZTo6VHJ1
ZTsKICAgICB9CiAKICAgICBib29sIGhhc0VudW1lcmFibGUoKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KSAhPSBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICB9CiAKICAgICBPcHRpb25hbDxib29sPiBlbnVt
ZXJhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaGFzRW51bWVyYWJsZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlT
dGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIGV4
dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwogICAgIH0K
IAogICAgIHZvaWQgc2V0V3JpdGFibGUoYm9vbCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGZpbGxX
aXRoVHJpU3RhdGUodmFsdWUgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJs
ZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVl
IDogVHJpU3RhdGU6OkZhbHNlLCBXcml0YWJsZVNoaWZ0KTsKICAgICB9CiAKICAgICB2b2lkIHNl
dENvbmZpZ3VyYWJsZShib29sIHZhbHVlKQogICAgIHsKLSAgICAgICAgZmlsbFdpdGhUcmlTdGF0
ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGUsIENvbmZpZ3VyYWJsZVNoaWZ0
KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJp
U3RhdGU6OkZhbHNlLCBDb25maWd1cmFibGVTaGlmdCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRF
bnVtZXJhYmxlKGJvb2wgdmFsdWUpCiAgICAgewotICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZh
bHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZSwgRW51bWVyYWJsZVNoaWZ0KTsKKyAg
ICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6
OkZhbHNlLCBFbnVtZXJhYmxlU2hpZnQpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGZp
bGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUgc3RhdGUsIHVuc2lnbmVkIHNoaWZ0KQogICAgIHsKICAg
ICAgICAgdW5zaWduZWQgbWFzayA9IDBiMTEgPDwgc2hpZnQ7Ci0gICAgICAgIG1fYXR0cmlidXRl
cyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFzaykgfCAoc3RhdGUgPDwgc2hpZnQpOworICAgICAgICBt
X2F0dHJpYnV0ZXMgPSAobV9hdHRyaWJ1dGVzICYgfm1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHN0YXRlKSA8PCBzaGlmdCk7CiAgICAgfQogCiAgICAgVHJpU3RhdGUgZXh0cmFjdFRyaVN0
YXRlKHVuc2lnbmVkIHNoaWZ0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggYTExMDdkZTA3MDVhZjEzYTY1Yzg2NDQ2MGI2YWRi
MjRkNDMzYWY3Zi4uOGRlMDAzY2IwN2MwOWY5NzEzODJmMzRkMjc0ZGYwZGZkZTEwZGE1MiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0y
MDEsOCArMjAxLDggQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgIFRyaVN0YXRlIG51
bWVyaWMgPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPm51bWVyaWMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7Ci0gICAgaWYgKG51bWVyaWMgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgb3B0LmFkZCgi
a24iX3MsIG51bWVyaWMgPT0gVHJ1ZVRyaVN0YXRlID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOwor
ICAgIGlmIChudW1lcmljICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBvcHQu
YWRkKCJrbiJfcywgbnVtZXJpYyA9PSBUcmlTdGF0ZTo6VHJ1ZSA/ICJ0cnVlIl9zIDogImZhbHNl
Il9zKTsKIAogICAgIFN0cmluZyBjYXNlRmlyc3RPcHRpb24gPSBpbnRsU3RyaW5nT3B0aW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+Y2FzZUZpcnN0LCB7ICJ1cHBl
ciIsICJsb3dlciIsICJmYWxzZSIgfSwgImNhc2VGaXJzdCBtdXN0IGJlIGVpdGhlciBcInVwcGVy
XCIsIFwibG93ZXJcIiwgb3IgXCJmYWxzZVwiIiwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEludGxDb2xs
YXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbG9jYQogCiAgICAgVHJpU3RhdGUgaWdub3JlUHVuY3R1YXRpb24gPSBpbnRsQm9vbGVh
bk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZVB1
bmN0dWF0aW9uKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAg
IG1faWdub3JlUHVuY3R1YXRpb24gPSAoaWdub3JlUHVuY3R1YXRpb24gPT0gVHJ1ZVRyaVN0YXRl
KTsKKyAgICBtX2lnbm9yZVB1bmN0dWF0aW9uID0gKGlnbm9yZVB1bmN0dWF0aW9uID09IFRyaVN0
YXRlOjpUcnVlKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBVQ29sbGF0b3JEZWxldGVy
Pih1Y29sX29wZW4obV9sb2NhbGUudXRmOCgpLmRhdGEoKSwgJnN0YXR1cykpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5k
ZXggMDIzNThjODg3OWZlYTk0OTUzNmJmMGRlZDlkMWZkY2RlYmM0Njg3ZS4uNzY2MmZhNjg5ZTRm
OTk3YzlhZDdjZjk2ZjA5NmM1ZGY3NDMwMzA1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC00NjgsNyArNDY4LDcg
QEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgVHJpU3RhdGUgaG91cjEyID0gaW50bEJv
b2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3Vy
MTIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgYm9vbCBp
c0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIgPT0gTWl4ZWRUcmlTdGF0ZSk7CisgICAgYm9vbCBp
c0hvdXIxMlVuZGVmaW5lZCA9IChob3VyMTIgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpOwog
CiAgICAgU3RyaW5nIGhvdXJDeWNsZSA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyQ3ljbGUsIHsgImgxMSIsICJoMTIiLCAiaDIz
IiwgImgyNCIgfSwgImhvdXJDeWNsZSBtdXN0IGJlIFwiaDExXCIsIFwiaDEyXCIsIFwiaDIzXCIs
IG9yIFwiaDI0XCIiLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2
b2lkKCkpOwpAQCAtNTgyLDE0ICs1ODIsMTQgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
IGlmIChob3VyID09ICIyLWRpZ2l0IikgewogICAgICAgICBpZiAoaXNIb3VyMTJVbmRlZmluZWQg
JiYgbV9ob3VyQ3ljbGUuaXNOdWxsKCkpCiAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBw
ZW5kTGl0ZXJhbCgiamoiKTsKLSAgICAgICAgZWxzZSBpZiAoaG91cjEyID09IFRydWVUcmlTdGF0
ZSkKKyAgICAgICAgZWxzZSBpZiAoaG91cjEyID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAg
ICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZExpdGVyYWwoImhoIik7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmRMaXRlcmFsKCJISCIpOwogICAgIH0gZWxz
ZSBpZiAoaG91ciA9PSAibnVtZXJpYyIpIHsKICAgICAgICAgaWYgKGlzSG91cjEyVW5kZWZpbmVk
ICYmIG1faG91ckN5Y2xlLmlzTnVsbCgpKQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFw
cGVuZCgnaicpOwotICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJ1ZVRyaVN0YXRlKQorICAg
ICAgICBlbHNlIGlmIChob3VyMTIgPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICBza2Vs
ZXRvbkJ1aWxkZXIuYXBwZW5kKCdoJyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxl
dG9uQnVpbGRlci5hcHBlbmQoJ0gnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggYTZlYTFmNTE1OGUyYTdhZDdkZWQwMjBk
MWJmOGE4NWQ4ZGFlYmE3YS4uOTI1ZmFjMDJiYzc2MTA5OGJhZTUwMTA2NGQ1ZjZiYjhkM2I4NTQ0
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRp
YWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAg
ICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcgPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1fdXNlR3JvdXBpbmcg
PSB1c2VHcm91cGluZyAhPSBGYWxzZVRyaVN0YXRlOworICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VH
cm91cGluZyAhPSBUcmlTdGF0ZTo6RmFsc2U7CiAKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5
bGUgPSBVTlVNX0RFRkFVTFQ7CiAgICAgc3dpdGNoIChtX3N0eWxlKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGYyM2Q5ZWQ5NTRkOGY5OTAx
YzZjNjVkOTA4ZTg3Y2MwYzU2N2JlMGIuLjJhZDdlZTZiYTkyN2MxZWY0MzRlOTRkYjJmMDI0NzNk
NmZlNjFmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCkBAIC0yMDksMTYgKzIwOSwxNiBAQCBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcgogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChvcHRpb25zLmlz
VW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAKICAgICBKU09iamVjdCogb3B0cyA9IG9wdGlv
bnMudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBNaXhlZFRyaVN0YXRlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBUcmlTdGF0
ZTo6SW5kZXRlcm1pbmF0ZSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gb3B0cy0+Z2V0KGdsb2Jh
bE9iamVjdCwgcHJvcGVydHkpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE1peGVk
VHJpU3RhdGUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlKTsKIAogICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogCiAgICAgcmV0dXJuIHRyaVN0YXRlKHZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJ
bmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCmluZGV4IGIwOTExNjIyNDNiMGMwNDA1MTk4YWFiNzNhZGQwYzY2MTBlMjIwYTAuLmEwZWIw
MTMwNWMyMzIzNzUzODJhYTBhYzliNDdlNDhhOWYxZjUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApAQCAtMTI2Miw3ICsxMjYy
LDcgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYx
LCBKU1ZhbHVlIHYyKQogICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBh
c1N0cmluZyh2MSktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAgICAgICAgY29uc3QgU3RyaW5n
SW1wbCogdjJTdHJpbmcgPSBhc1N0cmluZyh2MiktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAg
ICAgICAgaWYgKCF2MVN0cmluZyB8fCAhdjJTdHJpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IE1peGVkVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlOwogICAgICAgICAgICAgcmV0dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5n
LCAqdjJTdHJpbmcpKTsKICAgICAgICAgfQogICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVh
cEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgpLT5pc0hlYXBCaWdJbnQoKSkKQEAgLTEyNzUsMTYgKzEy
NzUsMTYgQEAgaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVl
IHYxLCBKU1ZhbHVlIHYyKQogaW5saW5lIFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4o
KSBjb25zdAogewogICAgIGlmIChpc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCkg
PyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gYXNJbnQzMigp
ID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKGlzRG91YmxlKCkp
Ci0gICAgICAgIHJldHVybiBpc05vdFplcm9BbmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRy
aVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsgLy8gZmFsc2UgZm9yIE5hTgorICAgICAgICByZXR1cm4g
aXNOb3RaZXJvQW5kT3JkZXJlZChhc0RvdWJsZSgpKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3Rh
dGU6OkZhbHNlOyAvLyBmYWxzZSBmb3IgTmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICBy
ZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKICNpZiBVU0UoQklHSU5UMzIpCiAgICAg
aWYgKGlzQmlnSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1
ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQz
MigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAjZW5kaWYKLSAgICByZXR1
cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBp
c1RydWUoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogfQogCiBBTFdBWVNf
SU5MSU5FIGJvb2wgSlNWYWx1ZTo6cmVxdWlyZU9iamVjdENvZXJjaWJsZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsSW5saW5lcy5oCmluZGV4IDBkZWEyNzU2ZTFlYzNkYjczODMxNDQwNjEyMzEwNjI3ZjBm
ZjhjYTMuLmU5OTdhZDAwYWU0YWVhNWU2MTBiNDc4OGFmMGY3MzBiMDlmNjcxNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTMzMCwxMiAr
MzMwLDEyIEBAIGlubGluZSBib29sIEpTQ2VsbDo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiBpbmxpbmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFu
KCkgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDog
RmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5n
Kj4odGhpcyktPnRvQm9vbGVhbigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7
CiAgICAgaWYgKGlzSGVhcEJpZ0ludCgpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29u
c3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRy
aVN0YXRlOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlz
KS0+dG9Cb29sZWFuKCkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICBp
ZiAoaXNTeW1ib2woKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKLSAgICByZXR1cm4g
TWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOworICAgIHJldHVy
biBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsTG9jazo6
bG9jaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oIGIvU291cmNlL1dU
Ri93dGYvVHJpU3RhdGUuaAppbmRleCA1YWU3ODVkM2I5ZDgwZDgzYWEwNzRmZTgyMWNkMDY4NTdk
NjYxY2EwLi43ZTUyZTdiMzYxOWU3MzUyYjVlNGY1ZjdkOTRlOWJlMTk5ZmM1NDMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RyaVN0
YXRlLmgKQEAgLTI3LDEwICsyNywxMCBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBUcmlT
dGF0ZSA6IHVpbnQ4X3QgewotICAgIEZhbHNlVHJpU3RhdGUsCi0gICAgVHJ1ZVRyaVN0YXRlLAot
ICAgIE1peGVkVHJpU3RhdGUKK2VudW0gY2xhc3MgVHJpU3RhdGUgOiB1aW50OF90IHsKKyAgICBG
YWxzZSwKKyAgICBUcnVlLAorICAgIEluZGV0ZXJtaW5hdGUKIH07CiAKIGlubGluZSBUcmlTdGF0
ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4pCkBAIC00MSw3ICs0MSw0IEBAIGlubGluZSBUcmlTdGF0
ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4pCiB9CiAKIHVzaW5nIFdURjo6VHJpU3RhdGU7Ci11c2lu
ZyBXVEY6OkZhbHNlVHJpU3RhdGU7Ci11c2luZyBXVEY6OlRydWVUcmlTdGF0ZTsKLXVzaW5nIFdU
Rjo6TWl4ZWRUcmlTdGF0ZTsKIHVzaW5nIFdURjo6dHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAppbmRleCBjNmQ5NThiMjVkMWJmNTM2YzI3NGI3ZTUyZjljNTNiNWFmMmI1ZjBjLi5hMzVi
ZWY1NTA0YzY1YTgzM2NkNTgyMzFiYzZkZGE5MWEzODg1ODljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKQEAgLTU1NTgsMTIgKzU1NTgsMTIgQEAgYm9vbCBEb2N1bWVudDo6cXVlcnlDb21tYW5k
RW5hYmxlZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogCiBib29sIERvY3VtZW50OjpxdWVy
eUNvbW1hbmRJbmRldGVybShjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKQogewotICAgIHJldHVy
biBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgpID09IE1peGVkVHJpU3RhdGU7Cisg
ICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGU7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKGNv
bnN0IFN0cmluZyYgY29tbWFuZE5hbWUpCiB7Ci0gICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29t
bWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgIHJldHVybiBjb21tYW5kKHRo
aXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogfQogCiBib29sIERv
Y3VtZW50OjpxdWVyeUNvbW1hbmRTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCAyZjYzNTRhNWQyZjMw
YTM2YjkwM2YxMGI5MzczZmZhMjNhMGM4NmM4Li4wMzAwMTViOTcyZmY5Y2E4N2QxNzBiZjkxYWMx
ZmNkMjY4NmJmYjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBA
IC03NTIsNyArNzUyLDcgQEAgc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgdGV4dE9ubHlQcm9w
ZXJ0aWVzW10gPSB7CiBUcmlTdGF0ZSBFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShFZGl0
aW5nU3R5bGUqIHN0eWxlKSBjb25zdAogewogICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5tX211
dGFibGVTdHlsZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgcmV0dXJuIHRyaVN0YXRlT2ZTdHlsZSgqc3R5bGUtPm1f
bXV0YWJsZVN0eWxlLCBEb05vdElnbm9yZVRleHRPbmx5UHJvcGVydGllcyk7CiB9CiAKQEAgLTc2
MCw3ICs3NjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogVHJpU3RhdGUgRWRpdGluZ1N0eWxl
Ojp0cmlTdGF0ZU9mU3R5bGUoVCYgc3R5bGVUb0NvbXBhcmUsIFNob3VsZElnbm9yZVRleHRPbmx5
UHJvcGVydGllcyBzaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAg
aWYgKCFtX211dGFibGVTdHlsZSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3Bl
cnRpZXM+IGRpZmZlcmVuY2UgPSBnZXRQcm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0eWxlLCBz
dHlsZVRvQ29tcGFyZSk7CiAKQEAgLTc2OCwyMiArNzY4LDIyIEBAIFRyaVN0YXRlIEVkaXRpbmdT
dHlsZTo6dHJpU3RhdGVPZlN0eWxlKFQmIHN0eWxlVG9Db21wYXJlLCBTaG91bGRJZ25vcmVUZXh0
T25seVByCiAgICAgICAgIGRpZmZlcmVuY2UtPnJlbW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25s
eVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dE9ubHlQcm9wZXJ0aWVzKSk7CiAKICAg
ICBpZiAoZGlmZmVyZW5jZS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRl
OworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OlRydWU7CiAgICAgaWYgKGRpZmZlcmVuY2UtPnBy
b3BlcnR5Q291bnQoKSA9PSBtX211dGFibGVTdHlsZS0+cHJvcGVydHlDb3VudCgpKQotICAgICAg
ICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsK
IAotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRl
cm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKSBjb25zdAogewogICAgIGlmICghc2VsZWN0
aW9uLmlzQ2FyZXRPclJhbmdlKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAg
ICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogCiAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0
KCkpCiAgICAgICAgIHJldHVybiB0cmlTdGF0ZU9mU3R5bGUoRWRpdGluZ1N0eWxlOjpzdHlsZUF0
U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uKS5nZXQoKSk7CiAKLSAgICBUcmlTdGF0ZSBzdGF0ZSA9
IEZhbHNlVHJpU3RhdGU7CisgICAgVHJpU3RhdGUgc3RhdGUgPSBUcmlTdGF0ZTo6RmFsc2U7CiAg
ICAgYm9vbCBub2RlSXNTdGFydCA9IHRydWU7CiAgICAgZm9yIChOb2RlKiBub2RlID0gc2VsZWN0
aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6
Om5leHQoKm5vZGUpKSB7CiAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPmhh
c0VkaXRhYmxlU3R5bGUoKSkgewpAQCAtNzkzLDcgKzc5Myw3IEBAIFRyaVN0YXRlIEVkaXRpbmdT
dHlsZTo6dHJpU3RhdGVPZlN0eWxlKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikg
Y29uc3QKICAgICAgICAgICAgICAgICBzdGF0ZSA9IG5vZGVTdGF0ZTsKICAgICAgICAgICAgICAg
ICBub2RlSXNTdGFydCA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSAhPSBu
b2RlU3RhdGUgJiYgbm9kZS0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUg
PSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgICAgIHN0YXRlID0gVHJpU3RhdGU6OkluZGV0
ZXJtaW5hdGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTE0ODIsNyArMTQ4Miw3IEBAIGludCBFZGl0aW5nU3R5bGU6OmxlZ2FjeUZvbnRTaXpl
KERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKIAogYm9vbCBFZGl0aW5nU3R5bGU6Omhhc1N0eWxl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBy
ZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0ZU9m
U3R5bGUodGhpcykgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gRWRpdGluZ1N0eWxlOjpj
cmVhdGUocHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0ZU9mU3R5bGUodGhpcykgIT0gVHJpU3Rh
dGU6OkZhbHNlOwogfQogCiBSZWZQdHI8RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OnN0eWxl
QXRTZWxlY3Rpb25TdGFydChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wg
c2hvdWxkVXNlQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggNjNjY2UzOTE4MTY5Y2U0NmEzMzk4YTU4MGEwMTIxNWYyMDczZmYyNC4uODg4ZGE5
MjVhNWY4YTNjYjg3NWFkNDA5MDUxNjlhOTMxODVhMzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtODE0LDMwICs4MTQsMzAgQEAgVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25V
bm9yZGVyZWRMaXN0U3RhdGUoKSBjb25zdAogewogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlv
bigpLmlzQ2FyZXQoKSkgewogICAgICAgICBpZiAoZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCB1bFRhZykpCi0gICAgICAg
ICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpU
cnVlOwogICAgIH0gZWxzZSBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsK
ICAgICAgICAgYXV0byogc3RhcnROb2RlID0gZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1
bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5zdGFydCgpLCB1bFRhZyk7CiAgICAgICAgIGF1
dG8qIGVuZE5vZGUgPSBlbmNsb3NpbmdFbGVtZW50V2l0aFRhZyhtX2RvY3VtZW50LnNlbGVjdGlv
bigpLnNlbGVjdGlvbigpLmVuZCgpLCB1bFRhZyk7CiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYg
ZW5kTm9kZSAmJiBzdGFydE5vZGUgPT0gZW5kTm9kZSkKLSAgICAgICAgICAgIHJldHVybiBUcnVl
VHJpU3RhdGU7CisgICAgICAgICAgICByZXR1cm4gVHJpU3RhdGU6OlRydWU7CiAgICAgfQogCi0g
ICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIH0K
IAogVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25PcmRlcmVkTGlzdFN0YXRlKCkgY29uc3QKIHsK
ICAgICBpZiAobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5pc0NhcmV0KCkpIHsKICAgICAgICAgaWYg
KGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCkuc3RhcnQoKSwgb2xUYWcpKQotICAgICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAg
ICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9IGVsc2UgaWYgKG1fZG9jdW1l
bnQuc2VsZWN0aW9uKCkuaXNSYW5nZSgpKSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0Tm9kZSA9IGVu
Y2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
c3RhcnQoKSwgb2xUYWcpOwogICAgICAgICBhdXRvKiBlbmROb2RlID0gZW5jbG9zaW5nRWxlbWVu
dFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSwgb2xUYWcp
OwogICAgICAgICBpZiAoc3RhcnROb2RlICYmIGVuZE5vZGUgJiYgc3RhcnROb2RlID09IGVuZE5v
ZGUpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAotICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiB9CiAKIFJlZlB0cjxOb2RlPiBFZGl0b3I6Omluc2Vy
dE9yZGVyZWRMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmlu
ZGV4IGUxZmIzY2QwNzkwM2ZlYzNjNzhlMjU4Yjc3MjUxNjhmNDExOWEyMTMuLjkzYWU3N2RmZDAy
NDJiYTFlYmFiN2JhZjdjNWQ1NjVmN2VhNjc3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHN0YXRpYyBib29sIGlzU3R5bGVQ
cmVzZW50KEVkaXRvciYgZWRpdG9yLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNo
YXIqCiAgICAgLy8gV2luZG93czogcHJlc2VudCB0aHJvdWdob3V0IHRoZSBzZWxlY3Rpb24KICAg
ICBpZiAoZWRpdG9yLmJlaGF2aW9yKCkuc2hvdWxkVG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNl
bGVjdGlvbigpKQogICAgICAgICByZXR1cm4gZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUo
cHJvcGVydHlJRCwgb25WYWx1ZSk7Ci0gICAgcmV0dXJuIGVkaXRvci5zZWxlY3Rpb25IYXNTdHls
ZShwcm9wZXJ0eUlELCBvblZhbHVlKSA9PSBUcnVlVHJpU3RhdGU7CisgICAgcmV0dXJuIGVkaXRv
ci5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBvblZhbHVlKSA9PSBUcmlTdGF0ZTo6VHJ1
ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0
b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQpAQCAtMTkxLDcgKzE5MSw3
IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUmIGZyYW1l
LCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHlsZShG
cmFtZSYgZnJhbWUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogZGVzaXJl
ZFZhbHVlKQogewogICAgIGlmIChmcmFtZS5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFRvZ2ds
ZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lLmVk
aXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKSA/
IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBmcmFtZS5lZGl0
b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSkgPyBU
cmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICByZXR1cm4gZnJhbWUuZWRpdG9y
KCkuc2VsZWN0aW9uSGFzU3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKTsKIH0KIApAQCAt
MjA3LDggKzIwNyw4IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVRleHRXcml0aW5nRGlyZWN0aW9u
KEZyYW1lJiBmcmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3RpCiAgICAgYm9vbCBoYXNOZXN0
ZWRPck11bHRpcGxlRW1iZWRkaW5nczsKICAgICBXcml0aW5nRGlyZWN0aW9uIHNlbGVjdGlvbkRp
cmVjdGlvbiA9IEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihmcmFtZS5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwKICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5n
U3R5bGUoKSwgaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3MpOwotICAgIC8vIEZYSU1FOiBX
ZSBzaG91bGQgYmUgcmV0dXJuaW5nIE1peGVkVHJpU3RhdGUgd2hlbiBzZWxlY3Rpb25EaXJlY3Rp
b24gPT0gZGlyZWN0aW9uICYmIGhhc05lc3RlZE9yTXVsdGlwbGVFbWJlZGRpbmdzCi0gICAgcmV0
dXJuIChzZWxlY3Rpb25EaXJlY3Rpb24gPT0gZGlyZWN0aW9uICYmICFoYXNOZXN0ZWRPck11bHRp
cGxlRW1iZWRkaW5ncykgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIC8vIEZY
SU1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5nIFRyaVN0YXRlOjpJbmRldGVybWluYXRlIHdoZW4g
c2VsZWN0aW9uRGlyZWN0aW9uID09IGRpcmVjdGlvbiAmJiBoYXNOZXN0ZWRPck11bHRpcGxlRW1i
ZWRkaW5ncworICAgIHJldHVybiAoc2VsZWN0aW9uRGlyZWN0aW9uID09IGRpcmVjdGlvbiAmJiAh
aGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVkZGluZ3MpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0
ZTo6RmFsc2U7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKEZy
YW1lJiBmcmFtZSkKQEAgLTE0MzgsNyArMTQzOCw3IEBAIHN0YXRpYyBib29sIGVuYWJsZWRJblJp
Y2hseUVkaXRhYmxlVGV4dFdpdGhFZGl0YWJsZUltYWdlc0VuYWJsZWQoRnJhbWUmIGZyYW1lLCBF
CiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZU5vbmUoRnJhbWUmLCBFdmVudCopCiB7Ci0gICAgcmV0
dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIH0KIAogc3Rh
dGljIFRyaVN0YXRlIHN0YXRlQm9sZChGcmFtZSYgZnJhbWUsIEV2ZW50KikKQEAgLTE0NjMsNyAr
MTQ2Myw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUmIGZyYW1l
LCBFdmVudCopCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSYgZnJh
bWUsIEV2ZW50KikKIHsKLSAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRo
Q1NTKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBmcmFtZS5l
ZGl0b3IoKS5zaG91bGRTdHlsZVdpdGhDU1MoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6
OkZhbHNlOwogfQogCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdWJzY3JpcHQoRnJhbWUmIGZyYW1l
LCBFdmVudCopCkBAIC0xOTA2LDcgKzE5MDYsNyBAQCBib29sIEVkaXRvcjo6Q29tbWFuZDo6aXNF
bmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNvbnN0CiBUcmlTdGF0ZSBFZGl0b3I6OkNv
bW1hbmQ6OnN0YXRlKEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFp
c1N1cHBvcnRlZCgpIHx8ICFtX2ZyYW1lKQotICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICByZXR1cm4gbV9jb21tYW5kLT5z
dGF0ZSgqbV9mcmFtZSwgdHJpZ2dlcmluZ0V2ZW50KTsKIH0KIApAQCAtMTkxNSw3ICsxOTE1LDcg
QEAgU3RyaW5nIEVkaXRvcjo6Q29tbWFuZDo6dmFsdWUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkg
Y29uc3QKICAgICBpZiAoIWlzU3VwcG9ydGVkKCkgfHwgIW1fZnJhbWUpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKICAgICBpZiAobV9jb21tYW5kLT52YWx1ZSA9PSB2YWx1ZU51bGwgJiYgbV9j
b21tYW5kLT5zdGF0ZSAhPSBzdGF0ZU5vbmUpCi0gICAgICAgIHJldHVybiBtX2NvbW1hbmQtPnN0
YXRlKCptX2ZyYW1lLCB0cmlnZ2VyaW5nRXZlbnQpID09IFRydWVUcmlTdGF0ZSA/ICJ0cnVlIl9z
IDogImZhbHNlIl9zOworICAgICAgICByZXR1cm4gbV9jb21tYW5kLT5zdGF0ZSgqbV9mcmFtZSwg
dHJpZ2dlcmluZ0V2ZW50KSA9PSBUcmlTdGF0ZTo6VHJ1ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9z
OwogICAgIHJldHVybiBtX2NvbW1hbmQtPnZhbHVlKCptX2ZyYW1lLCB0cmlnZ2VyaW5nRXZlbnQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAK
aW5kZXggZDI1ODBlYWFjZWU1N2M5Zjk0MDQxYmM0Y2RkZWU0NDMzYzc4MzEyOC4uMzE5MDU0NmRh
Y2JkNDg5YzM2Mjg1M2M3NmZjZDA5OTJkMjIyYzJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMTE3MiwyNSArMTE3MiwyNSBAQCB2b2lk
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51
SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9S
aWdodDoKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAg
ICAgICAgICAgU3RyaW5nIGRpcmVjdGlvbiA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJ
dGVtVGFnTGVmdFRvUmlnaHQgPyAibHRyIiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hl
Y2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rp
b24sIGRpcmVjdGlvbikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNr
ID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9u
LCBkaXJlY3Rpb24pICE9IFRyaVN0YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENv
bnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25EZWZhdWx0OiB7CiAgICAgICAgICAgICBFZGl0
b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdy
aXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1h
bmQuc3RhdGUoKSA9PSBUcnVlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNv
bW1hbmQuc3RhdGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGNvbW1hbmQuaXNFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDog
ewogICAgICAgICAgICAgRWRpdG9yOjpDb21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCku
Y29tbWFuZCgiTWFrZVRleHRXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQiKTsKLSAgICAgICAg
ICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRydWVUcmlTdGF0ZTsKKyAgICAg
ICAgICAgIHNob3VsZENoZWNrID0gY29tbWFuZC5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwog
ICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4
dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7CiAgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29t
bWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25S
aWdodFRvTGVmdCIpOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkg
PT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRl
KCkgPT0gVHJpU3RhdGU6OlRydWU7CiAgICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5k
LmlzRW5hYmxlZCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEyMzEsNyAr
MTIzMSw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVk
ZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVtKSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAjZW5k
aWYKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdVbmRlcmxpbmU6IHsKLSAgICAgICAg
ICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1By
b3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxz
ZVRyaVN0YXRlOworICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwg
InVuZGVybGluZSIpICE9IFRyaVN0YXRlOjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5FZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTI0NCwxMiArMTI0NCwxMiBAQCB2b2lkIENvbnRleHRNZW51Q29udHJv
bGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QK
ICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3Vs
ZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9u
dFN0eWxlLCAiaXRhbGljIikgIT0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENo
ZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0
eWxlLCAiaXRhbGljIikgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgc2hvdWxkRW5h
YmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQm9sZDogewotICAg
ICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUo
Q1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAg
ICAgICBzaG91bGRDaGVjayA9IGZyYW1lLT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAg
ICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9nbGliL1dlYlBhZ2VHTGliLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwCmluZGV4IDkzNGJhNTAxN2Q3ZjMzNWNk
ZmFlODdmMmM2MTNjMWY4NWZlMmE2NWEuLjRjNTAwZTM2NjhhMzIxMjNiOWUyNGIyNzhkYWFiMDc0
NTczZmZhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2ds
aWIvV2ViUGFnZUdMaWIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2dsaWIvV2ViUGFnZUdMaWIuY3BwCkBAIC04MywxMyArODMsMTMgQEAgdm9pZCBXZWJQYWdlOjpn
ZXRQbGF0Zm9ybUVkaXRvclN0YXRlKEZyYW1lJiBmcmFtZSwgRWRpdG9yU3RhdGUmIHJlc3VsdCkg
Y29uc3QKICNpZiBQTEFURk9STShHVEspCiAgICAgY29uc3QgRWRpdG9yJiBlZGl0b3IgPSBmcmFt
ZS5lZGl0b3IoKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzUmFuZ2UoKSkgewotICAgICAgICBpZiAo
ZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSA9
PSBUcnVlVHJpU3RhdGUpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NT
UHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAg
ICAgcG9zdExheW91dERhdGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVCb2xkOwotICAg
ICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAi
aXRhbGljIikgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhh
c1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgPT0gVHJpU3RhdGU6OlRydWUp
CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJpYnV0
ZUl0YWxpY3M7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpID09IFRydWVUcmlT
dGF0ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJsaW5lIikgPT0gVHJpU3RhdGU6OlRy
dWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0dHJp
YnV0ZVVuZGVybGluZTsKLSAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAibGluZS10aHJvdWdoIikgPT0g
VHJ1ZVRyaVN0YXRlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0eWxlKENTU1By
b3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJsaW5lLXRocm91Z2giKSA9PSBU
cmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJpYnV0
ZXMgfD0gQXR0cmlidXRlU3RyaWtlVGhyb3VnaDsKICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvbi5p
c0NhcmV0KCkpIHsKICAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25TdGFydEhhc1N0eWxlKENT
U1Byb3BlcnR5Rm9udFdlaWdodCwgImJvbGQiKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDcxYjAyZDFiNTNkZWRiOWUyZmIzNTA5ZTU1
N2YxNDU3OTk3NDMyNWEuLjE1MzRlNmYyYmFjMzZjYjEyOGNiMjRlMjEzMTYzZWRhNzljODA3ZmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpA
QCAtMTAxMywxMiArMTAxMywxMiBAQCBAZW5kCiBzdGF0aWMgTlNDb250cm9sU3RhdGVWYWx1ZSBr
aXQoVHJpU3RhdGUgc3RhdGUpCiB7CiAgICAgc3dpdGNoIChzdGF0ZSkgewotICAgICAgICBjYXNl
IEZhbHNlVHJpU3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9m
ZjsKLSAgICAgICAgY2FzZSBUcnVlVHJpU3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gTlNDb250
cm9sU3RhdGVWYWx1ZU9uOwotICAgICAgICBjYXNlIE1peGVkVHJpU3RhdGU6Ci0gICAgICAgICAg
ICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU1peGVkOworICAgIGNhc2UgVHJpU3RhdGU6OkZh
bHNlOgorICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9mZjsKKyAgICBjYXNlIFRy
aVN0YXRlOjpUcnVlOgorICAgICAgICByZXR1cm4gTlNDb250cm9sU3RhdGVWYWx1ZU9uOworICAg
IGNhc2UgVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU6CisgICAgICAgIHJldHVybiBOU0NvbnRyb2xT
dGF0ZVZhbHVlTWl4ZWQ7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVlT2ZmOwpAQCAtMjk0OCw3ICsyOTQ4LDcgQEAgSUdOT1JF
X1dBUk5JTkdTX0VORAogICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVt
ICopaXRlbTsKICAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVt
IGNsYXNzXV0pIHsKICAgICAgICAgICAgIFN0cmluZyBkaXJlY3Rpb24gPSB3cml0aW5nRGlyZWN0
aW9uID09IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIjsKLSAg
ICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFz
U3R5bGUoV2ViQ29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbildOworICAgICAg
ICAgICAgW21lbnVJdGVtIHNldFN0YXRlOihmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5
bGUoV2ViQ29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbikgIT0gVHJpU3RhdGU6
OkZhbHNlKV07CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFtzZWxmIF9jYW5FZGl0XTsKICAg
ICB9CkBAIC0yOTY1LDcgKzI5NjUsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIGlm
IChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7CiAgICAgICAg
ICAgICAvLyBUYWtlIGNvbnRyb2wgb2YgdGhlIHRpdGxlIG9mIHRoZSBtZW51IGl0ZW0gaW5zdGVh
ZCBvZiBqdXN0IGNoZWNraW5nL3VuY2hlY2tpbmcgaXQgYmVjYXVzZQogICAgICAgICAgICAgLy8g
YSBjaGVjayB3b3VsZCBiZSBhbWJpZ3VvdXMuCi0gICAgICAgICAgICBbbWVudUl0ZW0gc2V0VGl0
bGU6ZnJhbWUtPmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3BlcnR5
RGlyZWN0aW9uLCAicnRsIikKKyAgICAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTooZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKFdlYkNvcmU6OkNTU1Byb3BlcnR5RGlyZWN0aW9u
LCAicnRsIikgIT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgID8gVUlfU1RSSU5H
X0lOVEVSTkFMKCJMZWZ0IHRvIFJpZ2h0IiwgIkxlZnQgdG8gUmlnaHQgY29udGV4dCBtZW51IGl0
ZW0iKQogICAgICAgICAgICAgICAgIDogVUlfU1RSSU5HX0lOVEVSTkFMKCJSaWdodCB0byBMZWZ0
IiwgIlJpZ2h0IHRvIExlZnQgY29udGV4dCBtZW51IGl0ZW0iKV07CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398154</attachid>
            <date>2020-04-30 20:36:41 -0700</date>
            <delta_ts>2020-04-30 22:38:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211268-20200430203640.patch</filename>
            <type>text/plain</type>
            <size>89729</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
YThkOTUxN2RhOTBlZjZjNzMxNWM4YjljOTk1ZDEyMzZiMTEzOWJhLi43MDVmYTFkZmUzNzE4NzE0
YjQ1ZmE5N2ZkMDc1MjAyNzUyMmIwMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjkgQEAKKzIwMjAtMDQtMzAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFRyaVN0YXRlIHNob3VsZCBiZSBhbiBlbnVtIGNsYXNzIGFuZCB1
c2UgIkluZGV0ZXJtaW5hdGUiIGluc3RlYWQgb2YgIk1peGVkIgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExMjY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBMYW0uCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6bGVzc1RoYW5Db25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpsZXNzRXF1YWxDb25zdGFudCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50IGNvbnN0
KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6YWJvdmVDb25zdGFudCBjb25zdCk6
CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmJlbG93Q29uc3RhbnQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjphYm92ZUVxdWFsQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3QzMlZhbHVlOjpiZWxvd0VxdWFsQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAqIGIzL0IzQ29uc3Q2NFZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0NjRWYWx1ZTo6ZXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpD
b25zdDY0VmFsdWU6Om5vdEVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6
Q29uc3Q2NFZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6
OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6
OkIzOjpDb25zdDY0VmFsdWU6Omxlc3NFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0NjRWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpCMzo6Q29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6YmVsb3dDb25zdGFudCBjb25zdCk6CisgICAgICAgIChK
U0M6OkIzOjpDb25zdDY0VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmJlbG93RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAg
ICAgICogYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0
RG91YmxlVmFsdWU6OmVxdWFsQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29u
c3REb3VibGVWYWx1ZTo6bm90RXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIz
OjpDb25zdERvdWJsZVZhbHVlOjpsZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0RG91YmxlVmFsdWU6OmdyZWF0ZXJUaGFuQ29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3Rh
bnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3REb3VibGVWYWx1ZTo6ZXF1YWxPclVu
b3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBiMy9CM0NvbnN0RmxvYXRWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmVxdWFsQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENvbnN0YW50
IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0RmxvYXRWYWx1ZTo6bGVzc1RoYW5Db25z
dGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFsdWU6OmdyZWF0ZXJU
aGFuQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6Q29uc3RGbG9hdFZhbHVlOjps
ZXNzRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpDb25zdEZsb2F0VmFs
dWU6OmdyZWF0ZXJFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OkNvbnN0
RmxvYXRWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKiBi
My9CM1Byb2NlZHVyZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpQcm9jZWR1cmU6OmFkZEJvb2xD
b25zdGFudCk6CisgICAgICAgICogYjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKiBiMy9CM1Jl
ZHVjZVN0cmVuZ3RoLmNwcDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6QjM6OlZhbHVlOjplcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjpub3RFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjps
ZXNzVGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpncmVhdGVy
VGhhbkNvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpsZXNzRXF1YWxD
b25zdGFudCBjb25zdCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6Z3JlYXRlckVxdWFsQ29u
c3RhbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlQ29uc3RhbnQgY29u
c3QpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OmJlbG93Q29uc3RhbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpCMzo6VmFsdWU6OmFib3ZlRXF1YWxDb25zdGFudCBjb25zdCk6CisgICAgICAg
IChKU0M6OkIzOjpWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6QjM6OlZhbHVlOjplcXVhbE9yVW5vcmRlcmVkQ29uc3RhbnQgY29uc3QpOgorICAgICAgICAo
SlNDOjpCMzo6VmFsdWU6OmFzVHJpU3RhdGUgY29uc3QpOgorICAgICAgICAqIGIzL0IzVmFsdWUu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnRocmVzaG9sZEZv
ckpJVCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2spOgorICAgICAgICAq
IGJ5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGJ5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpDb25zdGFudE5vZGU6
OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dCk6CisgICAgICAgIChKU0M6OkJpbmFyeU9w
Tm9kZTo6ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKEpTQzo6Qmlu
YXJ5T3BOb2RlOjp0cnlGb2xkVG9CcmFuY2gpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJp
bnNpY0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpDRkdTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAg
ICAqIGRmZy9ERkdMYXp5SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1YWxUb1Np
bmdsZUNoYXJhY3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6ZXF1YWxUb1N0cmluZ0ltcGwpOgor
ICAgICAgICAoSlNDOjpERkc6OkxhenlKU1ZhbHVlOjpzdHJpY3RFcXVhbCBjb25zdCk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNw
cDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURhdGFWaWV3
R2V0KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZURhdGFW
aWV3U2V0KToKKyAgICAgICAgKiBmdGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRM
OjpPdXRwdXQ6OmVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Om5vdEVxdWFsKToK
KyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmFib3ZlKToKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmFib3ZlT3JFcXVhbCk6CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvdyk6
CisgICAgICAgIChKU0M6OkZUTDo6T3V0cHV0OjpiZWxvd09yRXF1YWwpOgorICAgICAgICAoSlND
OjpGVEw6Ok91dHB1dDo6Z3JlYXRlclRoYW4pOgorICAgICAgICAoSlNDOjpGVEw6Ok91dHB1dDo6
Z3JlYXRlclRoYW5PckVxdWFsKToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFu
KToKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Omxlc3NUaGFuT3JFcXVhbCk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvQ2FjaGVkVHlwZXMu
Y3BwOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2RlQmxvY2sp
OgorICAgICAgICAqIHJ1bnRpbWUvRGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzLmg6CisgICAgICAg
IChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVz
KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzOjpoYXNXcml0YWJsZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6d3JpdGFibGUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpEZWZpbmVQcm9wZXJ0eUF0dHJpYnV0ZXM6Omhhc0NvbmZp
Z3VyYWJsZSBjb25zdCk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5QXR0cmlidXRlczo6
Y29uZmlndXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlBdHRyaWJ1
dGVzOjpoYXNFbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVydHlB
dHRyaWJ1dGVzOjplbnVtZXJhYmxlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpzZXRXcml0YWJsZSk6CisgICAgICAgIChKU0M6OkRlZmluZVByb3BlcnR5
QXR0cmlidXRlczo6c2V0Q29uZmlndXJhYmxlKToKKyAgICAgICAgKEpTQzo6RGVmaW5lUHJvcGVy
dHlBdHRyaWJ1dGVzOjpzZXRFbnVtZXJhYmxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxDb2xs
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChK
U0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjppbnRsQm9vbGVhbk9wdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpw
dXJlU3RyaWN0RXF1YWwpOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXJlVG9Cb29sZWFuIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
SlNDZWxsOjpwdXJlVG9Cb29sZWFuIGNvbnN0KToKKwogMjAyMC0wNC0zMCAgUm9zcyBLaXJzbGlu
ZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAgW0pTQ10gaW50bEJvb2xlYW5P
cHRpb24gc2hvdWxkIHJldHVybiBUcmlTdGF0ZSBpbnN0ZWFkIG9mIHRha2luZyBhbiBvdXQgcGFy
YW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMzZjYWRhMzE2NzJjY2Y3ZGRiN2E3ZjUxMjg1Y2NlOWIzYTAxYzNkNC4uMDVhYzlj
N2JiZWU2OTVhMzZhY2I5MDA0YTE5MTNkYzAwNTU5NDUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMC0wNC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAg
ICAgICAgVHJpU3RhdGUgc2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1p
bmF0ZSIgaW5zdGVhZCBvZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4K
KworICAgICAgICBUaGUgd29yZCAiaW5kZXRlcm1pbmF0ZSIgY29tZXMgZnJvbSBib29zdDo6dHJp
Ym9vbC4KKyAgICAgICAgQSB0aGlyZCBzdGF0ZSBpcyBnZW5lcmFsbHkgbm90ICJtaXhlZCIgYnV0
IHJhdGhlciB1bmtub3duLgorCisgICAgICAgICogd3RmL1RyaVN0YXRlLmg6CisKIDIwMjAtMDQt
MjkgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbl0gRGVhZGxvY2sgaW4gV1RGOjpUaHJlYWQ6OmRpZEV4aXQoKSB3aGlsZSBXZWJLaXROZXR3
b3JrUHJvY2Vzcy5leGUgaXMgZXhpdGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDMxMzA4OWI4ZDdhZThlNDUz
NzMzYjNiZWVmNDc5Y2ViMmFlN2ExOGIuLjJjN2RjMWIxMmIwNjViODY4Njk0NTMyNzc1MDQ5YTcy
NGRlOTNmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wNC0zMCAgUm9zcyBL
aXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgVHJpU3RhdGUgc2hv
dWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1pbmF0ZSIgaW5zdGVhZCBvZiAi
TWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cXVlcnlDb21tYW5kSW5k
ZXRlcm0pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0aW5nU3R5bGU6Omhhc1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0ZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvbk9yZGVyZWRMaXN0U3RhdGUg
Y29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1N0eWxlUHJlc2VudCk6CisgICAgICAgIChXZWJDb3JlOjpzdGF0ZVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OnN0YXRlVGV4dFdyaXRpbmdEaXJlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6c3RhdGVOb25lKToKKyAgICAgICAgKFdlYkNvcmU6OnN0YXRlU3R5bGVXaXRoQ1NT
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZDo6c3RhdGUgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpDb21tYW5kOjp2YWx1ZSBjb25zdCk6CisgICAgICAgICog
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4
dE1lbnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQgY29uc3QpOgorCiAyMDIwLTA0
LTMwICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1
dGhuXSBPcHRpbWl6ZSBMb2NhbEF1dGhlbnRpY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDk2NWM1ZDAwZTNk
NjU4NjBiZjk0NGJjMWZlNDI5M2JlMGFiY2Q5OC4uNjNhZDE4OTBkNDJlZWM1NTg3Zjc2NzEwMjU0
YmRiMGJmNDdjZWE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wNC0zMCAgUm9z
cyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CisKKyAgICAgICAgVHJpU3RhdGUg
c2hvdWxkIGJlIGFuIGVudW0gY2xhc3MgYW5kIHVzZSAiSW5kZXRlcm1pbmF0ZSIgaW5zdGVhZCBv
ZiAiTWl4ZWQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTEyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBNYXJrIExhbS4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dmFsaWRhdGVDb21tYW5kKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9nbGliL1dl
YlBhZ2VHTGliLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0
b3JTdGF0ZSBjb25zdCk6CisKIDIwMjAtMDQtMzAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI2MDkzMik6IEFTU0VSVElPTiBGQUlM
RUQ6IG9rIGluIHdlYmtpdDo6U2FuZGJveEV4dGVuc2lvbjo6Y29uc3VtZVBlcm1hbmVudGx5IGZv
ciAzIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMDE1ZTI2YWZkMGI3Njli
Y2RiOGU1MjkwOWQxZDM3MmY3MGYzMDRhNS4uZjY1YzE4MTY4MzdkMzg1YmRjOGQyNjlhMWY4ODEy
MmI5ZmY5ZTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIwLTA0LTMwICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKwor
ICAgICAgICBUcmlTdGF0ZSBzaG91bGQgYmUgYW4gZW51bSBjbGFzcyBhbmQgdXNlICJJbmRldGVy
bWluYXRlIiBpbnN0ZWFkIG9mICJNaXhlZCIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTI2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFt
LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKGtpdCk6Cisg
ICAgICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRob3V0RGVs
ZWdhdGU6XSk6CisKIDIwMjAtMDQtMzAgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgLVtXZWJWaWV3IHNldENTU0FuaW1hdGlvbnNTdXNwZW5kZWQ6
XQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKaW5kZXggNWFj
ZTM2NDdhYTRkMDc3N2JjM2Y2NGVmODE5ZmVhYWNkYjQ3YzY0My4uMmIzMDIxYjFhYjMxYzk3NDBi
ZTI4YTQzNGE1MzBmYzNlNmU5ZmQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzQ29uc3QzMlZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjND
b25zdDMyVmFsdWUuY3BwCkBAIC0yMDcsMTQgKzIwNywxNCBAQCBWYWx1ZSogQ29uc3QzMlZhbHVl
OjppVG9GQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogVHJpU3RhdGUgQ29uc3QzMlZh
bHVlOjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAo
IW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZSht
X3ZhbHVlID09IG90aGVyLT5hc0ludDMyKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6
Om5vdEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICgh
b3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1f
dmFsdWUgIT0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAKQEAgLTIyMiw5ICsyMjIsOSBAQCBUcmlT
dGF0ZSBDb25zdDMyVmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdAogewogICAgIC8vIElOVDMyX01BWCA8IHggaXMgYWx3YXlzIGZhbHNlLgogICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMy
X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKLSAgICAgICAg
cmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1p
bmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA8IG90aGVyLT5hc0ludDMyKCkpOwog
fQogCkBAIC0yMzIsOSArMjMyLDkgQEAgVHJpU3RhdGUgQ29uc3QzMlZhbHVlOjpncmVhdGVyVGhh
bkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQzMl9NSU4g
PiB4IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV92YWx1
ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVy
biBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlm
ICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAg
ICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRl
KG1fdmFsdWUgPiBvdGhlci0+YXNJbnQzMigpKTsKIH0KIApAQCAtMjQyLDkgKzI0Miw5IEBAIFRy
aVN0YXRlIENvbnN0MzJWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVy
KSBjb25zdAogewogICAgIC8vIElOVDMyX01JTiA8PSB4IGlzIGFsd2F5cyB0cnVlLgogICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0
dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAgICAg
IHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJt
aW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzSW50MzIoKSk7
CiB9CiAKQEAgLTI1Miw5ICsyNTIsOSBAQCBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6OmdyZWF0ZXJF
cXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQzMl9N
QVggPj0geCBpcyBhbHdheXMgdHJ1ZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV92
YWx1ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWF4KCkpCi0gICAgICAgIHJl
dHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBp
ZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAg
ICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0
ZShtX3ZhbHVlID49IG90aGVyLT5hc0ludDMyKCkpOwogfQogCkBAIC0yNjIsOSArMjYyLDkgQEAg
VHJpU3RhdGUgQ29uc3QzMlZhbHVlOjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUlOID4geCBpcyBhbHdheXMgZmFsc2UuCiAgICAgaWYg
KHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDMyKCkpCi0gICAg
ICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0
ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3Zh
bHVlKSA+IHN0YXRpY19jYXN0PHVpbnQzMl90PihvdGhlci0+YXNJbnQzMigpKSk7CiB9CiAKQEAg
LTI3Miw5ICsyNzIsOSBAQCBUcmlTdGF0ZSBDb25zdDMyVmFsdWU6OmJlbG93Q29uc3RhbnQoY29u
c3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIFVJTlQzMl9NQVggPCB4IGlzIGFsd2F5
cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdmFsdWUpID09IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJp
U3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+
aGFzSW50MzIoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVy
biBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KG1fdmFsdWUpIDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0lu
dDMyKCkpKTsKIH0KIApAQCAtMjgyLDkgKzI4Miw5IEBAIFRyaVN0YXRlIENvbnN0MzJWYWx1ZTo6
YWJvdmVFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBV
SU5UMzJfTUFYID49IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpCi0g
ICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1
ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlT
dGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVy
biB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV92YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIApAQCAtMjkyLDkgKzI5Miw5IEBAIFRy
aVN0YXRlIENvbnN0MzJWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhl
cikgY29uc3QKIHsKICAgICAvLyBVSU5UMzJfTUlOIDw9IHggaXMgYWx3YXlzIHRydWUuCiAgICAg
aWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRz
PHVpbnQzMl90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQotICAg
ICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRl
dGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50MzJfdD4obV92
YWx1ZSkgPD0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG90aGVyLT5hc0ludDMyKCkpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKaW5kZXggOGQ3OTVi
MDNhMWZlOWNlNjZlODRmNWIzY2IzOGQ2Y2JmM2VhMWEyYy4uYTQ0MGU3YzczMDNkY2JiM2U0M2Mz
NWFhNzZkZDU3MzI0MzQyMzFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3Q2NFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dDY0VmFsdWUuY3BwCkBAIC0yMDcsMTQgKzIwNywxNCBAQCBWYWx1ZSogQ29uc3Q2NFZhbHVlOjpp
VG9GQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jKSBjb25zdAogVHJpU3RhdGUgQ29uc3Q2NFZhbHVl
OjplcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90
aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3Zh
bHVlID09IG90aGVyLT5hc0ludDY0KCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6Om5v
dEVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3Ro
ZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFs
dWUgIT0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKQEAgLTIyMiw5ICsyMjIsOSBAQCBUcmlTdGF0
ZSBDb25zdDY0VmFsdWU6Omxlc3NUaGFuQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25z
dAogewogICAgIC8vIElOVDY0X01BWCA8IHggaXMgYWx3YXlzIGZhbHNlLgogICAgIGlmIChzdGF0
aWNfY2FzdDxpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0X3Q+
OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBU
cmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFzSW50NjQoKSkKLSAgICAgICAgcmV0
dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA8IG90aGVyLT5hc0ludDY0KCkpOwogfQog
CkBAIC0yMzIsOSArMjMyLDkgQEAgVHJpU3RhdGUgQ29uc3Q2NFZhbHVlOjpncmVhdGVyVGhhbkNv
bnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQ2NF9NSU4gPiB4
IGlzIGFsd2F5cyBmYWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obV92YWx1ZSkg
PT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBG
YWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICgh
b3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAg
ICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1f
dmFsdWUgPiBvdGhlci0+YXNJbnQ2NCgpKTsKIH0KIApAQCAtMjQyLDkgKzI0Miw5IEBAIFRyaVN0
YXRlIENvbnN0NjRWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBj
b25zdAogewogICAgIC8vIElOVDY0X01JTiA8PSB4IGlzIGFsd2F5cyB0cnVlLgogICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPGludDY0
X3Q+OjptaW4oKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpUcnVlOwogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0gb3RoZXItPmFzSW50NjQoKSk7CiB9
CiAKQEAgLTI1Miw5ICsyNTIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6OmdyZWF0ZXJFcXVh
bENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBJTlQ2NF9NQVgg
Pj0geCBpcyBhbHdheXMgdHJ1ZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50NjRfdD4obV92YWx1
ZSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpCi0gICAgICAgIHJldHVy
biBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAo
IW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZSht
X3ZhbHVlID49IG90aGVyLT5hc0ludDY0KCkpOwogfQogCkBAIC0yNjIsOSArMjYyLDkgQEAgVHJp
U3RhdGUgQ29uc3Q2NFZhbHVlOjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29u
c3QKIHsKICAgICAvLyBVSU5UNjRfTUlOID4geCBpcyBhbHdheXMgZmFsc2UuCiAgICAgaWYgKHN0
YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2
NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1
cm4gVHJpU3RhdGU6OkZhbHNlOwogICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCi0gICAgICAg
IHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJt
aW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVl
KSA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihvdGhlci0+YXNJbnQ2NCgpKSk7CiB9CiAKQEAgLTI3
Miw5ICsyNzIsOSBAQCBUcmlTdGF0ZSBDb25zdDY0VmFsdWU6OmJlbG93Q29uc3RhbnQoY29uc3Qg
VmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIC8vIFVJTlQ2NF9NQVggPCB4IGlzIGFsd2F5cyBm
YWxzZS4KICAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdmFsdWUpID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3Rh
dGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKCFvdGhlci0+aGFz
SW50NjQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBU
cmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1fdmFsdWUpIDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0ludDY0
KCkpKTsKIH0KIApAQCAtMjgyLDkgKzI4Miw5IEBAIFRyaVN0YXRlIENvbnN0NjRWYWx1ZTo6YWJv
dmVFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICAvLyBVSU5U
NjRfTUFYID49IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQ2NF90Pjo6bWF4KCkpCi0gICAg
ICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6VHJ1ZTsK
ICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0
ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0
cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4obV92YWx1ZSkgPj0gc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApAQCAtMjkyLDkgKzI5Miw5IEBAIFRyaVN0
YXRlIENvbnN0NjRWYWx1ZTo6YmVsb3dFcXVhbENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikg
Y29uc3QKIHsKICAgICAvLyBVSU5UNjRfTUlOIDw9IHggaXMgYWx3YXlzIHRydWUuCiAgICAgaWYg
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3ZhbHVlKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQ2NF90Pjo6bWluKCkpCi0gICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgIHJl
dHVybiBUcmlTdGF0ZTo6VHJ1ZTsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQotICAgICAg
ICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShzdGF0aWNfY2FzdDx1aW50NjRfdD4obV92YWx1
ZSkgPD0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG90aGVyLT5hc0ludDY0KCkpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3REb3VibGVWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAppbmRleCA1
ZGQ3ZDkxMmY3Y2Q5NWM1OGVhZTdkMGNmNDBhZmIxMDZmNzZmNjc1Li5hYzkxMDAyYTZkYjU4N2Ix
ZGFjY2QyOWVjNDVjMTBiMmIyZTQ3ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdERvdWJsZVZhbHVlLmNwcApAQCAtMTQxLDUyICsxNDEsNTIgQEAgVmFsdWUqIENv
bnN0RG91YmxlVmFsdWU6Om1vZENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgY29uc3QgVmFsdWUq
IG90aGVyKSBjb25zdAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1ZTo6ZXF1YWxDb25zdGFudChj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzRG91YmxlKCkp
Ci0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6
OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPT0gb3RoZXItPmFz
RG91YmxlKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdERvdWJsZVZhbHVlOjpub3RFcXVhbENvbnN0
YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNEb3Vi
bGUoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlT
dGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSAhPSBvdGhl
ci0+YXNEb3VibGUoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RG91YmxlVmFsdWU6Omxlc3NUaGFu
Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhh
c0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlIDwg
b3RoZXItPmFzRG91YmxlKCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdERvdWJsZVZhbHVlOjpncmVh
dGVyVGhhbkNvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90
aGVyLT5oYXNEb3VibGUoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92
YWx1ZSA+IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3VibGVWYWx1
ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlm
ICghb3RoZXItPmhhc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAg
ICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0
ZShtX3ZhbHVlIDw9IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3REb3Vi
bGVWYWx1ZTo6Z3JlYXRlckVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAog
ewogICAgIGlmICghb3RoZXItPmhhc0RvdWJsZSgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlT
dGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVy
biB0cmlTdGF0ZShtX3ZhbHVlID49IG90aGVyLT5hc0RvdWJsZSgpKTsKIH0KIAogVHJpU3RhdGUg
Q29uc3REb3VibGVWYWx1ZTo6ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKiBv
dGhlcikgY29uc3QKIHsKICAgICBpZiAoc3RkOjppc25hbihtX3ZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogCiAgICAg
aWYgKCFvdGhlci0+aGFzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOwor
ICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgZG91YmxlIG90aGVy
VmFsdWUgPSBvdGhlci0+YXNEb3VibGUoKTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RkOjppc3Vu
b3JkZXJlZChtX3ZhbHVlLCBvdGhlclZhbHVlKSB8fCBtX3ZhbHVlID09IG90aGVyVmFsdWUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0RmxvYXRWYWx1ZS5jcHAKaW5k
ZXggMjI3MGYwMDM5MmZkZmU4OGZiOWIzOTU5ZjQwNmJjZWY0YmVkYzZlOC4uMzhjYzQ2MGEzNzU0
MDAzNDA1NzU0OTUyZGQwMzkyN2QzMjQ2OTA5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ29uc3RGbG9hdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNDb25zdEZsb2F0VmFsdWUuY3BwCkBAIC0xMzMsNTIgKzEzMyw1MiBAQCBWYWx1ZSog
Q29uc3RGbG9hdFZhbHVlOjpkaXZDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIGNvbnN0IFZhbHVl
KiBvdGhlcikgY29uc3QKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6ZXF1YWxDb25zdGFudChj
b25zdCBWYWx1ZSogb3RoZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFvdGhlci0+aGFzRmxvYXQoKSkK
LSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6
SW5kZXRlcm1pbmF0ZTsKICAgICByZXR1cm4gdHJpU3RhdGUobV92YWx1ZSA9PSBvdGhlci0+YXNG
bG9hdCgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpub3RFcXVhbENvbnN0YW50
KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNGbG9hdCgp
KQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlICE9IG90aGVyLT5h
c0Zsb2F0KCkpOwogfQogCiBUcmlTdGF0ZSBDb25zdEZsb2F0VmFsdWU6Omxlc3NUaGFuQ29uc3Rh
bnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhhc0Zsb2F0
KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3Rh
dGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPCBvdGhlci0+
YXNGbG9hdCgpKTsKIH0KIAogVHJpU3RhdGUgQ29uc3RGbG9hdFZhbHVlOjpncmVhdGVyVGhhbkNv
bnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNG
bG9hdCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRy
aVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIHJldHVybiB0cmlTdGF0ZShtX3ZhbHVlID4gb3Ro
ZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6bGVzc0VxdWFs
Q29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhh
c0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4g
VHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFsdWUgPD0g
b3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6Z3JlYXRl
ckVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3Ro
ZXItPmhhc0Zsb2F0KCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgcmV0dXJuIHRyaVN0YXRlKG1fdmFs
dWUgPj0gb3RoZXItPmFzRmxvYXQoKSk7CiB9CiAKIFRyaVN0YXRlIENvbnN0RmxvYXRWYWx1ZTo6
ZXF1YWxPclVub3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAg
ICBpZiAoc3RkOjppc25hbihtX3ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogCiAgICAgaWYgKCFvdGhlci0+aGFzRmxv
YXQoKSkKLSAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlT
dGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBmbG9hdCBvdGhlclZhbHVlID0gb3RoZXItPmFzRmxv
YXQoKTsKICAgICByZXR1cm4gdHJpU3RhdGUoc3RkOjppc3Vub3JkZXJlZChtX3ZhbHVlLCBvdGhl
clZhbHVlKSB8fCBtX3ZhbHVlID09IG90aGVyVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1Byb2NlZHVyZS5jcHAKaW5kZXggZDY4MmExNDVhMzRmYmJkOGNjZjI2NzMwYTI0NGZk
ZDZlNDVjYjdmNy4uODEyY2E1ZjVkY2IwYTUzZGViZWU5YmMzOTUxODk1ZWFlY2Y3Yzk2NCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuY3BwCkBAIC0xNjQsMTMgKzE2NCwx
MyBAQCBWYWx1ZSogUHJvY2VkdXJlOjphZGRCb29sQ29uc3RhbnQoT3JpZ2luIG9yaWdpbiwgVHJp
U3RhdGUgdHJpU3RhdGUpCiB7CiAgICAgaW50MzJfdCB2YWx1ZSA9IDA7CiAgICAgc3dpdGNoICh0
cmlTdGF0ZSkgewotICAgIGNhc2UgRmFsc2VUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpG
YWxzZToKICAgICAgICAgdmFsdWUgPSAwOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFRydWVU
cmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpUcnVlOgogICAgICAgICB2YWx1ZSA9IDE7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTWl4ZWRUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKaW5kZXggNWNlMGE1MmY3ZmUyM2NiMDk4YjQz
MGY0MDUwYWMxMzg1M2E2NzE0ZS4uOGE2NTliYTU3NjQ4OWQwNjEwMDc1OTE4ZWY1ZjI2MGMwZGM5
NTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUHJvY2VkdXJlLmgKQEAgLTEzOSw3ICsx
MzksNyBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZEJvdHRvbShPcmlnaW4sIFR5cGUpOwogICAg
IFZhbHVlKiBhZGRCb3R0b20oVmFsdWUqKTsKIAotICAgIC8vIFJldHVybnMgbnVsbCBmb3IgTWl4
ZWRUcmlTdGF0ZS4KKyAgICAvLyBSZXR1cm5zIG51bGwgZm9yIFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlLgogICAgIFZhbHVlKiBhZGRCb29sQ29uc3RhbnQoT3JpZ2luLCBUcmlTdGF0ZSk7CiAKICAg
ICB2b2lkIHJlc2V0VmFsdWVPd25lcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1JlZHVjZVN0cmVuZ3RoLmNwcAppbmRleCAzY2NmMjUyNjk5MjczNjgzYzA2ZDM5Y2IzZGUzNzdk
OWMxMDJhNmVmLi5iMGY5NDY3MzFjOTMxNTAzNGRkNGU5OTc2N2RhNTI3ZDhlMDg1NjQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCkBAIC0xODk0
LDcgKzE4OTQsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEFib3ZlRXF1YWw6CiAgICAgICAg
IGNhc2UgQmVsb3dFcXVhbDogewogICAgICAgICAgICAgQ2Fub25pY2FsaXplZENvbXBhcmlzb24g
Y29tcGFyaXNvbiA9IGNhbm9uaWNhbGl6ZUNvbXBhcmlzb24obV92YWx1ZSk7Ci0gICAgICAgICAg
ICBUcmlTdGF0ZSByZXN1bHQgPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgVHJpU3RhdGUg
cmVzdWx0ID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICBzd2l0Y2ggKGNv
bXBhcmlzb24ub3Bjb2RlKSB7CiAgICAgICAgICAgICBjYXNlIExlc3NUaGFuOgogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGNvbXBhcmlzb24ub3BlcmFuZHNbMV0tPmdyZWF0ZXJUaGFuQ29uc3Rh
bnQoY29tcGFyaXNvbi5vcGVyYW5kc1swXSk7CkBAIC0yMTY3LDcgKzIxNjcsNyBAQCBwcml2YXRl
OgogCiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJyYW5jaCgwLCB0aGVuLCBlbHNlKQogICAg
ICAgICAgICAgLy8gSW50byB0aGlzOiBKdW1wKGVsc2UpCi0gICAgICAgICAgICBpZiAodHJpU3Rh
dGUgPT0gRmFsc2VUcmlTdGF0ZSkgeworICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRyaVN0
YXRlOjpGYWxzZSkgewogICAgICAgICAgICAgICAgIG1fYmxvY2stPnRha2VuKCkuYmxvY2soKS0+
cmVtb3ZlUHJlZGVjZXNzb3IobV9ibG9jayk7CiAgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVw
bGFjZVdpdGhKdW1wKG1fYmxvY2ssIG1fYmxvY2stPm5vdFRha2VuKCkpOwogICAgICAgICAgICAg
ICAgIG1fY2hhbmdlZENGRyA9IHRydWU7CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBwcml2YXRlOgog
CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJyYW5jaChub3QgMCwgdGhlbiwgZWxzZSkKICAg
ICAgICAgICAgIC8vIEludG8gdGhpczogSnVtcCh0aGVuKQotICAgICAgICAgICAgaWYgKHRyaVN0
YXRlID09IFRydWVUcmlTdGF0ZSkgeworICAgICAgICAgICAgaWYgKHRyaVN0YXRlID09IFRyaVN0
YXRlOjpUcnVlKSB7CiAgICAgICAgICAgICAgICAgbV9ibG9jay0+bm90VGFrZW4oKS5ibG9jaygp
LT5yZW1vdmVQcmVkZWNlc3NvcihtX2Jsb2NrKTsKICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5y
ZXBsYWNlV2l0aEp1bXAobV9ibG9jaywgbV9ibG9jay0+dGFrZW4oKSk7CiAgICAgICAgICAgICAg
ICAgbV9jaGFuZ2VkQ0ZHID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApp
bmRleCA0ZGQ1Y2I4NjZhZDczZTIxYmEyZGE0MzdmM2QwMWM3ZGU1YmE0YzRkLi4xN2EyMmYwZWY2
YWIxNTIyMGNlNjE2OGQ3NjlkZDVlOWFhYmYxZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VmFsdWUuY3BwCkBAIC0zNzksNTcgKzM3OSw1NyBAQCBWYWx1ZSogVmFsdWU6OnNxcnRDb25zdGFu
dChQcm9jZWR1cmUmKSBjb25zdAogCiBUcmlTdGF0ZSBWYWx1ZTo6ZXF1YWxDb25zdGFudChjb25z
dCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJu
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bm90RXF1YWxD
b25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7
CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1
ZTo6bGVzc1RoYW5Db25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1p
eGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBU
cmlTdGF0ZSBWYWx1ZTo6Z3JlYXRlclRoYW5Db25zdGFudChjb25zdCBWYWx1ZSopIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6bGVzc0VxdWFsQ29uc3RhbnQoY29uc3QgVmFs
dWUqKSBjb25zdAogewotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiBUcmlT
dGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgVmFsdWU6OmdyZWF0ZXJFcXVhbENv
bnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsK
KyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0YXRlIFZhbHVl
OjphYm92ZUNvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFRyaVN0
YXRlIFZhbHVlOjpiZWxvd0NvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1
cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9
CiAKIFRyaVN0YXRlIFZhbHVlOjphYm92ZUVxdWFsQ29uc3RhbnQoY29uc3QgVmFsdWUqKSBjb25z
dAogewotICAgIHJldHVybiBNaXhlZFRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5k
ZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUgVmFsdWU6OmJlbG93RXF1YWxDb25zdGFudChjb25z
dCBWYWx1ZSopIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJu
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogfQogCiBUcmlTdGF0ZSBWYWx1ZTo6ZXF1YWxPclVu
b3JkZXJlZENvbnN0YW50KGNvbnN0IFZhbHVlKikgY29uc3QKIHsKLSAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIFZhbHVl
KiBWYWx1ZTo6aW52ZXJ0ZWRDb21wYXJlKFByb2NlZHVyZSYgcHJvYykgY29uc3QKQEAgLTUyMCw3
ICs1MjAsNyBAQCBUcmlTdGF0ZSBWYWx1ZTo6YXNUcmlTdGF0ZSgpIGNvbnN0CiAgICAgY2FzZSBD
b25zdEZsb2F0OgogICAgICAgICByZXR1cm4gdHJpU3RhdGUoYXNGbG9hdCgpICE9IDAuKTsKICAg
ICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJu
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmgKaW5kZXggMDEwMGJiNDE5ZGQwNTE3YjA5YTc5ZmU2MDlhNWVlODM2MTFhODhjNC4u
YzdmNzdkOWVkNDEyMjhhYTU0YmYxZWVkYjNlODJhM2EyMGM4NWU2NiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCkBAIC0yOTAsOCArMjkwLDggQEAgcHVibGljOgogICAgIGJvb2wgaXNS
b3VuZGVkKCkgY29uc3Q7CiAKICAgICBUcmlTdGF0ZSBhc1RyaVN0YXRlKCkgY29uc3Q7Ci0gICAg
Ym9vbCBpc0xpa2VaZXJvKCkgY29uc3QgeyByZXR1cm4gYXNUcmlTdGF0ZSgpID09IEZhbHNlVHJp
U3RhdGU7IH0KLSAgICBib29sIGlzTGlrZU5vblplcm8oKSBjb25zdCB7IHJldHVybiBhc1RyaVN0
YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOyB9CisgICAgYm9vbCBpc0xpa2VaZXJvKCkgY29uc3QgeyBy
ZXR1cm4gYXNUcmlTdGF0ZSgpID09IFRyaVN0YXRlOjpGYWxzZTsgfQorICAgIGJvb2wgaXNMaWtl
Tm9uWmVybygpIGNvbnN0IHsgcmV0dXJuIGFzVHJpU3RhdGUoKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsg
fQogCiAgICAgRWZmZWN0cyBlZmZlY3RzKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggZDRhY2FmODkzNzgzMWEwZjFjZGE2NDMx
MzM2MGI4MDhjMzlhOGJhMy4uNjk3NGFkYjk1YzFmNWEzMjczYmU5NmZiMTMzYmYyZGY1NTBlNjM0
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAg
LTg1Myw4ICs4NTMsOCBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogICAgIGlmIChVTkxJS0VM
WSh2bS5tX3BlckJ5dGVjb2RlUHJvZmlsZXIpKQogICAgICAgICB2bS5tX3BlckJ5dGVjb2RlUHJv
ZmlsZXItPm5vdGlmeURlc3RydWN0aW9uKHRoaXMpOwogCi0gICAgaWYgKCF2bS5oZWFwLmlzU2h1
dHRpbmdEb3duKCkgJiYgdW5saW5rZWRDb2RlQmxvY2soKS0+ZGlkT3B0aW1pemUoKSA9PSBNaXhl
ZFRyaVN0YXRlKQotICAgICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT5zZXREaWRPcHRpbWl6ZShG
YWxzZVRyaVN0YXRlKTsKKyAgICBpZiAoIXZtLmhlYXAuaXNTaHV0dGluZ0Rvd24oKSAmJiB1bmxp
bmtlZENvZGVCbG9jaygpLT5kaWRPcHRpbWl6ZSgpID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRl
KQorICAgICAgICB1bmxpbmtlZENvZGVCbG9jaygpLT5zZXREaWRPcHRpbWl6ZShUcmlTdGF0ZTo6
RmFsc2UpOwogCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFs
dWVQcm9maWxlcygpOwpAQCAtMzM4NSwxMSArMzM4NSwxMSBAQCBPcHRpb25hbDxCeXRlY29kZUlu
ZGV4PiBDb2RlQmxvY2s6OmJ5dGVjb2RlSW5kZXhGcm9tQ2FsbFNpdGVJbmRleChDYWxsU2l0ZUlu
ZGV4CiBpbnQzMl90IENvZGVCbG9jazo6dGhyZXNob2xkRm9ySklUKGludDMyX3QgdGhyZXNob2xk
KQogewogICAgIHN3aXRjaCAodW5saW5rZWRDb2RlQmxvY2soKS0+ZGlkT3B0aW1pemUoKSkgewot
ICAgIGNhc2UgTWl4ZWRUcmlTdGF0ZToKKyAgICBjYXNlIFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OgogICAgICAgICByZXR1cm4gdGhyZXNob2xkOwotICAgIGNhc2UgRmFsc2VUcmlTdGF0ZToKKyAg
ICBjYXNlIFRyaVN0YXRlOjpGYWxzZToKICAgICAgICAgcmV0dXJuIHRocmVzaG9sZCAqIDQ7Ci0g
ICAgY2FzZSBUcnVlVHJpU3RhdGU6CisgICAgY2FzZSBUcmlTdGF0ZTo6VHJ1ZToKICAgICAgICAg
cmV0dXJuIHRocmVzaG9sZCAvIDI7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJs
b2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5jcHAKaW5kZXggNTRkYTU3ZGFiNjljYTI2MWFlZmRjZWI5MzhmZmEwZjRmZjAzNzkxNS4uNDhj
YWI0MjJiMTU2YzFhOWM0ODAxNDIxMGNlZGVjODY1NmJiYWY2NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCkBAIC02OSw3
ICs2OSw3IEBAIFVubGlua2VkQ29kZUJsb2NrOjpVbmxpbmtlZENvZGVCbG9jayhWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBDb2RlVHlwZSBjb2RlCiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0
VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5kZXJpdmVkQ29udGV4dFR5cGUoKSkpCiAg
ICAgLCBtX2V2YWxDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5mby5ldmFsQ29u
dGV4dFR5cGUoKSkpCiAgICAgLCBtX2NvZGVUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjb2Rl
VHlwZSkpCi0gICAgLCBtX2RpZE9wdGltaXplKHN0YXRpY19jYXN0PHVuc2lnbmVkPihNaXhlZFRy
aVN0YXRlKSkKKyAgICAsIG1fZGlkT3B0aW1pemUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRyaVN0
YXRlOjpJbmRldGVybWluYXRlKSkKICAgICAsIG1fYWdlKDApCiAgICAgLCBtX2hhc0NoZWNrcG9p
bnRzKGZhbHNlKQogICAgICwgbV9wYXJzZU1vZGUoaW5mby5wYXJzZU1vZGUoKSkKQEAgLTc4LDcg
Kzc4LDcgQEAgVW5saW5rZWRDb2RlQmxvY2s6OlVubGlua2VkQ29kZUJsb2NrKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIENvZGVUeXBlIGNvZGUKIHsKICAgICBBU1NFUlQobV9jb25zdHJ1
Y3RvcktpbmQgPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluZm8uY29uc3RydWN0b3JLaW5kKCkp
KTsKICAgICBBU1NFUlQobV9jb2RlVHlwZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oY29kZVR5
cGUpKTsKLSAgICBBU1NFUlQobV9kaWRPcHRpbWl6ZSA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
TWl4ZWRUcmlTdGF0ZSkpOworICAgIEFTU0VSVChtX2RpZE9wdGltaXplID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkpOwogICAgIGlmIChpbmZvLm5lZWRz
Q2xhc3NGaWVsZEluaXRpYWxpemVyKCkgPT0gTmVlZHNDbGFzc0ZpZWxkSW5pdGlhbGl6ZXI6Olll
cykgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KGhvbGRMb2NrKGNlbGxMb2Nr
KCkpKTsKICAgICAgICAgbV9yYXJlRGF0YS0+bV9uZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihOZWVkc0NsYXNzRmllbGRJbml0aWFsaXplcjo6WWVzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDBiZjMwMjhkODEwYzYxNmViMDdhZGE2NmM1
N2RhOTI5OWUxYmJjY2UuLjViOThhNTQ2ZjE5MmIyZDhmMDYzMGEzYzcxODVjNTFmZDE1MTVhNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgVW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90
VmlzaXRvciYgdmlzaXRvCiAgICAgICAgIGF1dG8gbWFya0lmUHJvZml0YWJsZSA9IFsmXSAoV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2s+JiB1bmxpbmtlZENvZGVCbG9jaykg
ewogICAgICAgICAgICAgaWYgKCF1bmxpbmtlZENvZGVCbG9jaykKICAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPmRpZE9wdGltaXplKCkg
PT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT5kaWRP
cHRpbWl6ZSgpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKHVubGlua2VkQ29kZUJsb2NrKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHVubGlua2VkQ29k
ZUJsb2NrLT5hZ2UoKSA8IFVubGlua2VkQ29kZUJsb2NrOjptYXhBZ2UpCiAgICAgICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQodW5saW5rZWRDb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IDEzZDRiYTc0
ODEyMTExNWE3OWRhOTI0MmU2ZjIxOGFjYmU2Y2E2ODUuLjMxMjQ5MmFjYWI4NTFkMjlhNWFhMzQ0
MWI4YzQ5ZjViZTg2Y2RmYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTEwMywxNSArMTAzLDE1IEBAIHZvaWQgQ29u
c3RhbnROb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwKICAgICBUcmlTdGF0ZSB2YWx1ZSA9IGpzVmFsdWUoZ2VuZXJhdG9yKS5w
dXJlVG9Cb29sZWFuKCk7CiAKICAgICBpZiAoVU5MSUtFTFkobmVlZHNEZWJ1Z0hvb2soKSkpIHsK
LSAgICAgICAgaWYgKHZhbHVlICE9IE1peGVkVHJpU3RhdGUpCisgICAgICAgIGlmICh2YWx1ZSAh
PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKHRoaXMpOwogICAgIH0KIAotICAgIGlmICh2YWx1ZSA9PSBNaXhlZFRyaVN0YXRlKQor
ICAgIGlmICh2YWx1ZSA9PSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgRXhwcmVz
c2lvbk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChnZW5lcmF0b3IsIHRydWVU
YXJnZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1vZGUpOwotICAgIGVsc2UgaWYgKHZhbHVl
ID09IFRydWVUcmlTdGF0ZSAmJiBmYWxsVGhyb3VnaE1vZGUgPT0gRmFsbFRocm91Z2hNZWFuc0Zh
bHNlKQorICAgIGVsc2UgaWYgKHZhbHVlID09IFRyaVN0YXRlOjpUcnVlICYmIGZhbGxUaHJvdWdo
TW9kZSA9PSBGYWxsVGhyb3VnaE1lYW5zRmFsc2UpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVt
cCh0cnVlVGFyZ2V0KTsKLSAgICBlbHNlIGlmICh2YWx1ZSA9PSBGYWxzZVRyaVN0YXRlICYmIGZh
bGxUaHJvdWdoTW9kZSA9PSBGYWxsVGhyb3VnaE1lYW5zVHJ1ZSkKKyAgICBlbHNlIGlmICh2YWx1
ZSA9PSBUcmlTdGF0ZTo6RmFsc2UgJiYgZmFsbFRocm91Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVh
bnNUcnVlKQogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXAoZmFsc2VUYXJnZXQpOwogCiAgICAg
Ly8gQWxsIG90aGVyIGNhc2VzIGFyZSB1bmNvbmRpdGlvbmFsIGZhbGwtdGhyb3VnaHMsIGxpa2Ug
ImlmICh0cnVlKSIuCkBAIC0yNDc2LDEzICsyNDc2LDEzIEBAIHZvaWQgQmluYXJ5T3BOb2RlOjpl
bWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwKICAgICB0cnlGb2xkVG9CcmFuY2goZ2VuZXJhdG9yLCBicmFuY2hDb25kaXRpb24sIGJyYW5j
aEV4cHJlc3Npb24pOwogCiAgICAgaWYgKFVOTElLRUxZKG5lZWRzRGVidWdIb29rKCkpKSB7Ci0g
ICAgICAgIGlmIChicmFuY2hDb25kaXRpb24gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgaWYg
KGJyYW5jaENvbmRpdGlvbiAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKHRoaXMpOwogICAgIH0KIAotICAgIGlmIChicmFuY2hD
b25kaXRpb24gPT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICBpZiAoYnJhbmNoQ29uZGl0aW9uID09IFRy
aVN0YXRlOjpJbmRldGVybWluYXRlKQogICAgICAgICBFeHByZXNzaW9uTm9kZTo6ZW1pdEJ5dGVj
b2RlSW5Db25kaXRpb25Db250ZXh0KGdlbmVyYXRvciwgdHJ1ZVRhcmdldCwgZmFsc2VUYXJnZXQs
IGZhbGxUaHJvdWdoTW9kZSk7Ci0gICAgZWxzZSBpZiAoYnJhbmNoQ29uZGl0aW9uID09IFRydWVU
cmlTdGF0ZSkKKyAgICBlbHNlIGlmIChicmFuY2hDb25kaXRpb24gPT0gVHJpU3RhdGU6OlRydWUp
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChicmFuY2hFeHBy
ZXNzaW9uLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFsbFRocm91Z2hNb2RlKTsKICAgICBl
bHNlCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChicmFuY2hF
eHByZXNzaW9uLCBmYWxzZVRhcmdldCwgdHJ1ZVRhcmdldCwgaW52ZXJ0KGZhbGxUaHJvdWdoTW9k
ZSkpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGNhbkZvbGRUb0Jy
YW5jaChPcGNvZGVJRCBvcGNvZGVJRCwgRXhwcmVzc2lvbk5vZGUqIGJyYW5jaEV4cHIKIAogdm9p
ZCBCaW5hcnlPcE5vZGU6OnRyeUZvbGRUb0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBUcmlTdGF0ZSYgYnJhbmNoQ29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSomIGJyYW5jaEV4
cHJlc3Npb24pCiB7Ci0gICAgYnJhbmNoQ29uZGl0aW9uID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICBi
cmFuY2hDb25kaXRpb24gPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICBicmFuY2hFeHBy
ZXNzaW9uID0gMDsKIAogICAgIENvbnN0YW50Tm9kZSogY29uc3RhbnQgPSAwOwpAQCAtMjUyNyw5
ICsyNTI3LDkgQEAgdm9pZCBCaW5hcnlPcE5vZGU6OnRyeUZvbGRUb0JyYW5jaChCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBUcmlTdGF0ZSYgYnJhbmMKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG9wY29kZUlEID09IG9wX2VxIHx8IG9wY29kZUlEID09IG9wX3N0cmljdGVxKQotICAg
ICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSh2YWx1ZS5wdXJlVG9Cb29sZWFuKCkpOwor
ICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlTdGF0ZSh2YWx1ZS5wdXJlVG9Cb29sZWFuKCkg
IT0gVHJpU3RhdGU6OkZhbHNlKTsKICAgICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9uZXEgfHwg
b3Bjb2RlSUQgPT0gb3BfbnN0cmljdGVxKQotICAgICAgICBicmFuY2hDb25kaXRpb24gPSB0cmlT
dGF0ZSghdmFsdWUucHVyZVRvQm9vbGVhbigpKTsKKyAgICAgICAgYnJhbmNoQ29uZGl0aW9uID0g
dHJpU3RhdGUodmFsdWUucHVyZVRvQm9vbGVhbigpID09IFRyaVN0YXRlOjpGYWxzZSk7CiB9CiAK
IFJlZ2lzdGVySUQqIEJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMWEzZWUzNTAxNGZhNDg0YmFiN2UzNjg4
MGIyNDI0YzlhMzRiM2YxZS4uOTBlMTMzMDA1ZTgzNTZiZjU1M2MwMDViM2Q0YWE0N2QxNzg2ZmE0
ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKQEAgLTM0ODcsMjIgKzM0ODcsMjIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50
cmluc2ljQ2FsbChOb2RlKiBjYWxsZWUsIE9wZXJhbmQgcmVzdWx0LCBJbnRyaW5zaWMKICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJpU3RhdGU7Cisg
ICAgICAgICAgICBUcmlTdGF0ZSBpc0xpdHRsZUVuZGlhbiA9IFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlOwogICAgICAgICAgICAgTm9kZSogbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOwogICAg
ICAgICAgICAgaWYgKGJ5dGVTaXplID4gMSkgewogICAgICAgICAgICAgICAgIGlmIChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA8IDMpCi0gICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5k
aWFuID0gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgaXNMaXR0bGVFbmRpYW4g
PSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0gZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50
SW5jbHVkaW5nVGhpcygyLCByZWdpc3Rlck9mZnNldCkpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAobGl0dGxlRW5kaWFuQ2hpbGQtPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWUgY29uc3RhbnQgPSBsaXR0bGVFbmRpYW5DaGlsZC0+Y29uc3RhbnQoKS0+
dmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gY29uc3RhbnQucHVyZVRvQm9v
bGVhbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRsZUVuZGlhbiAh
PSBNaXhlZFRyaVN0YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xpdHRs
ZUVuZGlhbiAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGl0dGxlRW5kaWFuQ2hpbGQgPSBudWxscHRyOwogICAgICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlzTGl0dGxlRW5kaWFuID0gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlzTGl0dGxlRW5kaWFuID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCkBAIC0zNTcyLDIyICszNTcyLDIyIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpY0NhbGwoTm9kZSogY2FsbGVlLCBPcGVyYW5k
IHJlc3VsdCwgSW50cmluc2ljCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVF
bmRpYW4gPSBNaXhlZFRyaVN0YXRlOworICAgICAgICAgICAgVHJpU3RhdGUgaXNMaXR0bGVFbmRp
YW4gPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKICAgICAgICAgICAgIE5vZGUqIGxpdHRsZUVu
ZGlhbkNoaWxkID0gbnVsbHB0cjsKICAgICAgICAgICAgIGlmIChieXRlU2l6ZSA+IDEpIHsKICAg
ICAgICAgICAgICAgICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCA0KQotICAgICAg
ICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAg
ICAgICAgICAgIGlzTGl0dGxlRW5kaWFuID0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW5DaGlsZCA9IGdldCh2
aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudEluY2x1ZGluZ1RoaXMoMywgcmVnaXN0ZXJPZmZzZXQp
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxpdHRsZUVuZGlhbkNoaWxkLT5oYXNDb25zdGFu
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIGNvbnN0YW50ID0gbGl0dGxl
RW5kaWFuQ2hpbGQtPmNvbnN0YW50KCktPnZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY29uc3RhbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVu
ZGlhbiA9IGNvbnN0YW50LnB1cmVUb0Jvb2xlYW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNMaXR0bGVFbmRpYW4gIT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNMaXR0bGVFbmRpYW4gIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbkNoaWxkID0g
bnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IE1peGVkVHJp
U3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICBpc0xpdHRsZUVuZGlhbiA9IFRyaVN0YXRl
OjpJbmRldGVybWluYXRlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBo
YXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHAKaW5kZXggNjEwZDdkMjBlZjY1MzVmN2E4ZTk1YmNlYTEyMWVmM2I4YWI0MDJhYy4u
NDU3OTBiZjgwMzkxNjRhMTRiN2MxMjVkYWE2MTFlNjA4OTc2M2QyZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3Bw
CkBAIC0xNzAsMTcgKzE3MCwxNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIE5vZGUq
IHRlcm1pbmFsID0gYmxvY2stPnRlcm1pbmFsKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0
ZXJtaW5hbC0+Y2hpbGQxKCktPmhhc0NvbnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9IHRlcm1pbmFsLT5jaGlsZDEoKS0+Y29uc3RhbnQoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIFRyaVN0YXRlIGZvdW5kID0gRmFsc2VUcmlTdGF0ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFRyaVN0YXRlIGZvdW5kID0gVHJpU3RhdGU6OkZhbHNl
OwogICAgICAgICAgICAgICAgICAgICAgICAgQmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgPSAwOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6
ZSgpOyBmb3VuZCA9PSBGYWxzZVRyaVN0YXRlICYmIGktLTspIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGRhdGEtPmNhc2VzLnNpemUoKTsgZm91bmQgPT0gVHJp
U3RhdGU6OkZhbHNlICYmIGktLTspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Vu
ZCA9IGRhdGEtPmNhc2VzW2ldLnZhbHVlLnN0cmljdEVxdWFsKHZhbHVlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZm91bmQgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QmxvY2sgPSBkYXRhLT5jYXNlc1tpXS50YXJnZXQu
YmxvY2s7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBNaXhlZFRyaVN0YXRlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvdW5kID09IFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGZvdW5kID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZm91bmQgPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldEJsb2NrID0gZGF0YS0+ZmFsbFRocm91Z2guYmxvY2s7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQodGFyZ2V0QmxvY2spOwogICAgICAgICAgICAgICAgICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCmluZGV4
IDRlZDc1ODRmMjQ5NzIyY2FmOTE4NjlhYzMwNWJkMzUwNzY3YTNlNzUuLjAxZjQyZjhiNGM1NGJi
ODlhOGJhNTUzNmQxODIyY2RkNGVjNDI1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTGF6eUpTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTGF6eUpTVmFsdWUuY3BwCkBAIC02MiwxNSArNjIsMTUgQEAgSlNWYWx1ZSBMYXp5SlNW
YWx1ZTo6Z2V0VmFsdWUoVk0mIHZtKSBjb25zdAogc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TaW5n
bGVDaGFyYWN0ZXIoSlNWYWx1ZSB2YWx1ZSwgVUNoYXIgY2hhcmFjdGVyKQogewogICAgIGlmICgh
dmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgCiAgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0g
YXNTdHJpbmcodmFsdWUpOwogICAgIGlmIChqc1N0cmluZy0+bGVuZ3RoKCkgIT0gMSkKLSAgICAg
ICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7
CiAgICAgCiAgICAgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nID0ganNTdHJpbmctPnRyeUdldFZh
bHVlSW1wbCgpOwogICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0
ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIAogICAgIHJl
dHVybiB0cmlTdGF0ZShzdHJpbmctPmF0KDApID09IGNoYXJhY3Rlcik7CiB9CkBAIC03OCwxMiAr
NzgsMTIgQEAgc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TaW5nbGVDaGFyYWN0ZXIoSlNWYWx1ZSB2
YWx1ZSwgVUNoYXIgY2hhcmFjdGVyKQogc3RhdGljIFRyaVN0YXRlIGVxdWFsVG9TdHJpbmdJbXBs
KEpTVmFsdWUgdmFsdWUsIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwpCiB7CiAgICAgaWYgKCF2YWx1
ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0
dXJuIFRyaVN0YXRlOjpGYWxzZTsKICAgICAKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSBhc1N0
cmluZyh2YWx1ZSk7CiAgICAgY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nID0ganNTdHJpbmctPnRy
eUdldFZhbHVlSW1wbCgpOwogICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm4gTWl4ZWRU
cmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgIAog
ICAgIHJldHVybiB0cmlTdGF0ZShXVEY6OmVxdWFsKHN0cmluZ0ltcGwsIHN0cmluZykpOwogfQpA
QCAtMTQyLDE4ICsxNDIsMTggQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmljdEVxdWFsKGNv
bnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgc3dpdGNoIChvdGhlci5tX2tp
bmQpIHsKICAgICAgICAgY2FzZSBLbm93blZhbHVlOiB7CiAgICAgICAgICAgICBpZiAoIXZhbHVl
KCktPnZhbHVlKCkgfHwgIW90aGVyLnZhbHVlKCktPnZhbHVlKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHZhbHVlKCktPnZhbHVlKCkgPT0gb3RoZXIudmFsdWUoKS0+dmFsdWUoKSA/IFRydWVU
cmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKCkt
PnZhbHVlKCkgPT0gb3RoZXIudmFsdWUoKS0+dmFsdWUoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJp
U3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVh
bCh2YWx1ZSgpLT52YWx1ZSgpLCBvdGhlci52YWx1ZSgpLT52YWx1ZSgpKTsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIFNpbmdsZUNoYXJhY3RlclN0cmluZzogewogICAgICAgICAgICAgaWYgKCF2
YWx1ZSgpLT52YWx1ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOwor
ICAgICAgICAgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICByZXR1
cm4gZXF1YWxUb1NpbmdsZUNoYXJhY3Rlcih2YWx1ZSgpLT52YWx1ZSgpLCBvdGhlci5jaGFyYWN0
ZXIoKSk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBLbm93blN0cmluZ0ltcGw6CiAgICAgICAg
IGNhc2UgTmV3U3RyaW5nSW1wbDogewogICAgICAgICAgICAgaWYgKCF2YWx1ZSgpLT52YWx1ZSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAgICAg
IHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gZXF1YWxUb1N0cmlu
Z0ltcGwodmFsdWUoKS0+dmFsdWUoKSwgb3RoZXIuc3RyaW5nSW1wbCgpKTsKICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0xNjUsNyArMTY1LDcgQEAgVHJpU3RhdGUgTGF6eUpTVmFsdWU6OnN0cmlj
dEVxdWFsKGNvbnN0IExhenlKU1ZhbHVlJiBvdGhlcikgY29uc3QKICAgICAgICAgY2FzZSBLbm93
blN0cmluZ0ltcGw6CiAgICAgICAgIGNhc2UgTmV3U3RyaW5nSW1wbDoKICAgICAgICAgICAgIGlm
IChvdGhlci5zdHJpbmdJbXBsKCktPmxlbmd0aCgpICE9IDEpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxz
ZTsKICAgICAgICAgICAgIHJldHVybiB0cmlTdGF0ZShvdGhlci5zdHJpbmdJbXBsKCktPmF0KDAp
ID09IGNoYXJhY3RlcigpKTsKICAgICAgICAgY2FzZSBLbm93blZhbHVlOgogICAgICAgICAgICAg
cmV0dXJuIG90aGVyLnN0cmljdEVxdWFsKCp0aGlzKTsKQEAgLTE4NCw3ICsxODQsNyBAQCBUcmlT
dGF0ZSBMYXp5SlNWYWx1ZTo6c3RyaWN0RXF1YWwoY29uc3QgTGF6eUpTVmFsdWUmIG90aGVyKSBj
b25zdAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICByZXR1cm4gVHJpU3RhdGU6OkZh
bHNlOwogfQogCiB1aW50cHRyX3QgTGF6eUpTVmFsdWU6OnN3aXRjaExvb2t1cFZhbHVlKFN3aXRj
aEtpbmQga2luZCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDk3YWYyZTJjZGJmODZmYjY3NmQ0YmQxYjhmMDdhYjA5
ZWYxZDIzMWMuLmVmYmRjOTA4OWU2NzlhMTQ2Mjg3NDA2ZWIzYzZmMjJmNzc4ZjJlMDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApA
QCAtNTExOCw5ICs1MTE4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDE2VG8zMih0Miwg
dDIpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgZW1p
dEJpZ0VuZGlhbkxvYWQoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxl
RW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBlbWl0
TGl0dGxlRW5kaWFuTG9hZCgpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJbnZhbGlkR1BSUmVn
KTsKQEAgLTUxMzcsOSArNTEzNyw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIGNhc2UgNDogewogICAgICAgICAgICAgICAgIG1faml0Lmxv
YWQzMihiYXNlSW5kZXgsIHQyKTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxl
RW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0
bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5i
eXRlU3dhcDMyKHQyKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9IEludmFsaWRHUFJSZWcp
OwogICAgICAgICAgICAgICAgICAgICBhdXRvIGlzTGl0dGxlRW5kaWFuID0gbV9qaXQuYnJhbmNo
VGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBpc0xpdHRsZUVuZGlhbkdQUiwgVHJ1c3Rl
ZEltbTMyKDEpKTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnl0ZVN3YXAzMih0Mik7CkBA
IC01MTczLDkgKzUxNzMsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmNvbnZlcnRGbG9hdFRvRG91YmxlKHJlc3Vs
dEZQUiwgcmVzdWx0RlBSKTsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
IGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAg
ICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBl
bHNlIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAg
ICAgICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0g
SW52YWxpZEdQUlJlZyk7CkBAIC01MjAwLDkgKzUyMDAsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmU2NFRv
RG91YmxlKHQyLCByZXN1bHRGUFIpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAg
ICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAg
ICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAg
ICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwogICAgICAgICAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQ
UiAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTUzMTIsOSArNTMxMiw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMih0MywgYmFzZUluZGV4KTsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAg
ICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAg
ICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAg
ZWxzZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAg
ICAgICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIg
IT0gSW52YWxpZEdQUlJlZyk7CkBAIC01MzM4LDkgKzUzMzgsOSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0LnN0b3Jl
NjQodDMsIGJhc2VJbmRleCk7CiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAg
IGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAg
ICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAg
ICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVs
c2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGlzTGl0dGxlRW5kaWFuR1BSICE9
IEludmFsaWRHUFJSZWcpOwpAQCAtNTM3Miw5ICs1MzcyLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTE2
KHQzLCBiYXNlSW5kZXgpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAg
IGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAg
ICAgICAgICAgZW1pdEJpZ0VuZGlhbkNvZGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChk
YXRhLmlzTGl0dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNl
IGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAg
ICAgICAgICBlbWl0TGl0dGxlRW5kaWFuQ29kZSgpOwogICAgICAgICAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpc0xpdHRsZUVuZGlhbkdQUiAhPSBJ
bnZhbGlkR1BSUmVnKTsKQEAgLTU0MDAsOSArNTQwMCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMih0
MywgYmFzZUluZGV4KTsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYg
KGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAg
ICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0
YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxzZSBp
ZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgICAg
ICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXNMaXR0bGVFbmRpYW5HUFIgIT0gSW52
YWxpZEdQUlJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExv
d2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKaW5kZXggYTFhMTZmYjlkNWMwNzJiNzUwMjU3YzAxZWVlMjhhMDhhZjI0MDIxMi4uMzgx
MjNhZTE3NjQzZDVlNmEwMTJkYWZiMjgxODBjOTkwZmNhMjc1OSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTQxOTAsOSArMTQxOTAsOSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0Y2hwb2ludDsKICAgICAg
ICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4g
PT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlh
biA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAgICAgICAgICAgIHNldEludDMyKGVtaXRC
aWdFbmRpYW5Mb2FkKCkpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNM
aXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIHNldElu
dDMyKGVtaXRMaXR0bGVFbmRpYW5Mb2FkKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICAgICAgc2V0SW50MzIoZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChp
c0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkxvYWQsIGVtaXRCaWdFbmRpYW5Mb2FkKSk7
CkBAIC0xNDIwMiw5ICsxNDIwMiw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIDQ6IHsK
ICAgICAgICAgICAgICAgICBMVmFsdWUgbG9hZGVkVmFsdWUgPSBtX291dC5sb2FkMzIocG9pbnRl
cik7CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRy
aVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0
YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAgbG9hZGVkVmFsdWUgPSBieXRlU3dhcDMy
KGxvYWRlZFZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IE1peGVkVHJpU3RhdGUpIHsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlz
TGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gZW1pdExpdHRsZUVuZGlhbkNvZGUgPSBbJl0gewogICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGxvYWRlZFZhbHVlOwogICAgICAgICAgICAgICAgICAgICB9OwpAQCAt
MTQyNDcsOSArMTQyNDcsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
cGF0Y2hwb2ludDsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAgaWYgKGRh
dGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChk
YXRhLmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAg
ICBzZXREb3VibGUoZW1pdExpdHRsZUVuZGlhbkNvZGUoKSk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAg
ICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdEJpZ0VuZGlhbkNvZGUoKSk7CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBzZXREb3VibGUoZW1pdENvZGVCYXNl
ZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwgZW1pdExpdHRsZUVuZGlhbkNvZGUs
IGVtaXRCaWdFbmRpYW5Db2RlKSk7CkBAIC0xNDI2Nyw5ICsxNDI2Nyw5IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBtX291dC5iaXRDYXN0KGxvYWRlZFZhbHVlLCBEb3Vi
bGUpOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5pc0xp
dHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNM
aXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIHNldERv
dWJsZShlbWl0TGl0dGxlRW5kaWFuQ29kZSgpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChk
YXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAg
ICAgICAgICAgIHNldERvdWJsZShlbWl0QmlnRW5kaWFuQ29kZSgpKTsKICAgICAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHNldERvdWJsZShlbWl0Q29kZUJhc2VkT25FbmRp
YW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJp
Z0VuZGlhbkNvZGUpKTsKQEAgLTE0MzM4LDkgKzE0MzM4LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICAgICAgfTsKIAotICAgICAg
ICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5kaWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAg
ICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQog
ICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5kaWFuQ29kZSgpOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAg
ICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVFbmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBlbWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJh
bmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxlRW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNv
ZGUpOwpAQCAtMTQzNTYsOSArMTQzNTYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgICAgICB9OwogCi0gICAgICAgICAgICAgICAg
aWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4gPT0gRmFsc2VUcmlTdGF0ZSkKKyAgICAgICAgICAgICAg
ICBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAg
ICAgICAgICAgIGVtaXRCaWdFbmRpYW5Db2RlKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
ZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZGF0YS5pc0xpdHRsZUVuZGlhbiA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAg
ICAgICAgICAgZW1pdExpdHRsZUVuZGlhbkNvZGUoKTsKICAgICAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgICAgIGVtaXRDb2RlQmFzZWRPbkVuZGlhbm5lc3NCcmFuY2goaXNMaXR0
bGVFbmRpYW4sIGVtaXRMaXR0bGVFbmRpYW5Db2RlLCBlbWl0QmlnRW5kaWFuQ29kZSk7CkBAIC0x
NDM4OSw5ICsxNDM4OSw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICAgICAgICAgIH07CiAKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5p
c0xpdHRsZUVuZGlhbiA9PSBGYWxzZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpGYWxzZSkKICAgICAgICAgICAgICAgICAgICAg
ZW1pdEJpZ0VuZGlhbkNvZGUoKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLmlzTGl0
dGxlRW5kaWFuID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRh
LmlzTGl0dGxlRW5kaWFuID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgICAgICAgICBl
bWl0TGl0dGxlRW5kaWFuQ29kZSgpOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICAgICAgZW1pdENvZGVCYXNlZE9uRW5kaWFubmVzc0JyYW5jaChpc0xpdHRsZUVuZGlhbiwg
ZW1pdExpdHRsZUVuZGlhbkNvZGUsIGVtaXRCaWdFbmRpYW5Db2RlKTsKQEAgLTE0NDEyLDkgKzE0
NDEyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgIGlmIChkYXRhLmlzTGl0dGxlRW5k
aWFuID09IEZhbHNlVHJpU3RhdGUpCisgICAgICAgICAgICAgICAgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gVHJpU3RhdGU6OkZhbHNlKQogICAgICAgICAgICAgICAgICAgICBlbWl0QmlnRW5k
aWFuQ29kZSgpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVFbmRpYW4g
PT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEuaXNMaXR0bGVF
bmRpYW4gPT0gVHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMaXR0bGVF
bmRpYW5Db2RlKCk7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBl
bWl0Q29kZUJhc2VkT25FbmRpYW5uZXNzQnJhbmNoKGlzTGl0dGxlRW5kaWFuLCBlbWl0TGl0dGxl
RW5kaWFuQ29kZSwgZW1pdEJpZ0VuZGlhbkNvZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExPdXRwdXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPdXRwdXQuY3BwCmluZGV4IGQ1N2ZiMWVlYTgwNDRhMzRiNzkxNzY4YTkwOTc2OTg5OThhYzMz
OTIuLjZjNjA5YjRhNzQ0NThlYWRiMDllOTM5NDNmMTZmNGI1YWJjYzM4ZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMT3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTE91dHB1dC5jcHAKQEAgLTQ5OCw4MCArNDk4LDgwIEBAIExWYWx1
ZSBPdXRwdXQ6OmJhc2VJbmRleChMVmFsdWUgYmFzZSwgTFZhbHVlIGluZGV4LCBTY2FsZSBzY2Fs
ZSwgcHRyZGlmZl90IG9mZnNlCiBMVmFsdWUgT3V0cHV0OjplcXVhbChMVmFsdWUgbGVmdCwgTFZh
bHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxlZnQtPmVxdWFsQ29uc3RhbnQo
cmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJu
IGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRy
aVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9
PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFs
dWU+KG1fcHJvYywgQjM6OkVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogfQogCiBMVmFs
dWUgT3V0cHV0Ojpub3RFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRy
aVN0YXRlIHJlc3VsdCA9IGxlZnQtPm5vdEVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChy
ZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQg
PT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWlu
YXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7
CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Ok5v
dEVxdWFsLCBvcmlnaW4oKSwgbGVmdCwgcmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0OjphYm92
ZShMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJlc3VsdCA9IGxl
ZnQtPmFib3ZlQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0
ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAg
ICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4g
Y29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2st
PmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlLCBvcmlnaW4oKSwgbGVmdCwg
cmlnaHQpOwogfQogCiBMVmFsdWUgT3V0cHV0OjphYm92ZU9yRXF1YWwoTFZhbHVlIGxlZnQsIExW
YWx1ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5hYm92ZUVxdWFsQ29u
c3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAg
cmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVzdWx0
ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29sKHJl
c3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5ldzxC
Mzo6VmFsdWU+KG1fcHJvYywgQjM6OkFib3ZlRXF1YWwsIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7
CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmJlbG93KExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7
CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+YmVsb3dDb25zdGFudChyaWdodCk7Ci0gICAg
aWYgKHJlc3VsdCAhPSBNaXhlZFRyaVN0YXRlKQotICAgICAgICByZXR1cm4gY29uc3RCb29sKHJl
c3VsdCA9PSBUcnVlVHJpU3RhdGUpOworICAgIGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0
ZXJtaW5hdGUpCisgICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRyaVN0YXRlOjpU
cnVlKTsKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBC
Mzo6QmVsb3csIG9yaWdpbigpLCBsZWZ0LCByaWdodCk7CiB9CiAKIExWYWx1ZSBPdXRwdXQ6OmJl
bG93T3JFcXVhbChMVmFsdWUgbGVmdCwgTFZhbHVlIHJpZ2h0KQogewogICAgIFRyaVN0YXRlIHJl
c3VsdCA9IGxlZnQtPmJlbG93RXF1YWxDb25zdGFudChyaWdodCk7Ci0gICAgaWYgKHJlc3VsdCAh
PSBNaXhlZFRyaVN0YXRlKQotICAgICAgICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcnVl
VHJpU3RhdGUpOworICAgIGlmIChyZXN1bHQgIT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpCisg
ICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRyaVN0YXRlOjpUcnVlKTsKICAgICBy
ZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6QmVsb3dFcXVh
bCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6Z3JlYXRlclRo
YW4oTFZhbHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1bHQgPSBs
ZWZ0LT5ncmVhdGVyVGhhbkNvbnN0YW50KHJpZ2h0KTsKLSAgICBpZiAocmVzdWx0ICE9IE1peGVk
VHJpU3RhdGUpCi0gICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRydWVUcmlTdGF0
ZSk7CisgICAgaWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAg
cmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpOwogICAgIHJldHVybiBt
X2Jsb2NrLT5hcHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpHcmVhdGVyVGhhbiwgb3Jp
Z2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6Z3JlYXRlclRoYW5PckVx
dWFsKExWYWx1ZSBsZWZ0LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0g
bGVmdC0+Z3JlYXRlckVxdWFsQ29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4
ZWRUcmlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0
YXRlKTsKKyAgICBpZiAocmVzdWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAg
ICByZXR1cm4gY29uc3RCb29sKHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJu
IG1fYmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkdyZWF0ZXJFcXVhbCwg
b3JpZ2luKCksIGxlZnQsIHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6bGVzc1RoYW4oTFZh
bHVlIGxlZnQsIExWYWx1ZSByaWdodCkKIHsKICAgICBUcmlTdGF0ZSByZXN1bHQgPSBsZWZ0LT5s
ZXNzVGhhbkNvbnN0YW50KHJpZ2h0KTsKLSAgICBpZiAocmVzdWx0ICE9IE1peGVkVHJpU3RhdGUp
Ci0gICAgICAgIHJldHVybiBjb25zdEJvb2wocmVzdWx0ID09IFRydWVUcmlTdGF0ZSk7CisgICAg
aWYgKHJlc3VsdCAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkKKyAgICAgICAgcmV0dXJuIGNv
bnN0Qm9vbChyZXN1bHQgPT0gVHJpU3RhdGU6OlRydWUpOwogICAgIHJldHVybiBtX2Jsb2NrLT5h
cHBlbmROZXc8QjM6OlZhbHVlPihtX3Byb2MsIEIzOjpMZXNzVGhhbiwgb3JpZ2luKCksIGxlZnQs
IHJpZ2h0KTsKIH0KIAogTFZhbHVlIE91dHB1dDo6bGVzc1RoYW5PckVxdWFsKExWYWx1ZSBsZWZ0
LCBMVmFsdWUgcmlnaHQpCiB7CiAgICAgVHJpU3RhdGUgcmVzdWx0ID0gbGVmdC0+bGVzc0VxdWFs
Q29uc3RhbnQocmlnaHQpOwotICAgIGlmIChyZXN1bHQgIT0gTWl4ZWRUcmlTdGF0ZSkKLSAgICAg
ICAgcmV0dXJuIGNvbnN0Qm9vbChyZXN1bHQgPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBpZiAocmVz
dWx0ICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICByZXR1cm4gY29uc3RCb29s
KHJlc3VsdCA9PSBUcmlTdGF0ZTo6VHJ1ZSk7CiAgICAgcmV0dXJuIG1fYmxvY2stPmFwcGVuZE5l
dzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6Okxlc3NFcXVhbCwgb3JpZ2luKCksIGxlZnQsIHJpZ2h0
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5k
ZXggMmUxNzI1NGQ2YzQ3MWJiYmRhYmNiMjY1Mzk5ZDFiYmJlZDE3N2E2NS4uMDA2OGE3ZDc0ODU0
ZjJmOWI2NzcwMzFiOGE1ZmFiYzhlYTU3NGUzZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xNzE3LDcgKzE3MTcsNyBAQCBTbG93UGF0aFJldHVy
blR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Qb2ludGVyLCB1aW50
MzJfdCBieXRlYwogICAgICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICJQ
ZXJmb3JtaW5nIE9TUiAiLCBjb2RlQmxvY2ssICIgLT4gIiwgb3B0aW1pemVkQ29kZUJsb2NrKTsK
IAogICAgICAgICBjb2RlQmxvY2stPm9wdGltaXplU29vbigpOwotICAgICAgICBjb2RlQmxvY2st
PnVubGlua2VkQ29kZUJsb2NrKCktPnNldERpZE9wdGltaXplKFRydWVUcmlTdGF0ZSk7CisgICAg
ICAgIGNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+c2V0RGlkT3B0aW1pemUoVHJpU3Rh
dGU6OlRydWUpOwogICAgICAgICB2b2lkKiB0YXJnZXRQQyA9IHZtLmdldENUSVN0dWIoREZHOjpv
c3JFbnRyeVRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICAg
ICAgdGFyZ2V0UEMgPSByZXRhZ0NvZGVQdHIodGFyZ2V0UEMsIEpJVFRodW5rUHRyVGFnLCBiaXR3
aXNlX2Nhc3Q8UHRyVGFnPihjYWxsRnJhbWUpKTsKICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3Vs
dCh0YXJnZXRQQywgZGF0YUJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DYWNoZWRUeXBlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DYWNoZWRUeXBlcy5jcHAKaW5kZXggZDExNTcxZmViYTJhZWZmYjJmMmFlODVjNWQ4YmY0MmZi
Mjk5NDc3Zi4uMWY5Zjk0YTRkYjY1M2RlNjBjZjYzMWIwYjQyYjMwNTdlOGYwYmZiZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FjaGVkVHlwZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFR5cGVzLmNwcApAQCAtMjA2MCw3
ICsyMDYwLDcgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZENvZGVCbG9jazo6VW5saW5rZWRDb2Rl
QmxvY2soRGVjb2RlciYgZGVjb2RlciwgU3RydWN0dXJlKgogICAgICwgbV9ldmFsQ29udGV4dFR5
cGUoY2FjaGVkQ29kZUJsb2NrLmV2YWxDb250ZXh0VHlwZSgpKQogICAgICwgbV9jb2RlVHlwZShj
YWNoZWRDb2RlQmxvY2suY29kZVR5cGUoKSkKIAotICAgICwgbV9kaWRPcHRpbWl6ZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTWl4ZWRUcmlTdGF0ZSkpCisgICAgLCBtX2RpZE9wdGltaXplKHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkpCiAgICAgLCBtX2FnZSgw
KQogICAgICwgbV9oYXNDaGVja3BvaW50cyhjYWNoZWRDb2RlQmxvY2suaGFzQ2hlY2twb2ludHMo
KSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGVmaW5lUHJv
cGVydHlBdHRyaWJ1dGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQ
cm9wZXJ0eUF0dHJpYnV0ZXMuaAppbmRleCAzNTAyYWEyZTk1MjE3YzIzMTFiNmMwOWIzNGFjNjJh
ZWUzM2U0MTgyLi5jMGJjNzNlMDdhMTU0NzA3ODJlODJkODcwMDgzNjg3YmIwYzIzNWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0eUF0dHJp
YnV0ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EZWZpbmVQcm9wZXJ0
eUF0dHJpYnV0ZXMuaApAQCAtMzIsOSArMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
RGVmaW5lUHJvcGVydHlBdHRyaWJ1dGVzIHsKIHB1YmxpYzoKLSAgICBzdGF0aWNfYXNzZXJ0KEZh
bHNlVHJpU3RhdGUgPT0gMCwgIkZhbHNlVHJpU3RhdGUgaXMgMC4iKTsKLSAgICBzdGF0aWNfYXNz
ZXJ0KFRydWVUcmlTdGF0ZSA9PSAxLCAiVHJ1ZVRyaVN0YXRlIGlzIDEuIik7Ci0gICAgc3RhdGlj
X2Fzc2VydChNaXhlZFRyaVN0YXRlID09IDIsICJNaXhlZFRyaVN0YXRlIGlzIDIuIik7CisgICAg
c3RhdGljX2Fzc2VydCghc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkZhbHNlKSwgIlRy
aVN0YXRlOjpGYWxzZSBpcyAwLiIpOworICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWlu
dDhfdD4oVHJpU3RhdGU6OlRydWUpID09IDEsICJUcmlTdGF0ZTo6VHJ1ZSBpcyAxLiIpOworICAg
IHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGUpID09IDIsICJUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSBpcyAyLiIpOwogCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBDb25maWd1cmFibGVTaGlmdCA9IDA7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciB1bnNpZ25lZCBFbnVtZXJhYmxlU2hpZnQgPSAyOwpAQCAtNDUsMTIgKzQ1LDEyIEBA
IHB1YmxpYzoKIAogICAgIERlZmluZVByb3BlcnR5QXR0cmlidXRlcygpCiAgICAgICAgIDogbV9h
dHRyaWJ1dGVzKAotICAgICAgICAgICAgKE1peGVkVHJpU3RhdGUgPDwgQ29uZmlndXJhYmxlU2hp
ZnQpCi0gICAgICAgICAgICB8IChNaXhlZFRyaVN0YXRlIDw8IEVudW1lcmFibGVTaGlmdCkKLSAg
ICAgICAgICAgIHwgKE1peGVkVHJpU3RhdGUgPDwgV3JpdGFibGVTaGlmdCkKLSAgICAgICAgICAg
IHwgKDAgPDwgVmFsdWVTaGlmdCkKLSAgICAgICAgICAgIHwgKDAgPDwgR2V0U2hpZnQpCi0gICAg
ICAgICAgICB8ICgwIDw8IFNldFNoaWZ0KSkKKyAgICAgICAgICAgIChzdGF0aWNfY2FzdDx1aW50
OF90PihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkgPDwgQ29uZmlndXJhYmxlU2hpZnQpCisgICAg
ICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkg
PDwgRW51bWVyYWJsZVNoaWZ0KQorICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dWludDhfdD4o
VHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpIDw8IFdyaXRhYmxlU2hpZnQpCisgICAgICAgICAgICB8
IChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6RmFsc2UpIDw8IFZhbHVlU2hpZnQpCisg
ICAgICAgICAgICB8IChzdGF0aWNfY2FzdDx1aW50OF90PihUcmlTdGF0ZTo6RmFsc2UpIDw8IEdl
dFNoaWZ0KQorICAgICAgICAgICAgfCAoc3RhdGljX2Nhc3Q8dWludDhfdD4oVHJpU3RhdGU6OkZh
bHNlKSA8PCBTZXRTaGlmdCkpCiAgICAgewogICAgIH0KIApAQCAtOTYsNjAgKzk2LDYwIEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaGFzV3JpdGFibGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIGV4dHJhY3RUcmlTdGF0ZShXcml0YWJsZVNoaWZ0KSAhPSBNaXhlZFRyaVN0YXRlOworICAg
ICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdyaXRhYmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJ
bmRldGVybWluYXRlOwogICAgIH0KIAogICAgIE9wdGlvbmFsPGJvb2w+IHdyaXRhYmxlKCkgY29u
c3QKICAgICB7CiAgICAgICAgIGlmICghaGFzV3JpdGFibGUoKSkKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0gICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUoV3JpdGFibGVT
aGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKFdy
aXRhYmxlU2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAogICAgIGJvb2wgaGFzQ29u
ZmlndXJhYmxlKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBleHRyYWN0VHJpU3RhdGUo
Q29uZmlndXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBleHRy
YWN0VHJpU3RhdGUoQ29uZmlndXJhYmxlU2hpZnQpICE9IFRyaVN0YXRlOjpJbmRldGVybWluYXRl
OwogICAgIH0KIAogICAgIE9wdGlvbmFsPGJvb2w+IGNvbmZpZ3VyYWJsZSgpIGNvbnN0CiAgICAg
ewogICAgICAgICBpZiAoIWhhc0NvbmZpZ3VyYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShDb25maWd1cmFibGVT
aGlmdCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gZXh0cmFjdFRyaVN0YXRlKENv
bmZpZ3VyYWJsZVNoaWZ0KSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKICAgICB9CiAKICAgICBib29sIGhh
c0VudW1lcmFibGUoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0
ZShFbnVtZXJhYmxlU2hpZnQpICE9IE1peGVkVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBleHRy
YWN0VHJpU3RhdGUoRW51bWVyYWJsZVNoaWZ0KSAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsK
ICAgICB9CiAKICAgICBPcHRpb25hbDxib29sPiBlbnVtZXJhYmxlKCkgY29uc3QKICAgICB7CiAg
ICAgICAgIGlmICghaGFzRW51bWVyYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKLSAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxlU2hpZnQpID09
IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RUcmlTdGF0ZShFbnVtZXJhYmxl
U2hpZnQpID09IFRyaVN0YXRlOjpUcnVlOwogICAgIH0KIAogICAgIHZvaWQgc2V0V3JpdGFibGUo
Ym9vbCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGZpbGxXaXRoVHJpU3RhdGUodmFsdWUgPyBUcnVl
VHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlLCBXcml0YWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdp
dGhUcmlTdGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBXcml0
YWJsZVNoaWZ0KTsKICAgICB9CiAKICAgICB2b2lkIHNldENvbmZpZ3VyYWJsZShib29sIHZhbHVl
KQogICAgIHsKLSAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2YWx1ZSA/IFRydWVUcmlTdGF0ZSA6
IEZhbHNlVHJpU3RhdGUsIENvbmZpZ3VyYWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlT
dGF0ZSh2YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBDb25maWd1cmFi
bGVTaGlmdCk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRFbnVtZXJhYmxlKGJvb2wgdmFsdWUpCiAg
ICAgewotICAgICAgICBmaWxsV2l0aFRyaVN0YXRlKHZhbHVlID8gVHJ1ZVRyaVN0YXRlIDogRmFs
c2VUcmlTdGF0ZSwgRW51bWVyYWJsZVNoaWZ0KTsKKyAgICAgICAgZmlsbFdpdGhUcmlTdGF0ZSh2
YWx1ZSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlLCBFbnVtZXJhYmxlU2hpZnQp
OwogICAgIH0KIAogcHJpdmF0ZToKICAgICB2b2lkIGZpbGxXaXRoVHJpU3RhdGUoVHJpU3RhdGUg
c3RhdGUsIHVuc2lnbmVkIHNoaWZ0KQogICAgIHsKICAgICAgICAgdW5zaWduZWQgbWFzayA9IDBi
MTEgPDwgc2hpZnQ7Ci0gICAgICAgIG1fYXR0cmlidXRlcyA9IChtX2F0dHJpYnV0ZXMgJiB+bWFz
aykgfCAoc3RhdGUgPDwgc2hpZnQpOworICAgICAgICBtX2F0dHJpYnV0ZXMgPSAobV9hdHRyaWJ1
dGVzICYgfm1hc2spIHwgKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHN0YXRlKSA8PCBzaGlmdCk7CiAg
ICAgfQogCiAgICAgVHJpU3RhdGUgZXh0cmFjdFRyaVN0YXRlKHVuc2lnbmVkIHNoaWZ0KSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5k
ZXggYTExMDdkZTA3MDVhZjEzYTY1Yzg2NDQ2MGI2YWRiMjRkNDMzYWY3Zi4uOGRlMDAzY2IwN2Mw
OWY5NzEzODJmMzRkMjc0ZGYwZGZkZTEwZGE1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBAIC0yMDEsOCArMjAxLDggQEAgdm9pZCBJbnRs
Q29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIGxvY2EKIAogICAgIFRyaVN0YXRlIG51bWVyaWMgPSBpbnRsQm9vbGVhbk9wdGlv
bihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPm51bWVyaWMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgaWYgKG51bWVyaWMgIT0g
TWl4ZWRUcmlTdGF0ZSkKLSAgICAgICAgb3B0LmFkZCgia24iX3MsIG51bWVyaWMgPT0gVHJ1ZVRy
aVN0YXRlID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgIGlmIChudW1lcmljICE9IFRyaVN0
YXRlOjpJbmRldGVybWluYXRlKQorICAgICAgICBvcHQuYWRkKCJrbiJfcywgbnVtZXJpYyA9PSBU
cmlTdGF0ZTo6VHJ1ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zKTsKIAogICAgIFN0cmluZyBjYXNl
Rmlyc3RPcHRpb24gPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0u
cHJvcGVydHlOYW1lcy0+Y2FzZUZpcnN0LCB7ICJ1cHBlciIsICJsb3dlciIsICJmYWxzZSIgfSwg
ImNhc2VGaXJzdCBtdXN0IGJlIGVpdGhlciBcInVwcGVyXCIsIFwibG93ZXJcIiwgb3IgXCJmYWxz
ZVwiIiwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
QEAgLTI0Myw3ICsyNDMsNyBAQCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogCiAgICAgVHJpU3Rh
dGUgaWdub3JlUHVuY3R1YXRpb24gPSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmlnbm9yZVB1bmN0dWF0aW9uKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwotICAgIG1faWdub3JlUHVuY3R1YXRpb24gPSAo
aWdub3JlUHVuY3R1YXRpb24gPT0gVHJ1ZVRyaVN0YXRlKTsKKyAgICBtX2lnbm9yZVB1bmN0dWF0
aW9uID0gKGlnbm9yZVB1bmN0dWF0aW9uID09IFRyaVN0YXRlOjpUcnVlKTsKIAogICAgIFVFcnJv
ckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1
ZV9wdHI8VUNvbGxhdG9yLCBVQ29sbGF0b3JEZWxldGVyPih1Y29sX29wZW4obV9sb2NhbGUudXRm
OCgpLmRhdGEoKSwgJnN0YXR1cykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggMDIzNThjODg3OWZlYTk0OTUzNmJm
MGRlZDlkMWZkY2RlYmM0Njg3ZS4uNzY2MmZhNjg5ZTRmOTk3YzlhZDdjZjk2ZjA5NmM1ZGY3NDMw
MzA1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwCkBAIC00NjgsNyArNDY4LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogCiAgICAgVHJpU3RhdGUgaG91cjEyID0gaW50bEJvb2xlYW5PcHRpb24oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5ob3VyMTIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHZvaWQoKSk7Ci0gICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IChob3Vy
MTIgPT0gTWl4ZWRUcmlTdGF0ZSk7CisgICAgYm9vbCBpc0hvdXIxMlVuZGVmaW5lZCA9IChob3Vy
MTIgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGUpOwogCiAgICAgU3RyaW5nIGhvdXJDeWNsZSA9
IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVz
LT5ob3VyQ3ljbGUsIHsgImgxMSIsICJoMTIiLCAiaDIzIiwgImgyNCIgfSwgImhvdXJDeWNsZSBt
dXN0IGJlIFwiaDExXCIsIFwiaDEyXCIsIFwiaDIzXCIsIG9yIFwiaDI0XCIiLCBudWxscHRyKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwpAQCAtNTgyLDE0ICs1ODIs
MTQgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlmIChob3VyID09ICIyLWRpZ2l0Iikg
ewogICAgICAgICBpZiAoaXNIb3VyMTJVbmRlZmluZWQgJiYgbV9ob3VyQ3ljbGUuaXNOdWxsKCkp
CiAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiamoiKTsKLSAgICAg
ICAgZWxzZSBpZiAoaG91cjEyID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgZWxzZSBpZiAoaG91
cjEyID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVu
ZExpdGVyYWwoImhoIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRl
ci5hcHBlbmRMaXRlcmFsKCJISCIpOwogICAgIH0gZWxzZSBpZiAoaG91ciA9PSAibnVtZXJpYyIp
IHsKICAgICAgICAgaWYgKGlzSG91cjEyVW5kZWZpbmVkICYmIG1faG91ckN5Y2xlLmlzTnVsbCgp
KQogICAgICAgICAgICAgc2tlbGV0b25CdWlsZGVyLmFwcGVuZCgnaicpOwotICAgICAgICBlbHNl
IGlmIChob3VyMTIgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICBlbHNlIGlmIChob3VyMTIgPT0g
VHJpU3RhdGU6OlRydWUpCiAgICAgICAgICAgICBza2VsZXRvbkJ1aWxkZXIuYXBwZW5kKCdoJyk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNrZWxldG9uQnVpbGRlci5hcHBlbmQoJ0gnKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHAKaW5kZXggYTZlYTFmNTE1OGUyYTdhZDdkZWQwMjBkMWJmOGE4NWQ4ZGFlYmE3YS4uOTI1ZmFj
MDJiYzc2MTA5OGJhZTUwMTA2NGQ1ZjZiYjhkM2I4NTQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKQEAgLTI4Myw3ICsyODMs
NyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAgICAgVHJpU3RhdGUgdXNlR3JvdXBpbmcg
PSBpbnRsQm9vbGVhbk9wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ1c2VHcm91cGluZyIpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB2b2lkKCkpOwotICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBGYWxzZVRy
aVN0YXRlOworICAgIG1fdXNlR3JvdXBpbmcgPSB1c2VHcm91cGluZyAhPSBUcmlTdGF0ZTo6RmFs
c2U7CiAKICAgICBVTnVtYmVyRm9ybWF0U3R5bGUgc3R5bGUgPSBVTlVNX0RFRkFVTFQ7CiAgICAg
c3dpdGNoIChtX3N0eWxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwCmluZGV4IGYyM2Q5ZWQ5NTRkOGY5OTAxYzZjNjVkOTA4ZTg3Y2MwYzU2N2JlMGIu
LjJhZDdlZTZiYTkyN2MxZWY0MzRlOTRkYjJmMDI0NzNkNmZlNjFmN2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0yMDksMTYgKzIwOSwxNiBA
QCBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkluZGV0ZXJtaW5h
dGU7CiAKICAgICBKU09iamVjdCogb3B0cyA9IG9wdGlvbnMudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBNaXhlZFRyaVN0YXRlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSk7CiAKICAg
ICBKU1ZhbHVlIHZhbHVlID0gb3B0cy0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHkpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE1peGVkVHJpU3RhdGUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIFRyaVN0YXRlOjpJbmRldGVybWluYXRlKTsKIAogICAgIGlmICh2
YWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAg
ICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogCiAgICAgcmV0dXJuIHRyaVN0YXRl
KHZhbHVlLnRvQm9vbGVhbihnbG9iYWxPYmplY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGIwOTExNjIyNDNiMGMw
NDA1MTk4YWFiNzNhZGQwYzY2MTBlMjIwYTAuLmEwZWIwMTMwNWMyMzIzNzUzODJhYTBhYzliNDdl
NDhhOWYxZjUwYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWVJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZUlubGluZXMuaApAQCAtMTI2Miw3ICsxMjYyLDcgQEAgaW5saW5lIFRyaVN0YXRlIEpT
VmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogICAgICAgICAg
ICAgY29uc3QgU3RyaW5nSW1wbCogdjFTdHJpbmcgPSBhc1N0cmluZyh2MSktPnRyeUdldFZhbHVl
SW1wbCgpOwogICAgICAgICAgICAgY29uc3QgU3RyaW5nSW1wbCogdjJTdHJpbmcgPSBhc1N0cmlu
Zyh2MiktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgICAgICAgICAgaWYgKCF2MVN0cmluZyB8fCAh
djJTdHJpbmcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE1peGVkVHJpU3RhdGU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwogICAgICAgICAgICAgcmV0
dXJuIHRyaVN0YXRlKFdURjo6ZXF1YWwoKnYxU3RyaW5nLCAqdjJTdHJpbmcpKTsKICAgICAgICAg
fQogICAgICAgICBpZiAodjEuYXNDZWxsKCktPmlzSGVhcEJpZ0ludCgpICYmIHYyLmFzQ2VsbCgp
LT5pc0hlYXBCaWdJbnQoKSkKQEAgLTEyNzUsMTYgKzEyNzUsMTYgQEAgaW5saW5lIFRyaVN0YXRl
IEpTVmFsdWU6OnB1cmVTdHJpY3RFcXVhbChKU1ZhbHVlIHYxLCBKU1ZhbHVlIHYyKQogaW5saW5l
IFRyaVN0YXRlIEpTVmFsdWU6OnB1cmVUb0Jvb2xlYW4oKSBjb25zdAogewogICAgIGlmIChpc0lu
dDMyKCkpCi0gICAgICAgIHJldHVybiBhc0ludDMyKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRy
aVN0YXRlOworICAgICAgICByZXR1cm4gYXNJbnQzMigpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlT
dGF0ZTo6RmFsc2U7CiAgICAgaWYgKGlzRG91YmxlKCkpCi0gICAgICAgIHJldHVybiBpc05vdFpl
cm9BbmRPcmRlcmVkKGFzRG91YmxlKCkpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsg
Ly8gZmFsc2UgZm9yIE5hTgorICAgICAgICByZXR1cm4gaXNOb3RaZXJvQW5kT3JkZXJlZChhc0Rv
dWJsZSgpKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOyAvLyBmYWxzZSBmb3Ig
TmFOCiAgICAgaWYgKGlzQ2VsbCgpKQogICAgICAgICByZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jv
b2xlYW4oKTsKICNpZiBVU0UoQklHSU5UMzIpCiAgICAgaWYgKGlzQmlnSW50MzIoKSkKLSAgICAg
ICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0
ZTsKKyAgICAgICAgcmV0dXJuIGJpZ0ludDMyQXNJbnQzMigpID8gVHJpU3RhdGU6OlRydWUgOiBU
cmlTdGF0ZTo6RmFsc2U7CiAjZW5kaWYKLSAgICByZXR1cm4gaXNUcnVlKCkgPyBUcnVlVHJpU3Rh
dGUgOiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBpc1RydWUoKSA/IFRyaVN0YXRlOjpUcnVl
IDogVHJpU3RhdGU6OkZhbHNlOwogfQogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6cmVx
dWlyZU9iamVjdENvZXJjaWJsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCmluZGV4IDBk
ZWEyNzU2ZTFlYzNkYjczODMxNDQwNjEyMzEwNjI3ZjBmZjhjYTMuLmU5OTdhZDAwYWU0YWVhNWU2
MTBiNDc4OGFmMGY3MzBiMDlmNjcxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NlbGxJbmxpbmVzLmgKQEAgLTMzMCwxMiArMzMwLDEyIEBAIGlubGluZSBib29sIEpT
Q2VsbDo6dG9Cb29sZWFuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiBpbmxp
bmUgVHJpU3RhdGUgSlNDZWxsOjpwdXJlVG9Cb29sZWFuKCkgY29uc3QKIHsKICAgICBpZiAoaXNT
dHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhp
cyktPnRvQm9vbGVhbigpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEpTU3RyaW5nKj4odGhpcyktPnRvQm9vbGVhbigpID8g
VHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgaWYgKGlzSGVhcEJpZ0ludCgp
KQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9C
b29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8Y29uc3QgSlNCaWdJbnQqPih0aGlzKS0+dG9Cb29sZWFuKCkgPyBUcmlTdGF0
ZTo6VHJ1ZSA6IFRyaVN0YXRlOjpGYWxzZTsKICAgICBpZiAoaXNTeW1ib2woKSkKLSAgICAgICAg
cmV0dXJuIFRydWVUcmlTdGF0ZTsKLSAgICByZXR1cm4gTWl4ZWRUcmlTdGF0ZTsKKyAgICAgICAg
cmV0dXJuIFRyaVN0YXRlOjpUcnVlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0
ZTsKIH0KIAogaW5saW5lIHZvaWQgSlNDZWxsTG9jazo6bG9jaygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9UcmlTdGF0ZS5oIGIvU291cmNlL1dURi93dGYvVHJpU3RhdGUuaAppbmRleCA1
YWU3ODVkM2I5ZDgwZDgzYWEwNzRmZTgyMWNkMDY4NTdkNjYxY2EwLi43ZTUyZTdiMzYxOWU3MzUy
YjVlNGY1ZjdkOTRlOWJlMTk5ZmM1NDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UcmlT
dGF0ZS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1RyaVN0YXRlLmgKQEAgLTI3LDEwICsyNywxMCBA
QAogCiBuYW1lc3BhY2UgV1RGIHsKIAotZW51bSBUcmlTdGF0ZSA6IHVpbnQ4X3QgewotICAgIEZh
bHNlVHJpU3RhdGUsCi0gICAgVHJ1ZVRyaVN0YXRlLAotICAgIE1peGVkVHJpU3RhdGUKK2VudW0g
Y2xhc3MgVHJpU3RhdGUgOiB1aW50OF90IHsKKyAgICBGYWxzZSwKKyAgICBUcnVlLAorICAgIElu
ZGV0ZXJtaW5hdGUKIH07CiAKIGlubGluZSBUcmlTdGF0ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4p
CkBAIC00MSw3ICs0MSw0IEBAIGlubGluZSBUcmlTdGF0ZSB0cmlTdGF0ZShib29sIGJvb2xlYW4p
CiB9CiAKIHVzaW5nIFdURjo6VHJpU3RhdGU7Ci11c2luZyBXVEY6OkZhbHNlVHJpU3RhdGU7Ci11
c2luZyBXVEY6OlRydWVUcmlTdGF0ZTsKLXVzaW5nIFdURjo6TWl4ZWRUcmlTdGF0ZTsKIHVzaW5n
IFdURjo6dHJpU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBjNmQ5NThiMjVkMWJm
NTM2YzI3NGI3ZTUyZjljNTNiNWFmMmI1ZjBjLi5hMzViZWY1NTA0YzY1YTgzM2NkNTgyMzFiYzZk
ZGE5MWEzODg1ODljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU1NTgsMTIgKzU1NTgs
MTIgQEAgYm9vbCBEb2N1bWVudDo6cXVlcnlDb21tYW5kRW5hYmxlZChjb25zdCBTdHJpbmcmIGNv
bW1hbmROYW1lKQogCiBib29sIERvY3VtZW50OjpxdWVyeUNvbW1hbmRJbmRldGVybShjb25zdCBT
dHJpbmcmIGNvbW1hbmROYW1lKQogewotICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmRO
YW1lKS5zdGF0ZSgpID09IE1peGVkVHJpU3RhdGU7CisgICAgcmV0dXJuIGNvbW1hbmQodGhpcywg
Y29tbWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiB9CiAKIGJv
b2wgRG9jdW1lbnQ6OnF1ZXJ5Q29tbWFuZFN0YXRlKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUp
CiB7Ci0gICAgcmV0dXJuIGNvbW1hbmQodGhpcywgY29tbWFuZE5hbWUpLnN0YXRlKCkgPT0gVHJ1
ZVRyaVN0YXRlOworICAgIHJldHVybiBjb21tYW5kKHRoaXMsIGNvbW1hbmROYW1lKS5zdGF0ZSgp
ID09IFRyaVN0YXRlOjpUcnVlOwogfQogCiBib29sIERvY3VtZW50OjpxdWVyeUNvbW1hbmRTdXBw
b3J0ZWQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcAppbmRleCAyZjYzNTRhNWQyZjMwYTM2YjkwM2YxMGI5MzczZmZhMjNhMGM4
NmM4Li4wMzAwMTViOTcyZmY5Y2E4N2QxNzBiZjkxYWMxZmNkMjY4NmJmYjI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC03NTIsNyArNzUyLDcgQEAgc3RhdGlj
IGNvbnN0IENTU1Byb3BlcnR5SUQgdGV4dE9ubHlQcm9wZXJ0aWVzW10gPSB7CiBUcmlTdGF0ZSBF
ZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlKSBjb25zdAog
ewogICAgIGlmICghc3R5bGUgfHwgIXN0eWxlLT5tX211dGFibGVTdHlsZSkKLSAgICAgICAgcmV0
dXJuIEZhbHNlVHJpU3RhdGU7CisgICAgICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7CiAgICAg
cmV0dXJuIHRyaVN0YXRlT2ZTdHlsZSgqc3R5bGUtPm1fbXV0YWJsZVN0eWxlLCBEb05vdElnbm9y
ZVRleHRPbmx5UHJvcGVydGllcyk7CiB9CiAKQEAgLTc2MCw3ICs3NjAsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoVCYgc3R5
bGVUb0NvbXBhcmUsIFNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyBzaG91bGRJZ25vcmVU
ZXh0T25seVByb3BlcnRpZXMpIGNvbnN0CiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKLSAg
ICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVl
OwogCiAgICAgUmVmUHRyPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IGRpZmZlcmVuY2UgPSBnZXRQ
cm9wZXJ0aWVzTm90SW4oKm1fbXV0YWJsZVN0eWxlLCBzdHlsZVRvQ29tcGFyZSk7CiAKQEAgLTc2
OCwyMiArNzY4LDIyIEBAIFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKFQm
IHN0eWxlVG9Db21wYXJlLCBTaG91bGRJZ25vcmVUZXh0T25seVByCiAgICAgICAgIGRpZmZlcmVu
Y2UtPnJlbW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIFdURl9BUlJBWV9M
RU5HVEgodGV4dE9ubHlQcm9wZXJ0aWVzKSk7CiAKICAgICBpZiAoZGlmZmVyZW5jZS0+aXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3Rh
dGU6OlRydWU7CiAgICAgaWYgKGRpZmZlcmVuY2UtPnByb3BlcnR5Q291bnQoKSA9PSBtX211dGFi
bGVTdHlsZS0+cHJvcGVydHlDb3VudCgpKQotICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsK
KyAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIAotICAgIHJldHVybiBNaXhlZFRyaVN0
YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZTsKIH0KIAogVHJpU3RhdGUg
RWRpdGluZ1N0eWxlOjp0cmlTdGF0ZU9mU3R5bGUoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2Vs
ZWN0aW9uKSBjb25zdAogewogICAgIGlmICghc2VsZWN0aW9uLmlzQ2FyZXRPclJhbmdlKCkpCi0g
ICAgICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgICAgICByZXR1cm4gVHJpU3RhdGU6OkZh
bHNlOwogCiAgICAgaWYgKHNlbGVjdGlvbi5pc0NhcmV0KCkpCiAgICAgICAgIHJldHVybiB0cmlT
dGF0ZU9mU3R5bGUoRWRpdGluZ1N0eWxlOjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9u
KS5nZXQoKSk7CiAKLSAgICBUcmlTdGF0ZSBzdGF0ZSA9IEZhbHNlVHJpU3RhdGU7CisgICAgVHJp
U3RhdGUgc3RhdGUgPSBUcmlTdGF0ZTo6RmFsc2U7CiAgICAgYm9vbCBub2RlSXNTdGFydCA9IHRy
dWU7CiAgICAgZm9yIChOb2RlKiBub2RlID0gc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5v
ZGUoKTsgbm9kZTsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUpKSB7CiAgICAgICAg
IGlmIChub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPmhhc0VkaXRhYmxlU3R5bGUoKSkgewpAQCAt
NzkzLDcgKzc5Myw3IEBAIFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikgY29uc3QKICAgICAgICAgICAgICAgICBz
dGF0ZSA9IG5vZGVTdGF0ZTsKICAgICAgICAgICAgICAgICBub2RlSXNTdGFydCA9IGZhbHNlOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSAhPSBub2RlU3RhdGUgJiYgbm9kZS0+aXNUZXh0
Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUgPSBNaXhlZFRyaVN0YXRlOworICAgICAg
ICAgICAgICAgIHN0YXRlID0gVHJpU3RhdGU6OkluZGV0ZXJtaW5hdGU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0ODIsNyArMTQ4Miw3IEBA
IGludCBFZGl0aW5nU3R5bGU6OmxlZ2FjeUZvbnRTaXplKERvY3VtZW50JiBkb2N1bWVudCkgY29u
c3QKIAogYm9vbCBFZGl0aW5nU3R5bGU6Omhhc1N0eWxlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVh
dGUocHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0ZU9mU3R5bGUodGhpcykgIT0gRmFsc2VUcmlT
dGF0ZTsKKyAgICByZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUp
LT50cmlTdGF0ZU9mU3R5bGUodGhpcykgIT0gVHJpU3RhdGU6OkZhbHNlOwogfQogCiBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wgc2hvdWxkVXNlQmFja2dyb3VuZENvbG9y
SW5FZmZlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNjNjY2UzOTE4MTY5Y2U0
NmEzMzk4YTU4MGEwMTIxNWYyMDczZmYyNC4uODg4ZGE5MjVhNWY4YTNjYjg3NWFkNDA5MDUxNjlh
OTMxODVhMzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtODE0LDMwICs4MTQs
MzAgQEAgVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKSBjb25z
dAogewogICAgIGlmIChtX2RvY3VtZW50LnNlbGVjdGlvbigpLmlzQ2FyZXQoKSkgewogICAgICAg
ICBpZiAoZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb24oKS5zdGFydCgpLCB1bFRhZykpCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZVRyaVN0YXRl
OworICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIH0gZWxzZSBpZiAobV9k
b2N1bWVudC5zZWxlY3Rpb24oKS5pc1JhbmdlKCkpIHsKICAgICAgICAgYXV0byogc3RhcnROb2Rl
ID0gZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5zdGFydCgpLCB1bFRhZyk7CiAgICAgICAgIGF1dG8qIGVuZE5vZGUgPSBlbmNsb3NpbmdF
bGVtZW50V2l0aFRhZyhtX2RvY3VtZW50LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpLCB1
bFRhZyk7CiAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgZW5kTm9kZSAmJiBzdGFydE5vZGUgPT0g
ZW5kTm9kZSkKLSAgICAgICAgICAgIHJldHVybiBUcnVlVHJpU3RhdGU7CisgICAgICAgICAgICBy
ZXR1cm4gVHJpU3RhdGU6OlRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7
CisgICAgcmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIH0KIAogVHJpU3RhdGUgRWRpdG9yOjpzZWxl
Y3Rpb25PcmRlcmVkTGlzdFN0YXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9kb2N1bWVudC5zZWxl
Y3Rpb24oKS5pc0NhcmV0KCkpIHsKICAgICAgICAgaWYgKGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFn
KG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgb2xUYWcpKQotICAg
ICAgICAgICAgcmV0dXJuIFRydWVUcmlTdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiBUcmlTdGF0
ZTo6VHJ1ZTsKICAgICB9IGVsc2UgaWYgKG1fZG9jdW1lbnQuc2VsZWN0aW9uKCkuaXNSYW5nZSgp
KSB7CiAgICAgICAgIGF1dG8qIHN0YXJ0Tm9kZSA9IGVuY2xvc2luZ0VsZW1lbnRXaXRoVGFnKG1f
ZG9jdW1lbnQuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgb2xUYWcpOwogICAgICAg
ICBhdXRvKiBlbmROb2RlID0gZW5jbG9zaW5nRWxlbWVudFdpdGhUYWcobV9kb2N1bWVudC5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKS5lbmQoKSwgb2xUYWcpOwogICAgICAgICBpZiAoc3RhcnROb2Rl
ICYmIGVuZE5vZGUgJiYgc3RhcnROb2RlID09IGVuZE5vZGUpCi0gICAgICAgICAgICByZXR1cm4g
VHJ1ZVRyaVN0YXRlOworICAgICAgICAgICAgcmV0dXJuIFRyaVN0YXRlOjpUcnVlOwogICAgIH0K
IAotICAgIHJldHVybiBGYWxzZVRyaVN0YXRlOworICAgIHJldHVybiBUcmlTdGF0ZTo6RmFsc2U7
CiB9CiAKIFJlZlB0cjxOb2RlPiBFZGl0b3I6Omluc2VydE9yZGVyZWRMaXN0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IGUxZmIzY2QwNzkwM2ZlYzNjNzhl
MjU4Yjc3MjUxNjhmNDExOWEyMTMuLjkzYWU3N2RmZDAyNDJiYTFlYmFiN2JhZjdjNWQ1NjVmN2Vh
Njc3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTIx
LDcgKzEyMSw3IEBAIHN0YXRpYyBib29sIGlzU3R5bGVQcmVzZW50KEVkaXRvciYgZWRpdG9yLCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqCiAgICAgLy8gV2luZG93czogcHJl
c2VudCB0aHJvdWdob3V0IHRoZSBzZWxlY3Rpb24KICAgICBpZiAoZWRpdG9yLmJlaGF2aW9yKCku
c2hvdWxkVG9nZ2xlU3R5bGVCYXNlZE9uU3RhcnRPZlNlbGVjdGlvbigpKQogICAgICAgICByZXR1
cm4gZWRpdG9yLnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgb25WYWx1ZSk7Ci0g
ICAgcmV0dXJuIGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShwcm9wZXJ0eUlELCBvblZhbHVlKSA9
PSBUcnVlVHJpU3RhdGU7CisgICAgcmV0dXJuIGVkaXRvci5zZWxlY3Rpb25IYXNTdHlsZShwcm9w
ZXJ0eUlELCBvblZhbHVlKSA9PSBUcmlTdGF0ZTo6VHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhl
Y3V0ZUFwcGx5U3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwg
RWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
JiBwcm9wZXJ0eVZhbHVlKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNl
bGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUmIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVs
YXJpCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHlsZShGcmFtZSYgZnJhbWUsIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogZGVzaXJlZFZhbHVlKQogewogICAgIGlmIChmcmFt
ZS5lZGl0b3IoKS5iZWhhdmlvcigpLnNob3VsZFRvZ2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxl
Y3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lLmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFz
U3R5bGUocHJvcGVydHlJRCwgZGVzaXJlZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJp
U3RhdGU7CisgICAgICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5zZWxlY3Rpb25TdGFydEhhc1N0
eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSkgPyBUcmlTdGF0ZTo6VHJ1ZSA6IFRyaVN0YXRl
OjpGYWxzZTsKICAgICByZXR1cm4gZnJhbWUuZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUocHJv
cGVydHlJRCwgZGVzaXJlZFZhbHVlKTsKIH0KIApAQCAtMjA3LDggKzIwNyw4IEBAIHN0YXRpYyBU
cmlTdGF0ZSBzdGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lJiBmcmFtZSwgV3JpdGluZ0Rp
cmVjdGlvbiBkaXJlY3RpCiAgICAgYm9vbCBoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5nczsK
ICAgICBXcml0aW5nRGlyZWN0aW9uIHNlbGVjdGlvbkRpcmVjdGlvbiA9IEVkaXRpbmdTdHlsZTo6
dGV4dERpcmVjdGlvbkZvclNlbGVjdGlvbihmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKSwK
ICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkudHlwaW5nU3R5bGUoKSwgaGFzTmVzdGVkT3JNdWx0
aXBsZUVtYmVkZGluZ3MpOwotICAgIC8vIEZYSU1FOiBXZSBzaG91bGQgYmUgcmV0dXJuaW5nIE1p
eGVkVHJpU3RhdGUgd2hlbiBzZWxlY3Rpb25EaXJlY3Rpb24gPT0gZGlyZWN0aW9uICYmIGhhc05l
c3RlZE9yTXVsdGlwbGVFbWJlZGRpbmdzCi0gICAgcmV0dXJuIChzZWxlY3Rpb25EaXJlY3Rpb24g
PT0gZGlyZWN0aW9uICYmICFoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5ncykgPyBUcnVlVHJp
U3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIC8vIEZYSU1FOiBXZSBzaG91bGQgYmUgcmV0dXJu
aW5nIFRyaVN0YXRlOjpJbmRldGVybWluYXRlIHdoZW4gc2VsZWN0aW9uRGlyZWN0aW9uID09IGRp
cmVjdGlvbiAmJiBoYXNOZXN0ZWRPck11bHRpcGxlRW1iZWRkaW5ncworICAgIHJldHVybiAoc2Vs
ZWN0aW9uRGlyZWN0aW9uID09IGRpcmVjdGlvbiAmJiAhaGFzTmVzdGVkT3JNdWx0aXBsZUVtYmVk
ZGluZ3MpID8gVHJpU3RhdGU6OlRydWUgOiBUcmlTdGF0ZTo6RmFsc2U7CiB9CiAKIHN0YXRpYyB1
bnNpZ25lZCB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKEZyYW1lJiBmcmFtZSkKQEAgLTE0MzgsNyAr
MTQzOCw3IEBAIHN0YXRpYyBib29sIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dFdpdGhFZGl0
YWJsZUltYWdlc0VuYWJsZWQoRnJhbWUmIGZyYW1lLCBFCiAKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0
ZU5vbmUoRnJhbWUmLCBFdmVudCopCiB7Ci0gICAgcmV0dXJuIEZhbHNlVHJpU3RhdGU7CisgICAg
cmV0dXJuIFRyaVN0YXRlOjpGYWxzZTsKIH0KIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlQm9sZChG
cmFtZSYgZnJhbWUsIEV2ZW50KikKQEAgLTE0NjMsNyArMTQ2Myw3IEBAIHN0YXRpYyBUcmlTdGF0
ZSBzdGF0ZVN0cmlrZXRocm91Z2goRnJhbWUmIGZyYW1lLCBFdmVudCopCiAKIHN0YXRpYyBUcmlT
dGF0ZSBzdGF0ZVN0eWxlV2l0aENTUyhGcmFtZSYgZnJhbWUsIEV2ZW50KikKIHsKLSAgICByZXR1
cm4gZnJhbWUuZWRpdG9yKCkuc2hvdWxkU3R5bGVXaXRoQ1NTKCkgPyBUcnVlVHJpU3RhdGUgOiBG
YWxzZVRyaVN0YXRlOworICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5zaG91bGRTdHlsZVdpdGhD
U1MoKSA/IFRyaVN0YXRlOjpUcnVlIDogVHJpU3RhdGU6OkZhbHNlOwogfQogCiBzdGF0aWMgVHJp
U3RhdGUgc3RhdGVTdWJzY3JpcHQoRnJhbWUmIGZyYW1lLCBFdmVudCopCkBAIC0xOTA2LDcgKzE5
MDYsNyBAQCBib29sIEVkaXRvcjo6Q29tbWFuZDo6aXNFbmFibGVkKEV2ZW50KiB0cmlnZ2VyaW5n
RXZlbnQpIGNvbnN0CiBUcmlTdGF0ZSBFZGl0b3I6OkNvbW1hbmQ6OnN0YXRlKEV2ZW50KiB0cmln
Z2VyaW5nRXZlbnQpIGNvbnN0CiB7CiAgICAgaWYgKCFpc1N1cHBvcnRlZCgpIHx8ICFtX2ZyYW1l
KQotICAgICAgICByZXR1cm4gRmFsc2VUcmlTdGF0ZTsKKyAgICAgICAgcmV0dXJuIFRyaVN0YXRl
OjpGYWxzZTsKICAgICByZXR1cm4gbV9jb21tYW5kLT5zdGF0ZSgqbV9mcmFtZSwgdHJpZ2dlcmlu
Z0V2ZW50KTsKIH0KIApAQCAtMTkxNSw3ICsxOTE1LDcgQEAgU3RyaW5nIEVkaXRvcjo6Q29tbWFu
ZDo6dmFsdWUoRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkgY29uc3QKICAgICBpZiAoIWlzU3VwcG9y
dGVkKCkgfHwgIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBpZiAobV9j
b21tYW5kLT52YWx1ZSA9PSB2YWx1ZU51bGwgJiYgbV9jb21tYW5kLT5zdGF0ZSAhPSBzdGF0ZU5v
bmUpCi0gICAgICAgIHJldHVybiBtX2NvbW1hbmQtPnN0YXRlKCptX2ZyYW1lLCB0cmlnZ2VyaW5n
RXZlbnQpID09IFRydWVUcmlTdGF0ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOworICAgICAgICBy
ZXR1cm4gbV9jb21tYW5kLT5zdGF0ZSgqbV9mcmFtZSwgdHJpZ2dlcmluZ0V2ZW50KSA9PSBUcmlT
dGF0ZTo6VHJ1ZSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOwogICAgIHJldHVybiBtX2NvbW1hbmQt
PnZhbHVlKCptX2ZyYW1lLCB0cmlnZ2VyaW5nRXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggZDI1ODBlYWFjZWU1N2M5Zjk0
MDQxYmM0Y2RkZWU0NDMzYzc4MzEyOC4uMzE5MDU0NmRhY2JkNDg5YzM2Mjg1M2M3NmZjZDA5OTJk
MjIyYzJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVy
LmNwcApAQCAtMTE3MiwyNSArMTE3MiwyNSBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6
Y2hlY2tPckVuYWJsZUlmTmVlZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAg
ICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdMZWZ0VG9SaWdodDoKICAgICAgICAgY2FzZSBDb250
ZXh0TWVudUl0ZW1UYWdSaWdodFRvTGVmdDogewogICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlv
biA9IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVmdFRvUmlnaHQgPyAibHRy
IiA6ICJydGwiOwotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2Vs
ZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRpcmVjdGlvbikgIT0gRmFsc2VU
cmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNlbGVj
dGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkaXJlY3Rpb24pICE9IFRyaVN0YXRl
OjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IHRydWU7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ1RleHREaXJl
Y3Rpb25EZWZhdWx0OiB7CiAgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZy
YW1lLT5lZGl0b3IoKS5jb21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25OYXR1cmFsIik7
Ci0gICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcnVlVHJpU3Rh
dGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGNvbW1hbmQuc3RhdGUoKSA9PSBUcmlTdGF0
ZTo6VHJ1ZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGNvbW1hbmQuaXNFbmFibGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENvbnRleHRNZW51
SXRlbVRhZ1RleHREaXJlY3Rpb25MZWZ0VG9SaWdodDogewogICAgICAgICAgICAgRWRpdG9yOjpD
b21tYW5kIGNvbW1hbmQgPSBmcmFtZS0+ZWRpdG9yKCkuY29tbWFuZCgiTWFrZVRleHRXcml0aW5n
RGlyZWN0aW9uTGVmdFRvUmlnaHQiKTsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29tbWFu
ZC5zdGF0ZSgpID09IFRydWVUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gY29t
bWFuZC5zdGF0ZSgpID09IFRyaVN0YXRlOjpUcnVlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxl
ID0gY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnVGV4dERpcmVjdGlvblJpZ2h0VG9MZWZ0OiB7
CiAgICAgICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IGZyYW1lLT5lZGl0b3IoKS5j
b21tYW5kKCJNYWtlVGV4dFdyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdCIpOwotICAgICAgICAg
ICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJ1ZVRyaVN0YXRlOworICAgICAg
ICAgICAgc2hvdWxkQ2hlY2sgPSBjb21tYW5kLnN0YXRlKCkgPT0gVHJpU3RhdGU6OlRydWU7CiAg
ICAgICAgICAgICBzaG91bGRFbmFibGUgPSBjb21tYW5kLmlzRW5hYmxlZCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEyMzEsNyArMTIzMSw3IEBAIHZvaWQgQ29udGV4dE1l
bnVDb250cm9sbGVyOjpjaGVja09yRW5hYmxlSWZOZWVkZWQoQ29udGV4dE1lbnVJdGVtJiBpdGVt
KSBjb25zdAogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDb250ZXh0
TWVudUl0ZW1UYWdVbmRlcmxpbmU6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUt
PmVkaXRvcigpLnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3QsICJ1bmRlcmxpbmUiKSAhPSBGYWxzZVRyaVN0YXRlOworICAgICAgICAgICAg
c2hvdWxkQ2hlY2sgPSBmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgInVuZGVybGluZSIpICE9IFRyaVN0YXRl
OjpGYWxzZTsKICAgICAgICAgICAgIHNob3VsZEVuYWJsZSA9IGZyYW1lLT5lZGl0b3IoKS5jYW5F
ZGl0UmljaGx5KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTI0NCwxMiAr
MTI0NCwxMiBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y2hlY2tPckVuYWJsZUlmTmVl
ZGVkKENvbnRleHRNZW51SXRlbSYgaXRlbSkgY29uc3QKICAgICAgICAgICAgIHNob3VsZEVuYWJs
ZSA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0
ZW1UYWdJdGFsaWM6IHsKLSAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigp
LnNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgIT0gRmFs
c2VUcmlTdGF0ZTsKKyAgICAgICAgICAgIHNob3VsZENoZWNrID0gZnJhbWUtPmVkaXRvcigpLnNl
bGVjdGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5Rm9udFN0eWxlLCAiaXRhbGljIikgIT0gVHJpU3Rh
dGU6OkZhbHNlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUtPmVkaXRvcigpLmNh
bkVkaXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ29udGV4dE1lbnVJdGVtVGFnQm9sZDogewotICAgICAgICAgICAgc2hvdWxkQ2hlY2sgPSBm
cmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAi
Ym9sZCIpICE9IEZhbHNlVHJpU3RhdGU7CisgICAgICAgICAgICBzaG91bGRDaGVjayA9IGZyYW1l
LT5lZGl0b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xk
IikgIT0gVHJpU3RhdGU6OkZhbHNlOwogICAgICAgICAgICAgc2hvdWxkRW5hYmxlID0gZnJhbWUt
PmVkaXRvcigpLmNhbkVkaXRSaWNobHkoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDI5
NDFkZjc5NGI5MGU1ODU4MmQwM2QxNTQ3NjNlMTdmOTBmZDNkODMuLjNhMWU0ZmYzNzNlZDFmZTJm
NTZjODg2NDUwZDc1NzcyYzQwYjgwODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yODM1LDcgKzI4MzUsNyBAQCB2b2lkIFdlYlBhZ2U6OnZh
bGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgICAgIGlzRW5hYmxlZCA9IHBsdWdpblZpZXctPmlzRWRpdGluZ0NvbW1hbmRF
bmFibGVkKGNvbW1hbmROYW1lKTsKICAgICBlbHNlIHsKICAgICAgICAgRWRpdG9yOjpDb21tYW5k
IGNvbW1hbmQgPSBmcmFtZS5lZGl0b3IoKS5jb21tYW5kKGNvbW1hbmROYW1lKTsKLSAgICAgICAg
c3RhdGUgPSBjb21tYW5kLnN0YXRlKCk7CisgICAgICAgIHN0YXRlID0gKGNvbW1hbmQuc3RhdGUo
KSAhPSBUcmlTdGF0ZTo6RmFsc2UpOwogICAgICAgICBpc0VuYWJsZWQgPSBjb21tYW5kLmlzU3Vw
cG9ydGVkKCkgJiYgY29tbWFuZC5pc0VuYWJsZWQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2dsaWIvV2ViUGFnZUdMaWIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKaW5kZXgg
OTM0YmE1MDE3ZDdmMzM1Y2RmYWU4N2YyYzYxM2MxZjg1ZmUyYTY1YS4uNGM1MDBlMzY2OGEzMjEy
M2I5ZTI0YjI3OGRhYWIwNzQ1NzNmZmEzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ2xpYi9XZWJQYWdlR0xpYi5jcHAKQEAgLTgzLDEzICs4MywxMyBA
QCB2b2lkIFdlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9yU3RhdGUoRnJhbWUmIGZyYW1lLCBFZGl0
b3JTdGF0ZSYgcmVzdWx0KSBjb25zdAogI2lmIFBMQVRGT1JNKEdUSykKICAgICBjb25zdCBFZGl0
b3ImIGVkaXRvciA9IGZyYW1lLmVkaXRvcigpOwogICAgIGlmIChzZWxlY3Rpb24uaXNSYW5nZSgp
KSB7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250
V2VpZ2h0LCAiYm9sZCIpID09IFRydWVUcmlTdGF0ZSkKKyAgICAgICAgaWYgKGVkaXRvci5zZWxl
Y3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQsICJib2xkIikgPT0gVHJpU3RhdGU6
OlRydWUpCiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS50eXBpbmdBdHRyaWJ1dGVzIHw9IEF0
dHJpYnV0ZUJvbGQ7Ci0gICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJv
cGVydHlGb250U3R5bGUsICJpdGFsaWMiKSA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgIGlmIChl
ZGl0b3Iuc2VsZWN0aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlGb250U3R5bGUsICJpdGFsaWMiKSA9
PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0dHJp
YnV0ZXMgfD0gQXR0cmlidXRlSXRhbGljczsKLSAgICAgICAgaWYgKGVkaXRvci5zZWxlY3Rpb25I
YXNTdHlsZShDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCAidW5kZXJs
aW5lIikgPT0gVHJ1ZVRyaVN0YXRlKQorICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlvbkhhc1N0
eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJ1bmRlcmxpbmUi
KSA9PSBUcmlTdGF0ZTo6VHJ1ZSkKICAgICAgICAgICAgIHBvc3RMYXlvdXREYXRhLnR5cGluZ0F0
dHJpYnV0ZXMgfD0gQXR0cmlidXRlVW5kZXJsaW5lOwotICAgICAgICBpZiAoZWRpdG9yLnNlbGVj
dGlvbkhhc1N0eWxlKENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsICJs
aW5lLXRocm91Z2giKSA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgIGlmIChlZGl0b3Iuc2VsZWN0
aW9uSGFzU3R5bGUoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgImxp
bmUtdGhyb3VnaCIpID09IFRyaVN0YXRlOjpUcnVlKQogICAgICAgICAgICAgcG9zdExheW91dERh
dGEudHlwaW5nQXR0cmlidXRlcyB8PSBBdHRyaWJ1dGVTdHJpa2VUaHJvdWdoOwogICAgIH0gZWxz
ZSBpZiAoc2VsZWN0aW9uLmlzQ2FyZXQoKSkgewogICAgICAgICBpZiAoZWRpdG9yLnNlbGVjdGlv
blN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAiYm9sZCIpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNzFiMDJkMWI1
M2RlZGI5ZTJmYjM1MDllNTU3ZjE0NTc5OTc0MzI1YS4uMTUzNGU2ZjJiYWMzNmNiMTI4Y2IyNGUy
MTMxNjNlZGE3OWM4MDdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCkBAIC0xMDEzLDEyICsxMDEzLDEyIEBAIEBlbmQKIHN0YXRpYyBOU0Nv
bnRyb2xTdGF0ZVZhbHVlIGtpdChUcmlTdGF0ZSBzdGF0ZSkKIHsKICAgICBzd2l0Y2ggKHN0YXRl
KSB7Ci0gICAgICAgIGNhc2UgRmFsc2VUcmlTdGF0ZToKLSAgICAgICAgICAgIHJldHVybiBOU0Nv
bnRyb2xTdGF0ZVZhbHVlT2ZmOwotICAgICAgICBjYXNlIFRydWVUcmlTdGF0ZToKLSAgICAgICAg
ICAgIHJldHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVlT247Ci0gICAgICAgIGNhc2UgTWl4ZWRUcmlT
dGF0ZToKLSAgICAgICAgICAgIHJldHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVlTWl4ZWQ7CisgICAg
Y2FzZSBUcmlTdGF0ZTo6RmFsc2U6CisgICAgICAgIHJldHVybiBOU0NvbnRyb2xTdGF0ZVZhbHVl
T2ZmOworICAgIGNhc2UgVHJpU3RhdGU6OlRydWU6CisgICAgICAgIHJldHVybiBOU0NvbnRyb2xT
dGF0ZVZhbHVlT247CisgICAgY2FzZSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZToKKyAgICAgICAg
cmV0dXJuIE5TQ29udHJvbFN0YXRlVmFsdWVNaXhlZDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIE5TQ29udHJvbFN0YXRlVmFsdWVPZmY7CkBAIC0yOTQ4LDcg
KzI5NDgsNyBAQCBJR05PUkVfV0FSTklOR1NfRU5ECiAgICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJ
dGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOwogICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9m
Q2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkgewogICAgICAgICAgICAgU3RyaW5nIGRpcmVjdGlv
biA9IHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAi
bHRyIiA6ICJydGwiOwotICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmZyYW1lLT5lZGl0
b3IoKS5zZWxlY3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGly
ZWN0aW9uKV07CisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6KGZyYW1lLT5lZGl0b3Io
KS5zZWxlY3Rpb25IYXNTdHlsZShXZWJDb3JlOjpDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGlyZWN0
aW9uKSAhPSBUcmlTdGF0ZTo6RmFsc2UpXTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gW3Nl
bGYgX2NhbkVkaXRdOwogICAgIH0KQEAgLTI5NjUsNyArMjk2NSw3IEBAIElHTk9SRV9XQVJOSU5H
U19FTkQKICAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNs
YXNzXV0pIHsKICAgICAgICAgICAgIC8vIFRha2UgY29udHJvbCBvZiB0aGUgdGl0bGUgb2YgdGhl
IG1lbnUgaXRlbSBpbnN0ZWFkIG9mIGp1c3QgY2hlY2tpbmcvdW5jaGVja2luZyBpdCBiZWNhdXNl
CiAgICAgICAgICAgICAvLyBhIGNoZWNrIHdvdWxkIGJlIGFtYmlndW91cy4KLSAgICAgICAgICAg
IFttZW51SXRlbSBzZXRUaXRsZTpmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoV2Vi
Q29yZTo6Q1NTUHJvcGVydHlEaXJlY3Rpb24sICJydGwiKQorICAgICAgICAgICAgW21lbnVJdGVt
IHNldFRpdGxlOihmcmFtZS0+ZWRpdG9yKCkuc2VsZWN0aW9uSGFzU3R5bGUoV2ViQ29yZTo6Q1NT
UHJvcGVydHlEaXJlY3Rpb24sICJydGwiKSAhPSBUcmlTdGF0ZTo6RmFsc2UpCiAgICAgICAgICAg
ICAgICAgPyBVSV9TVFJJTkdfSU5URVJOQUwoIkxlZnQgdG8gUmlnaHQiLCAiTGVmdCB0byBSaWdo
dCBjb250ZXh0IG1lbnUgaXRlbSIpCiAgICAgICAgICAgICAgICAgOiBVSV9TVFJJTkdfSU5URVJO
QUwoIlJpZ2h0IHRvIExlZnQiLCAiUmlnaHQgdG8gTGVmdCBjb250ZXh0IG1lbnUgaXRlbSIpXTsK
ICAgICAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>